diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 6b9804e7374..3cd6b2cab68 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -282,6 +282,9 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) Layout(); Refresh(); + + wxGetApp().plater()->sidebar().sync_ams_list(); + } void MonitorPanel::on_printer_clicked(wxMouseEvent &event) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 49de4211686..33934491cdb 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1611,7 +1611,11 @@ void Sidebar::sync_ams_list() add_button(wxID_CANCEL, false, _L("Cancel")); } } dlg(this, ams_filament_ids.empty()); - auto res = dlg.ShowModal(); + + //printago + // auto res = dlg.ShowModal(); + auto res = wxID_YES; + if (res == wxID_CANCEL) return; list2.resize(list.size()); auto iter = list.begin(); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index cc3e4608fb8..e54d3c801a9 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3955,6 +3955,7 @@ void SelectMachineDialog::set_default_normal() info.color = wxString::Format("#%02X%02X%02X%02X", colour_rgb.Red(), colour_rgb.Green(), colour_rgb.Blue(), colour_rgb.Alpha()).ToStdString(); m_filaments.push_back(info); } + } if (extruders.size() <= 4) { @@ -4319,6 +4320,17 @@ void SelectMachineDialog::SetCheckboxOption(const std::string& key, bool value) } } +//printago +void SelectMachineDialog::PrintagoMapAms(int ams_slot_id, bool mapFor3MF) +{ + m_ams_mapping_result.clear(); + m_ams_mapping_result = m_filaments; // UPDATE THIS MAPPING RESULT- Id == tray_id. + m_ams_mapping_res = true; + for (auto& elem : m_ams_mapping_result) { + mapFor3MF ? elem.tray_id = ams_slot_id : elem.tray_id = elem.id; + elem.tray_id = mapFor3MF ? elem.id : ams_slot_id; + } +} EditDevNameDialog::EditDevNameDialog(Plater *plater /*= nullptr*/) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Modifying the device name"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index ab380ae7792..72d75ff3413 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -475,6 +475,7 @@ class SelectMachineDialog : public DPIDialog //Printago void SetPrinter(const std::string& printerLastSelect); void SetCheckboxOption(const std::string& key, bool value); + void PrintagoMapAms(int ams_slot_id = 0, bool mapFor3MF = false); }; wxDECLARE_EVENT(EVT_FINISHED_UPDATE_MACHINE_LIST, wxCommandEvent); diff --git a/src/slic3r/Utils/PrintagoServer.cpp b/src/slic3r/Utils/PrintagoServer.cpp index b1772128fb3..3dea329d36b 100644 --- a/src/slic3r/Utils/PrintagoServer.cpp +++ b/src/slic3r/Utils/PrintagoServer.cpp @@ -657,6 +657,8 @@ bool PrintagoDirector::ProcessPrintagoCommand(const PrintagoCommand& cmd) PBJob::bbl_do_bed_leveling = parameters.contains("do_bed_leveling") && parameters["do_bed_leveling"].get(); PBJob::bbl_do_flow_cali = parameters.contains("do_flow_cali") && parameters["do_flow_cali"].get(); + PBJob::ams_slot = parameters.contains("ams_slot") ? parameters["ams_slot"] : 0; + if (parameters.count("bed_type")) { PBJob::bed_type = PBJob::StringToBedType(parameters["bed_type"]); if (PBJob::bed_type == BedType::btDefault) { @@ -702,8 +704,6 @@ bool PrintagoDirector::ProcessPrintagoCommand(const PrintagoCommand& cmd) return false; } - // Do the configuring here: this allows 3MF files to load, then we can configure the slicer and override the 3MF conf settings - // from what Printago sent. wxFileName localPrinterConf, localFilamentConf, localPrintConf; if (SavePrintagoFile(printerConfUrl, localPrinterConf) && SavePrintagoFile(filamentConfUrl, localFilamentConf) && SavePrintagoFile(printConfUrl, localPrintConf)) { @@ -751,6 +751,8 @@ bool PrintagoDirector::ProcessPrintagoCommand(const PrintagoCommand& cmd) // The last 'true' tells the function to not ask the user to confirm the load; save any existing work. wxGetApp().plater()->load_project(PBJob::localFile.GetFullPath(), "-", true); SetPrintagoConfigs(); // since the 3MF may have it's own configs that get set on load. + wxGetApp().plater()->sidebar().on_bed_type_change(PBJob::bed_type); + wxGetApp().plater()->get_partplate_list().get_curr_plate()->set_bed_type(PBJob::bed_type); } else { std::vector filePathArray; filePathArray.push_back(PBJob::localFile.GetFullPath().ToStdString()); @@ -1470,7 +1472,12 @@ void PrintagoDirector::OnSlicingCompleted(SlicingProcessCompletedEvent::StatusTy m_select_machine_dlg = new SelectMachineDialog(wxGetApp().plater()); m_select_machine_dlg->set_print_type(FROM_NORMAL); - m_select_machine_dlg->prepare(0); + m_select_machine_dlg->set_default_normal(); + m_select_machine_dlg->prepare(0); + if (PBJob::use_ams && wxGetApp().getDeviceManager()->get_my_machine(PBJob::printerId.ToStdString())) { + + } + m_select_machine_dlg->SetPrinter(PBJob::printerId.ToStdString()); auto selectedPrinter = wxGetApp().getDeviceManager()->get_selected_machine(); @@ -1480,6 +1487,13 @@ void PrintagoDirector::OnSlicingCompleted(SlicingProcessCompletedEvent::StatusTy if (selectedPrinter->has_ams()) { m_select_machine_dlg->SetCheckboxOption("use_ams", PBJob::use_ams); + if (PBJob::use_ams) { + if (!PBJob::localFile.GetExt().MakeUpper().compare("3MF")) { + m_select_machine_dlg->PrintagoMapAms(0, true); // set AMS 1:1 + } else { + m_select_machine_dlg->PrintagoMapAms(PBJob::ams_slot, false); // map all filaments to specified slot. + } + } } else { m_select_machine_dlg->SetCheckboxOption("use_ams", false); } diff --git a/src/slic3r/Utils/PrintagoServer.hpp b/src/slic3r/Utils/PrintagoServer.hpp index a6713a9eca5..c5b22323faa 100644 --- a/src/slic3r/Utils/PrintagoServer.hpp +++ b/src/slic3r/Utils/PrintagoServer.hpp @@ -263,6 +263,7 @@ class PBJob jobId = "ptgo_default"; use_ams = false; + ams_slot = 0; bbl_do_bed_leveling = false; bbl_do_flow_cali = false; @@ -373,6 +374,7 @@ class PBJob inline static bool bbl_do_bed_leveling = false; inline static bool bbl_do_flow_cali = false; inline static BedType bed_type = BedType::btDefault; + inline static int ams_slot = 0; static BedType StringToBedType(const std::string& bedType) {