ENH: Add extruder_printable_height

to support different printable height of multi_extruder
jira:none

Change-Id: I265c65e15fc8f598c3456556557bb6977b5de820
(cherry picked from commit 933adbaaf0eaf361e39f131dd5536dca91214d43)
This commit is contained in:
zhimin.zeng 2024-11-16 19:48:31 +08:00 committed by Noisyfox
parent 55d8d77430
commit 5935b75fe5
13 changed files with 163 additions and 37 deletions

View file

@ -122,6 +122,18 @@ class Print;
using ConflictResultOpt = std::optional<ConflictResult>;
struct GCodeCheckResult
{
int error_code = 0; // 0 means succeed, 0001 printable area error, 0010 printable height error
std::map<int, std::vector<std::pair<int, int>>> print_area_error_infos; // printable_area extruder_id to <filament_id - object_label_id> which cannot printed in this extruder
std::map<int, std::vector<std::pair<int, int>>> print_height_error_infos; // printable_height extruder_id to <filament_id - object_label_id> which cannot printed in this extruder
void reset() {
error_code = 0;
print_area_error_infos.clear();
print_height_error_infos.clear();
}
};
struct FilamentPrintableResult
{
std::vector<int> conflict_filament;
@ -133,16 +145,6 @@ class Print;
};
};
struct GCodeCheckResult
{
int error_code = 0; // 0 means succeed
std::map<int, std::vector<std::pair<int, int>>> error_infos; // extruder_id to <filament_id - object_label_id> which cannot printed in this extruder
void reset() {
error_code = 0;
error_infos.clear();
}
};
struct GCodeProcessorResult
{
struct FilamentSequenceHash
@ -196,6 +198,7 @@ class Print;
Vec3f arc_center_position{ Vec3f::Zero() }; // mm
std::vector<Vec3f> interpolation_points; // interpolation points of arc for drawing
int object_label_id{-1};
float print_z{0.0f};
float volumetric_rate() const { return feedrate * mm3_per_mm; }
//BBS: new function to support arc move
@ -720,6 +723,7 @@ class Print;
bool m_virtual_flushing; // mark a section with virtual flush, only for statistics
bool m_wipe_tower;
int m_object_label_id{-1};
float m_print_z{0.0f};
std::vector<float> m_remaining_volume;
ExtruderTemps m_filament_nozzle_temp;
ExtruderTemps m_filament_nozzle_temp_first_layer;
@ -809,7 +813,7 @@ class Print;
GCodeProcessor();
// check whether the gcode path meets the filament_map grouping requirements
bool check_multi_extruder_gcode_valid(const std::vector<Polygons> &unprintable_areas, const std::vector<int>& filament_map);
bool check_multi_extruder_gcode_valid(const std::vector<Polygons> &unprintable_areas, const std::vector<double>& printable_heights, const std::vector<int>& filament_map);
void apply_config(const PrintConfig& config);
void set_print(Print* print) { m_print = print; }
void enable_stealth_time_estimator(bool enabled);