2023-04-23 01:04:55 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include "Point.hpp"
|
|
|
|
namespace Slic3r {
|
|
|
|
|
|
|
|
class GCode;
|
|
|
|
|
|
|
|
enum class CalibMode : int {
|
|
|
|
Calib_None = 0,
|
|
|
|
Calib_PA_Line,
|
|
|
|
Calib_PA_Tower,
|
|
|
|
Calib_Flow_Rate,
|
|
|
|
Calib_Temp_Tower,
|
|
|
|
Calib_Vol_speed_Tower,
|
2023-06-13 10:34:00 +00:00
|
|
|
Calib_VFA_Tower,
|
|
|
|
Calib_Retraction_tower
|
2023-06-16 02:04:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum class CalibState {
|
|
|
|
Start = 0,
|
|
|
|
Preset,
|
|
|
|
Calibration,
|
|
|
|
CoarseSave,
|
|
|
|
FineCalibration,
|
|
|
|
Save,
|
2023-06-20 12:28:38 +00:00
|
|
|
Finish
|
2023-06-16 02:04:51 +00:00
|
|
|
};
|
2023-04-23 01:04:55 +00:00
|
|
|
|
|
|
|
struct Calib_Params
|
|
|
|
{
|
|
|
|
Calib_Params() : mode(CalibMode::Calib_None){}
|
|
|
|
double start, end, step;
|
|
|
|
bool print_numbers;
|
|
|
|
CalibMode mode;
|
|
|
|
};
|
2023-06-13 10:34:00 +00:00
|
|
|
|
2023-07-06 07:27:05 +00:00
|
|
|
class X1CCalibInfos
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
struct X1CCalibInfo
|
|
|
|
{
|
|
|
|
int tray_id;
|
|
|
|
int bed_temp;
|
|
|
|
int nozzle_temp;
|
|
|
|
float nozzle_diameter;
|
|
|
|
std::string filament_id;
|
|
|
|
std::string setting_id;
|
|
|
|
float max_volumetric_speed;
|
|
|
|
float flow_rate = 0.98f; // for flow ratio
|
|
|
|
};
|
|
|
|
|
|
|
|
std::vector<X1CCalibInfo> calib_datas;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CaliPresetInfo
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int tray_id;
|
|
|
|
float nozzle_diameter;
|
|
|
|
std::string filament_id;
|
|
|
|
std::string setting_id;
|
|
|
|
std::string name;
|
|
|
|
|
|
|
|
CaliPresetInfo &operator=(const CaliPresetInfo &other)
|
|
|
|
{
|
|
|
|
this->tray_id = other.tray_id;
|
|
|
|
this->nozzle_diameter = other.nozzle_diameter;
|
|
|
|
this->filament_id = other.filament_id;
|
|
|
|
this->setting_id = other.setting_id;
|
|
|
|
this->name = other.name;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct PrinterCaliInfo
|
|
|
|
{
|
|
|
|
std::string dev_id;
|
2023-07-20 09:04:12 +00:00
|
|
|
bool cali_finished = true;
|
2023-07-06 07:27:05 +00:00
|
|
|
float cache_flow_ratio;
|
|
|
|
std::vector<CaliPresetInfo> selected_presets;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PACalibResult
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum CalibResult {
|
|
|
|
CALI_RESULT_SUCCESS = 0,
|
|
|
|
CALI_RESULT_PROBLEM = 1,
|
|
|
|
CALI_RESULT_FAILED = 2,
|
|
|
|
};
|
|
|
|
int tray_id;
|
|
|
|
int cali_idx = -1;
|
|
|
|
float nozzle_diameter;
|
|
|
|
std::string filament_id;
|
|
|
|
std::string setting_id;
|
|
|
|
std::string name;
|
2023-07-18 08:30:18 +00:00
|
|
|
float k_value = 0.0;
|
|
|
|
float n_coef = 0.0;
|
2023-07-06 07:27:05 +00:00
|
|
|
int confidence = -1; // 0: success 1: uncertain 2: failed
|
|
|
|
};
|
|
|
|
|
|
|
|
struct PACalibIndexInfo
|
|
|
|
{
|
|
|
|
int tray_id;
|
|
|
|
int cali_idx;
|
|
|
|
float nozzle_diameter;
|
|
|
|
std::string filament_id;
|
|
|
|
};
|
|
|
|
|
|
|
|
class FlowRatioCalibResult
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int tray_id;
|
|
|
|
float nozzle_diameter;
|
|
|
|
std::string filament_id;
|
|
|
|
std::string setting_id;
|
|
|
|
float flow_ratio;
|
|
|
|
int confidence; // 0: success 1: uncertain 2: failed
|
|
|
|
};
|
|
|
|
|
2023-06-13 10:34:00 +00:00
|
|
|
class calib_pressure_advance
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
calib_pressure_advance(GCode *gcodegen);
|
|
|
|
~calib_pressure_advance() {}
|
|
|
|
|
|
|
|
std::string generate_test(double start_pa = 0, double step_pa = 0.002, int count = 50);
|
|
|
|
void set_speed(double fast = 100.0, double slow = 20.0)
|
|
|
|
{
|
|
|
|
m_slow_speed = slow;
|
|
|
|
m_fast_speed = fast;
|
|
|
|
}
|
|
|
|
double &line_width() { return m_line_width; };
|
|
|
|
bool & draw_numbers() { return m_draw_numbers; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
std::string move_to(Vec2d pt);
|
|
|
|
std::string print_pa_lines(double start_x, double start_y, double start_pa, double step_pa, int num);
|
|
|
|
std::string draw_digit(double startx, double starty, char c);
|
|
|
|
std::string draw_number(double startx, double starty, double value);
|
|
|
|
|
|
|
|
private:
|
|
|
|
GCode *mp_gcodegen;
|
|
|
|
double m_length_short, m_length_long;
|
|
|
|
double m_space_y;
|
|
|
|
double m_slow_speed, m_fast_speed;
|
|
|
|
double m_line_width;
|
|
|
|
bool m_draw_numbers;
|
|
|
|
};
|
|
|
|
|
2023-04-23 01:04:55 +00:00
|
|
|
} // namespace Slic3r
|