mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2026-01-04 05:50:37 -07:00
ENH: support multi-color with external
Jira: [STUDIO-12520] Change-Id: I34c88b6a84514a0e56e65723f91d1a2940128e8d (cherry picked from commit b8879ec648e038080628190fc363251229bbd5ee)
This commit is contained in:
parent
ca87a0a395
commit
a7ad18e66e
8 changed files with 75 additions and 8 deletions
|
|
@ -12,6 +12,8 @@
|
|||
#include "Widgets/ProgressDialog.hpp"
|
||||
#include "Widgets/RoundedRectangle.hpp"
|
||||
#include "Widgets/StaticBox.hpp"
|
||||
#include "Widgets/CheckBox.hpp"
|
||||
#include "Widgets/Label.hpp"
|
||||
#include "ConnectPrinter.hpp"
|
||||
#include "Jobs/BoostThreadWorker.hpp"
|
||||
#include "Jobs/PlaterWorker.hpp"
|
||||
|
|
@ -421,6 +423,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
m_statictext_ams_msg->Hide();
|
||||
|
||||
/*ams mapping suggestions*/
|
||||
|
||||
m_link_edit_nozzle = new Label(m_scroll_area, wxEmptyString);
|
||||
m_link_edit_nozzle->SetFont(::Label::Body_13);
|
||||
m_link_edit_nozzle->SetForegroundColour(0x00ae42);
|
||||
|
|
@ -443,6 +446,24 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
wxPostEvent(plater, evt);
|
||||
});
|
||||
|
||||
m_check_ext_change_assist = new CheckBox(m_scroll_area, wxID_ANY);
|
||||
m_check_ext_change_assist->SetValue(false);
|
||||
m_check_ext_change_assist->SetBackgroundColour(*wxWHITE);
|
||||
m_check_ext_change_assist->SetToolTip(_L("Manually change external spool during printing for multi-color printing"));
|
||||
m_check_ext_change_assist->Hide();
|
||||
m_label_ext_change_assist = new Label(m_scroll_area, _L("Multi-color with external"));
|
||||
m_label_ext_change_assist->Wrap(-1);
|
||||
m_label_ext_change_assist->SetMaxSize(wxSize(FromDIP(200), -1));
|
||||
m_label_ext_change_assist->SetFont(::Label::Body_13);
|
||||
m_label_ext_change_assist->SetBackgroundColour(*wxWHITE);
|
||||
m_label_ext_change_assist->SetToolTip(_L("Manually change external spool during printing for multi-color printing"));
|
||||
|
||||
wxSizer* suggestion_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
suggestion_sizer->Add(m_link_edit_nozzle, 0, wxLEFT, 0);
|
||||
suggestion_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||
suggestion_sizer->Add(m_check_ext_change_assist, 0, wxRIGHT, FromDIP(10));
|
||||
suggestion_sizer->Add(m_label_ext_change_assist, 0, wxRIGHT, 0);
|
||||
|
||||
m_mapping_sugs_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
//auto m_img_mapping_sugs = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("warning", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)));
|
||||
auto m_txt_mapping_sugs = new Label(m_scroll_area, wxEmptyString);
|
||||
|
|
@ -518,7 +539,6 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
m_checkbox_list["bed_leveling"] = option_auto_bed_level;
|
||||
m_checkbox_list["flow_cali"] = option_flow_dynamics_cali;
|
||||
m_checkbox_list["nozzle_offset_cali"] = option_nozzle_offset_cali_cali;
|
||||
|
||||
for (auto print_opt : m_checkbox_list_order) {
|
||||
print_opt->Bind(EVT_SWITCH_PRINT_OPTION, [this](auto &e) { save_option_vals(); });
|
||||
}
|
||||
|
|
@ -686,7 +706,8 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
m_scroll_sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
m_scroll_sizer->Add(m_mapping_sugs_sizer, 0, wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_scroll_sizer->Add(m_change_filament_times_sizer, 0,wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_scroll_sizer->Add(m_link_edit_nozzle, 0, wxLEFT|wxRIGHT, FromDIP(15));
|
||||
// m_scroll_sizer->Add(m_link_edit_nozzle, 0, wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_scroll_sizer->Add(suggestion_sizer, 0, wxLEFT|wxRIGHT|wxEXPAND, FromDIP(15));
|
||||
m_scroll_sizer->Add(sizer_split_options, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_scroll_sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
m_scroll_sizer->Add(m_options_other, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
|
|
@ -761,6 +782,11 @@ void SelectMachineDialog::init_bind()
|
|||
Layout();
|
||||
}
|
||||
});
|
||||
|
||||
m_check_ext_change_assist->Bind(wxEVT_TOGGLEBUTTON, [this](auto &e) {
|
||||
m_ext_change_assist = e.IsChecked();
|
||||
e.Skip();
|
||||
});
|
||||
}
|
||||
|
||||
void SelectMachineDialog::show_print_failed_info(bool show, int code, wxString description, wxString extra)
|
||||
|
|
@ -1383,7 +1409,7 @@ bool SelectMachineDialog::is_nozzle_type_match(ExtderData data, wxString& error_
|
|||
{
|
||||
pos = _L("left nozzle");
|
||||
}
|
||||
else if ((target_machine_nozzle_id == MAIN_NOZZLE_ID))
|
||||
else if(target_machine_nozzle_id == MAIN_NOZZLE_ID)
|
||||
{
|
||||
pos = _L("right nozzle");
|
||||
}
|
||||
|
|
@ -1888,8 +1914,10 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
|||
}
|
||||
|
||||
if (main_external_spool_filas.size() > 1 || deputy_external_spool_filas.size() > 1) {
|
||||
confirm_text.push_back(ConfirmBeforeSendInfo(_L("More than one filament types have been mapped to the same external spool, which may cause printing issues. The printer won't pause during printing.")));
|
||||
has_slice_warnings = true;
|
||||
if(!m_ext_change_assist ){
|
||||
confirm_text.push_back(ConfirmBeforeSendInfo(_L("More than one filament types have been mapped to the same external spool, which may cause printing issues. The printer won't pause during printing.")));
|
||||
has_slice_warnings = true;
|
||||
}
|
||||
} else {
|
||||
//check filaments type in external spool
|
||||
for (const auto& mapping_info : m_ams_mapping_result) {
|
||||
|
|
@ -2228,6 +2256,16 @@ void SelectMachineDialog::update_option_opts(MachineObject *obj)
|
|||
update_options_layout();
|
||||
}
|
||||
|
||||
bool SelectMachineDialog::is_enable_external_change_assist(std::vector<FilamentInfo>& ams_mapping_result) {
|
||||
std::map<std::string, int> v_ams_map;
|
||||
v_ams_map[VIRTUAL_AMS_MAIN_ID_STR] = 0;
|
||||
v_ams_map[VIRTUAL_AMS_DEPUTY_ID_STR] = 0;
|
||||
for(auto info : m_ams_mapping_result){
|
||||
v_ams_map[info.ams_id]++;
|
||||
}
|
||||
return (v_ams_map[VIRTUAL_AMS_MAIN_ID_STR] > 1) || (v_ams_map[VIRTUAL_AMS_DEPUTY_ID_STR] > 1);
|
||||
}
|
||||
|
||||
void SelectMachineDialog::load_option_vals(MachineObject *obj)
|
||||
{
|
||||
if (m_is_in_sending_mode) { return;}
|
||||
|
|
@ -2491,6 +2529,7 @@ void SelectMachineDialog::on_send_print()
|
|||
false,
|
||||
timelapse_option,
|
||||
true,
|
||||
m_ext_change_assist,
|
||||
m_checkbox_list["bed_leveling"]->getValueInt(),
|
||||
m_checkbox_list["flow_cali"]->getValueInt(),
|
||||
m_checkbox_list["nozzle_offset_cali"]->getValueInt()
|
||||
|
|
@ -3213,6 +3252,22 @@ void SelectMachineDialog::update_show_status(MachineObject* obj_)
|
|||
update_filament_change_count();
|
||||
}
|
||||
|
||||
/* multi color external change assist*/
|
||||
if(obj_->is_support_ext_change_assist && !m_check_ext_change_assist->IsShown()){
|
||||
m_check_ext_change_assist->Show(true);
|
||||
m_label_ext_change_assist->Show(true);
|
||||
}else if(!obj_->is_support_ext_change_assist &&m_check_ext_change_assist->IsShown()){
|
||||
m_check_ext_change_assist->Hide();
|
||||
m_label_ext_change_assist->Hide();
|
||||
}
|
||||
/*check external change assist*/
|
||||
if(!m_ams_mapping_result.empty() && is_enable_external_change_assist(m_ams_mapping_result)){
|
||||
m_check_ext_change_assist->Enable(true);
|
||||
}else{
|
||||
m_check_ext_change_assist->SetValue(false);
|
||||
m_check_ext_change_assist->Enable(false);
|
||||
}
|
||||
|
||||
/*reading done*/
|
||||
if (wxGetApp().app_config) {
|
||||
if (obj_->upgrade_force_upgrade) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue