mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 14:13:57 -06:00
NEW: rearch calibration
Change-Id: I20ee304eba1a63e08d0a36abdf06ebe6a6e4451f Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
parent
ced9e43be6
commit
2368d929fe
44 changed files with 7710 additions and 5851 deletions
304
src/slic3r/GUI/CalibrationWizardStartPage.cpp
Normal file
304
src/slic3r/GUI/CalibrationWizardStartPage.cpp
Normal file
|
@ -0,0 +1,304 @@
|
|||
#include "CalibrationWizardStartPage.hpp"
|
||||
#include "I18N.hpp"
|
||||
#include "Widgets/Label.hpp"
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
|
||||
CalibrationStartPage::CalibrationStartPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
:CalibrationWizardPage(parent, id, pos, size, style)
|
||||
{
|
||||
m_top_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
}
|
||||
|
||||
void CalibrationStartPage::create_wiki(wxWindow* parent)
|
||||
{
|
||||
m_wiki_text = new wxStaticText(parent, wxID_ANY, _L("Wiki"));
|
||||
m_wiki_text->SetFont(Label::Head_14);
|
||||
m_wiki_text->SetForegroundColour({ 0, 88, 220 });
|
||||
m_wiki_text->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent& e) {
|
||||
e.Skip();
|
||||
SetCursor(wxCURSOR_HAND);
|
||||
});
|
||||
m_wiki_text->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
||||
e.Skip();
|
||||
SetCursor(wxCURSOR_ARROW);
|
||||
});
|
||||
m_wiki_text->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
|
||||
if (!m_wiki_url.empty())
|
||||
wxLaunchDefaultBrowser(m_wiki_url);
|
||||
});
|
||||
}
|
||||
|
||||
void CalibrationStartPage::create_when(wxWindow* parent, wxString title, wxString content)
|
||||
{
|
||||
m_when_title = new wxStaticText(this, wxID_ANY, title);
|
||||
m_when_title->SetFont(Label::Head_14);
|
||||
m_when_title->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
|
||||
m_when_content = new wxStaticText(this, wxID_ANY, content);
|
||||
m_when_content->SetFont(Label::Body_14);
|
||||
m_when_content->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
}
|
||||
|
||||
void CalibrationStartPage::create_bitmap(wxWindow* parent, const wxBitmap& before_img, const wxBitmap& after_img)
|
||||
{
|
||||
m_images_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_before_bmp = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_before_bmp->SetBitmap(before_img);
|
||||
m_images_sizer->Add(m_before_bmp, 0, wxALL, 0);
|
||||
m_images_sizer->AddSpacer(FromDIP(20));
|
||||
m_after_bmp = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_after_bmp->SetBitmap(after_img);
|
||||
m_images_sizer->Add(m_after_bmp, 0, wxALL, 0);
|
||||
}
|
||||
|
||||
void CalibrationStartPage::create_bitmap(wxWindow* parent, std::string before_img, std::string after_img)
|
||||
{
|
||||
wxBitmap before_bmp = create_scaled_bitmap(before_img, nullptr, 400);
|
||||
wxBitmap after_bmp = create_scaled_bitmap(after_img, nullptr, 400);
|
||||
|
||||
create_bitmap(parent, before_bmp, after_bmp);
|
||||
}
|
||||
|
||||
CalibrationPAStartPage::CalibrationPAStartPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
: CalibrationStartPage(parent, id, pos, size, style)
|
||||
{
|
||||
m_cali_mode = CalibMode::Calib_PA_Line;
|
||||
m_page_type = CaliPageType::CALI_PAGE_START;
|
||||
|
||||
m_wiki_url = get_calibration_wiki_page(m_cali_mode);
|
||||
|
||||
create_page(this);
|
||||
|
||||
this->SetSizer(m_top_sizer);
|
||||
m_top_sizer->Fit(this);
|
||||
}
|
||||
|
||||
void CalibrationPAStartPage::create_page(wxWindow* parent)
|
||||
{
|
||||
m_page_caption = new CaliPageCaption(parent, CalibMode::Calib_PA_Line);
|
||||
m_page_caption->show_prev_btn(false);
|
||||
m_top_sizer->Add(m_page_caption, 0, wxEXPAND, 0);
|
||||
create_when(parent,
|
||||
_L("When you need Pressure Advance Calibration"),
|
||||
_L("uneven extrusion"));
|
||||
|
||||
m_top_sizer->Add(m_when_title);
|
||||
m_top_sizer->Add(m_when_content);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_bitmap(parent, "cali_page_before_pa", "cali_page_after_pa");
|
||||
m_top_sizer->Add(m_images_sizer, 0, wxALL, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto about_title = new wxStaticText(parent, wxID_ANY, _L("About this calibration"));
|
||||
about_title->SetFont(Label::Head_14);
|
||||
about_title->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
m_top_sizer->Add(about_title);
|
||||
auto about_text = new wxStaticText(parent, wxID_ANY, _L("After calibration, the linear compensation factor(K) will be recorded and applied to printing. This factor would be different if device, degree of usage, material, and material family type are different"));
|
||||
about_text->SetFont(Label::Body_14);
|
||||
about_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
m_top_sizer->Add(about_text);
|
||||
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_wiki(parent);
|
||||
m_top_sizer->Add(m_wiki_text, 0);
|
||||
|
||||
m_action_panel = new CaliPageActionPanel(parent, CalibMode::Calib_PA_Line, CaliPageType::CALI_PAGE_START);
|
||||
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
void CalibrationPAStartPage::on_reset_page()
|
||||
{
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
|
||||
void CalibrationPAStartPage::on_device_connected(MachineObject* obj)
|
||||
{
|
||||
//enable all button
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, true);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->printer_type == "BL-P001" || obj->printer_type == "BL-P002") {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, true);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->cali_version <= -1) {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, true);
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
}
|
||||
else {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
}
|
||||
else if (obj->printer_type == "C11" || obj->printer_type == "C12") {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->cali_version <= -1) {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
}
|
||||
else {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CalibrationFlowRateStartPage::CalibrationFlowRateStartPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
: CalibrationStartPage(parent, id, pos, size, style)
|
||||
{
|
||||
m_cali_mode = CalibMode::Calib_Flow_Rate;
|
||||
|
||||
m_wiki_url = get_calibration_wiki_page(m_cali_mode);
|
||||
|
||||
create_page(this);
|
||||
|
||||
this->SetSizer(m_top_sizer);
|
||||
m_top_sizer->Fit(this);
|
||||
}
|
||||
|
||||
void CalibrationFlowRateStartPage::create_page(wxWindow* parent)
|
||||
{
|
||||
m_page_caption = new CaliPageCaption(parent, CalibMode::Calib_Flow_Rate);
|
||||
m_page_caption->show_prev_btn(false);
|
||||
m_top_sizer->Add(m_page_caption, 0, wxEXPAND, 0);
|
||||
create_when(parent,
|
||||
_L("When you need Flow Rate Calibration"),
|
||||
_L("Over-extrusion or under extrusion"));
|
||||
|
||||
m_top_sizer->Add(m_when_title);
|
||||
m_top_sizer->Add(m_when_content);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto recommend_title = new wxStaticText(parent, wxID_ANY, _L("Flow Rate calibration is recommended when you print with:"));
|
||||
recommend_title->SetFont(Label::Head_14);
|
||||
recommend_title->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
m_top_sizer->Add(recommend_title);
|
||||
auto recommend_text1 = new wxStaticText(parent, wxID_ANY, _L("material with significant thermal shrinkage/expansion, such as..."));
|
||||
recommend_text1->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
recommend_text1->SetFont(Label::Body_14);
|
||||
m_top_sizer->Add(recommend_text1);
|
||||
auto recommend_text2 = new wxStaticText(parent, wxID_ANY, _L("materials with inaccurate filament diameter"));
|
||||
recommend_text2->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
recommend_text2->SetFont(Label::Body_14);
|
||||
m_top_sizer->Add(recommend_text2);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_bitmap(parent, "cali_page_before_flow", "cali_page_after_flow");
|
||||
|
||||
m_top_sizer->Add(m_images_sizer, 0, wxALL, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_wiki(parent);
|
||||
m_top_sizer->Add(m_wiki_text, 0);
|
||||
|
||||
m_action_panel = new CaliPageActionPanel(parent, CalibMode::Calib_Flow_Rate, CaliPageType::CALI_PAGE_START);
|
||||
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
void CalibrationFlowRateStartPage::on_reset_page()
|
||||
{
|
||||
//disable all button
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
|
||||
void CalibrationFlowRateStartPage::on_device_connected(MachineObject* obj)
|
||||
{
|
||||
//enable all button
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, true);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->printer_type == "BL-P001" || obj->printer_type == "BL-P002") {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
if (obj->cali_version <= -1) {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, true);
|
||||
}
|
||||
else {
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
}
|
||||
else if (obj->printer_type == "C11" || obj->printer_type == "C12") {
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANAGE_RESULT, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, true);
|
||||
|
||||
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_MANUAL_CALI, false);
|
||||
}
|
||||
}
|
||||
|
||||
CalibrationMaxVolumetricSpeedStartPage::CalibrationMaxVolumetricSpeedStartPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
: CalibrationStartPage(parent, id, pos, size, style)
|
||||
{
|
||||
m_cali_mode = CalibMode::Calib_Vol_speed_Tower;
|
||||
|
||||
m_wiki_url = get_calibration_wiki_page(m_cali_mode);
|
||||
|
||||
create_page(this);
|
||||
|
||||
this->SetSizer(m_top_sizer);
|
||||
m_top_sizer->Fit(this);
|
||||
}
|
||||
|
||||
void CalibrationMaxVolumetricSpeedStartPage::create_page(wxWindow* parent)
|
||||
{
|
||||
m_page_caption = new CaliPageCaption(parent, m_cali_mode);
|
||||
m_page_caption->show_prev_btn(false);
|
||||
m_top_sizer->Add(m_page_caption, 0, wxEXPAND, 0);
|
||||
create_when(parent, _L("When you need Max Volumetric Speed Calibration"), _L("Over-extrusion or under extrusion"));
|
||||
|
||||
m_top_sizer->Add(m_when_title);
|
||||
m_top_sizer->Add(m_when_content);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto recommend_title = new wxStaticText(parent, wxID_ANY, _L("Max Volumetric Speed calibration is recommended when you print with:"));
|
||||
recommend_title->SetFont(Label::Head_14);
|
||||
recommend_title->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
m_top_sizer->Add(recommend_title);
|
||||
auto recommend_text1 = new wxStaticText(parent, wxID_ANY, _L("material with significant thermal shrinkage/expansion, such as..."));
|
||||
recommend_text1->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
recommend_text1->SetFont(Label::Body_14);
|
||||
m_top_sizer->Add(recommend_text1);
|
||||
auto recommend_text2 = new wxStaticText(parent, wxID_ANY, _L("materials with inaccurate filament diameter"));
|
||||
recommend_text2->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
recommend_text2->SetFont(Label::Body_14);
|
||||
m_top_sizer->Add(recommend_text2);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_bitmap(parent, "cali_page_before_flow", "cali_page_after_flow");
|
||||
|
||||
m_top_sizer->Add(m_images_sizer, 0, wxALL, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_wiki(parent);
|
||||
m_top_sizer->Add(m_wiki_text, 0);
|
||||
|
||||
m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_START);
|
||||
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
}}
|
Loading…
Add table
Add a link
Reference in a new issue