Merge branch 'main' into dev/bbl-network-upd

This commit is contained in:
Noisyfox
2025-06-16 14:02:04 +08:00
committed by GitHub
124 changed files with 7827 additions and 6123 deletions

View File

@@ -750,7 +750,7 @@ void PressureAdvanceWizard::on_cali_save()
CalibUtils::set_PA_calib_result({ new_pa_cali_result }, false);
}
MessageDialog msg_dlg(nullptr, _L("Flow Dynamics Calibration result has been saved to the printer"), wxEmptyString, wxOK);
MessageDialog msg_dlg(nullptr, _L("Flow Dynamics Calibration result has been saved to the printer."), wxEmptyString, wxOK);
msg_dlg.ShowModal();
}
else if (curr_obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
@@ -817,7 +817,7 @@ void PressureAdvanceWizard::on_cali_save()
}
MessageDialog msg_dlg(nullptr, _L("Flow Dynamics Calibration result has been saved to the printer"), wxEmptyString, wxOK);
MessageDialog msg_dlg(nullptr, _L("Flow Dynamics Calibration result has been saved to the printer."), wxEmptyString, wxOK);
msg_dlg.ShowModal();
}
else {
@@ -1170,7 +1170,7 @@ void FlowRateWizard::on_cali_save()
}
}
MessageDialog msg_dlg(nullptr, _L("Flow rate calibration result has been saved to preset"), wxEmptyString, wxOK);
MessageDialog msg_dlg(nullptr, _L("Flow rate calibration result has been saved to preset."), wxEmptyString, wxOK);
msg_dlg.ShowModal();
}
else if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) {
@@ -1216,7 +1216,7 @@ void FlowRateWizard::on_cali_save()
return;
}
MessageDialog msg_dlg(nullptr, _L("Flow rate calibration result has been saved to preset"), wxEmptyString, wxOK);
MessageDialog msg_dlg(nullptr, _L("Flow rate calibration result has been saved to preset."), wxEmptyString, wxOK);
msg_dlg.ShowModal();
}
else {
@@ -1499,7 +1499,7 @@ void MaxVolumetricSpeedWizard::on_cali_save()
return;
}
MessageDialog msg_dlg(nullptr, _L("Max volumetric speed calibration result has been saved to preset"), wxEmptyString, wxOK);
MessageDialog msg_dlg(nullptr, _L("Max volumetric speed calibration result has been saved to preset."), wxEmptyString, wxOK);
msg_dlg.ShowModal();
show_step(start_step);
}

View File

