ENH: generate wipe tower when custom change gcode filament

Change-Id: Ia0c81453f09457a9d1d56fbcdce79112953c0208
This commit is contained in:
zhimin.zeng 2022-12-16 18:06:28 +08:00 committed by Lane.Wei
parent 75c5d7b267
commit 4284d2ddb0
10 changed files with 58 additions and 11 deletions

View file

@ -1136,7 +1136,7 @@ void PartPlate::release_opengl_resource()
}
}
std::vector<int> PartPlate::get_extruders() const
std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode) const
{
std::vector<int> plate_extruders;
// if gcode.3mf file
@ -1192,6 +1192,13 @@ std::vector<int> PartPlate::get_extruders() const
plate_extruders.push_back(glb_support_extr);
}
if (conside_custom_gcode) {
for (auto item : m_model->custom_gcode_per_print_z.gcodes) {
if (item.type == CustomGCode::Type::ToolChange)
plate_extruders.push_back(item.extruder);
}
}
std::sort(plate_extruders.begin(), plate_extruders.end());
auto it_end = std::unique(plate_extruders.begin(), plate_extruders.end());
plate_extruders.resize(std::distance(plate_extruders.begin(), it_end));
@ -1223,7 +1230,7 @@ std::vector<int> PartPlate::get_used_extruders()
Vec3d PartPlate::estimate_wipe_tower_size(const double w, const double wipe_volume) const
{
Vec3d wipe_tower_size;
std::vector<int> plate_extruders = get_extruders();
std::vector<int> plate_extruders = get_extruders(true);
double layer_height = 0.08f; // hard code layer height
double max_height = 0.f;
wipe_tower_size.setZero();