diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index e440b35df..49d8ac1a5 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,6 +1,21 @@ min_slic3r_version = 1.42.0-alpha +0.4.0-alpha3 Update of SLA profiles 0.4.0-alpha2 First SLA profiles +min_slic3r_version = 1.41.1 +0.3.3 Prusament PETG released +0.3.2 New MK2.5 and MK3 FW versions +0.3.1 New MK2.5 and MK3 FW versions +0.3.0 New MK2.5 and MK3 FW version min_slic3r_version = 1.41.0-alpha +0.2.9 New MK2.5 and MK3 FW versions +0.2.8 New MK2.5 and MK3 FW version +min_slic3r_version = 1.41.1 +0.2.7 New MK2.5 and MK3 FW version +0.2.6 Added MMU2 MK2.5 settings +min_slic3r_version = 1.41.0-alpha +0.2.5 Prusament is out - added prusament settings +0.2.4 Added soluble support profiles for MMU2 +0.2.3 Added materials for MMU2 single mode, edited MK3 xy stealth feedrate limit 0.2.2 Edited MMU2 Single mode purge line 0.2.1 Added PET and BVOH settings for MMU2 0.2.0-beta5 Fixed MMU1 ramming parameters diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index d5425dc12..7bdcb6906 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the Slic3r configuration to be downgraded. -config_version = 0.4.0-alpha2 +config_version = 0.4.0-alpha3 # Where to get the updates from? config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch/ @@ -41,7 +41,7 @@ variants = 0.4 [printer_model:SL1] name = Original Prusa SL1 -variants = default; dummy +variants = default # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -1137,19 +1137,132 @@ min_fan_speed = 100 start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode" temperature = 220 -[sla_material:*common*] +[sla_print:*common*] +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_SL1.*/ layer_height = 0.05 -initial_layer_height = 0.3 +output_filename_format = [input_filename_base].dwz +pad_edge_radius = 0.5 +pad_enable = 1 +pad_max_merge_distance = 50 +pad_wall_height = 3 +pad_wall_thickness = 1 +support_base_diameter = 3 +support_base_height = 0.5 +support_critical_angle = 45 +support_density_at_45 = 250 +support_density_at_horizontal = 500 +support_head_front_diameter = 0.4 +support_head_penetration = 0.4 +support_head_width = 3 +support_max_bridge_length = 10 +support_minimal_z = 0 +support_object_elevation = 5 +support_pillar_diameter = 1 +support_pillar_widening_factor = 0 +supports_enable = 1 + +[sla_print:0.025 UltraDetail] +inherits = *common* +layer_height = 0.025 +support_head_width = 2 + +[sla_print:0.035 Detail] +inherits = *common* +layer_height = 0.035 + +[sla_print:0.05 Normal] +inherits = *common* +layer_height = 0.05 + +[sla_print:0.1 Fast] +inherits = *common* +layer_height = 0.1 + +########### Materials 0.025 + +[sla_material:*common 0.05*] +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_SL1.*/ +compatible_prints_condition = layer_height == 0.05 +exposure_time = 12 +initial_exposure_time = 45 +initial_layer_height = 0.5 +material_correction_curing = 1,1,1 +material_correction_printing = 1,1,1 +material_notes = + +[sla_material:*common 0.025*] +inherits = *common 0.05* +compatible_prints_condition = layer_height == 0.025 exposure_time = 10 -initial_exposure_time = 15 -material_correction_printing = 1, 1, 1 -material_correction_curing = 1, 1, 1 +initial_exposure_time = 35 -[sla_material:Material 1] -inherits = *common* +[sla_material:*common 0.035*] +inherits = *common 0.05* +compatible_prints_condition = layer_height == 0.035 +exposure_time = 13 +initial_exposure_time = 40 -[sla_material:Material 2] -inherits = *common* +[sla_material:*common 0.1*] +inherits = *common 0.05* +compatible_prints_condition = layer_height == 0.1 +exposure_time = 20 +initial_exposure_time = 90 + +########### Materials 0.025 + +[sla_material:Jamg He Transparent Clear 0.025] +inherits = *common 0.025* + +[sla_material:Jamg He Transparent Green 0.025] +inherits = *common 0.025* + +[sla_material:Jamg He Transparent Orange 0.025] +inherits = *common 0.025* + +[sla_material:Jamg He Transparent Red 0.025] +inherits = *common 0.025* + +########### Materials 0.05 + +[sla_material:Jamg He Transparent Clear 0.05] +inherits = *common 0.05* + +[sla_material:Jamg He Transparent Green 0.05] +inherits = *common 0.05* + +[sla_material:Jamg He Transparent Orange 0.05] +inherits = *common 0.05* + +[sla_material:Jamg He Transparent Red 0.05] +inherits = *common 0.05* + +########### Materials 0.035 + +[sla_material:Jamg He Transparent Clear 0.035] +inherits = *common 0.035* + +[sla_material:Jamg He Transparent Green 0.035] +inherits = *common 0.035* + +[sla_material:Jamg He Transparent Orange 0.035] +inherits = *common 0.035* + +[sla_material:Jamg He Transparent Red 0.035] +inherits = *common 0.035* + +########### Materials 0.1 + +[sla_material:Jamg He Transparent Clear 0.1] +inherits = *common 0.1* + +[sla_material:Jamg He Transparent Green 0.1] +inherits = *common 0.1* + +[sla_material:Jamg He Transparent Orange 0.1] +inherits = *common 0.1* + +[sla_material:Jamg He Transparent Red 0.1] +inherits = *common 0.1* [printer:*common*] printer_technology = FFF @@ -1467,21 +1580,20 @@ end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG printer_technology = SLA printer_model = SL1 printer_variant = default -default_sla_material_profile = Material 1 -bed_shape = 0x0,150x0,150x100,0x100 -max_print_height = 100 -display_width = 150 -display_height = 100 -display_pixels_x = 2000 -display_pixels_y = 1000 +default_sla_material_profile = Jamg He Transparent Green 0.05 +default_sla_print_profile = 0.05 Normal +bed_shape = 0.98x1.02,119.98x1.02,119.98x68.02,0.98x68.02 +display_height = 68.04 +display_orientation = portrait +display_pixels_x = 2560 +display_pixels_y = 1440 +display_width = 120.96 +max_print_height = 150 printer_correction = 1,1,1 - -[printer:Original Prusa SL1 dummy] -inherits = Original Prusa SL1 -printer_variant = dummy -default_sla_material_profile = Material 2 +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_SL1\n # The obsolete presets will be removed when upgrading from the legacy configuration structure (up to Slic3r 1.39.2) to 1.40.0 and newer. [obsolete_presets] print="0.05mm DETAIL 0.25 nozzle";"0.05mm DETAIL MK3";"0.05mm DETAIL";"0.20mm NORMAL MK3";"0.35mm FAST MK3";"print:0.15mm OPTIMAL MK3 MMU2";"print:0.20mm FAST MK3 MMU2" filament="ColorFabb Brass Bronze 1.75mm";"ColorFabb HT 1.75mm";"ColorFabb nGen 1.75mm";"ColorFabb Woodfil 1.75mm";"ColorFabb XT 1.75mm";"ColorFabb XT-CF20 1.75mm";"E3D PC-ABS 1.75mm";"Fillamentum ABS 1.75mm";"Fillamentum ASA 1.75mm";"Generic ABS 1.75mm";"Generic PET 1.75mm";"Generic PLA 1.75mm";"Prusa ABS 1.75mm";"Prusa HIPS 1.75mm";"Prusa PET 1.75mm";"Prusa PLA 1.75mm";"Taulman Bridge 1.75mm";"Taulman T-Glase 1.75mm" +printer="Original Prusa SL1 dummy" diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index 30478cb01..471cd8bc4 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -235,7 +235,9 @@ void Http::priv::http_perform() #if LIBCURL_VERSION_MAJOR >= 7 && LIBCURL_VERSION_MINOR >= 32 ::curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xfercb); ::curl_easy_setopt(curl, CURLOPT_XFERINFODATA, static_cast(this)); +#ifndef _WIN32 (void)xfercb_legacy; // prevent unused function warning +#endif #else ::curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, xfercb); ::curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, static_cast(this)); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 924cf382d..be2a17d66 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -112,7 +113,7 @@ struct PresetUpdater::priv bool get_file(const std::string &url, const fs::path &target_path) const; void prune_tmps() const; void sync_version() const; - void sync_config(const std::set vendors) const; + void sync_config(const std::set vendors); void check_install_indices() const; Updates get_config_updates() const; @@ -130,7 +131,7 @@ PresetUpdater::priv::priv() : { set_download_prefs(GUI::wxGetApp().app_config); check_install_indices(); - index_db = std::move(Index::load_db()); + index_db = Index::load_db(); } // Pull relevant preferences from AppConfig @@ -220,14 +221,14 @@ void PresetUpdater::priv::sync_version() const // Download vendor indices. Also download new bundles if an index indicates there's a new one available. // Both are saved in cache. -void PresetUpdater::priv::sync_config(const std::set vendors) const +void PresetUpdater::priv::sync_config(const std::set vendors) { BOOST_LOG_TRIVIAL(info) << "Syncing configuration cache"; if (!enabled_config_update) { return; } // Donwload vendor preset bundles - for (const auto &index : index_db) { + for (auto &index : index_db) { if (cancel) { return; } const auto vendor_it = vendors.find(VendorProfile(index.vendor())); @@ -245,17 +246,33 @@ void PresetUpdater::priv::sync_config(const std::set vendors) con // Download a fresh index BOOST_LOG_TRIVIAL(info) << "Downloading index for vendor: " << vendor.name; const auto idx_url = vendor.config_update_url + "/" + INDEX_FILENAME; - const auto idx_path = cache_path / (vendor.id + ".idx"); - if (! get_file(idx_url, idx_path)) { continue; } + const std::string idx_path = (cache_path / (vendor.id + ".idx")).string(); + const std::string idx_path_temp = idx_path + "-update"; + if (!get_file(idx_url, idx_path_temp)) { continue; } if (cancel) { return; } // Load the fresh index up - Index new_index; - new_index.load(idx_path); + { + Index new_index; + try { + new_index.load(idx_path_temp); + } catch (const std::exception &err) { + BOOST_LOG_TRIVIAL(error) << boost::format("Failed loading a downloaded index %1% for vendor %2%: invalid index?") % idx_path_temp % vendor.name; + continue; + } + if (new_index.version() < index.version()) { + BOOST_LOG_TRIVIAL(error) << boost::format("The downloaded index %1% for vendor %2% is older than the active one. Ignoring the downloaded index.") % idx_path_temp % vendor.name; + continue; + } + Slic3r::rename_file(idx_path_temp, idx_path); + index = std::move(new_index); + if (cancel) + return; + } // See if a there's a new version to download - const auto recommended_it = new_index.recommended(); - if (recommended_it == new_index.end()) { + const auto recommended_it = index.recommended(); + if (recommended_it == index.end()) { BOOST_LOG_TRIVIAL(error) << boost::format("No recommended version for vendor: %1%, invalid index?") % vendor.name; continue; }