@@ -1567,7 +1567,7 @@ void CalibrationFlowCoarseSavePage::set_curr_flow_ratio(const float value) {
bool CalibrationFlowCoarseSavePage::get_result(float* out_value, wxString* out_name) {
// Check if the value is valid
if (m_optimal_block_coarse->GetSelection() == -1 || m_coarse_flow_ratio <= 0.0 || m_coarse_flow_ratio >= 2.0) {
MessageDialog msg_dlg(nullptr, _L("Please choose a block with smoothest top surface"), wxEmptyString, wxICON_WARNING | wxOK);
MessageDialog msg_dlg(nullptr, _L("Please choose a block with smoothest top surface."), wxEmptyString, wxICON_WARNING | wxOK);
msg_dlg.ShowModal();
return false;
}

View File

@@ -216,11 +216,11 @@ void CalibrationFlowRateStartPage::create_page(wxWindow* parent)
m_top_sizer->Add(m_page_caption, 0, wxEXPAND, 0);
create_when(parent,
_L("When to use Flow Rate Calibration"),
_L("After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\
\n1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform.\
\n2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\
\n3. Poor Surface Quality: The surface of your prints seems rough or uneven.\
\n4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be."));
_L("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"));
m_top_sizer->Add(m_when_title);
m_top_sizer->Add(m_when_content);

View File

@@ -38,27 +38,28 @@
namespace Slic3r {
namespace GUI {
static const std::vector<std::string> filament_vendors =
static const std::vector<std::string> filament_vendors =
{"3Dgenius", "3DJake", "3DXTECH", "3D BEST-Q", "3D Hero",
"3D-Fuel", "Aceaddity", "AddNorth", "Amazon Basics", "AMOLEN",
"Ankermake", "Anycubic", "Atomic", "AzureFilm", "BASF",
"Bblife", "BCN3D", "Beyond Plastic", "California Filament", "Capricorn",
"CC3D", "colorFabb", "Comgrow", "Cookiecad", "Creality",
"CERPRiSE", "Das Filament", "DO3D", "DOW", "DSM",
"Duramic", "ELEGOO", "Eryone", "Essentium", "eSUN",
"Extrudr", "Fiberforce", "Fiberlogy", "FilaCube", "Filamentive",
"Fillamentum", "FLASHFORGE", "Formfutura", "Francofil", "FusRock",
"FilamentOne", "Fil X", "GEEETECH", "Giantarm", "Gizmo Dorks",
"GreenGate3D", "HATCHBOX", "Hello3D", "IC3D", "IEMAI",
"IIID Max", "INLAND", "iProspect", "iSANMATE", "Justmaker",
"Keene Village Plastics", "Kexcelled", "LDO", "MakerBot", "MatterHackers",
"MIKA3D", "NinjaTek", "Nobufil", "Novamaker", "OVERTURE",
"OVVNYXE", "Polymaker", "Priline", "Printed Solid", "Protopasta",
"Prusament", "Push Plastic", "R3D", "Re-pet3D", "Recreus",
"Regen", "RatRig", "Sain SMART", "SliceWorx", "Snapmaker",
"SnoLabs", "Spectrum", "SUNLU", "TTYT3D", "Tianse",
"UltiMaker", "Valment", "Verbatim", "VO3D", "Voxelab",
"VOXELPLA", "YOOPAI", "Yousu", "Ziro", "Zyltech"};
"CERPRiSE", "Das Filament", "DO3D", "DOW", "DREMC",
"DSM", "Duramic", "ELEGOO", "Eryone", "Essentium",
"eSUN", "Extrudr", "Fiberforce", "Fiberlogy", "FilaCube",
"Filamentive", "Fillamentum", "FLASHFORGE", "Formfutura", "Francofil",
"FusRock", "FilamentOne", "Fil X", "GEEETECH", "Giantarm",
"Gizmo Dorks", "GreenGate3D", "HATCHBOX", "Hello3D", "IC3D",
"IEMAI", "IIID Max", "INLAND", "iProspect", "iSANMATE",
"Justmaker", "Keene Village Plastics", "Kexcelled", "LDO", "MakerBot",
"MatterHackers", "MIKA3D", "NinjaTek", "Nobufil", "Novamaker",
"OVERTURE", "OVVNYXE", "Polymaker", "Priline", "Printed Solid",
"Protopasta", "Prusament", "Push Plastic", "R3D", "Re-pet3D",
"Recreus", "Regen", "RatRig", "Sain SMART", "SliceWorx",
"Snapmaker", "SnoLabs", "Spectrum", "SUNLU", "TTYT3D",
"Tianse", "UltiMaker", "Valment", "Verbatim", "VO3D",
"Voxelab", "VOXELPLA", "YOOPAI", "Yousu", "Ziro",
"Zyltech"};
static const std::vector<std::string> 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",

View File

@@ -4154,7 +4154,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt)
// Version limit
if (code == HttpErrorVersionLimited) {
MessageDialog msg_dlg(nullptr, _L("The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally"), "", wxAPPLY | wxOK);
MessageDialog msg_dlg(nullptr, _L("The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally."), "", wxAPPLY | wxOK);
if (msg_dlg.ShowModal() == wxOK) {
}

View File

@@ -2631,15 +2631,15 @@ void MainFrame::init_menubar_as_editor()
"", nullptr, [this](){return can_deselect(); }, this);
//editMenu->AppendSeparator();
//append_menu_check_item(editMenu, wxID_ANY, _L("Show Model Mesh(TODO)"),
// _L("Display triangles of models"), [this](wxCommandEvent& evt) {
// _L("Display triangles of models."), [this](wxCommandEvent& evt) {
// wxGetApp().app_config->set_bool("show_model_mesh", evt.GetInt() == 1);
// }, nullptr, [this]() {return can_select(); }, [this]() { return wxGetApp().app_config->get("show_model_mesh").compare("true") == 0; }, this);
//append_menu_check_item(editMenu, wxID_ANY, _L("Show Model Shadow(TODO)"), _L("Display shadow of objects"),
//append_menu_check_item(editMenu, wxID_ANY, _L("Show Model Shadow(TODO)"), _L("Display shadow of objects."),
// [this](wxCommandEvent& evt) {
// wxGetApp().app_config->set_bool("show_model_shadow", evt.GetInt() == 1);
// }, nullptr, [this]() {return can_select(); }, [this]() { return wxGetApp().app_config->get("show_model_shadow").compare("true") == 0; }, this);
//editMenu->AppendSeparator();
//append_menu_check_item(editMenu, wxID_ANY, _L("Show Printable Box(TODO)"), _L("Display printable box"),
//append_menu_check_item(editMenu, wxID_ANY, _L("Show Printable Box(TODO)"), _L("Display printable box."),
// [this](wxCommandEvent& evt) {
// wxGetApp().app_config->set_bool("show_printable_box", evt.GetInt() == 1);
// }, nullptr, [this]() {return can_select(); }, [this]() { return wxGetApp().app_config->get("show_printable_box").compare("true") == 0; }, this);
@@ -2681,7 +2681,7 @@ void MainFrame::init_menubar_as_editor()
else
viewMenu->Check(wxID_CAMERA_ORTHOGONAL + camera_id_base, true);
}, perspective_item->GetId());
append_menu_check_item(viewMenu, wxID_ANY, _L("Auto Perspective"), _L("Automatically switch between orthographic and perspective when changing from top/bottom/side views"),
append_menu_check_item(viewMenu, wxID_ANY, _L("Auto Perspective"), _L("Automatically switch between orthographic and perspective when changing from top/bottom/side views."),
[this](wxCommandEvent&) {
wxGetApp().app_config->set_bool("auto_perspective", !wxGetApp().app_config->get_bool("auto_perspective"));
m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT));
@@ -2690,7 +2690,7 @@ void MainFrame::init_menubar_as_editor()
[this]() { return wxGetApp().app_config->get_bool("auto_perspective"); }, this);
viewMenu->AppendSeparator();
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &G-code Window") + sep + "C", _L("Show G-code window in Preview scene"),
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &G-code Window") + sep + "C", _L("Show G-code window in Preview scene."),
[this](wxCommandEvent &) {
wxGetApp().toggle_show_gcode_window();
m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT));
@@ -2699,7 +2699,7 @@ void MainFrame::init_menubar_as_editor()
[this]() { return wxGetApp().show_gcode_window(); }, this);
append_menu_check_item(
viewMenu, wxID_ANY, _L("Show 3D Navigator"), _L("Show 3D navigator in Prepare and Preview scene"),
viewMenu, wxID_ANY, _L("Show 3D Navigator"), _L("Show 3D navigator in Prepare and Preview scene."),
[this](wxCommandEvent&) {
wxGetApp().toggle_show_3d_navigator();
m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT));
@@ -2717,11 +2717,11 @@ void MainFrame::init_menubar_as_editor()
this);
viewMenu->AppendSeparator();
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Labels") + "\t" + ctrl + "E", _L("Show object labels in 3D scene"),
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Labels") + "\t" + ctrl + "E", _L("Show object labels in 3D scene."),
[this](wxCommandEvent&) { m_plater->show_view3D_labels(!m_plater->are_view3D_labels_shown()); m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this,
[this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->are_view3D_labels_shown(); }, this);
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Overhang"), _L("Show object overhang highlight in 3D scene"),
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Overhang"), _L("Show object overhang highlight in 3D scene."),
[this](wxCommandEvent &) {
m_plater->show_view3D_overhang(!m_plater->is_view3D_overhang_shown());
m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT));
@@ -2729,7 +2729,7 @@ void MainFrame::init_menubar_as_editor()
this, [this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->is_view3D_overhang_shown(); }, this);
append_menu_check_item(
viewMenu, wxID_ANY, _L("Show Selected Outline (beta)"), _L("Show outline around selected object in 3D scene"),
viewMenu, wxID_ANY, _L("Show Selected Outline (beta)"), _L("Show outline around selected object in 3D scene."),
[this](wxCommandEvent&) {
wxGetApp().toggle_show_outline();
m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT));
@@ -2738,13 +2738,13 @@ void MainFrame::init_menubar_as_editor()
[this]() { return wxGetApp().show_outline(); }, this);
/*viewMenu->AppendSeparator();
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Wireframe") + "\tCtrl+Shift+Enter", _L("Show wireframes in 3D scene"),
append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Wireframe") + "\tCtrl+Shift+Enter", _L("Show wireframes in 3D scene."),
[this](wxCommandEvent&) { m_plater->toggle_show_wireframe(); m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this,
[this]() { return m_plater->is_wireframe_enabled(); }, [this]() { return m_plater->is_show_wireframe(); }, this);*/
//viewMenu->AppendSeparator();
////BBS orthogonal view
//append_menu_check_item(viewMenu, wxID_ANY, _L("Show Edges(TODO)"), _L("Show Edges"),
//append_menu_check_item(viewMenu, wxID_ANY, _L("Show Edges(TODO)"), _L("Show Edges."),
// [this](wxCommandEvent& evt) {
// wxGetApp().app_config->set("show_build_edges", evt.GetInt() == 1 ? "true" : "false");
// }, nullptr, [this]() {return can_select(); }, [this]() {

