Fix an issue when loading older 3mf project

This commit is contained in:
SoftFever 2024-01-06 11:21:46 +08:00
parent 793a753cfc
commit 67de85ba43
2 changed files with 66 additions and 64 deletions

View file

@ -3494,62 +3494,64 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
if(load_type != LoadType::LoadGeometry)
show_info(q, _L("The 3mf is not supported by OrcaSlicer, load geometry data only."), _L("Load 3mf"));
}
else if (load_config && (file_version.maj() != app_version.maj())) {
// version mismatch, only load geometries
load_config = false;
if (!load_model) {
// only load config case, return directly
show_info(q, _L("The Config can not be loaded."), _L("Load 3mf"));
q->skip_thumbnail_invalid = false;
return empty_result;
}
load_old_project = true;
// select view to 3D
q->select_view_3D("3D");
// select plate 0 as default
q->select_plate(0);
if (load_type != LoadType::LoadGeometry) {
if (en_3mf_file_type == En3mfType::From_BBS)
show_info(q, _L("The 3mf is generated by old Orca Slicer, load geometry data only."), _L("Load 3mf"));
else
show_info(q, _L("The 3mf is not supported by OrcaSlicer, load geometry data only."), _L("Load 3mf"));
}
for (ModelObject *model_object : model.objects) {
model_object->config.reset();
// Is there any modifier or advanced config data?
for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset();
}
}
// else if (load_config && (file_version > app_version)) {
// if (config_substitutions.unrecogized_keys.size() > 0) {
// 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;
// // std::string context = into_u8(text);
// wxString context = text;
// for (auto &key : config_substitutions.unrecogized_keys) {
// context += " -";
// context += key;
// context += ";\n";
// first = false;
// }
// wxString append = _L("You'd better upgrade your software.\n");
// context += "\n\n";
// // context += into_u8(append);
// context += append;
// show_info(q, context, _L("Newer 3mf version"));
// else if (load_config && (file_version.maj() != app_version.maj())) {
// // version mismatch, only load geometries
// load_config = false;
// if (!load_model) {
// // only load config case, return directly
// show_info(q, _L("The Config can not be loaded."), _L("Load 3mf"));
// q->skip_thumbnail_invalid = false;
// return empty_result;
// }
// else {
// //if the minor version is not matched
// if (file_version.min() != app_version.min()) {
// wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."),
// file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
// text += "\n";
// show_info(q, text, _L("Newer 3mf version"));
// }
// load_old_project = true;
// // select view to 3D
// q->select_view_3D("3D");
// // select plate 0 as default
// q->select_plate(0);
// if (load_type != LoadType::LoadGeometry) {
// if (en_3mf_file_type == En3mfType::From_BBS)
// show_info(q, _L("The 3mf is generated by old Orca Slicer, load geometry data only."), _L("Load 3mf"));
// else
// show_info(q, _L("The 3mf is not supported by OrcaSlicer, load geometry data only."), _L("Load 3mf"));
// }
// for (ModelObject *model_object : model.objects) {
// model_object->config.reset();
// // Is there any modifier or advanced config data?
// for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset();
// }
// }
else if (load_config && (file_version > app_version)) {
if (config_substitutions.unrecogized_keys.size() > 0) {
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;
// std::string context = into_u8(text);
wxString context = text;
// if (wxGetApp().app_config->get("user_mode") == "develop") {
// for (auto &key : config_substitutions.unrecogized_keys) {
// context += " -";
// context += key;
// context += ";\n";
// first = false;
// }
// }
wxString append = _L("You'd better upgrade your software.\n");
context += "\n\n";
// context += into_u8(append);
context += append;
show_info(q, context, _L("Newer 3mf version"));
}
else {
//if the minor version is not matched
if (file_version.min() != app_version.min()) {
wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."),
file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
text += "\n";
show_info(q, text, _L("Newer 3mf version"));
}
}
}
else if (!load_config) {
// reset config except color
for (ModelObject *model_object : model.objects) {