Selecting SLA printer on Connect upload

This commit is contained in:
David Kocik 2024-04-18 13:58:19 +02:00
parent 13ac78f8e9
commit 58cd6c5a09
5 changed files with 44 additions and 8 deletions

View File

@ -5877,10 +5877,14 @@ void Plater::connect_gcode()
}
// Selected profiles
const Preset* selected_printer_preset = &preset_bundle->printers.get_selected_preset();
const Preset* selected_filament_preset = &preset_bundle->filaments.get_selected_preset();
const std::string selected_nozzle_serialized = dynamic_cast<const ConfigOptionFloats*>(selected_printer_preset->config.option("nozzle_diameter"))->serialize();
const std::string selected_filament_type_serialized = selected_filament_preset->config.option("filament_type")->serialize();
const std::string selected_printer_model_serialized = selected_printer_preset->config.option("printer_model")->serialize();
std::string selected_filament_type_serialized;
if (Preset::printer_technology(selected_printer_preset->config) == ptFFF) {
const Preset* selected_filament_preset = &preset_bundle->filaments.get_selected_preset();
const std::string selected_nozzle_serialized = dynamic_cast<const ConfigOptionFloats*>(selected_printer_preset->config.option("nozzle_diameter"))->serialize();
std::string selected_filament_type_serialized = selected_filament_preset->config.option("filament_type")->serialize();
}
bool is_first = compatible_printer_presets.front()->name == selected_printer_preset->name;
bool found = false;
@ -5932,7 +5936,7 @@ void Plater::connect_gcode()
}
}
if (selected_filament_type_serialized != connect_filament_type) {
if (!selected_filament_type_serialized.empty() && selected_filament_type_serialized != connect_filament_type) {
wxString line1 = _L("The printer you've selected has different filament type than filament profile selected for slicing.");
wxString line2 = GUI::format_wxstr(_L("PrusaConnect Filament Type: %1%"), connect_filament_type);
wxString line3 = GUI::format_wxstr(_L("PrusaSlicer Filament Type: %1%"), selected_filament_type_serialized);
@ -5985,7 +5989,7 @@ void Plater::connect_gcode()
show_error(this, _L("Failed to select a printer. Missing data (uuid and team id) for chosen printer."));
return;
}
PhysicalPrinter ph_printer("connect_temp_printer", wxGetApp().preset_bundle->physical_printers.default_config(), /**connect_printer_preset*/*selected_printer_preset);
PhysicalPrinter ph_printer("connect_temp_printer", wxGetApp().preset_bundle->physical_printers.default_config(), *selected_printer_preset);
ph_printer.config.set_key_value("host_type", new ConfigOptionEnum<PrintHostType>(htPrusaConnectNew));
// use existing structures to pass data
ph_printer.config.opt_string("printhost_apikey") = team_id;

View File

@ -96,6 +96,7 @@ private:
{"2.1.0", "MINI" },
{"3.1.0", "XL" },
{"5.1.0", "SL1" },
{"5.1.1", "SL1S" },
// ysFIXME : needs to add Connect ids for next printers
/*{"0.0.0", "MK4IS" },
{"0.0.0", "MK3SMMU2S" },

View File

@ -714,6 +714,16 @@ void PrinterPickWebViewDialog::on_request_update_selected_printer_action()
}
void PrinterPickWebViewDialog::request_compatible_printers()
{
if (Preset::printer_technology(wxGetApp().preset_bundle->printers.get_selected_preset().config) == ptFFF) {
request_compatible_printers_FFF();
} else {
request_compatible_printers_SLA();
}
}
void PrinterPickWebViewDialog::request_compatible_printers_FFF()
{
//PrinterParams: {
//material: Material;
@ -727,7 +737,6 @@ void PrinterPickWebViewDialog::request_compatible_printers()
const std::string printer_model_serialized = selected_printer.config.option("printer_model")->serialize();
const std::string printer_type = wxGetApp().plater()->get_user_account()->get_printer_type_from_name(printer_model_serialized);
// assert(!filament_type_serialized.empty() && !nozzle_diameter_serialized.empty() && !printer_type.empty());
const std::string request = GUI::format(
"{"
"\"material\": \"%1%\", "
@ -738,6 +747,22 @@ void PrinterPickWebViewDialog::request_compatible_printers()
wxString script = GUI::format_wxstr("window._prusaConnect_v1.requestCompatiblePrinter(%1%)", request);
run_script(script);
}
void PrinterPickWebViewDialog::request_compatible_printers_SLA()
{
const Preset& selected_printer = wxGetApp().preset_bundle->printers.get_selected_preset();
const std::string printer_model_serialized = selected_printer.config.option("printer_model")->serialize();
const std::string printer_type = wxGetApp().plater()->get_user_account()->get_printer_type_from_name(printer_model_serialized);
const Preset& selected_material = wxGetApp().preset_bundle->sla_materials.get_selected_preset();
const std::string material_type_serialized = selected_material.config.option("material_type")->serialize();
const std::string request = GUI::format(
"{"
"\"material\": \"%1%\", "
"\"printerType\": \"%2%\" "
"}", material_type_serialized, printer_type);
wxString script = GUI::format_wxstr("window._prusaConnect_v1.requestCompatiblePrinter(%1%)", request);
run_script(script);
}
} // GUI
} // Slic3r

View File

@ -169,6 +169,8 @@ public:
protected:
void on_request_update_selected_printer_action() override;
void request_compatible_printers() override;
void request_compatible_printers_FFF();
void request_compatible_printers_SLA();
void run_script_bridge(const wxString& script) override { run_script(script); }
private:
std::string& m_ret_val;

View File

@ -70,6 +70,10 @@ PrintHost* PrintHost::get_print_host(DynamicPrintConfig *config)
default: return nullptr;
}
} else {
const auto opt = config->option<ConfigOptionEnum<PrintHostType>>("host_type");
if (opt != nullptr && opt->value == htPrusaConnectNew) {
return new PrusaConnectNew(config);
}
return new SL1Host(config);
}
}