View File

@@ -1274,7 +1274,7 @@ void NotificationManager::UpdatedItemsInfoNotification::add_type(InfoItemType ty
case InfoItemType::MmuSegmentation: text += format(_L_PLURAL("%1$d Object has color painting.", "%1$d Objects have color painting.",(*it).second), (*it).second) + "\n"; break;
// BBS
//case InfoItemType::Sinking: text += format(("%1$d Object has partial sinking.", "%1$d Objects have partial sinking.", (*it).second), (*it).second) + "\n"; break;
case InfoItemType::CutConnectors: text += format(_L_PLURAL("%1$d object was loaded as a part of cut object.", "%1$d objects were loaded as parts of cut object", (*it).second), (*it).second) + "\n"; break;
case InfoItemType::CutConnectors: text += format(_L_PLURAL("%1$d object was loaded as a part of cut object.", "%1$d objects were loaded as parts of cut object.", (*it).second), (*it).second) + "\n"; break;
default: BOOST_LOG_TRIVIAL(error) << "Unknown InfoItemType: " << (*it).second; break;
}
}

View File

@@ -3644,7 +3644,7 @@ void StatusPanel::on_ams_setting_click(SimpleEvent &event)
m_ams_setting_dlg->update_ams_img(DeviceManager::get_printer_ams_img(obj->printer_type));
std::string ams_id = m_ams_control->GetCurentShowAms();
if (obj->amsList.size() == 0) {
/* wxString txt = _L("AMS settings are not supported for external spool");
/* wxString txt = _L("AMS settings are not supported for external spool.");
MessageDialog msg_dlg(nullptr, txt, wxEmptyString, wxICON_WARNING | wxOK);
msg_dlg.ShowModal();*/
return;
@@ -3672,7 +3672,7 @@ void StatusPanel::on_filament_extrusion_cali(wxCommandEvent &event)
std::string ams_id = m_ams_control->GetCurentAms();
std::string tray_id = m_ams_control->GetCurrentCan(ams_id);
if (tray_id.empty() && ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) != 0) {
wxString txt = _L("Please select an AMS slot before calibration");
wxString txt = _L("Please select an AMS slot before calibration.");
MessageDialog msg_dlg(nullptr, txt, wxEmptyString, wxICON_WARNING | wxOK);
msg_dlg.ShowModal();
return;

View File

@@ -2206,6 +2206,7 @@ void TabPrint::build()
optgroup->append_single_option_line("support_interface_speed");
optgroup = page->new_optgroup(L("Overhang speed"), L"param_overhang_speed", 15);
optgroup->append_single_option_line("enable_overhang_speed", "slow-down-for-overhang");
// Orca: DEPRECATED
// optgroup->append_single_option_line("overhang_speed_classic", "slow-down-for-overhang");
optgroup->append_single_option_line("slowdown_for_curled_perimeters");
@@ -4166,6 +4167,17 @@ PageShp TabPrinter::build_kinematics_page()
}
auto optgroup = page->new_optgroup(L("Advanced"), "param_advanced");
optgroup->append_single_option_line("emit_machine_limits_to_gcode");
// resonance avoidance ported over from qidi slicer
optgroup = page->new_optgroup(L("Resonance Avoidance"));
optgroup->append_single_option_line("resonance_avoidance");
// Resonanceavoidance speed inputs
{
Line resonance_line = {L("Resonance Avoidance Speed"), L("")};
resonance_line.append_option(optgroup->get_option("min_resonance_avoidance_speed"));
resonance_line.append_option(optgroup->get_option("max_resonance_avoidance_speed"));
optgroup->append_line(resonance_line);
}
const std::vector<std::string> speed_axes{
"machine_max_speed_x",
@@ -4424,7 +4436,6 @@ if (is_marlin_flavor)
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("retract_on_top_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);
@@ -4644,7 +4655,7 @@ void TabPrinter::toggle_options()
// user can customize other retraction options if retraction is enabled
//BBS
bool retraction = have_retract_length || use_firmware_retraction;
std::vector<std::string> vec = {"z_hop", "retract_when_changing_layer", "retract_on_top_layer"};
std::vector<std::string> vec = {"z_hop", "retract_when_changing_layer"};
for (auto el : vec)
toggle_option(el, retraction, i);
@@ -4709,6 +4720,10 @@ void TabPrinter::toggle_options()
for (int i = 0; i < max_field; ++i)
toggle_option("machine_max_junction_deviation", gcf == gcfMarlinFirmware, i);
toggle_line("machine_max_junction_deviation", gcf == gcfMarlinFirmware);
bool resonance_avoidance = m_config->opt_bool("resonance_avoidance");
toggle_option("min_resonance_avoidance_speed", resonance_avoidance);
toggle_option("max_resonance_avoidance_speed", resonance_avoidance);
}
}