From d652deda1d95a51dbb6302127edf7420172625a9 Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 19 Jun 2024 11:31:05 +0800 Subject: [PATCH] NEW:online printing add a field for desginID jira:[desgin ID] Change-Id: Idc482f961a95d753b570bdda129b62b76bb6eaf8 --- src/libslic3r/Format/bbs_3mf.cpp | 11 +++++++++-- src/libslic3r/Model.cpp | 3 +++ src/libslic3r/Model.hpp | 3 ++- src/slic3r/GUI/Jobs/PrintJob.cpp | 16 +++++++++++++++- src/slic3r/GUI/Project.cpp | 12 +++++++----- 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index ca2043e1f..8c81ad2f6 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -116,6 +116,7 @@ const std::string BBL_MODEL_NAME_TAG = "Title"; const std::string BBL_ORIGIN_TAG = "Origin"; const std::string BBL_DESIGNER_TAG = "Designer"; const std::string BBL_DESIGNER_USER_ID_TAG = "DesignerUserId"; +const std::string BBL_DESIGN_ID_TAG = "DesignId"; //const std::string BBL_DESIGNER_MODEL_ID_TAG = "DesignModelId"; const std::string BBL_DESIGNER_COVER_FILE_TAG = "DesignerCover"; const std::string BBL_DESCRIPTION_TAG = "Description"; @@ -932,6 +933,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) std::string m_contry_code; std::string m_designer; std::string m_designer_id; + std::string m_design_id; std::string m_designer_user_id; std::string m_designer_cover; ModelInfo model_info; @@ -1353,7 +1355,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!m_designer.empty()) { m_model->design_info = std::make_shared(); - m_model->design_info->DesignId = m_designer_id; + m_model->design_info->DesignerId = m_designer_id; m_model->design_info->DesignerUserId = m_designer_user_id; m_model->design_info->Designer = m_designer; } @@ -1364,6 +1366,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_model->profile_info->ProfileDescription = m_Profile_description; m_model->profile_info->ProfileUserId = m_profile_user_id; m_model->profile_info->ProfileUserName = m_profile_user_name; + m_model->design_id = m_design_id; m_model->model_info = std::make_shared(); m_model->model_info->load(model_info); @@ -1647,7 +1650,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!m_designer.empty()) { m_model->design_info = std::make_shared(); - m_model->design_info->DesignId = m_designer_id; + m_model->design_info->DesignerId = m_designer_id; m_model->design_info->DesignerUserId = m_designer_user_id; m_model->design_info->Designer = m_designer; } @@ -1658,6 +1661,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_model->profile_info->ProfileDescription = m_Profile_description; m_model->profile_info->ProfileUserId = m_profile_user_id; m_model->profile_info->ProfileUserName = m_profile_user_name; + m_model->design_id = m_design_id; m_model->model_info = std::make_shared(); @@ -3585,6 +3589,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) }else if (m_curr_metadata_name == BBL_DESIGNER_MODEL_ID_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found designer_model_id = " << m_curr_characters; m_designer_id = xml_unescape(m_curr_characters); + }else if (m_curr_metadata_name == BBL_DESIGN_ID_TAG) { + BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found design_id = " << m_curr_characters; + m_design_id = xml_unescape(m_curr_characters); }else if (m_curr_metadata_name == BBL_DESIGNER_COVER_FILE_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found designer_cover = " << m_curr_characters; model_info.cover_file = xml_unescape(m_curr_characters); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index c95488705..18cb49b8e 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -86,6 +86,7 @@ Model& Model::assign_copy(const Model &rhs) // BBS: for design info this->design_info = rhs.design_info; this->model_info = rhs.model_info; + this->design_id = rhs.design_id; this->stl_design_id = rhs.stl_design_id; this->stl_design_country = rhs.stl_design_country; this->profile_info = rhs.profile_info; @@ -122,6 +123,7 @@ Model& Model::assign_copy(Model &&rhs) //BBS: add auxiliary path logic // BBS: backup, all in one temp dir + this->design_id = rhs.design_id; this->stl_design_id = rhs.stl_design_id; this->stl_design_country = rhs.stl_design_country; this->mk_name = rhs.mk_name; @@ -960,6 +962,7 @@ void Model::load_from(Model& model) object_backup_id_map = model.object_backup_id_map; next_object_backup_id = model.next_object_backup_id; design_info = model.design_info; + design_id = model.design_id; stl_design_id = model.stl_design_id; stl_design_country = model.stl_design_country; model_info = model.model_info; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 02dbdce8c..8d2a98570 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1467,7 +1467,7 @@ public: class ModelDesignInfo { public: - std::string DesignId; // DisignId for Model + std::string DesignerId; // DisignId for Model std::string Designer; // Designer nickname in utf8 std::string DesignerUserId; // Designer user_id string }; @@ -1517,6 +1517,7 @@ public: // DesignInfo of Model std::string stl_design_id; + std::string design_id; std::string stl_design_country; std::shared_ptr design_info = nullptr; std::shared_ptr model_info = nullptr; diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index c86a08d6e..6c50ca0c0 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -297,6 +297,7 @@ void PrintJob::process() } params.stl_design_id = 0; + if (!wxGetApp().model().stl_design_id.empty()) { auto country_code = wxGetApp().app_config->get_country_code(); @@ -327,13 +328,26 @@ void PrintJob::process() try { stl_design_id = std::stoi(wxGetApp().model().stl_design_id); } - catch (const std::exception& e) { + catch (...) { stl_design_id = 0; } params.stl_design_id = stl_design_id; } } + + if (params.stl_design_id == 0 || !wxGetApp().model().design_id.empty()) { + try { + params.stl_design_id = std::stoi(wxGetApp().model().design_id); + } + catch (...) + { + params.stl_design_id = 0; + } + } + + + if (params.preset_name.empty() && m_print_type == "from_normal") { params.preset_name = wxString::Format("%s_plate_%d", m_project_name, curr_plate_idx).ToStdString(); } if (params.project_name.empty()) {params.project_name = m_project_name;} diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 47a1e5257..e7273e2ee 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -110,13 +110,15 @@ void ProjectPanel::on_reload(wxCommandEvent& evt) update_type = model.model_info->origin; - if (model.design_info && !model.design_info->DesignId.empty()) { - if (m_model_id_map.count(model.design_info->DesignId) > 0) { - model_id = m_model_id_map[model.design_info->DesignId]; + + if (model.design_info && !model.design_info->DesignerId.empty()) { + + if (m_model_id_map.count(model.design_info->DesignerId) > 0) { + model_id = m_model_id_map[model.design_info->DesignerId]; } else { - model_id = get_model_id(model.design_info->DesignId); - m_model_id_map[model.design_info->DesignId] = model_id; + model_id = get_model_id(model.design_info->DesignerId); + m_model_id_map[model.design_info->DesignerId] = model_id; } }