mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-16 10:02:12 +00:00
ENH: add printable filament types for extruder
jira: none Change-Id: Ie6ada223bc11a53b975c8c20b4a41e7cdc2d524c (cherry picked from commit c64270f506a4d004f66aef3ff31760f793eca489)
This commit is contained in:
@@ -5482,6 +5482,16 @@ int CLI::run(int argc, char **argv)
|
||||
unprintable_filament_type_list[index] = unprintable_list;
|
||||
}
|
||||
|
||||
std::vector<std::string> & printable_filament_types = m_print_config.option<ConfigOptionStrings>("printable_filament_types", true)->values;
|
||||
std::vector<std::vector<std::string>> printable_filament_type_list;
|
||||
printable_filament_type_list.resize(new_extruder_count);
|
||||
for (int index = 0; index < new_extruder_count; index++) {
|
||||
std::vector<std::string> printable_list;
|
||||
if (printable_filament_types.size() > index)
|
||||
printable_list = split_string(printable_filament_types[index], ',');
|
||||
printable_filament_type_list[index] = printable_list;
|
||||
}
|
||||
|
||||
for (int index = 0; index < filament_maps.size(); index++)
|
||||
{
|
||||
int filament_extruder = filament_maps[index];
|
||||
@@ -5497,6 +5507,7 @@ int CLI::run(int argc, char **argv)
|
||||
if (plate_filaments[f_index] <= filament_count) {
|
||||
int filament_extruder = filament_maps[plate_filaments[f_index] - 1];
|
||||
std::vector<std::string>& unprintable_list = unprintable_filament_type_list[filament_extruder-1];
|
||||
std::vector<std::string>& printable_list = printable_filament_type_list[filament_extruder-1];
|
||||
std::string filament_type;
|
||||
m_print_config.get_filament_type(filament_type, plate_filaments[f_index]-1);
|
||||
if (unprintable_list.size() > 0)
|
||||
@@ -5508,6 +5519,15 @@ int CLI::run(int argc, char **argv)
|
||||
flush_and_exit(CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER);
|
||||
}
|
||||
}
|
||||
if (printable_list.size() > 0) {
|
||||
auto iter = std::find(printable_list.begin(), printable_list.end(), filament_type);
|
||||
if (iter == printable_list.end()) {
|
||||
BOOST_LOG_TRIVIAL(error) << boost::format("plate %1% : filament %2% can not be printed on extruder %3%, under manual mode for multi extruder printer, not in printable filament list") % (index + 1) % filament_type % filament_extruder;
|
||||
record_exit_reson(outfile_dir, CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER, index + 1,
|
||||
cli_errors[CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER], sliced_info);
|
||||
flush_and_exit(CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user