Extract shared delta helper functions

This commit is contained in:
thewildmage
2023-05-29 15:45:02 -06:00
parent 1da6b58b55
commit 4f1dfff25f
2 changed files with 23 additions and 9 deletions

View File

@@ -180,15 +180,27 @@ namespace Slic3r {
return gcode.str(); return gcode.str();
} }
bool calib_pressure_advance::is_delta() {
return mp_gcodegen->config().printable_area.values.size() > 4;
}
void calib_pressure_advance::delta_scale_bed_ext(BoundingBoxf& bed_ext) {
bed_ext.scale(1.0f / 1.41421f);
}
void calib_pressure_advance::delta_modify_start(double& start_x, double& start_y, int count) {
startx = -startx;
starty = -(count * m_space_y) / 2;
}
calib_pressure_advance_line::calib_pressure_advance_line(GCode* gcodegen) :mp_gcodegen(gcodegen), m_length_short(20.0), m_length_long(40.0), m_space_y(3.5), m_line_width(0.6), m_draw_numbers(true) {} calib_pressure_advance_line::calib_pressure_advance_line(GCode* gcodegen) :mp_gcodegen(gcodegen), m_length_short(20.0), m_length_long(40.0), m_space_y(3.5), m_line_width(0.6), m_draw_numbers(true) {}
std::string calib_pressure_advance_line::generate_test(double start_pa /*= 0*/, double step_pa /*= 0.002*/, std::string calib_pressure_advance_line::generate_test(double start_pa /*= 0*/, double step_pa /*= 0.002*/,
int count /*= 10*/) { int count /*= 10*/) {
BoundingBoxf bed_ext = get_extents(mp_gcodegen->config().printable_area.values); BoundingBoxf bed_ext = get_extents(mp_gcodegen->config().printable_area.values);
bool is_delta = false; const bool is_delta = is_delta();
if (mp_gcodegen->config().printable_area.values.size() > 4) { if (is_delta) {
is_delta = true; delta_scale_bed_ext(bed_ext);
bed_ext.scale(1.0f / 1.41421f);
} }
auto bed_sizes = mp_gcodegen->config().printable_area.values; auto bed_sizes = mp_gcodegen->config().printable_area.values;
@@ -201,8 +213,7 @@ namespace Slic3r {
auto startx = (w - m_length_short * 2 - m_length_long - 20) / 2; auto startx = (w - m_length_short * 2 - m_length_long - 20) / 2;
auto starty = (h - count * m_space_y) / 2; auto starty = (h - count * m_space_y) / 2;
if (is_delta) { if (is_delta) {
startx = -startx; delta_modify_start(startx, starty, count);
starty = -(count * m_space_y) / 2;
} }
return print_pa_lines(startx, starty, start_pa, step_pa, count); return print_pa_lines(startx, starty, start_pa, step_pa, count);

View File

@@ -40,7 +40,11 @@ private:
std::string convert_number_to_string(double num); std::string convert_number_to_string(double num);
std::string draw_digit(double startx, double starty, char c, calib_pressure_advance::DrawDigitMode mode); std::string draw_digit(double startx, double starty, char c, calib_pressure_advance::DrawDigitMode mode);
std::string draw_number(double startx, double starty, double value, calib_pressure_advance::DrawDigitMode mode); std::string draw_number(double startx, double starty, double value, calib_pressure_advance::DrawDigitMode mode);
bool is_delta();
void delta_scale_bed_ext(BoundingBoxf& bed_ext);
void delta_modify_start(double start_x, double start_y, int count);
private: private:
GCode* mp_gcodegen;
double m_digit_len {2}; double m_digit_len {2};
int m_max_number_length {5}; int m_max_number_length {5};
double m_number_spacing {3.0}; double m_number_spacing {3.0};
@@ -63,7 +67,6 @@ public:
private: private:
std::string print_pa_lines(double start_x, double start_y, double start_pa, double step_pa, int num); std::string print_pa_lines(double start_x, double start_y, double start_pa, double step_pa, int num);
private: private:
GCode* mp_gcodegen;
double m_length_short, m_length_long; double m_length_short, m_length_long;
double m_space_y; double m_space_y;
double m_slow_speed, m_fast_speed; double m_slow_speed, m_fast_speed;
@@ -95,11 +98,11 @@ class calib_pressure_advance_pattern: public calib_pressure_advance
double max_numbering_height(); double max_numbering_height();
double pattern_shift(); double pattern_shift();
private: private:
Gcode* mp_gcodegen;
int m_anchor_layer_line_ratio {140}; int m_anchor_layer_line_ratio {140};
int m_anchor_perimeters {4}; int m_anchor_perimeters {4};
int m_corner_angle {90}; int m_corner_angle {90};
double m_glyph_padding_vertical = 1; double m_glyph_padding_horizontal {1};
double m_glyph_padding_vertical {1};
double m_line_ratio {112.5}; double m_line_ratio {112.5};
int m_pattern_spacing {2}; int m_pattern_spacing {2};
int m_wall_count {3}; int m_wall_count {3};