From b068389d4c5c24a8347b572ff67264c1f5779f30 Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Fri, 12 Aug 2022 21:13:52 +0800 Subject: [PATCH 001/137] NEW: add text gizmo tool Signed-off-by: yifan.wu Change-Id: I77fdf64340f580e6baa3260101fa1c6db7a4ab2d (cherry picked from commit 2147c55134b4d9d1018d7e9f4f8d1a4d50c065f6) --- resources/images/toolbar_text.svg | 4 + src/libslic3r/CMakeLists.txt | 3 +- src/libslic3r/Shape/TextShape.cpp | 203 ++++++++++++++++++++++ src/libslic3r/Shape/TextShape.hpp | 12 ++ src/slic3r/CMakeLists.txt | 2 + src/slic3r/GUI/GUI_ObjectList.cpp | 39 +++++ src/slic3r/GUI/GUI_ObjectList.hpp | 2 + src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 137 +++++++++++++++ src/slic3r/GUI/Gizmos/GLGizmoText.hpp | 43 +++++ src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 2 + src/slic3r/GUI/Gizmos/GLGizmosManager.hpp | 2 + 11 files changed, 448 insertions(+), 1 deletion(-) create mode 100644 resources/images/toolbar_text.svg create mode 100644 src/libslic3r/Shape/TextShape.cpp create mode 100644 src/libslic3r/Shape/TextShape.hpp create mode 100644 src/slic3r/GUI/Gizmos/GLGizmoText.cpp create mode 100644 src/slic3r/GUI/Gizmos/GLGizmoText.hpp diff --git a/resources/images/toolbar_text.svg b/resources/images/toolbar_text.svg new file mode 100644 index 0000000000..392ae36851 --- /dev/null +++ b/resources/images/toolbar_text.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index da327ec978..2ebdb72e01 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -315,7 +315,6 @@ set(lisbslic3r_sources SLA/Clustering.hpp SLA/Clustering.cpp SLA/ReprojectPointsOnMesh.hpp - Arachne/BeadingStrategy/BeadingStrategy.hpp Arachne/BeadingStrategy/BeadingStrategy.cpp Arachne/BeadingStrategy/BeadingStrategyFactory.hpp @@ -356,6 +355,8 @@ set(lisbslic3r_sources Arachne/SkeletalTrapezoidationJoint.hpp Arachne/WallToolPaths.hpp Arachne/WallToolPaths.cpp + Shape/TextShape.hpp + Shape/TextShape.cpp ) if (APPLE) diff --git a/src/libslic3r/Shape/TextShape.cpp b/src/libslic3r/Shape/TextShape.cpp new file mode 100644 index 0000000000..9185c1b018 --- /dev/null +++ b/src/libslic3r/Shape/TextShape.cpp @@ -0,0 +1,203 @@ +#include "../libslic3r.h" +#include "../Model.hpp" +#include "../TriangleMesh.hpp" + +#include "TextShape.hpp" + +#include +#include + +#include "Standard_TypeDef.hxx" +#include "STEPCAFControl_Reader.hxx" +#include "BRepMesh_IncrementalMesh.hxx" +#include "Interface_Static.hxx" +#include "XCAFDoc_DocumentTool.hxx" +#include "XCAFDoc_ShapeTool.hxx" +#include "XCAFApp_Application.hxx" +#include "TopoDS_Solid.hxx" +#include "TopoDS_Compound.hxx" +#include "TopoDS_Builder.hxx" +#include "TopoDS.hxx" +#include "TDataStd_Name.hxx" +#include "BRepBuilderAPI_Transform.hxx" +#include "TopExp_Explorer.hxx" +#include "TopExp_Explorer.hxx" +#include "BRep_Tool.hxx" +#include "Font_BRepFont.hxx" +#include "Font_BRepTextBuilder.hxx" +#include "BRepPrimAPI_MakePrism.hxx" +#include "Font_FontMgr.hxx" + +namespace Slic3r { + +std::vector init_occt_fonts() +{ + std::vector stdFontNames; + + Handle(Font_FontMgr) aFontMgr = Font_FontMgr::GetInstance(); + aFontMgr->InitFontDataBase(); + + TColStd_SequenceOfHAsciiString availFontNames; + aFontMgr->GetAvailableFontsNames(availFontNames); + stdFontNames.reserve(availFontNames.Size()); + + for (auto afn : availFontNames) + stdFontNames.push_back(afn->ToCString()); + + return stdFontNames; +} + +static bool TextToBRep(const char* text, const char* font, const float theTextHeight, Font_FontAspect& theFontAspect, TopoDS_Shape& theShape) +{ + Standard_Integer anArgIt = 1; + Standard_CString aName = "text_shape"; + Standard_CString aText = text; + + Font_BRepFont aFont; + //TCollection_AsciiString aFontName("Courier"); + TCollection_AsciiString aFontName(font); + Standard_Real aTextHeight = theTextHeight; + Font_FontAspect aFontAspect = theFontAspect; + Standard_Boolean anIsCompositeCurve = Standard_False; + gp_Ax3 aPenAx3(gp::XOY()); + gp_Dir aNormal(0.0, 0.0, 1.0); + gp_Dir aDirection(1.0, 0.0, 0.0); + gp_Pnt aPenLoc; + + Graphic3d_HorizontalTextAlignment aHJustification = Graphic3d_HTA_LEFT; + Graphic3d_VerticalTextAlignment aVJustification = Graphic3d_VTA_BOTTOM; + Font_StrictLevel aStrictLevel = Font_StrictLevel_Any; + + aFont.SetCompositeCurveMode(anIsCompositeCurve); + if (!aFont.FindAndInit(aFontName.ToCString(), aFontAspect, aTextHeight, aStrictLevel)) + return false; + + aPenAx3 = gp_Ax3(aPenLoc, aNormal, aDirection); + + Font_BRepTextBuilder aBuilder; + theShape = aBuilder.Perform(aFont, aText, aPenAx3, aHJustification, aVJustification); + return true; +} + +static bool Prism(const TopoDS_Shape& theBase, const float thickness, TopoDS_Shape& theSolid) +{ + if (theBase.IsNull()) return false; + + gp_Vec V(0.f, 0.f, thickness); + BRepPrimAPI_MakePrism* Prism = new BRepPrimAPI_MakePrism(theBase, V, Standard_False); + + theSolid = Prism->Shape(); + return true; +} + +static void MakeMesh(TopoDS_Shape& theSolid, TriangleMesh& theMesh) +{ + const double STEP_TRANS_CHORD_ERROR = 0.005; + const double STEP_TRANS_ANGLE_RES = 1; + + BRepMesh_IncrementalMesh mesh(theSolid, STEP_TRANS_CHORD_ERROR, false, STEP_TRANS_ANGLE_RES, true); + int aNbNodes = 0; + int aNbTriangles = 0; + for (TopExp_Explorer anExpSF(theSolid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(anExpSF.Current()), aLoc); + if (!aTriangulation.IsNull()) { + aNbNodes += aTriangulation->NbNodes(); + aNbTriangles += aTriangulation->NbTriangles(); + } + } + + stl_file stl; + stl.stats.type = inmemory; + stl.stats.number_of_facets = (uint32_t)aNbTriangles; + stl.stats.original_num_facets = stl.stats.number_of_facets; + stl_allocate(&stl); + + std::vector points; + points.reserve(aNbNodes); + //BBS: count faces missing triangulation + Standard_Integer aNbFacesNoTri = 0; + //BBS: fill temporary triangulation + Standard_Integer aNodeOffset = 0; + Standard_Integer aTriangleOffet = 0; + for (TopExp_Explorer anExpSF(theSolid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { + const TopoDS_Shape& aFace = anExpSF.Current(); + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(aFace), aLoc); + if (aTriangulation.IsNull()) { + ++aNbFacesNoTri; + continue; + } + //BBS: copy nodes + gp_Trsf aTrsf = aLoc.Transformation(); + for (Standard_Integer aNodeIter = 1; aNodeIter <= aTriangulation->NbNodes(); ++aNodeIter) { + gp_Pnt aPnt = aTriangulation->Node(aNodeIter); + aPnt.Transform(aTrsf); + points.emplace_back(std::move(Vec3f(aPnt.X(), aPnt.Y(), aPnt.Z()))); + } + //BBS: copy triangles + const TopAbs_Orientation anOrientation = anExpSF.Current().Orientation(); + for (Standard_Integer aTriIter = 1; aTriIter <= aTriangulation->NbTriangles(); ++aTriIter) { + Poly_Triangle aTri = aTriangulation->Triangle(aTriIter); + + Standard_Integer anId[3]; + aTri.Get(anId[0], anId[1], anId[2]); + if (anOrientation == TopAbs_REVERSED) { + //BBS: swap 1, 2. + Standard_Integer aTmpIdx = anId[1]; + anId[1] = anId[2]; + anId[2] = aTmpIdx; + } + //BBS: Update nodes according to the offset. + anId[0] += aNodeOffset; + anId[1] += aNodeOffset; + anId[2] += aNodeOffset; + //BBS: save triangles facets + stl_facet facet; + facet.vertex[0] = points[anId[0] - 1].cast(); + facet.vertex[1] = points[anId[1] - 1].cast(); + facet.vertex[2] = points[anId[2] - 1].cast(); + facet.extra[0] = 0; + facet.extra[1] = 0; + stl_normal normal; + stl_calculate_normal(normal, &facet); + stl_normalize_vector(normal); + facet.normal = normal; + stl.facet_start[aTriangleOffet + aTriIter - 1] = facet; + } + + aNodeOffset += aTriangulation->NbNodes(); + aTriangleOffet += aTriangulation->NbTriangles(); + } + + theMesh.from_stl(stl); +} + +void load_text_shape(const char*text, const char* font, const float text_height, const float thickness, bool is_bold, bool is_italic, TriangleMesh& text_mesh) +{ + Handle(Font_FontMgr) aFontMgr = Font_FontMgr::GetInstance(); + if (aFontMgr->GetAvailableFonts().IsEmpty()) + aFontMgr->InitFontDataBase(); + + TopoDS_Shape aTextBase; + Font_FontAspect aFontAspect = Font_FontAspect_UNDEFINED; + if (is_bold && is_italic) + aFontAspect = Font_FontAspect_BoldItalic; + else if (is_bold) + aFontAspect = Font_FontAspect_Bold; + else if (is_italic) + aFontAspect = Font_FontAspect_Italic; + else + aFontAspect = Font_FontAspect_Regular; + + if (!TextToBRep(text, font, text_height, aFontAspect, aTextBase)) + return; + + TopoDS_Shape aTextShape; + if (!Prism(aTextBase, thickness, aTextShape)) + return; + + MakeMesh(aTextShape, text_mesh); +} + +}; // namespace Slic3r diff --git a/src/libslic3r/Shape/TextShape.hpp b/src/libslic3r/Shape/TextShape.hpp new file mode 100644 index 0000000000..0da84bb957 --- /dev/null +++ b/src/libslic3r/Shape/TextShape.hpp @@ -0,0 +1,12 @@ +#ifndef slic3r_Text_Shape_hpp_ +#define slic3r_Text_Shape_hpp_ + +namespace Slic3r { +class TriangleMesh; + +extern std::vector init_occt_fonts(); +extern void load_text_shape(const char* text, const char* font, const float text_height, const float thickness, bool is_bold, bool is_italic, TriangleMesh& text_mesh); + +}; // namespace Slic3r + +#endif // slic3r_Text_Shape_hpp_ \ No newline at end of file diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index ca8f445e3b..e310808ff8 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -129,6 +129,8 @@ set(SLIC3R_GUI_SOURCES GUI/Gizmos/GLGizmoFaceDetector.hpp GUI/Gizmos/GLGizmoSeam.cpp GUI/Gizmos/GLGizmoSeam.hpp + GUI/Gizmos/GLGizmoText.cpp + GUI/Gizmos/GLGizmoText.hpp GUI/GLSelectionRectangle.cpp GUI/GLSelectionRectangle.hpp GUI/Gizmos/GizmoObjectManipulation.cpp diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index b93c0de6a3..8c9a42b80c 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2069,6 +2069,45 @@ void ObjectList::load_mesh_object(const TriangleMesh &mesh, const wxString &name #endif /* _DEBUG */ } +void ObjectList::load_mesh_part(const TriangleMesh& mesh, const wxString& name, bool center) +{ + wxDataViewItem item = GetSelection(); + // we can add volumes for Object or Instance + if (!item || !(m_objects_model->GetItemType(item) & (itObject | itInstance))) + return; + const int obj_idx = m_objects_model->GetObjectIdByItem(item); + + if (obj_idx < 0) return; + + // Get object item, if Instance is selected + if (m_objects_model->GetItemType(item) & itInstance) + item = m_objects_model->GetItemById(obj_idx); + + take_snapshot("Load Mesh Part"); + + ModelObject* mo = (*m_objects)[obj_idx]; + ModelVolume* mv = mo->add_volume(mesh); + mv->name = name.ToStdString(); + + std::vector volumes; + volumes.push_back(mv); + wxDataViewItemArray items = reorder_volumes_and_get_selection(obj_idx, [volumes](const ModelVolume* volume) { + return std::find(volumes.begin(), volumes.end(), volume) != volumes.end(); }); + + wxGetApp().plater()->canvas3D()->update_instance_printable_state_for_object((size_t)obj_idx); + + if (items.size() > 1) { + m_selection_mode = smVolume; + m_last_selected_item = wxDataViewItem(nullptr); + } + select_items(items); + + selection_changed(); + + //BBS: notify partplate the modify + notify_instance_updated(obj_idx); +} + //BBS void ObjectList::del_object(const int obj_idx, bool refresh_immediately) { diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index dac2698469..f57c8fc29e 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -281,6 +281,8 @@ public: void load_generic_subobject(const std::string& type_name, const ModelVolumeType type); void load_shape_object(const std::string &type_name); void load_mesh_object(const TriangleMesh &mesh, const wxString &name, bool center = true); + // BBS + void load_mesh_part(const TriangleMesh& mesh, const wxString& name, bool center = true); void del_object(const int obj_idx, bool refresh_immediately = true); void del_subobject_item(wxDataViewItem& item); void del_settings_from_config(const wxDataViewItem& parent_item); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp new file mode 100644 index 0000000000..8ce8931cdc --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -0,0 +1,137 @@ +// Include GLGizmoBase.hpp before I18N.hpp as it includes some libigl code, which overrides our localization "L" macro. +#include "GLGizmoText.hpp" +#include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/Gizmos/GLGizmosCommon.hpp" +#include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/ImGuiWrapper.hpp" +#include "slic3r/GUI/GUI_ObjectList.hpp" + +#include "libslic3r/Geometry/ConvexHull.hpp" +#include "libslic3r/Model.hpp" + +#include "libslic3r/Shape/TextShape.hpp" + +#include + +#include + +namespace Slic3r { +namespace GUI { + +static double g_normal_precise = 0.0015; + +GLGizmoText::GLGizmoText(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id) + : GLGizmoBase(parent, icon_filename, sprite_id) +{ +} + +bool GLGizmoText::on_init() +{ + m_avail_font_names = init_occt_fonts(); + m_shortcut_key = WXK_CONTROL_T; + return true; +} + +void GLGizmoText::on_set_state() +{ +} + +CommonGizmosDataID GLGizmoText::on_get_requirements() const +{ + return CommonGizmosDataID::SelectionInfo; +} + +std::string GLGizmoText::on_get_name() const +{ + return _u8L("Text shape"); +} + +bool GLGizmoText::on_is_activable() const +{ + // This is assumed in GLCanvas3D::do_rotate, do not change this + // without updating that function too. + return m_parent.get_selection().is_single_full_instance(); +} + +void GLGizmoText::on_render() +{ + // TODO: +} + +void GLGizmoText::on_render_for_picking() +{ + // TODO: +} + +// BBS +void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) +{ + static float last_y = 0.0f; + static float last_h = 0.0f; + + float space_size = m_imgui->get_style_scaling() * 8; + float font_cap = m_imgui->calc_text_size("Font ").x; + float size_cap = m_imgui->calc_text_size("Size ").x; + float thickness_cap = m_imgui->calc_text_size("Thickness ").x; + float caption_size = std::max(std::max(font_cap, size_cap), thickness_cap) + 2 * space_size; + + m_imgui->begin(_L("Text"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + + // adjust window position to avoid overlap the view toolbar + const float win_h = ImGui::GetWindowHeight(); + y = std::min(y, bottom_limit - win_h); + ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always); + if (last_h != win_h || last_y != y) { + // ask canvas for another frame to render the window in the correct position + m_imgui->set_requires_extra_frame(); + if (last_h != win_h) + last_h = win_h; + if (last_y != y) + last_y = y; + } + + ImGui::AlignTextToFramePadding(); + + const char** cstr_font_names = (const char**)calloc(m_avail_font_names.size(), sizeof(const char*)); + for (int i = 0; i < m_avail_font_names.size(); i++) + cstr_font_names[i] = m_avail_font_names[i].c_str(); + + ImGui::InputText("", m_text, sizeof(m_text)); + + ImGui::PushItemWidth(caption_size); + ImGui::Text("Font "); + ImGui::SameLine(); + ImGui::PushItemWidth(150); + ImGui::Combo("##Font", &m_curr_font_idx, cstr_font_names, m_avail_font_names.size()); + + ImGui::PushItemWidth(caption_size); + ImGui::Text("Size "); + ImGui::SameLine(); + ImGui::PushItemWidth(150); + ImGui::InputFloat("###font_size", &m_font_size); + + ImGui::PushItemWidth(caption_size); + ImGui::Text("Thickness "); + ImGui::SameLine(); + ImGui::PushItemWidth(150); + ImGui::InputFloat("###text_thickness", &m_thickness); + + ImGui::Checkbox("Bold", &m_bold); + ImGui::SameLine(); + ImGui::Checkbox("Italic", &m_italic); + + ImGui::Separator(); + + bool add_clicked = m_imgui->button(_L("Add")); + if (add_clicked) { + TriangleMesh mesh; + load_text_shape(m_text, m_font_name.c_str(), m_font_size, m_thickness, m_bold, m_italic, mesh); + ObjectList* obj_list = wxGetApp().obj_list(); + obj_list->load_mesh_part(mesh, "text_shape"); + } + + m_imgui->end(); +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp new file mode 100644 index 0000000000..dd73c74a22 --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp @@ -0,0 +1,43 @@ +#ifndef slic3r_GLGizmoText_hpp_ +#define slic3r_GLGizmoText_hpp_ + +#include "GLGizmoBase.hpp" +#include "slic3r/GUI/3DScene.hpp" + + +namespace Slic3r { + +enum class ModelVolumeType : int; + +namespace GUI { + +class GLGizmoText : public GLGizmoBase +{ +private: + std::vector m_avail_font_names; + char m_text[256] = { 0 }; + std::string m_font_name; + float m_font_size = 16.f; + int m_curr_font_idx = 0; + bool m_bold = true; + bool m_italic = false; + float m_thickness = 2.f; + +public: + GLGizmoText(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id); + +protected: + virtual bool on_init() override; + virtual std::string on_get_name() const override; + virtual bool on_is_activable() const override; + virtual void on_render() override; + virtual void on_render_for_picking() override; + virtual void on_set_state() override; + virtual CommonGizmosDataID on_get_requirements() const override; + virtual void on_render_input_window(float x, float y, float bottom_limit); +}; + +} // namespace GUI +} // namespace Slic3r + +#endif // slic3r_GLGizmoText_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 21a8be5bc6..36e97aedd1 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -22,6 +22,7 @@ #include "slic3r/GUI/Gizmos/GLGizmoSeam.hpp" #include "slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp" #include "slic3r/GUI/Gizmos/GLGizmoSimplify.hpp" +#include "slic3r/GUI/Gizmos/GLGizmoText.hpp" #include "libslic3r/format.hpp" #include "libslic3r/Model.hpp" @@ -146,6 +147,7 @@ bool GLGizmosManager::init() m_gizmos.emplace_back(new GLGizmoAdvancedCut(m_parent, "toolbar_cut.svg", EType::Cut)); m_gizmos.emplace_back(new GLGizmoFdmSupports(m_parent, "toolbar_support.svg", EType::FdmSupports)); m_gizmos.emplace_back(new GLGizmoSeam(m_parent, "toolbar_seam.svg", EType::Seam)); + m_gizmos.emplace_back(new GLGizmoText(m_parent, "toolbar_text.svg", EType::Text)); m_gizmos.emplace_back(new GLGizmoMmuSegmentation(m_parent, "mmu_segmentation.svg", EType::MmuSegmentation)); m_gizmos.emplace_back(new GLGizmoSimplify(m_parent, "reduce_triangles.svg", EType::Simplify)); //m_gizmos.emplace_back(new GLGizmoSlaSupports(m_parent, "sla_supports.svg", sprite_id++)); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index 20584e7c47..3b03784fa6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -72,6 +72,8 @@ public: Cut, FdmSupports, Seam, + // BBS + Text, MmuSegmentation, Simplify, SlaSupports, From 8937d100713c109a871d9fb10822d637bb55175b Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 16 Aug 2022 21:01:40 +0800 Subject: [PATCH 002/137] NEW: add type change menu for part Signed-off-by: yifan.wu (cherry picked from commit abf39d652142137c93ad1e4d8d173501a627645d) Change-Id: I7ba2fb488c0e2d1891b750ed92d62c1323ef1b22 --- src/slic3r/GUI/GUI_Factories.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 4f1bf04917..9935afc1ef 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -991,6 +991,7 @@ void MenuFactory::create_bbl_part_menu() []() { return plater()->can_split(true); }, m_parent); menu->AppendSeparator(); append_menu_item_per_object_settings(menu); + append_menu_item_change_type(menu); } void MenuFactory::create_bbl_assemble_part_menu() From b55d9672b9ff05f331641d98dd6571afd2f393be Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 16 Aug 2022 22:49:33 +0800 Subject: [PATCH 003/137] FIX: fix crash issues when deleting filament during color painting Signed-off-by: yifan.wu (cherry picked from commit 5c8405309b4a9f00fe004b0510283385464763cc) Change-Id: I32150ac2707601ba74eec1cf2163b06764378664 --- src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 5 +++-- src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index d63feb4e79..1c7210e7de 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -383,7 +383,8 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott float start_pos_x = ImGui::GetCursorPos().x; const ImVec2 max_label_size = ImGui::CalcTextSize("99", NULL, true); const float item_spacing = m_imgui->scaled(0.8f); - for (int extruder_idx = 0; extruder_idx < m_extruders_colors.size(); extruder_idx++) { + size_t n_extruder_colors = std::min((size_t)EnforcerBlockerType::ExtruderMax, m_extruders_colors.size()); + for (int extruder_idx = 0; extruder_idx < n_extruder_colors; extruder_idx++) { const std::array &extruder_color = m_extruders_colors[extruder_idx]; ImVec4 color_vec(extruder_color[0], extruder_color[1], extruder_color[2], extruder_color[3]); std::string color_label = std::string("##extruder color ") + std::to_string(extruder_idx); @@ -689,7 +690,7 @@ void GLGizmoMmuSegmentation::init_model_triangle_selectors() const TriangleMesh* mesh = &mv->mesh(); m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors, 0.2)); // Reset of TriangleSelector is done inside TriangleSelectorMmGUI's constructor, so we don't need it to perform it again in deserialize(). - m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false); + m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false, (EnforcerBlockerType)m_extruders_colors.size()); m_triangle_selectors.back()->request_update_render_data(); m_volumes_extruder_idxs.push_back(mv->extruder_id()); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index 0d09e40368..cf1ad0e4d3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -1091,7 +1091,7 @@ void TriangleSelectorPatch::render(ImGuiWrapper* imgui) void TriangleSelectorPatch::update_triangles_per_type() { - m_triangle_patches.resize((int)EnforcerBlockerType::ExtruderMax); + m_triangle_patches.resize((int)EnforcerBlockerType::ExtruderMax + 1); for (int i = 0; i < m_triangle_patches.size(); i++) { auto& patch = m_triangle_patches[i]; patch.type = (EnforcerBlockerType)i; From 531794d1316f5524a44d6782a898f0fc98fabdcf Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Wed, 17 Aug 2022 00:09:58 +0800 Subject: [PATCH 004/137] FIX: plate is exceptionally selected when openning scale tool Change-Id: If2cfd62ddb7252aeb51ebf81c8c50f1b7ef52fa1 Signed-off-by: yifan.wu --- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 36e97aedd1..194a033d68 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -1381,7 +1381,8 @@ void GLGizmosManager::update_on_off_state(const Vec2d& mouse_pos) size_t idx = get_gizmo_idx_from_mouse(mouse_pos); if (idx != Undefined && m_gizmos[idx]->is_activable() && m_hover == idx) { activate_gizmo(m_current == idx ? Undefined : (EType)idx); - wxGetApp().obj_list()->select_object_item((EType)idx <= Rotate); + // BBS + wxGetApp().obj_list()->select_object_item((EType)idx <= Scale); } } From 2866e33304d81ac15912ccd94ea3d512a0a4be27 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 1 Aug 2022 15:59:15 +0800 Subject: [PATCH 005/137] ENH: refine new version protocol in upgrading Change-Id: I8c14dce6a20ca93cf42ff55b4610c397cdbf97e3 Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 24 +++++++++++++++ src/slic3r/GUI/DeviceManager.hpp | 3 ++ src/slic3r/GUI/UpgradePanel.cpp | 50 +++++++++++++++++++++++--------- 3 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 467755c4e3..67249ce20b 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1617,6 +1617,7 @@ void MachineObject::reset() iot_print_status = ""; print_status = ""; last_mc_print_stage = -1; + m_new_ver_list_exist = false; subtask_ = nullptr; @@ -2069,6 +2070,29 @@ int MachineObject::parse_json(std::string payload) } } } + // new ver list + if (jj["upgrade_state"].contains("new_ver_list")) { + m_new_ver_list_exist = true; + new_ver_list.clear(); + for (auto ver_item = jj["upgrade_state"]["new_ver_list"].begin(); ver_item != jj["upgrade_state"]["new_ver_list"].end(); ver_item++) { + ModuleVersionInfo ver_info; + if (ver_item->contains("name")) + ver_info.name = (*ver_item)["name"].get(); + else + continue; + + if (ver_item->contains("cur_ver")) + ver_info.sw_ver = (*ver_item)["cur_ver"].get(); + if (ver_item->contains("new_ver")) + ver_info.sw_new_ver = (*ver_item)["new_ver"].get(); + + if (ver_info.name == "ota") { + ota_new_version_number = ver_info.sw_new_ver; + } + + new_ver_list.insert(std::make_pair(ver_info.name, ver_info)); + } + } } } catch (...) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 241e8424fb..fd18c6057b 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -296,6 +296,7 @@ public: std::string sn; std::string hw_ver; std::string sw_ver; + std::string sw_new_ver; }; /* static members and functions */ @@ -413,6 +414,8 @@ public: std::string ota_new_version_number; std::string ahb_new_version_number; std::map module_vers; + std::map new_ver_list; + bool m_new_ver_list_exist = false; int upgrade_err_code = 0; std::vector firmware_list; diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 7d19dd934e..5eeb331401 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -19,8 +19,6 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin init_bitmaps(); - - wxBoxSizer *m_top_sizer = new wxBoxSizer(wxVERTICAL); m_panel_caption = create_caption_panel(this); @@ -345,7 +343,7 @@ void MachineInfoPanel::update_version_text(MachineObject* obj) } else { if (it != obj->module_vers.end()) { - wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Lastest version")); + wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); m_staticText_ver_val->SetLabelText(ver_text); } else { @@ -391,24 +389,50 @@ void MachineInfoPanel::update_ams(MachineObject *obj) // update ams img wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_index + 1)); ams_name = ams_text; - if (obj->upgrade_new_version - && !obj->ams_new_version_number.empty() - && obj->ams_new_version_number.compare(it->second.sw_ver) != 0) { - amspanel->m_ams_new_version_img->Show(); - wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); - ams_ver = ver_text; + + std::string ams_id = "ams/" + std::to_string(ams_index); + auto ver_item = obj->new_ver_list.find(ams_id); + if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { + if (obj->upgrade_new_version + && obj->ams_new_version_number.compare(it->second.sw_ver) != 0) { + amspanel->m_ams_new_version_img->Show(); + wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); + ams_ver = ver_text; + } else { + amspanel->m_ams_new_version_img->Hide(); + if (obj->ams_new_version_number.empty()) { + wxString ver_text = wxString::Format("%s", it->second.sw_ver); + ams_ver = ver_text; + } else { + wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); + ams_ver = ver_text; + } + } } else { - amspanel->m_ams_new_version_img->Hide(); - wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Lastest version")); - ams_ver = ver_text; + if (ver_item == obj->new_ver_list.end()) { + amspanel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); + ams_ver = ver_text; + } else { + if (ver_item->second.sw_new_ver != ver_item->second.sw_ver) { + amspanel->m_ams_new_version_img->Show(); + wxString ver_text = wxString::Format("%s->%s", ver_item->second.sw_ver, ver_item->second.sw_new_ver); + ams_ver = ver_text; + } else { + amspanel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", ver_item->second.sw_ver, _L("Latest version")); + ams_ver = ver_text; + } + } } + // update ams sn if (it->second.sn.empty()) { ams_sn = "-"; } else { wxString sn_text = it->second.sn; ams_sn = sn_text.MakeUpper(); - } + } } amspanel->m_staticText_ams->SetLabelText(ams_name); From 639bb983966fdadab1d20149945fa3f4827b4ee9 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 15 Aug 2022 16:10:48 +0800 Subject: [PATCH 006/137] ENH: refine filename when exporting gcode.3mf Change-Id: Icace408c89f9d9da4695723ea8757ab023f85849 Signed-off-by: Stone Li --- src/slic3r/GUI/PartPlate.hpp | 4 +-- src/slic3r/GUI/Plater.cpp | 54 +++++++++++++++++++++++++++++++----- src/slic3r/GUI/Plater.hpp | 1 + 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 4bfc35d6c7..84235ff7c6 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -74,7 +74,7 @@ public: }; private: - PartPlateList* m_partplate_list; + PartPlateList* m_partplate_list {nullptr }; Plater* m_plater; //Plater reference, not own it Model* m_model; //Model reference, not own it PrinterTechnology printer_technology; @@ -507,7 +507,7 @@ public: m_height_limit_mode = mode; } - int get_curr_plate_index() { return m_current_plate; } + int get_curr_plate_index() const { return m_current_plate; } PartPlate* get_curr_plate() { return m_plate_list[m_current_plate]; } PartPlate* get_selected_plate(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 460e4f8a5c..7a73c657ba 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1821,6 +1821,7 @@ struct Plater::priv // returns the path to project file with the given extension (none if extension == wxEmptyString) // extension should contain the leading dot, i.e.: ".3mf" wxString get_project_filename(const wxString& extension = wxEmptyString) const; + wxString get_export_gcode_filename(const wxString& extension = wxEmptyString, bool only_filename = false) const; void set_project_filename(const wxString& filename); //BBS store bbs project name @@ -5568,8 +5569,30 @@ PlateBBoxData Plater::priv::generate_first_layer_bbox() wxString Plater::priv::get_project_filename(const wxString& extension) const { - auto full_filename = m_project_folder / std::string((m_project_name + extension).mb_str(wxConvUTF8)); - return m_project_folder.empty() ? "" : from_path(full_filename); + if (m_project_name.empty()) + return ""; + else { + auto full_filename = m_project_folder / std::string((m_project_name + extension).mb_str(wxConvUTF8)); + return m_project_folder.empty() ? "" : from_path(full_filename); + } +} + +wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool only_filename) const +{ + std::string plate_index_str = (boost::format("_plate_%1%") % std::to_string(partplate_list.get_curr_plate_index() + 1)).str(); + if (!m_project_folder.empty()) { + if (!only_filename) { + auto full_filename = m_project_folder / std::string((m_project_name + plate_index_str + extension).mb_str(wxConvUTF8)); + return from_path(full_filename); + } else { + return m_project_name + wxString(plate_index_str) + extension; + } + } else { + if (only_filename) + return m_project_name + wxString(plate_index_str) + extension; + else + return ""; + } } wxString Plater::priv::get_project_name() @@ -7869,16 +7892,28 @@ void Plater::export_gcode_3mf() //calc default_output_file, get default output file from background process fs::path default_output_file; - default_output_file = into_path(get_project_filename(".3mf")); - if (default_output_file.empty()) - default_output_file = into_path(get_project_name() + ".3mf"); + AppConfig& appconfig = *wxGetApp().app_config; + std::string start_dir; + default_output_file = into_path(get_export_gcode_filename(".3mf")); + if (default_output_file.empty()) { + try { + start_dir = appconfig.get_last_output_dir("", false); + wxString filename = get_export_gcode_filename(".3mf", true); + std::string full_filename = start_dir + "/" + filename.utf8_string(); + default_output_file = boost::filesystem::path(full_filename); + } catch(...) { + ; + } + } //BBS replace gcode extension to .gcode.3mf default_output_file = default_output_file.replace_extension(".gcode.3mf"); default_output_file = fs::path(Slic3r::fold_utf8_to_ascii(default_output_file.string())); - AppConfig &appconfig = *wxGetApp().app_config; + //Get a last save path - std::string start_dir = appconfig.get_last_output_dir(default_output_file.parent_path().string(), false); + start_dir = appconfig.get_last_output_dir(default_output_file.parent_path().string(), false); + + fs::path output_path; { std::string ext = default_output_file.extension().string(); @@ -8854,6 +8889,11 @@ wxString Plater::get_project_filename(const wxString& extension) const return p->get_project_filename(extension); } +wxString Plater::get_export_gcode_filename(const wxString & extension, bool only_filename) const +{ + return p->get_export_gcode_filename(extension, only_filename); +} + void Plater::set_project_filename(const wxString& filename) { p->set_project_filename(filename); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 0af6643cab..8becdd94e8 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -370,6 +370,7 @@ public: //void show_action_buttons(const bool is_ready_to_slice) const; wxString get_project_filename(const wxString& extension = wxEmptyString) const; + wxString get_export_gcode_filename(const wxString& extension = wxEmptyString, bool only_filename = false) const; void set_project_filename(const wxString& filename); bool is_export_gcode_scheduled() const; From 5444f69fc2a60a96756c9086cb8ff0cb29439b99 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 15 Aug 2022 16:27:30 +0800 Subject: [PATCH 007/137] FIX:typos in mac shortcut Change-Id: I928f95582db8927ac563ee7003d57d6d3e12d7cd --- src/slic3r/GUI/MainFrame.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8ab1dc57e8..560ba34720 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1936,7 +1936,7 @@ void MainFrame::init_menubar_as_editor() #ifdef __APPLE__ wxWindowID bambu_studio_id_base = wxWindow::NewControlId(int(2)); wxMenu* parent_menu = m_menubar->OSXGetAppleMenu(); - auto preference_item = new wxMenuItem(parent_menu, BambuStudioMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\tCtrl+,", ""); + //auto preference_item = new wxMenuItem(parent_menu, BambuStudioMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\tCtrl+,", ""); #else wxMenu* parent_menu = m_topbar->GetTopMenu(); auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\tCtrl+P", ""); @@ -2011,7 +2011,7 @@ void MainFrame::init_menubar_as_editor() #ifdef __APPLE__ wxString about_title = wxString::Format(_L("&About %s"), SLIC3R_APP_FULL_NAME); - auto about_item = new wxMenuItem(parent_menu, BambuStudioMenuAbout + bambu_studio_id_base, about_title, ""); + //auto about_item = new wxMenuItem(parent_menu, BambuStudioMenuAbout + bambu_studio_id_base, about_title, ""); //parent_menu->Bind(wxEVT_MENU, [this, bambu_studio_id_base](wxEvent& event) { // switch (event.GetId() - bambu_studio_id_base) { // case BambuStudioMenuAbout: @@ -2035,11 +2035,11 @@ void MainFrame::init_menubar_as_editor() //}); //parent_menu->Insert(0, about_item); append_menu_item( - parent_menu, wxID_ANY, _L("About") + "", _L(""), + parent_menu, wxID_ANY, _L(about_title), _L(""), [this](wxCommandEvent &) { Slic3r::GUI::about();}, "", nullptr, []() { return true; }, this, 0); append_menu_item( - parent_menu, wxID_ANY, _L("Preferences") + "\tCtrl+'", _L(""), + parent_menu, wxID_ANY, _L("Preferences") + "\tCtrl+,", _L(""), [this](wxCommandEvent &) { PreferencesDialog dlg(this); dlg.ShowModal(); From 459fe362351230aaef8b3dd568bff2d15ea30a45 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 16 Aug 2022 13:12:48 +0800 Subject: [PATCH 008/137] FIX:fixed amsdata not sync after changed ams Change-Id: If1c087c42258897fec7df5d44ff039bb0eec3b25 --- src/slic3r/GUI/UpgradePanel.cpp | 8 ++++++-- src/slic3r/GUI/Widgets/AMSControl.cpp | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 5eeb331401..ae825909c6 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -379,15 +379,19 @@ void MachineInfoPanel::update_ams(MachineObject *obj) auto it = ver_list.find(atoi(iter->first.c_str())); + auto ams_id = std::stoi(iter->second->id); + + if (it == ver_list.end()) { // hide this ams - wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_index + 1)); + wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_id + 1)); + ams_name = ams_text; ams_sn = "-"; ams_ver = "-"; } else { // update ams img - wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_index + 1)); + wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_id + 1)); ams_name = ams_text; std::string ams_id = "ams/" + std::to_string(ams_index); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index dbe74760d8..8fc6df022e 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1747,7 +1747,20 @@ void AMSControl::CreateAms() void AMSControl::Reset() { - m_current_ams = ""; + auto caninfo0_0 = Caninfo{"def_can_0", L(""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; + auto caninfo0_1 = Caninfo{"def_can_1", L(""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; + auto caninfo0_2 = Caninfo{"def_can_2", L(""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; + auto caninfo0_3 = Caninfo{"def_can_3", L(""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; + + AMSinfo ams1 = AMSinfo{"def_ams_0", std::vector{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}}; + AMSinfo ams2 = AMSinfo{"def_ams_1", std::vector{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}}; + AMSinfo ams3 = AMSinfo{"def_ams_2", std::vector{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}}; + AMSinfo ams4 = AMSinfo{"def_ams_3", std::vector{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}}; + + std::vector ams_info{ams1, ams2, ams3, ams4}; + std::vector::iterator it; + UpdateAms(ams_info, false); + m_current_ams = ""; m_current_senect = ""; } From 03d29b3989b97bc441bca22e111acbfaa49bf4e1 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Mon, 15 Aug 2022 17:51:13 +0800 Subject: [PATCH 009/137] FIX:change modifier icon Change-Id: If0a1425d020f6da575a95b8ba58bc85f497635c9 --- resources/images/menu_add_negative.svg | 4 +-- resources/images/menu_add_part.svg | 9 ++++++- resources/images/menu_support_blocker.svg | 30 ++++++++++++++-------- resources/images/menu_support_enforcer.svg | 4 +-- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/resources/images/menu_add_negative.svg b/resources/images/menu_add_negative.svg index f1cc3659cf..eabe44e001 100644 --- a/resources/images/menu_add_negative.svg +++ b/resources/images/menu_add_negative.svg @@ -1,4 +1,4 @@ - - + + diff --git a/resources/images/menu_add_part.svg b/resources/images/menu_add_part.svg index 38b3d44081..dd82ff96cc 100644 --- a/resources/images/menu_add_part.svg +++ b/resources/images/menu_add_part.svg @@ -1,5 +1,12 @@ - + + + + + + + + diff --git a/resources/images/menu_support_blocker.svg b/resources/images/menu_support_blocker.svg index 76b548b9b7..e3ceb94082 100644 --- a/resources/images/menu_support_blocker.svg +++ b/resources/images/menu_support_blocker.svg @@ -1,12 +1,22 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/menu_support_enforcer.svg b/resources/images/menu_support_enforcer.svg index 89c2aab252..16e9099bc9 100644 --- a/resources/images/menu_support_enforcer.svg +++ b/resources/images/menu_support_enforcer.svg @@ -1,4 +1,4 @@ - - + + From 663df48a95946cb3ecdcc68dd7179ae7d936c028 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 17 Aug 2022 10:11:38 +0800 Subject: [PATCH 010/137] FIX: cut_to_parts+keep_lower crashes Change-Id: I65eb51952a2062e6726e12e6cdb42f09f7816bc3 (cherry picked from commit cf9873717c756ddfe7e584ccb74f29763f529883) --- src/libslic3r/Model.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 5f9c8c1cbc..888edd6c21 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1538,7 +1538,7 @@ ModelObjectPtrs ModelObject::cut(size_t instance, std::array plane_poi bool keep_lower = attributes.has(ModelObjectCutAttribute::KeepLower); bool cut_to_parts = attributes.has(ModelObjectCutAttribute::CutToParts); ModelObject* upper = keep_upper ? ModelObject::new_clone(*this) : nullptr; - ModelObject* lower = cut_to_parts ? upper : (keep_lower ? ModelObject::new_clone(*this) : nullptr); + ModelObject* lower = (cut_to_parts&&upper!=nullptr) ? upper : (keep_lower ? ModelObject::new_clone(*this) : nullptr); if (attributes.has(ModelObjectCutAttribute::KeepUpper)) { upper->set_model(nullptr); From ef46654cca7e94b6dcd45bf2528482d75153c6aa Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Mon, 15 Aug 2022 14:58:46 +0800 Subject: [PATCH 011/137] NEW: show cost of filament in GUI Signed-off-by: qing.zhang Change-Id: If28f6e969728fb5edd9cb35d6bc6d0a6c155d96e (cherry picked from commit a4b8e620794f611c2f94f639cec49ec7c8fe8926) --- resources/profiles/BBL.json | 2 +- .../profiles/BBL/filament/Bambu ABS @base.json | 3 +++ .../BBL/filament/Bambu PA-CF @base.json | 3 +++ .../profiles/BBL/filament/Bambu PC @base.json | 3 +++ .../BBL/filament/Bambu PLA Basic @base.json | 2 +- .../BBL/filament/Bambu PLA Matte @base.json | 2 +- .../BBL/filament/Bambu Support G @base.json | 3 +++ .../BBL/filament/Bambu Support W @base.json | 3 +++ .../BBL/filament/Bambu TPU 95A @base.json | 3 +++ src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/GCodeViewer.cpp | 17 ++++++++++++++++- 11 files changed, 38 insertions(+), 5 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 5888a97c25..a50d00a133 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.01.03", + "version": "01.01.01.04", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/filament/Bambu ABS @base.json b/resources/profiles/BBL/filament/Bambu ABS @base.json index 165b1e676a..f32991617c 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS @base.json @@ -8,6 +8,9 @@ "filament_flow_ratio": [ "0.95" ], + "filament_cost": [ + "24.99" + ], "filament_vendor": [ "Bambu Lab" ] diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @base.json b/resources/profiles/BBL/filament/Bambu PA-CF @base.json index a9b6f16874..f4be03cdcd 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @base.json @@ -20,6 +20,9 @@ "filament_type": [ "PA-CF" ], + "filament_cost": [ + "44.99" + ], "nozzle_temperature": [ "280" ] diff --git a/resources/profiles/BBL/filament/Bambu PC @base.json b/resources/profiles/BBL/filament/Bambu PC @base.json index 5a507a2b42..c8f76b80af 100644 --- a/resources/profiles/BBL/filament/Bambu PC @base.json +++ b/resources/profiles/BBL/filament/Bambu PC @base.json @@ -8,6 +8,9 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_cost": [ + "34.99" + ], "filament_flow_ratio": [ "0.94" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json index d450ad4320..5f936cec7f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json @@ -9,7 +9,7 @@ "Bambu Lab" ], "filament_cost": [ - "25.4" + "24.99" ], "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json index b6001992d9..af1d3e1f21 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json @@ -9,7 +9,7 @@ "Bambu Lab" ], "filament_cost": [ - "25.4" + "24.99" ], "filament_density": [ "1.32" diff --git a/resources/profiles/BBL/filament/Bambu Support G @base.json b/resources/profiles/BBL/filament/Bambu Support G @base.json index f9d1637e30..21d303dbac 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @base.json +++ b/resources/profiles/BBL/filament/Bambu Support G @base.json @@ -23,6 +23,9 @@ "fan_cooling_layer_time": [ "10" ], + "filament_cost": [ + "34.99" + ], "slow_down_layer_time":[ "6" ] diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index 62ca849148..6dce96695c 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -26,6 +26,9 @@ "hot_plate_temp_initial_layer": [ "40" ], + "filament_cost": [ + "29.99" + ], "slow_down_layer_time": [ "8" ] diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json index 8006c0adcc..58e83618c9 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json @@ -14,6 +14,9 @@ "nozzle_temperature_initial_layer": [ "230" ], + "filament_cost": [ + "36.99" + ], "nozzle_temperature": [ "230" ] diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index d8ec391d20..f0bc8d79a4 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -990,7 +990,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Filament price. For statistics only"); def->sidetext = L("money/kg"); def->min = 0; - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_settings_id", coStrings); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index d9d8ef59da..800fc32b13 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4998,6 +4998,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::SameLine(); imgui.title(time_title); std::string filament_str = _u8L("Filament"); + std::string cost_str = _u8L("Cost"); std::string prepare_str = _u8L("Prepare time"); std::string print_str = _u8L("Model printing time"); std::string total_str = _u8L("Total"); @@ -5006,7 +5007,10 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv if (time_mode.layers_times.empty()) max_len += ImGui::CalcTextSize(total_str.c_str()).x; else { - max_len += std::max(ImGui::CalcTextSize(print_str.c_str()).x ,std::max(std::max(ImGui::CalcTextSize(prepare_str.c_str()).x, ImGui::CalcTextSize(total_str.c_str()).x), ImGui::CalcTextSize(filament_str.c_str()).x)); + max_len += std::max(ImGui::CalcTextSize(cost_str.c_str()).x, + std::max(ImGui::CalcTextSize(print_str.c_str()).x, + std::max(std::max(ImGui::CalcTextSize(prepare_str.c_str()).x, ImGui::CalcTextSize(total_str.c_str()).x), + ImGui::CalcTextSize(filament_str.c_str()).x))); } //BBS display filament cost @@ -5031,6 +5035,17 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv auto it = std::find_if(time_mode.roles_times.begin(), time_mode.roles_times.end(), [role](const std::pair& item) { return role == item.first; }); return (it != time_mode.roles_times.end()) ? it->second : 0.0f; }; + + //BBS: display cost of filaments + ImGui::Dummy({window_padding, window_padding}); + ImGui::SameLine(); + imgui.text(cost_str + ":"); + ImGui::SameLine(max_len); + + //char buf[64]; + ::sprintf(buf, "%.2f", ps.total_cost); + imgui.text(buf); + //BBS: start gcode is prepeare time if (role_time(erCustom) != 0.0f) { ImGui::Dummy({ window_padding, window_padding }); From 6883c89ed5ef756213648f440193f0d93333a1d6 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Wed, 17 Aug 2022 15:44:57 +0800 Subject: [PATCH 012/137] ENH: add 0.02 tolerance to nozzle. Signed-off-by: qing.zhang Change-Id: I2680289b4a944c01698aa57adb5270100f6a8c25 --- resources/profiles/BBL.json | 2 +- .../process/fdm_process_bbl_0.10_nozzle_0.2.json | 6 +++--- .../process/fdm_process_bbl_0.30_nozzle_0.6.json | 16 ++++++++-------- .../process/fdm_process_bbl_0.40_nozzle_0.8.json | 16 ++++++++-------- .../BBL/process/fdm_process_bbl_common.json | 10 +++++----- .../profiles/BBL/process/fdm_process_common.json | 4 ++-- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index a50d00a133..c80313be36 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.01.04", + "version": "01.01.01.05", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json index a33070f2e5..a53df8b5a9 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json @@ -11,13 +11,13 @@ "top_shell_layers": "7", "bridge_flow": "1", "line_width": "0.22", - "outer_wall_line_width": "0.2", + "outer_wall_line_width": "0.22", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.21", - "top_surface_line_width": "0.2", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", "initial_layer_speed": "40", "initial_layer_infill_speed": "70", "sparse_infill_speed": "100", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json index 32925c7057..8a3ee1da12 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json @@ -10,14 +10,14 @@ "bottom_shell_layers": "3", "top_shell_layers": "3", "bridge_flow": "1", - "line_width": "0.6", - "outer_wall_line_width": "0.6", - "initial_layer_line_width": "0.6", - "sparse_infill_line_width": "0.6", - "inner_wall_line_width": "0.6", - "internal_solid_infill_line_width": "0.6", - "support_line_width": "0.6", - "top_surface_line_width": "0.6", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "120", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json index 1b316059e9..3948f1b903 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json @@ -10,14 +10,14 @@ "bottom_shell_layers": "3", "top_shell_layers": "3", "bridge_flow": "1", - "line_width": "0.8", - "outer_wall_line_width": "0.8", - "initial_layer_line_width": "0.8", - "sparse_infill_line_width": "0.8", - "inner_wall_line_width": "0.8", - "internal_solid_infill_line_width": "0.8", - "support_line_width": "0.8", - "top_surface_line_width": "0.8", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", "top_surface_pattern": "monotonic", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_common.json b/resources/profiles/BBL/process/fdm_process_bbl_common.json index 729080de57..e8574725de 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_common.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_common.json @@ -22,10 +22,10 @@ "draft_shield": "disabled", "elefant_foot_compensation": "0", "enable_arc_fitting": "1", - "outer_wall_line_width": "0.4", + "outer_wall_line_width": "0.42", "outer_wall_speed": "120", "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.4", + "line_width": "0.42", "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "grid", @@ -61,7 +61,7 @@ "skirt_height": "1", "skirt_loops": "0", "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.4", + "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "150", "spiral_mode": "0", "initial_layer_infill_speed": "60", @@ -72,7 +72,7 @@ "support_on_build_plate_only": "0", "support_top_z_distance": "0.2", "support_filament": "0", - "support_line_width": "0.4", + "support_line_width": "0.42", "support_interface_loop_pattern": "0", "support_interface_filament": "0", "support_interface_top_layers": "2", @@ -89,7 +89,7 @@ "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.4", + "top_surface_line_width": "0.42", "top_surface_speed": "200", "top_shell_layers": "3", "top_shell_thickness": "0.8", diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index 2f46423f61..0343476333 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -13,7 +13,7 @@ "default_acceleration": "10000", "bridge_no_support": "0", "elefant_foot_compensation": "0.1", - "outer_wall_line_width": "0.4", + "outer_wall_line_width": "0.42", "outer_wall_speed": "120", "line_width": "0.45", "infill_direction": "45", @@ -61,7 +61,7 @@ "support_object_xy_distance": "0.5", "tree_support_with_infill": "1", "detect_thin_wall": "0", - "top_surface_line_width": "0.4", + "top_surface_line_width": "0.42", "top_surface_speed": "30", "travel_speed": "400", "enable_prime_tower": "0", From 440bcc809062036e3596122063ab6930bbdcc9d4 Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Wed, 17 Aug 2022 15:55:34 +0800 Subject: [PATCH 013/137] ENH: speed up the progress of loading step Make the shape triangulation to be parallel Signed-off-by: salt.wei Change-Id: I0fe68359111b498458d431492841c54d13d7a7df --- src/libslic3r/Format/STEP.cpp | 175 +++++++++++++++++----------------- 1 file changed, 85 insertions(+), 90 deletions(-) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 2684581fd1..f055540146 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -257,12 +257,88 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn proFn, StepI getNamedSolids(TopLoc_Location{}, "", id, shapeTool, topLevelShapes.Value(iLabel), namedSolids); } - ModelObject* new_object = model->add_object(); - const char *last_slash = strrchr(path, DIR_SEPARATOR); + std::vector stl; + stl.resize(namedSolids.size()); + tbb::parallel_for(tbb::blocked_range(0, namedSolids.size()), [&](const tbb::blocked_range &range) { + for (size_t i = range.begin(); i < range.end(); i++) { + BRepMesh_IncrementalMesh mesh(namedSolids[i].solid, STEP_TRANS_CHORD_ERROR, false, STEP_TRANS_ANGLE_RES, true); + // BBS: calculate total number of the nodes and triangles + int aNbNodes = 0; + int aNbTriangles = 0; + for (TopExp_Explorer anExpSF(namedSolids[i].solid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(anExpSF.Current()), aLoc); + if (!aTriangulation.IsNull()) { + aNbNodes += aTriangulation->NbNodes(); + aNbTriangles += aTriangulation->NbTriangles(); + } + } + + if (aNbTriangles == 0) + // BBS: No triangulation on the shape. + continue; + + stl[i].stats.type = inmemory; + stl[i].stats.number_of_facets = (uint32_t) aNbTriangles; + stl[i].stats.original_num_facets = stl[i].stats.number_of_facets; + stl_allocate(&stl[i]); + + std::vector points; + points.reserve(aNbNodes); + // BBS: count faces missing triangulation + Standard_Integer aNbFacesNoTri = 0; + // BBS: fill temporary triangulation + Standard_Integer aNodeOffset = 0; + Standard_Integer aTriangleOffet = 0; + for (TopExp_Explorer anExpSF(namedSolids[i].solid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { + const TopoDS_Shape &aFace = anExpSF.Current(); + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(aFace), aLoc); + if (aTriangulation.IsNull()) { + ++aNbFacesNoTri; + continue; + } + // BBS: copy nodes + gp_Trsf aTrsf = aLoc.Transformation(); + for (Standard_Integer aNodeIter = 1; aNodeIter <= aTriangulation->NbNodes(); ++aNodeIter) { + gp_Pnt aPnt = aTriangulation->Node(aNodeIter); + aPnt.Transform(aTrsf); + points.emplace_back(std::move(Vec3f(aPnt.X(), aPnt.Y(), aPnt.Z()))); + } + // BBS: copy triangles + const TopAbs_Orientation anOrientation = anExpSF.Current().Orientation(); + Standard_Integer anId[3]; + for (Standard_Integer aTriIter = 1; aTriIter <= aTriangulation->NbTriangles(); ++aTriIter) { + Poly_Triangle aTri = aTriangulation->Triangle(aTriIter); + + aTri.Get(anId[0], anId[1], anId[2]); + if (anOrientation == TopAbs_REVERSED) + std::swap(anId[1], anId[2]); + // BBS: save triangles facets + stl_facet facet; + facet.vertex[0] = points[anId[0] + aNodeOffset - 1].cast(); + facet.vertex[1] = points[anId[1] + aNodeOffset - 1].cast(); + facet.vertex[2] = points[anId[2] + aNodeOffset - 1].cast(); + facet.extra[0] = 0; + facet.extra[1] = 0; + stl_normal normal; + stl_calculate_normal(normal, &facet); + stl_normalize_vector(normal); + facet.normal = normal; + stl[i].facet_start[aTriangleOffet + aTriIter - 1] = facet; + } + + aNodeOffset += aTriangulation->NbNodes(); + aTriangleOffet += aTriangulation->NbTriangles(); + } + } + }); + + ModelObject *new_object = model->add_object(); + const char * last_slash = strrchr(path, DIR_SEPARATOR); new_object->name.assign((last_slash == nullptr) ? path : last_slash + 1); new_object->input_file = path; - - for (size_t i = 0; i < namedSolids.size(); ++i) { + for (size_t i = 0; i < stl.size(); i++) { if (proFn) { proFn(LOAD_STEP_STAGE_GET_MESH, i, namedSolids.size(), cb_cancel); if (cb_cancel) { @@ -273,94 +349,13 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn proFn, StepI } } - BRepMesh_IncrementalMesh mesh(namedSolids[i].solid, STEP_TRANS_CHORD_ERROR, false, STEP_TRANS_ANGLE_RES, true); - //BBS: calculate total number of the nodes and triangles - int aNbNodes = 0; - int aNbTriangles = 0; - for (TopExp_Explorer anExpSF(namedSolids[i].solid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { - TopLoc_Location aLoc; - Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(anExpSF.Current()), aLoc); - if (!aTriangulation.IsNull()) { - aNbNodes += aTriangulation->NbNodes(); - aNbTriangles += aTriangulation->NbTriangles(); - } - } - - if (aNbTriangles == 0) { - //BBS: No triangulation on the shape. - continue; - } - - stl_file stl; - stl.stats.type = inmemory; - stl.stats.number_of_facets = (uint32_t)aNbTriangles; - stl.stats.original_num_facets = stl.stats.number_of_facets; - stl_allocate(&stl); - - std::vector points; - points.reserve(aNbNodes); - //BBS: count faces missing triangulation - Standard_Integer aNbFacesNoTri = 0; - //BBS: fill temporary triangulation - Standard_Integer aNodeOffset = 0; - Standard_Integer aTriangleOffet = 0; - for (TopExp_Explorer anExpSF(namedSolids[i].solid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { - const TopoDS_Shape& aFace = anExpSF.Current(); - TopLoc_Location aLoc; - Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(aFace), aLoc); - if (aTriangulation.IsNull()) { - ++aNbFacesNoTri; - continue; - } - //BBS: copy nodes - gp_Trsf aTrsf = aLoc.Transformation(); - for (Standard_Integer aNodeIter = 1; aNodeIter <= aTriangulation->NbNodes(); ++aNodeIter) { - gp_Pnt aPnt = aTriangulation->Node(aNodeIter); - aPnt.Transform(aTrsf); - points.emplace_back(std::move(Vec3f(aPnt.X(), aPnt.Y(), aPnt.Z()))); - } - //BBS: copy triangles - const TopAbs_Orientation anOrientation = anExpSF.Current().Orientation(); - for (Standard_Integer aTriIter = 1; aTriIter <= aTriangulation->NbTriangles(); ++aTriIter) { - Poly_Triangle aTri = aTriangulation->Triangle(aTriIter); - - Standard_Integer anId[3]; - aTri.Get(anId[0], anId[1], anId[2]); - if (anOrientation == TopAbs_REVERSED) { - //BBS: swap 1, 2. - Standard_Integer aTmpIdx = anId[1]; - anId[1] = anId[2]; - anId[2] = aTmpIdx; - } - //BBS: Update nodes according to the offset. - anId[0] += aNodeOffset; - anId[1] += aNodeOffset; - anId[2] += aNodeOffset; - //BBS: save triangles facets - stl_facet facet; - facet.vertex[0] = points[anId[0] - 1].cast(); - facet.vertex[1] = points[anId[1] - 1].cast(); - facet.vertex[2] = points[anId[2] - 1].cast(); - facet.extra[0] = 0; - facet.extra[1] = 0; - stl_normal normal; - stl_calculate_normal(normal, &facet); - stl_normalize_vector(normal); - facet.normal = normal; - stl.facet_start[aTriangleOffet + aTriIter - 1] = facet; - } - - aNodeOffset += aTriangulation->NbNodes(); - aTriangleOffet += aTriangulation->NbTriangles(); - } - TriangleMesh triangle_mesh; - triangle_mesh.from_stl(stl); - ModelVolume* new_volume = new_object->add_volume(std::move(triangle_mesh)); - new_volume->name = namedSolids[i].name; + triangle_mesh.from_stl(stl[i]); + ModelVolume *new_volume = new_object->add_volume(std::move(triangle_mesh)); + new_volume->name = namedSolids[i].name; new_volume->source.input_file = path; - new_volume->source.object_idx = (int)model->objects.size() - 1; - new_volume->source.volume_idx = (int)new_object->volumes.size() - 1; + new_volume->source.object_idx = (int) model->objects.size() - 1; + new_volume->source.volume_idx = (int) new_object->volumes.size() - 1; } shapeTool.reset(nullptr); From 65393b8f7337a8ddc468e32212d02810fa948cb6 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Tue, 16 Aug 2022 16:12:05 +0800 Subject: [PATCH 014/137] NEW:add 3Dconnexion dialog Change-Id: I0dd1160decb11e5040399bb9c27f571a03b1d082 --- src/imgui/imgui_widgets.cpp | 16 ++-- src/libslic3r/AppConfig.cpp | 6 +- src/slic3r/GUI/GLCanvas3D.cpp | 43 +++++----- src/slic3r/GUI/ImGuiWrapper.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 2 +- src/slic3r/GUI/Mouse3DController.cpp | 118 ++++++++++++++++++++++----- 6 files changed, 130 insertions(+), 57 deletions(-) diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index a9b59d241b..f729d652f0 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -3767,16 +3767,18 @@ bool ImGui::BBLSliderScalar(const char *label, ImGuiDataType data_type, void *p_ // Render grab if (grab_bb.Max.x > grab_bb.Min.x) { - float offset = 1.0f; - ImVec2 p1 = ImVec2((grab_bb.Min.x + grab_bb.Max.x) / 2, (grab_bb.Min.y + grab_bb.Max.y) / 2 - offset); - ImVec2 p2 = ImVec2(grab_bb.Min.x, grab_bb.Max.y); - ImVec2 p3 = ImVec2(grab_bb.Max.x, grab_bb.Max.y); + float line_high = 2.0f; + const float offset = 2.0f; + + ImVec2 p1 = ImVec2((grab_bb.Min.x + grab_bb.Max.x) / 2, (grab_bb.Min.y + grab_bb.Max.y) / 2 + offset); + ImVec2 p2 = ImVec2(grab_bb.Min.x, grab_bb.Max.y + offset); + ImVec2 p3 = ImVec2(grab_bb.Max.x, grab_bb.Max.y + offset); window->DrawList->AddTriangleFilled(p1, p2, p3, GetColorU32(ImGuiCol_SliderGrabActive)); ImVec2 start_pos = ImVec2(frame_bb.Min.x, frame_bb.GetCenter().y - offset); - ImVec2 curr_pos = ImVec2(grab_bb.GetCenter().x, frame_bb.GetCenter().y + offset); - ImVec2 end_pos = ImVec2(frame_bb.Max.x, frame_bb.GetCenter().y + offset); - window->DrawList->AddRectFilled(start_pos, curr_pos, GetColorU32(ImGuiCol_SliderGrabActive), style.GrabRounding); + ImVec2 curr_pos = ImVec2(grab_bb.GetCenter().x, frame_bb.GetCenter().y + line_high - offset); + ImVec2 end_pos = ImVec2(frame_bb.Max.x, frame_bb.GetCenter().y + line_high - offset); window->DrawList->AddRectFilled(start_pos, end_pos, GetColorU32(ImGuiCol_SliderGrab), style.GrabRounding); + window->DrawList->AddRectFilled(start_pos, curr_pos, GetColorU32(ImGuiCol_SliderGrabActive), style.GrabRounding); } if (label_size.x > 0.0f) RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label); diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 3636f3b436..c8a5b274fe 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -184,10 +184,10 @@ void AppConfig::set_defaults() #ifdef _WIN32 -#ifdef SUPPORT_3D_CONNEXION +//#ifdef SUPPORT_3D_CONNEXION if (get("use_legacy_3DConnexion").empty()) - set_bool("use_legacy_3DConnexion", false); -#endif + set_bool("use_legacy_3DConnexion", true); +//#endif #ifdef SUPPORT_DARK_MODE if (get("dark_color_mode").empty()) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e8fe125247..fbbaccb051 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2292,30 +2292,25 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) case WXK_CONTROL_M: #endif /* __APPLE__ */ { -//#ifdef _WIN32 -// if (wxGetApp().app_config->get("use_legacy_3DConnexion") == "1") { -//#endif //_WIN32 -//#ifdef __APPLE__ -// // On OSX use Cmd+Shift+M to "Show/Hide 3Dconnexion devices settings dialog" -// if ((evt.GetModifiers() & shiftMask) != 0) { -//#endif // __APPLE__ -// -//#ifdef SUPPORT_3D_CONNEXION -// Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); -// controller.show_settings_dialog(!controller.is_settings_dialog_shown()); -// m_dirty = true; -//#endif - -//#ifdef __APPLE__ -// } -// else -// // and Cmd+M to minimize application -// wxGetApp().mainframe->Iconize(); -//#endif // __APPLE__ -//#ifdef _WIN32 -// } -//#endif //_WIN32 - post_event(SimpleEvent(EVT_GLTOOLBAR_CLONE)); +#ifdef _WIN32 + if (wxGetApp().app_config->get("use_legacy_3DConnexion") == "true") { +#endif //_WIN32 +#ifdef __APPLE__ + // On OSX use Cmd+Shift+M to "Show/Hide 3Dconnexion devices settings dialog" + if ((evt.GetModifiers() & shiftMask) != 0) { +#endif // __APPLE__ + Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); + controller.show_settings_dialog(!controller.is_settings_dialog_shown()); + m_dirty = true; +#ifdef __APPLE__ + } + else + // and Cmd+M to minimize application + wxGetApp().mainframe->Iconize(); +#endif // __APPLE__ +#ifdef _WIN32 + } +#endif //_WIN32 break; } #ifdef __APPLE__ diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index f3fe8d7704..55c29b9d40 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -543,7 +543,7 @@ bool ImGuiWrapper::bbl_slider_float_style(const std::string &label, float *v, fl ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleColor(ImGuiCol_FrameBgHovered, ImVec4(238 / 255.0f, 238 / 255.0f, 238 / 255.0f, 0.00f)); ImGui::PushStyleColor(ImGuiCol_FrameBgActive, ImVec4(238 / 255.0f, 238 / 255.0f, 238 / 255.0f, 0.00f)); - ImGui::PushStyleColor(ImGuiCol_SliderGrab, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_SliderGrab, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_SliderGrabActive, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); bool ret = bbl_slider_float(label, v, v_min,v_max, format, power, clamp,tooltip); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 560ba34720..2499ce92de 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1821,7 +1821,7 @@ void MainFrame::init_menubar_as_editor() "menu_remove", nullptr, [this](){return can_delete_all(); }, this); editMenu->AppendSeparator(); // BBS Clone Selected - append_menu_item(editMenu, wxID_ANY, _L("Clone selected") + "\tCtrl+M", + append_menu_item(editMenu, wxID_ANY, _L("Clone selected") /*+ "\tCtrl+M"*/, _L("Clone copies of selections"),[this](wxCommandEvent&) { m_plater->clone_selection(); }, diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index e5ad5d64f4..3ef0b096bb 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -448,9 +448,24 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const ImGuiWrapper& imgui = *wxGetApp().imgui(); imgui.set_next_window_pos(0.5f * (float)cnv_size.get_width(), 0.5f * (float)cnv_size.get_height(), ImGuiCond_Always, 0.5f, 0.5f); + float space_size = imgui.get_style_scaling() * 8; + + float speed_size = imgui.calc_text_size(_L("Speed:")).x + imgui.scaled(1.5f); + float dead_size = imgui.calc_text_size(_L("Deadzone:")).x + imgui.scaled(1.5f); + float option_size = imgui.calc_text_size(_L("Options:")).x + imgui.scaled(1.5f); + float max_left_size = std::max(speed_size,std::max(dead_size,option_size)) + space_size; + + float trans_size = imgui.calc_text_size(_L("Translate")).x + space_size; + float zoom_size = imgui.calc_text_size(_L("Zoom")).x + space_size; + float rota_size = imgui.calc_text_size(_L("Rotation")).x + space_size; + float trasn_zoom_size = imgui.calc_text_size(_L("Translation/Zoom")).x + space_size; + float max_slider_txt_size = std::max(std::max(trans_size,zoom_size),std::max(rota_size,trasn_zoom_size)); + + ImGuiWrapper::push_toolbar_style(wxGetApp().plater()->canvas3D()->get_scale()); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); static ImVec2 last_win_size(0.0f, 0.0f); bool shown = true; - if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse)) { + if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse || ImGuiWindowFlags_NoTitleBar)) { if (shown) { ImVec2 win_size = ImGui::GetWindowSize(); if (last_win_size.x != win_size.x || last_win_size.y != win_size.y) { @@ -460,52 +475,109 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const canvas.request_extra_frame(); } - const ImVec4& color = ImGui::GetStyleColorVec4(ImGuiCol_Separator); - imgui.text_colored(color, _L("Device:")); + const ImVec4& color = ImVec4(0.56f, 0.56f, 0.56f, 1.00f); + /*imgui.text(_L("Device:")); ImGui::SameLine(); - imgui.text(m_device_str); - - ImGui::Separator(); - imgui.text_colored(color, _L("Speed:")); + imgui.text(m_device_str);*/ + ImGui::AlignTextToFramePadding(); + imgui.text_colored(color,_L("Speed:")); + ImGui::SameLine(max_left_size + max_slider_txt_size - trans_size); + imgui.text(_L("Translate")); + ImGui::SameLine(max_left_size + max_slider_txt_size); + ImGui::PushItemWidth(imgui.scaled(6.0f)); float translation_scale = float(params_copy.translation.scale) / float(Params::DefaultTranslationScale); - if (imgui.slider_float(_L("Translation"), &translation_scale, float(Params::MinTranslationScale), float(Params::MaxTranslationScale), "%.1f")) { + bool b_translation = imgui.bbl_slider_float_style("##Translate", &translation_scale, float(Params::MinTranslationScale), float(Params::MaxTranslationScale), "%.1f"); + ImGui::SameLine(); + ImGui::PushItemWidth(imgui.scaled(3.0f)); + bool b_translation_dragfloat = ImGui::BBLDragFloat("##Translate_input", &translation_scale, float(Params::MinTranslationScale), float(Params::MaxTranslationScale),0.0, "%.1f"); + if (b_translation || b_translation_dragfloat) { params_copy.translation.scale = Params::DefaultTranslationScale * double(translation_scale); params_changed = true; } + ImGui::SameLine(); + ImGui::Dummy({space_size, 0.0}); + ImGui::Dummy({0.0, 0.0}); + ImGui::SameLine(max_left_size + max_slider_txt_size - rota_size); + ImGui::AlignTextToFramePadding(); + imgui.text(_L("Rotation")); + ImGui::SameLine(max_left_size + max_slider_txt_size); + ImGui::PushItemWidth(imgui.scaled(6.0f)); float rotation_scale = params_copy.rotation.scale / Params::DefaultRotationScale; - if (imgui.slider_float(_L("Rotation") + "##1", &rotation_scale, 0.1f, 10.0f, "%.1f")) { + bool b_rotation1 = imgui.bbl_slider_float_style("##Rotation1", &rotation_scale, 0.1f, 10.0f, "%.1f"); + ImGui::SameLine(); + ImGui::PushItemWidth(imgui.scaled(3.0f)); + bool b_rotation1_dragfloat = ImGui::BBLDragFloat("##Rotation1_input", &rotation_scale, 0.1f, 10.0f, 0.0, "%.1f"); + if (b_rotation1 || b_rotation1_dragfloat) { params_copy.rotation.scale = Params::DefaultRotationScale * rotation_scale; params_changed = true; } + ImGui::SameLine(); + ImGui::Dummy({space_size, 0.0}); + ImGui::Dummy({0.0, 0.0}); + ImGui::SameLine(max_left_size + max_slider_txt_size - zoom_size); + ImGui::AlignTextToFramePadding(); + imgui.text(_L("Zoom")); + ImGui::SameLine(max_left_size + max_slider_txt_size); + ImGui::PushItemWidth(imgui.scaled(6.0f)); float zoom_scale = params_copy.zoom.scale / Params::DefaultZoomScale; - if (imgui.slider_float(_L("Zoom"), &zoom_scale, 0.1f, 10.0f, "%.1f")) { + bool b_zoom = imgui.bbl_slider_float_style("##Zoom", &zoom_scale, 0.1f, 10.0f, "%.1f"); + ImGui::SameLine(); + ImGui::PushItemWidth(imgui.scaled(3.0f)); + bool b_zoom_dragfloat = ImGui::BBLDragFloat("##Zoom_input", &zoom_scale, 0.1f, 10.0f, 0.0, "%.1f"); + if (b_zoom || b_zoom_dragfloat) { params_copy.zoom.scale = Params::DefaultZoomScale * zoom_scale; params_changed = true; } ImGui::Separator(); - imgui.text_colored(color, _L("Deadzone:")); + ImGui::AlignTextToFramePadding(); + imgui.text_colored(color,_L("Deadzone:")); + ImGui::SameLine(max_left_size + max_slider_txt_size - trasn_zoom_size); + imgui.text(_L("Translation/Zoom")); + ImGui::SameLine(max_left_size + max_slider_txt_size); - float translation_deadzone = (float)params_copy.translation.deadzone; - if (imgui.slider_float(_L("Translation") + "/" + _L("Zoom"), &translation_deadzone, 0.0f, (float)Params::MaxTranslationDeadzone, "%.2f")) { - params_copy.translation.deadzone = (double)translation_deadzone; - params_changed = true; + ImGui::PushItemWidth(imgui.scaled(6.0f)); + float translation_deadzone = (float) params_copy.translation.deadzone; + bool b_tran_zoom = imgui.bbl_slider_float_style("##Translation/Zoom", &translation_deadzone, 0.0f, (float) Params::MaxTranslationDeadzone, "%.2f"); + ImGui::SameLine(); + ImGui::PushItemWidth(imgui.scaled(3.0f)); + bool b_tran_zoom_dragfloat = ImGui::BBLDragFloat("##Translation/Zoom_input", &translation_deadzone, 0.0f, (float) Params::MaxTranslationDeadzone, 0.0, "%.1f"); + if (b_tran_zoom || b_tran_zoom_dragfloat) { + params_copy.translation.deadzone = (double) translation_deadzone; + params_changed = true; } + ImGui::SameLine(); + ImGui::Dummy({space_size, 0.0}); + ImGui::Dummy({0.0, 0.0}); + ImGui::SameLine(max_left_size + max_slider_txt_size - rota_size); + ImGui::AlignTextToFramePadding(); + imgui.text(_L("Rotation")); + ImGui::SameLine(max_left_size + max_slider_txt_size); + ImGui::PushItemWidth(imgui.scaled(6.0f)); float rotation_deadzone = params_copy.rotation.deadzone; - if (imgui.slider_float(_L("Rotation") + "##2", &rotation_deadzone, 0.0f, Params::MaxRotationDeadzone, "%.2f")) { - params_copy.rotation.deadzone = rotation_deadzone; - params_changed = true; + bool b_rotation2 = imgui.bbl_slider_float_style("##Rotation2", &rotation_deadzone, 0.0f, Params::MaxRotationDeadzone, "%.2f"); + ImGui::SameLine(); + ImGui::PushItemWidth(imgui.scaled(3.0f)); + bool b_rotation2_dragfloat = ImGui::BBLDragFloat("##Rotation2_input", &rotation_deadzone, 0.0f, Params::MaxRotationDeadzone, 0.0, "%.1f"); + if (b_rotation2 || b_rotation2_dragfloat) { + params_copy.rotation.deadzone = rotation_deadzone; + params_changed = true; } + ImGui::SameLine(); + ImGui::Dummy({space_size, 0.0}); + ImGui::PopItemWidth(); ImGui::Separator(); - imgui.text_colored(color, _L("Options:")); + ImGui::AlignTextToFramePadding(); + imgui.text_colored(color,_L("Options:")); + ImGui::SameLine(max_left_size + max_slider_txt_size - imgui.get_slider_icon_size().x + + space_size); bool swap_yz = params_copy.swap_yz; - if (imgui.checkbox(_L("Swap Y/Z axes"), swap_yz)) { + if (imgui.bbl_checkbox(_L("Swap Y/Z axes"), swap_yz)) { params_copy.swap_yz = swap_yz; params_changed = true; } @@ -540,6 +612,9 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const #endif // ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT ImGui::Separator(); + float window_width = ImGui::GetWindowWidth(); + ImGui::Dummy({0.0, 0.0}); + ImGui::SameLine((window_width - imgui.calc_text_size(_L("Close")).x)/2); if (imgui.button(_L("Close"))) { // the user clicked on the [Close] button m_settings_dialog_closed_by_user = true; @@ -554,7 +629,8 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const } imgui.end(); - + ImGui::PopStyleVar(1); + ImGuiWrapper::pop_toolbar_style(); if (params_changed) { // Synchronize front end parameters to back end. std::scoped_lock lock(m_params_ui_mutex); From ad311a66d6ce599d238ac47759116f9c31d49231 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 16 Aug 2022 12:28:15 +0800 Subject: [PATCH 015/137] FIX:update objecttable layout Change-Id: I759283fab3dff03671282b4fcff9d6caf6de51db --- src/slic3r/GUI/GUI_ObjectTable.cpp | 505 ++++++++++++++++----- src/slic3r/GUI/GUI_ObjectTable.hpp | 69 ++- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 43 +- src/slic3r/GUI/GUI_ObjectTableSettings.hpp | 3 +- 4 files changed, 498 insertions(+), 122 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 0f07a6d576..908474a649 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -73,16 +73,27 @@ void GridCellIconRenderer::Draw(wxGrid& grid, //not changed return; } - if (!table->m_icon_col_width) { + //if (!table->m_icon_col_width) { table->m_icon_row_height = grid.GetRowSize(row); table->m_icon_col_width = grid.GetColSize(col); - } + //} wxBitmap& bitmap = table->get_undo_bitmap(); int bitmap_width = bitmap.GetWidth(); int bitmap_height = bitmap.GetHeight(); int offset_x = (table->m_icon_col_width - bitmap_width)/2; int offset_y = (table->m_icon_row_height - bitmap_height)/2; + + + #ifdef __WXOSX_COCOA__ + auto lock_pos = wxPoint(rect.x + offset_x, rect.y + offset_y); + auto left = (28 - 12) / 2; + auto top = (32 - 12) / 2; + lock_pos.x += left; + lock_pos.y += top; + dc.DrawBitmap(bitmap, lock_pos); + #else dc.DrawBitmap(bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); + #endif //dc.SetPen(*wxGREEN_PEN); //dc.SetBrush(*wxTRANSPARENT_BRUSH); @@ -148,17 +159,15 @@ void GridCellFilamentsEditor::Create(wxWindow* parent, if ( !m_allowOthers ) style |= wxCB_READONLY; - wxBitmapComboBox *bitmap_combo = new wxBitmapComboBox(parent, id, wxEmptyString, - wxDefaultPosition, wxDefaultSize, - m_choices, - style); + ::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString, + wxDefaultPosition, wxSize(((*m_icons)[0])->GetWidth() + 10, -1), 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); if (m_icons) { int array_count = m_choices.GetCount(); int icon_count = m_icons->size(); for (int i = 0; i < array_count; i++) { wxBitmap* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; - bitmap_combo->SetItemBitmap(i, *bitmap); + bitmap_combo->Append(m_choices[i], *bitmap); } } m_control = bitmap_combo; @@ -214,7 +223,10 @@ void GridCellFilamentsEditor::BeginEdit(int row, int col, wxGrid* grid) } //m_value = grid->GetTable()->GetValue(row, col); - Reset(); // this updates combo box to correspond to m_value + //Reset(); // this updates combo box to correspond to m_value + int pos = Combo()->FindString(m_value); + if (pos == wxNOT_FOUND) pos = 0; + Combo()->SetSelection(pos); Combo()->SetFocus(); @@ -223,7 +235,7 @@ void GridCellFilamentsEditor::BeginEdit(int row, int col, wxGrid* grid) // choice is made in it under OS X. The bug is almost certainly due to a // problem in focus events generation logic but it's not obvious to fix and // for now this at least allows to use wxGrid. - Combo()->Popup(); + //Combo()->Popup(); #endif if (evtHandler) @@ -254,7 +266,6 @@ bool GridCellFilamentsEditor::EndEdit(int WXUNUSED(row), return true; } - wxGridActivationResult GridCellFilamentsEditor::TryActivate(int row, int col, wxGrid* grid, const wxGridActivationSource& actSource) { ObjectGridTable *table = dynamic_cast(grid->GetTable()); @@ -305,56 +316,223 @@ void GridCellFilamentsEditor::DoActivate(int row, int col, wxGrid* grid) } } -// ---------------------------------------------------------------------------- -// GridCellFilamentsRenderer -// ---------------------------------------------------------------------------- -void GridCellFilamentsRenderer::Draw(wxGrid& grid, - wxGridCellAttr& attr, - wxDC& dc, - const wxRect& rect, - int row, int col, - bool isSelected) +void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, const wxRect &rect, int row, int col, bool isSelected) { - ObjectGridTable *table = dynamic_cast(grid.GetTable()); - wxRect text_rect = rect; + ObjectGridTable *table = dynamic_cast(grid.GetTable()); + wxRect text_rect = rect; if (table) { - ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); - ConfigOptionInt& cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType)col]); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); - wxBitmap* bitmap = table->get_color_bitmap((cur_option.value >= 1)?cur_option.value-1:cur_option.value); - int bitmap_width = bitmap->GetWidth(); - int bitmap_height = bitmap->GetHeight(); - int offset_x = grid_cell_border_width; - int offset_y = (rect.height > bitmap_height)?(rect.height - bitmap_height)/2 : grid_cell_border_height; + wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetWidth(); + int bitmap_height = bitmap->GetHeight(); + int offset_x = grid_cell_border_width; + int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.DrawRectangle(rect); dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); - text_rect.x += bitmap_width + grid_cell_border_width *2; - text_rect.width -= (bitmap_width + grid_cell_border_width *2); + text_rect.x += bitmap_width + grid_cell_border_width * 2; + text_rect.width -= (bitmap_width + grid_cell_border_width * 2); } wxGridCellChoiceRenderer::Draw(grid, attr, dc, text_rect, row, col, isSelected); } -wxSize GridCellFilamentsRenderer::GetBestSize(wxGrid& grid, - wxGridCellAttr& attr, - wxDC& dc, - int WXUNUSED(row), - int WXUNUSED(col)) +wxSize GridCellFilamentsRenderer::GetBestSize(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, int WXUNUSED(row), int WXUNUSED(col)) { - wxSize size{128, -1}; + wxSize size{48, -1}; return size; } -GridCellFilamentsRenderer *GridCellFilamentsRenderer::Clone() const +GridCellFilamentsRenderer *GridCellFilamentsRenderer::Clone() const { return new GridCellFilamentsRenderer(); } + +// ---------------------------------------------------------------------------- +// GridCellFilamentsRenderer +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// GridCellChoiceEditor +// ---------------------------------------------------------------------------- + +GridCellChoiceEditor::GridCellChoiceEditor(const wxArrayString &choices) + : wxGridCellChoiceEditor(choices) +{} + +GridCellChoiceEditor::GridCellChoiceEditor(size_t count, const wxString choices[]) + : wxGridCellChoiceEditor(count, choices) +{} + +wxGridCellEditor *GridCellChoiceEditor::Clone() const { - return new GridCellFilamentsRenderer(); + GridCellChoiceEditor *editor = new GridCellChoiceEditor; + editor->m_allowOthers = m_allowOthers; + editor->m_choices = m_choices; + + return editor; } +void GridCellChoiceEditor::Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) +{ + int style = wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB | wxBORDER_NONE; + + if (!m_allowOthers) style |= wxCB_READONLY; + ::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString, wxDefaultPosition, wxSize(100, -1), 0, nullptr, wxCB_READONLY); + bitmap_combo->SetFont(::Label::Body_12); + int array_count = m_choices.GetCount(); + for (int i = 0; i < array_count; i++) { + bitmap_combo->Append(m_choices[i]); + } + m_control = bitmap_combo; + wxGridCellEditor::Create(parent, id, evtHandler); +} + +void GridCellChoiceEditor::SetSize(const wxRect &rect) +{ + wxGridCellChoiceEditor::SetSize(rect); +} + +void GridCellChoiceEditor::OnComboCloseUp(wxCommandEvent &evt) { wxGridCellChoiceEditor::OnComboCloseUp(evt); } + +void GridCellChoiceEditor::BeginEdit(int row, int col, wxGrid *grid) +{ + wxGridCellEditorEvtHandler *evtHandler = NULL; + if (m_control) { + // This event handler is needed to properly dismiss the editor when the popup is closed + m_control->Bind(wxEVT_COMBOBOX_CLOSEUP, &GridCellChoiceEditor::OnComboCloseUp, this); + evtHandler = wxDynamicCast(m_control->GetEventHandler(), wxGridCellEditorEvtHandler); + } + + // Don't immediately end if we get a kill focus event within BeginEdit + if (evtHandler) evtHandler->SetInSetFocus(true); + + m_value = grid->GetTable()->GetValue(row, col); + + // Reset(); // this updates combo box to correspond to m_value + int pos = Combo()->FindString(m_value); + if (pos == wxNOT_FOUND) pos = 0; + Combo()->SetSelection(pos); + + Combo()->SetFocus(); + +#ifdef __WXOSX_COCOA__ + // This is a work around for the combobox being simply dismissed when a + // choice is made in it under OS X. The bug is almost certainly due to a + // problem in focus events generation logic but it's not obvious to fix and + // for now this at least allows to use wxGrid. + //Combo()->Popup(); +#endif + + if (evtHandler) { + // When dropping down the menu, a kill focus event + // happens after this point, so we can't reset the flag yet. +#if !defined(__WXGTK20__) + evtHandler->SetInSetFocus(false); +#endif + } +} + +bool GridCellChoiceEditor::EndEdit(int WXUNUSED(row), int WXUNUSED(col), const wxGrid *WXUNUSED(grid), const wxString &WXUNUSED(oldval), wxString *newval) +{ + const wxString value = Combo()->GetValue(); + if (value == m_value) return false; + + m_value = value; + + if (newval) *newval = value; + + return true; +} + +wxGridActivationResult GridCellChoiceEditor::TryActivate(int row, int col, wxGrid *grid, const wxGridActivationSource &actSource) +{ + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + + if (actSource.GetOrigin() == wxGridActivationSource::Key) { + const wxKeyEvent &key_event = actSource.GetKeyEvent(); + int keyCode = key_event.GetKeyCode(); + wxString choice; + + int digital_value = keyCode - '0'; + if ((digital_value >= 1) && (digital_value <= 9)) + m_cached_value = digital_value; + else + m_cached_value = -1; + + if (m_cached_value != -1) { + if (m_cached_value <= grid_col->choice_count) { + choice = grid_col->choices[m_cached_value - 1]; + return wxGridActivationResult::DoChange(choice); + } else { + return wxGridActivationResult::DoNothing(); + } + } else + return wxGridActivationResult::DoNothing(); + } else { + m_cached_value = -1; + return wxGridActivationResult::DoEdit(); + } +} + +void GridCellChoiceEditor::DoActivate(int row, int col, wxGrid *grid) +{ + if (m_cached_value != -1) { + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + if (m_cached_value <= grid_col->choice_count) { + wxString choice = grid_col->choices[m_cached_value - 1]; + table->SetValue(row, col, choice); + // Combo()->SetValue(choice); + } + m_cached_value = -1; + } +} + +void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, const wxRect &rect, int row, int col, bool isSelected) +{ + ObjectGridTable *table = dynamic_cast(grid.GetTable()); + wxRect text_rect = rect; + + if (table) { + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); + + wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetWidth(); + int bitmap_height = bitmap->GetHeight(); + int offset_x = grid_cell_border_width; + int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; + + dc.SetPen(*wxTRANSPARENT_PEN); + dc.SetBrush(wxBrush(attr.GetBackgroundColour())); + dc.DrawRectangle(rect); + dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); + text_rect.x += bitmap_width + grid_cell_border_width * 2; + text_rect.width -= (bitmap_width + grid_cell_border_width * 2); + } + + wxGridCellChoiceRenderer::Draw(grid, attr, dc, text_rect, row, col, isSelected); +} + +wxSize GridCellComboBoxRenderer::GetBestSize(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, int WXUNUSED(row), int WXUNUSED(col)) +{ + wxSize size{48, -1}; + return size; +} + +GridCellComboBoxRenderer *GridCellComboBoxRenderer::Clone() const { return new GridCellComboBoxRenderer(); } + + + + // ---------------------------------------------------------------------------- // wxGridCellSupportEditor // ---------------------------------------------------------------------------- @@ -1497,6 +1675,7 @@ wxString ObjectGridTable::convert_filament_string(int index, wxString& filament_ else result_str = filament_str; + result_str = ""; return result_str; } @@ -1515,12 +1694,12 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) // printable for object - ObjectGridCol* col = new ObjectGridCol(coBool, "printable", ObjectGridTable::category_all, true, false, true, false, wxALIGN_CENTRE); + ObjectGridCol *col = new ObjectGridCol(coBool, "printable", ObjectGridTable::category_all, true, false, true, false, wxALIGN_CENTRE); col->size = object_grid->GetTextExtent(L("Printable")).x; m_col_data.push_back(col); // reset icon for printable - col = new ObjectGridCol(coBool, "printable_reset", ObjectGridTable::category_all, true, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coBool, "printable_reset", ObjectGridTable::category_all, true, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); //first column for plate_index @@ -1532,7 +1711,7 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) m_col_data.push_back(col);*/ //3th column: for object/volume name - col = new ObjectGridCol(coString, "name", ObjectGridTable::category_all, false, false, true, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coString, "name", ObjectGridTable::category_all, false, false, true, false, wxALIGN_LEFT); col->size = 200; m_col_data.push_back(col); @@ -1549,21 +1728,21 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) m_col_data.push_back(col); //object layer height - col = new ObjectGridCol(coFloat, "layer_height", L("Quality"), true, false, true, true, wxALIGN_CENTRE); - col->size = object_grid->GetTextExtent(L("Layer height")).x; + col = new ObjectGridCol(coFloat, "layer_height", L("Quality"), true, false, true, true, wxALIGN_CENTRE); + col->size = object_grid->GetTextExtent(L("Layer height")).x - 28; m_col_data.push_back(col); //reset icon for extruder_id - col = new ObjectGridCol(coFloat, "layer_height_reset", L("Quality"), true, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coFloat, "layer_height_reset", L("Quality"), true, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); //object/volume perimeters - col = new ObjectGridCol(coInt, "wall_loops", L("Strength"), false, false, true, true, wxALIGN_CENTRE); + col = new ObjectGridCol(coInt, "wall_loops", L("Strength"), false, false, true, true, wxALIGN_CENTRE); col->size = object_grid->GetTextExtent(L("Wall loops")).x; m_col_data.push_back(col); //reset icon for perimeters - col = new ObjectGridCol(coInt, "wall_loops_reset", L("Strength"), false, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coInt, "wall_loops_reset", L("Strength"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); //object/volume fill density @@ -1572,7 +1751,7 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) m_col_data.push_back(col); //reset icon for fill density - col = new ObjectGridCol(coPercent, "fill_density_reset", L("Strength"), false, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coPercent, "fill_density_reset", L("Strength"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); //support material @@ -1585,23 +1764,23 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) m_col_data.push_back(col); //Bed Adhesion - col = new ObjectGridCol(coEnum, "brim_type", L("Support"), true, false, true, true, wxALIGN_CENTRE); + col = new ObjectGridCol(coEnum, "brim_type", L("Support"), true, false, true, true, wxALIGN_LEFT); col->size = object_grid->GetTextExtent(L("Auto Brim")).x + 8; //add 8 for border col->choices = brim_choices; col->choice_count = WXSIZEOF(brim_choices); m_col_data.push_back(col); //reset icon for Bed Adhesion - col = new ObjectGridCol(coEnum, "brim_type_reset", L("Support"), true, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coEnum, "brim_type_reset", L("Support"), true, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); //object/volume speed - col = new ObjectGridCol(coFloat, "inner_wall_speed", L("Speed"), false, false, true, true, wxALIGN_CENTRE); + col = new ObjectGridCol(coFloat, "inner_wall_speed", L("Speed"), false, false, true, true, wxALIGN_LEFT); col->size = object_grid->GetTextExtent(L("Inner wall speed")).x; m_col_data.push_back(col); //reset icon for speed - col = new ObjectGridCol(coFloat, "inner_wall_speed_reset", L("Speed"), false, true, false, false, wxALIGN_CENTRE); + col = new ObjectGridCol(coFloat, "inner_wall_speed_reset", L("Speed"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); return; @@ -1922,7 +2101,7 @@ void ObjectGridTable::update_row_properties() switch (grid_col->type) { case coString: - grid_table->SetCellEditor(row, col, new wxGridCellAutoWrapStringEditor()); + grid_table->SetCellEditor(row, col, new GridCellTextEditor()); grid_table->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); break; case coBool: @@ -1932,7 +2111,7 @@ void ObjectGridTable::update_row_properties() grid_table->SetCellRenderer(row, col, new wxGridCellBoolRenderer()); break; case coInt: - grid_table->SetCellEditor(row, col, new wxGridCellNumberEditor()); + grid_table->SetCellEditor(row, col, new GridCellTextEditor()); grid_table->SetCellRenderer(row, col, new wxGridCellNumberRenderer()); break; case coEnum: @@ -1940,25 +2119,20 @@ void ObjectGridTable::update_row_properties() GridCellFilamentsEditor *filament_editor = new GridCellFilamentsEditor(grid_col->choice_count, grid_col->choices, false, &m_panel->m_color_bitmaps); grid_table->SetCellEditor(row, col, filament_editor); grid_table->SetCellRenderer(row, col, new GridCellFilamentsRenderer()); - } - else - grid_table->SetCellEditor(row, col, new wxGridCellChoiceEditor(grid_col->choice_count, grid_col->choices)); + } else { + GridCellChoiceEditor *combo_editor = new GridCellChoiceEditor(grid_col->choice_count, grid_col->choices); + grid_table->SetCellEditor(row, col, combo_editor); + grid_table->SetCellRenderer(row, col, new wxGridCellChoiceRenderer()); + //new wxGridCellChoiceEditor(grid_col->choice_count, grid_col->choices)); + } break; case coFloat: - grid_table->SetCellEditor(row, col, new wxGridCellFloatEditor(6,2)); + grid_table->SetCellEditor(row, col, new GridCellTextEditor()); grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); break; case coPercent: { - /*wxGridCellFloatEditor *float_editor = new wxGridCellFloatEditor(6,2); - wxFloatingPointValidator *float_validator = new wxFloatingPointValidator(3, nullptr, wxNUM_VAL_ZERO_AS_BLANK); - float_validator->SetRange(0.f, 100.f); - float_editor->SetValidator(*float_validator); - - if (rows < 3) - m_object_grid->SetCellEditor(row, col, float_editor); - else*/ - grid_table->SetCellEditor(row, col, new wxGridCellFloatEditor(6,2)); + grid_table->SetCellEditor(row, col, new GridCellTextEditor()); grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); break; } @@ -2402,7 +2576,7 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi //m_object_grid->AssignTable(m_object_grid_table); - m_side_window = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(460),FromDIP(480)), wxVSCROLL); + m_side_window = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(440),FromDIP(480)), wxVSCROLL); m_side_window->SetScrollRate( 0, 5 ); m_page_sizer = new wxBoxSizer(wxVERTICAL); m_page_top_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -2464,7 +2638,7 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi int ObjectTablePanel::init_bitmap() { - m_undo_bitmap = create_scaled_bitmap("lock_normal", nullptr, 24); + m_undo_bitmap = create_scaled_bitmap("lock_normal", nullptr, 18); m_color_bitmaps = get_extruder_color_icons(); return 0; @@ -2535,6 +2709,8 @@ void ObjectTablePanel::load_data() //construct tables //m_object_grid->CreateGrid(rows, cols, wxGridSelectCells); #if HAS_COL_HEADER + m_object_grid->SetColLabelAlignment(wxALIGN_LEFT, wxALIGN_CENTER); + m_object_grid->SetColLabelValue(ObjectGridTable::col_printable, L("Printable")); m_object_grid->SetColLabelValue(ObjectGridTable::col_printable_reset, ""); m_object_grid->SetColLabelValue(ObjectGridTable::col_plate_index, L("Plate")); @@ -2556,12 +2732,16 @@ void ObjectTablePanel::load_data() m_object_grid->SetColLabelValue(ObjectGridTable::col_speed_perimeter_reset, ""); m_object_grid->SetLabelFont(Label::Head_13); m_object_grid->SetLabelTextColour(wxColour(0x30,0x3a,0x3c)); - m_object_grid->SetLabelBackgroundColour(wxColour(0xff,0xff,0xff)); + m_object_grid->SetLabelBackgroundColour(wxColour(0xff, 0xff, 0xff)); #else m_object_grid->HideColLabels(); #endif m_object_grid->HideRowLabels(); - m_object_grid->EnableGridLines (true); + + m_object_grid->EnableGridLines (false); + m_object_grid->EnableDragColSize(false); + m_object_grid->EnableDragGridSize(false); + m_object_grid->EnableDragRowSize(false); /*set the first row as label*/ //format @@ -2570,7 +2750,7 @@ void ObjectTablePanel::load_data() //attr->SetBackgroundColour(wxColour(191, 191, 255)); attr->SetBackgroundColour(*wxWHITE); attr->SetTextColour(*wxBLACK); - attr->SetAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE); + attr->SetAlignment(wxALIGN_LEFT, wxALIGN_CENTRE); attr->SetReadOnly(true); m_object_grid->SetRowAttr (0, attr); #if HAS_COL_HEADER @@ -2580,7 +2760,7 @@ void ObjectTablePanel::load_data() m_object_grid->SetCellSize(0, ObjectGridTable::col_printable, 1, 2); //m_object_grid->SetCellSize(0, ObjectGridTable::col_assemble_name, 1, 1); m_object_grid->SetCellSize(0, ObjectGridTable::col_name, 1, 1); - m_object_grid->SetCellSize(0, ObjectGridTable::col_filaments, 1, 2); + m_object_grid->SetCellSize(0, ObjectGridTable::col_filaments, 1, 1); m_object_grid->SetCellSize(0, ObjectGridTable::col_layer_height, 1, 2); m_object_grid->SetCellSize(0, ObjectGridTable::col_wall_loops, 1, 2); m_object_grid->SetCellSize(0, ObjectGridTable::col_fill_density, 1, 2); @@ -2588,14 +2768,8 @@ void ObjectTablePanel::load_data() m_object_grid->SetCellSize(0, ObjectGridTable::col_brim_type, 1, 2); m_object_grid->SetCellSize(0, ObjectGridTable::col_speed_perimeter, 1, 2); - //m_object_grid->SetSelectionForeground(wxColour(255, 0, 0)); - //m_object_grid->SetSelectionBackground(wxColour(0, 255, 0)); - //wxGridCellAutoWrapStringEditor* string_editor = new wxGridCellAutoWrapStringEditor(); - //wxGridCellBoolEditor* bool_editor = new wxGridCellBoolEditor(); - //wxGridCellFloatEditor* float_editor = new wxGridCellFloatEditor(); - //wxGridCellNumberEditor* number_editor = new wxGridCellNumberEditor(); - //wxGridCellChoiceEditor* choice_editor = new wxGridCellChoiceEditor(); - //wxGridCellEnumEditor* enum_editor = new wxGridCellEnumEditor(); + //m_object_grid->SetSelectionForeground(wxColour(0xDB,0xFD,0xE7)); + //m_object_grid->SetSelectionBackground(*wxWHITE); for (int col = 0; col < cols; col++) { @@ -2627,7 +2801,7 @@ void ObjectTablePanel::load_data() switch (grid_col->type) { case coString: - m_object_grid->SetCellEditor(row, col, new wxGridCellAutoWrapStringEditor()); + m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); m_object_grid->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); break; case coBool: @@ -2637,34 +2811,27 @@ void ObjectTablePanel::load_data() m_object_grid->SetCellRenderer(row, col, new wxGridCellBoolRenderer()); break; case coInt: - m_object_grid->SetCellEditor(row, col, new wxGridCellNumberEditor()); + m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); m_object_grid->SetCellRenderer(row, col, new wxGridCellNumberRenderer()); break; case coEnum: if (col == ObjectGridTable::col_filaments) { GridCellFilamentsEditor *filament_editor = new GridCellFilamentsEditor(grid_col->choice_count, grid_col->choices, false, &m_color_bitmaps); m_object_grid->SetCellEditor(row, col, filament_editor); - //m_object_grid->SetCellEditor(row, col, new wxGridCellChoiceEditor(grid_col->choice_count, grid_col->choices)); m_object_grid->SetCellRenderer(row, col, new GridCellFilamentsRenderer()); + } else { + GridCellChoiceEditor *combo_editor = new GridCellChoiceEditor(grid_col->choice_count, grid_col->choices); + m_object_grid->SetCellEditor(row, col, combo_editor); + m_object_grid->SetCellRenderer(row, col, new wxGridCellChoiceRenderer()); } - else - m_object_grid->SetCellEditor(row, col, new wxGridCellChoiceEditor(grid_col->choice_count, grid_col->choices)); break; case coFloat: - m_object_grid->SetCellEditor(row, col, new wxGridCellFloatEditor(6,2)); + m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); break; case coPercent: { - /*wxGridCellFloatEditor *float_editor = new wxGridCellFloatEditor(6,2); - wxFloatingPointValidator *float_validator = new wxFloatingPointValidator(3, nullptr, wxNUM_VAL_ZERO_AS_BLANK); - float_validator->SetRange(0.f, 100.f); - float_editor->SetValidator(*float_validator); - - if (rows < 3) - m_object_grid->SetCellEditor(row, col, float_editor); - else*/ - m_object_grid->SetCellEditor(row, col, new wxGridCellFloatEditor(6,2)); + m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); break; } @@ -2681,34 +2848,91 @@ void ObjectTablePanel::load_data() } } } - m_object_grid->Fit(); + for (int i = 0; i < ObjectGridTable::col_max; i++) { ObjectGridTable::ObjectGridCol *grid_col = m_object_grid_table->get_grid_col(i); if (grid_col->size > 0) { int fit_size1 = m_object_grid->GetColSize(i); m_object_grid->SetColSize(i, grid_col->size); - //if (grid_col->size < fit_size1) m_object_grid->SetColSize(i, grid_col->size); + } + } + m_object_grid->Fit(); + + for (int i = 0; i < ObjectGridTable::col_max; i++) { + switch (i) { + case ObjectGridTable::col_printable: { + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; } - //else { - //adjust the left col - //int delta = grid_col->size - fit_size1; - //grid_col = m_object_grid_table->get_grid_col(i - 1); - //int fit_size2 = m_object_grid->GetColSize(i-1); - //grid_col->size = fit_size2 - delta; - //m_object_grid->SetColSize(i, grid_col->size); - //} + case ObjectGridTable::col_printable_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_name: + m_object_grid->SetColSize(i, FromDIP(100)); + break; + + case ObjectGridTable::col_filaments: + m_object_grid->SetColSize(i, FromDIP(52)); + break; + + case ObjectGridTable::col_filaments_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_layer_height: + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; + + case ObjectGridTable::col_layer_height_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_wall_loops: + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; + + case ObjectGridTable::col_wall_loops_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_fill_density: + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; + + case ObjectGridTable::col_fill_density_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_enable_support: + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; + + case ObjectGridTable::col_enable_support_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + + case ObjectGridTable::col_brim_type: + m_object_grid->SetColSize(i, FromDIP(56)); + break; + + case ObjectGridTable::col_brim_type_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + case ObjectGridTable::col_speed_perimeter: + m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + break; + + case ObjectGridTable::col_speed_perimeter_reset: + m_object_grid->SetColSize(i, FromDIP(28)); + break; + } } - //set col size after fit - /* ObjectGridTable::ObjectGridCol* grid_col = m_object_grid_table->get_grid_col(ObjectGridTable::col_brim_type); - grid_col->size = m_object_grid->GetTextExtent(grid_col->choices[0]).x + 30; - m_object_grid->SetColSize(ObjectGridTable::col_brim_type, grid_col->size); - grid_col = m_object_grid_table->get_grid_col(ObjectGridTable::col_filaments); - grid_col->size = 128; - m_object_grid->SetColSize(ObjectGridTable::col_filaments, grid_col->size);*/ + m_object_grid->SetGridLineColour(*wxWHITE); BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", finished, got %1% rows, %2% cols") %m_object_grid_table->GetNumberRows() %m_object_grid_table->GetNumberCols() ; } @@ -2794,7 +3018,6 @@ void ObjectTablePanel::OnSelectCell( wxGridEvent& ev ) m_cur_row = row; m_cur_col = col; - ev.Skip(); } @@ -2906,6 +3129,7 @@ ObjectTableDialog::ObjectTableDialog(wxWindow* parent, Plater* platerObj, Model m_main_sizer->Add(m_line_top, 0, wxEXPAND, 0); m_obj_panel = new ObjectTablePanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxEmptyString, m_plater, m_model); + m_obj_panel->SetBackgroundColour(wxColour(0x00,0xAE,0x42)); //m_top_sizer->Add(m_obj_panel, 1, wxALL | wxEXPAND, 5); wxSize panel_size = m_obj_panel->get_init_size(); @@ -2937,7 +3161,7 @@ ObjectTableDialog::ObjectTableDialog(wxWindow* parent, Plater* platerObj, Model //this->Layout(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", created, this %1%, m_obj_panel %2%") %this % m_obj_panel; - m_main_sizer->Add(m_obj_panel, 1, wxEXPAND|wxTOP,2); + m_main_sizer->Add(m_obj_panel, 1, wxEXPAND|wxLEFT,FromDIP(10)); SetSizer(m_main_sizer); Layout(); Fit(); @@ -3000,5 +3224,56 @@ void ObjectTableDialog::OnSize(wxSizeEvent& event) event.Skip(); } +// ---------------------------------------------------------------------------- +// GridCellTextEditor +// ---------------------------------------------------------------------------- + +GridCellTextEditor::GridCellTextEditor() : wxGridCellTextEditor() {} + +GridCellTextEditor::~GridCellTextEditor() {} + +void GridCellTextEditor::Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) +{ + ::TextInput *text_input = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(-1, -1), 0); + m_control = text_input; + wxGridCellEditor::Create(parent, id, evtHandler); +} + +void GridCellTextEditor::SetSize(const wxRect &rect) { wxGridCellTextEditor::SetSize(rect); } + +void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) +{ + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + + auto val = table->GetValue(row, col); + Text()->GetTextCtrl()->SetValue(val); + Text()->SetFocus(); +} + +bool GridCellTextEditor::EndEdit(int row, int col, const wxGrid *grid, const wxString &WXUNUSED(oldval), wxString *newval) +{ + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + + wxCHECK_MSG(m_control, false, "wxGridCellTextEditor must be created first!"); + + const wxString value = Text()->GetTextCtrl()->GetValue(); + if (value == m_value) return false; + + m_value = value; + + if (newval) *newval = m_value; + return true; +} + +void GridCellTextEditor::ApplyEdit(int row, int col, wxGrid *grid) +{ + grid->GetTable()->SetValue(row, col, m_value); + m_value.clear(); +} + } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index ca2395d236..3af3aacc32 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -23,6 +23,10 @@ #include "OptionsGroup.hpp" #include "GUI_Factories.hpp" #include "GUI_ObjectTableSettings.hpp" +#include "Widgets/TextInput.hpp" + +class ComboBox; +class TextInput; namespace Slic3r { @@ -50,11 +54,30 @@ public: virtual GridCellIconRenderer *Clone() const wxOVERRIDE; }; -// the editor for string data allowing to choose from the list of strings +class GridCellTextEditor : public wxGridCellTextEditor +{ +public: + GridCellTextEditor(); + ~GridCellTextEditor(); + + virtual void Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) wxOVERRIDE; + virtual void SetSize(const wxRect &rect) wxOVERRIDE; + virtual void BeginEdit(int row, int col, wxGrid *grid) wxOVERRIDE; + virtual bool EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval) wxOVERRIDE; + virtual void ApplyEdit(int row, int col, wxGrid *grid) wxOVERRIDE; + +protected: + ::TextInput *Text() const { return (::TextInput *) m_control; } + wxDECLARE_NO_COPY_CLASS(GridCellTextEditor); + +private: + wxString m_value; +}; + + class GridCellFilamentsEditor : public wxGridCellChoiceEditor { public: - // if !allowOthers, user can't type a string not in choices array GridCellFilamentsEditor(size_t count = 0, const wxString choices[] = NULL, bool allowOthers = false, @@ -78,7 +101,7 @@ public: virtual void DoActivate(int row, int col, wxGrid* grid) wxOVERRIDE; protected: - wxBitmapComboBox *Combo() const { return (wxBitmapComboBox *)m_control; } + ::ComboBox *Combo() const { return (::ComboBox *)m_control; } void OnComboCloseUp(wxCommandEvent& evt); std::vector* m_icons; @@ -108,6 +131,44 @@ public: virtual GridCellFilamentsRenderer *Clone() const wxOVERRIDE; }; + +class GridCellChoiceEditor : public wxGridCellChoiceEditor +{ +public: + GridCellChoiceEditor(size_t count = 0, const wxString choices[] = NULL); + GridCellChoiceEditor(const wxArrayString &choices); + + virtual void Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) wxOVERRIDE; + virtual void SetSize(const wxRect &rect) wxOVERRIDE; + + virtual wxGridCellEditor *Clone() const wxOVERRIDE; + + virtual void BeginEdit(int row, int col, wxGrid *grid) wxOVERRIDE; + virtual bool EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval) wxOVERRIDE; + + virtual wxGridActivationResult TryActivate(int row, int col, wxGrid *grid, const wxGridActivationSource &actSource) wxOVERRIDE; + virtual void DoActivate(int row, int col, wxGrid *grid) wxOVERRIDE; + +protected: + ::ComboBox *Combo() const { return (::ComboBox *) m_control; } + void OnComboCloseUp(wxCommandEvent &evt); + wxDECLARE_NO_COPY_CLASS(GridCellChoiceEditor); + +private: + int m_cached_value{-1}; +}; + + +class GridCellComboBoxRenderer : public wxGridCellChoiceRenderer +{ +public: + virtual void Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, const wxRect &rect, int row, int col, bool isSelected) wxOVERRIDE; + + virtual wxSize GetBestSize(wxGrid &WXUNUSED(grid), wxGridCellAttr &attr, wxDC &dc, int WXUNUSED(row), int WXUNUSED(col)) wxOVERRIDE; + + virtual GridCellComboBoxRenderer *Clone() const wxOVERRIDE; +}; + class GridCellSupportEditor : public wxGridCellBoolEditor { public: @@ -115,7 +176,6 @@ public: virtual void DoActivate(int row, int col, wxGrid* grid) wxOVERRIDE; private: - // These functions modify or use m_value. void SetValueFromGrid(int row, int col, wxGrid* grid); void SetGridFromValue(int row, int col, wxGrid* grid) const; @@ -150,6 +210,7 @@ public: virtual GridCellSupportRenderer *Clone() const wxOVERRIDE; }; + //ObjectGrid for the param setting table class ObjectGrid : public wxGrid { diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 10fd7f2ddd..b2a2f77e52 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -22,6 +22,10 @@ namespace Slic3r namespace GUI { +wxDEFINE_EVENT(EVT_LOCK_DISABLE, wxCommandEvent); +wxDEFINE_EVENT(EVT_LOCK_ENABLE, wxCommandEvent); + + OTG_Settings::OTG_Settings(wxWindow* parent, const bool staticbox) : m_parent(parent) { @@ -162,10 +166,23 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ auto btn = new ScalableButton(parent, wxID_ANY, m_bmp_reset); btn->SetToolTip(_(L("Reset parameter"))); + + #ifdef __WINDOWS__ btn->SetBackgroundColour(*wxWHITE); + #endif // DEBUG + + btn->SetBitmapFocus(m_bmp_reset_focus.bmp()); btn->SetBitmapHover(m_bmp_reset_focus.bmp()); + + #ifdef __WINDOWS__ btn->SetBitmapDisabled(m_bmp_reset_disable.bmp()); + #endif + + #ifdef __WXOSX_MAC__ + btn->Bind(EVT_LOCK_DISABLE, [this, btn](auto &e) { btn->SetBitmap(m_bmp_reset_disable.bmp()); }); + btn->Bind(EVT_LOCK_ENABLE, [this, btn](auto &e) { btn->SetBitmap(m_bmp_reset_focus.bmp()); }); + #endif btn->Bind(wxEVT_BUTTON, [btn, opt_key, this, is_object, object, config, group_category](wxEvent &event) { //wxGetApp().plater()->take_snapshot(from_u8((boost::format(_utf8(L("Reset Option %s"))) % opt_key).str())); @@ -185,6 +202,14 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ m_current_config.apply(config->get(), true); update_config_values(is_object, object, config, group_category); this->m_parent->Thaw(); + + #ifdef __WXOSX_MAC__ + if (!btn->IsEnabled()) { + btn->SetBitmap(m_bmp_reset_disable.bmp()); + } else { + btn->SetBitmap(m_bmp_reset_focus.bmp()); + } + #endif }); (const_cast(line)).extra_widget_win = btn; return btn; @@ -211,7 +236,9 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ ctrl->SetBitmap_(m_bmp_reset); ctrl->SetBitmapFocus(m_bmp_reset_focus.bmp()); ctrl->SetBitmapHover(m_bmp_reset_focus.bmp()); + #ifdef __WINDOWS__ ctrl->SetBitmapDisabled(m_bmp_reset_disable.bmp()); + #endif }; const bool is_extruders_cat = cat.first == "Extruders"; @@ -308,10 +335,22 @@ int ObjectTableSettings::update_extra_column_visible_status(ConfigOptionsGroup* if (line) { if ((config->has(opt.name)) && reset_window&&reset_window->IsEnabled()) { line->extra_widget_win->Enable(); + + #ifdef __WXOSX_MAC__ + wxCommandEvent event(EVT_LOCK_ENABLE); + event.SetEventObject(line->extra_widget_win); + wxPostEvent(line->extra_widget_win, event); + #endif + count++; - } - else + } else { line->extra_widget_win->Disable(); + #ifdef __WXOSX_MAC__ + wxCommandEvent event(EVT_LOCK_DISABLE); + event.SetEventObject(line->extra_widget_win); + wxPostEvent(line->extra_widget_win, event); + #endif + } } } wxGridSizer* grid_sizer = option_group->get_grid_sizer(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp index 5265a376d7..534426f554 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp @@ -76,7 +76,8 @@ public: void resetAllValues(int row, bool is_object, ModelObject* object, ModelConfig* config, const std::string& category); void msw_rescale(); }; - +wxDECLARE_EVENT(EVT_LOCK_DISABLE, wxCommandEvent); +wxDECLARE_EVENT(EVT_LOCK_ENABLE, wxCommandEvent); }} #endif // slic3r_GUI_ObjectTableSettings_hpp_ From 4f44ca41170b17ebcfc25aab0f18b9b2bd081266 Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Wed, 17 Aug 2022 17:08:17 +0800 Subject: [PATCH 016/137] FIX: fix color painting bugs 1. fix a crash when loading a 3mf painting with color idx larger than 15 2. fix the facets not display issue if painted with color 15 Signed-off-by: yifan.wu Change-Id: Idb53b6bb2d3665412815222ab9a1d47948afed56 --- src/libslic3r/TriangleSelector.cpp | 2 +- src/libslic3r/TriangleSelector.hpp | 8 +++----- src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 3 ++- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index 0e31d9b2ef..0ac985fdf4 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -1427,7 +1427,7 @@ void TriangleSelector::get_facets(std::vector& facets_per_ { facets_per_type.clear(); - for (int type = (int)EnforcerBlockerType::NONE; type < (int)EnforcerBlockerType::Extruder15; type++) { + for (int type = (int)EnforcerBlockerType::NONE; type <= (int)EnforcerBlockerType::ExtruderMax; type++) { facets_per_type.emplace_back(); indexed_triangle_set& its = facets_per_type.back(); std::vector vertex_map(m_vertices.size(), -1); diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index 645a63aefe..39ede77b35 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -7,12 +7,10 @@ #include #include "Point.hpp" #include "TriangleMesh.hpp" +#include "libslic3r/Model.hpp" namespace Slic3r { -enum class EnforcerBlockerType : int8_t; - - // Following class holds information about selected triangles. It also has power // to recursively subdivide the triangles and make the selection finer. class TriangleSelector @@ -275,7 +273,7 @@ public: std::pair>, std::vector> serialize() const; // Load serialized data. Assumes that correct mesh is loaded. - void deserialize(const std::pair>, std::vector>& data, bool needs_reset = true, EnforcerBlockerType max_ebt = (EnforcerBlockerType)std::numeric_limits::max()); + void deserialize(const std::pair>, std::vector>& data, bool needs_reset = true, EnforcerBlockerType max_ebt = EnforcerBlockerType::ExtruderMax); // For all triangles, remove the flag indicating that the triangle was selected by seed fill. void seed_fill_unselect_all_triangles(); @@ -312,7 +310,7 @@ protected: void set_division(int sides_to_split, int special_side_idx); // Get/set current state. - void set_state(EnforcerBlockerType type) { assert(! is_split()); state = type; } + void set_state(EnforcerBlockerType type) { assert(!is_split()); state = type; } EnforcerBlockerType get_state() const { assert(! is_split()); return state; } // Set if the triangle has been selected or unselected by seed fill. diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 1c7210e7de..918935648b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -690,7 +690,8 @@ void GLGizmoMmuSegmentation::init_model_triangle_selectors() const TriangleMesh* mesh = &mv->mesh(); m_triangle_selectors.emplace_back(std::make_unique(*mesh, ebt_colors, 0.2)); // Reset of TriangleSelector is done inside TriangleSelectorMmGUI's constructor, so we don't need it to perform it again in deserialize(). - m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false, (EnforcerBlockerType)m_extruders_colors.size()); + EnforcerBlockerType max_ebt = (EnforcerBlockerType)std::min(m_extruders_colors.size(), (size_t)EnforcerBlockerType::ExtruderMax); + m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false, max_ebt); m_triangle_selectors.back()->request_update_render_data(); m_volumes_extruder_idxs.push_back(mv->extruder_id()); } From a97da8a9badc72297fe59ad8de9d6a3481e00e9f Mon Sep 17 00:00:00 2001 From: tao wang Date: Thu, 18 Aug 2022 09:43:05 +0800 Subject: [PATCH 017/137] FIX:menu bar text not translated in MacOS Change-Id: I334a1e859e0c4455190202c95e3132cfad976ed4 --- src/slic3r/GUI/MainFrame.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 2499ce92de..acbd9d1973 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2084,13 +2084,13 @@ void MainFrame::init_menubar_as_editor() //m_topbar->AddDropDownMenuItem(config_item); m_topbar->AddDropDownSubMenu(helpMenu, _L("Help")); #else - m_menubar->Append(fileMenu, _L("&File")); + m_menubar->Append(fileMenu, wxString::Format("&%s", _L("File"))); if (editMenu) - m_menubar->Append(editMenu, _L("&Edit")); + m_menubar->Append(editMenu, wxString::Format("&%s", _L("Edit"))); if (viewMenu) - m_menubar->Append(viewMenu, _L("&View")); + m_menubar->Append(viewMenu, wxString::Format("&%s", _L("View"))); if (helpMenu) - m_menubar->Append(helpMenu, _L("&Help")); + m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help"))); SetMenuBar(m_menubar); #endif From 0ea824d1677fe83dae42eeb7f0706f8dd0b7b1f6 Mon Sep 17 00:00:00 2001 From: tao wang Date: Mon, 15 Aug 2022 11:21:55 +0800 Subject: [PATCH 018/137] FIX:fixed the ams item cannot be adjusted layout Change-Id: I8e187bb6f50883d7a607c045cf643eab4ba71ea2 --- src/slic3r/GUI/StatusPanel.cpp | 2 +- src/slic3r/GUI/Widgets/AMSControl.cpp | 81 ++++++++++++++++----------- src/slic3r/GUI/Widgets/AMSControl.hpp | 1 + 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index e93e2d7b5b..711d2d1629 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -882,7 +882,7 @@ wxBoxSizer *StatusBasePanel::create_ams_group(wxWindow *parent) auto sizer = new wxBoxSizer(wxVERTICAL); auto sizer_box = new wxBoxSizer(wxVERTICAL); m_ams_control_box = new RoundedRectangle(parent, wxColour(0xEE, 0xEE, 0xEE), wxDefaultPosition, wxDefaultSize, 5, 1); - m_ams_control_box->SetMinSize(wxSize(FromDIP(530), FromDIP(310))); + m_ams_control_box->SetMinSize(wxSize(FromDIP(530), -1)); m_ams_control_box->SetBackgroundColour(*wxWHITE); #if !BBL_RELEASE_TO_PUBLIC m_ams_debug = new wxStaticText(m_ams_control_box, wxID_ANY, _L("Debug Info"), wxDefaultPosition, wxDefaultSize, 0); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 8fc6df022e..52e6d08050 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1311,18 +1311,17 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons // normal mode //Freeze(); wxBoxSizer *m_sizer_body = new wxBoxSizer(wxVERTICAL); - auto amswin = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); - amswin->SetBackgroundColour(*wxWHITE); + m_amswin = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); + m_amswin->SetBackgroundColour(*wxWHITE); // top - ams tag - m_simplebook_amsitems = new wxSimplebook(amswin, wxID_ANY); + m_simplebook_amsitems = new wxSimplebook(m_amswin, wxID_ANY); m_simplebook_amsitems->SetSize(wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); m_simplebook_amsitems->SetMinSize(wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); auto m_sizer_amsitems = new wxBoxSizer(wxHORIZONTAL); m_simplebook_amsitems->SetSizer(m_sizer_amsitems); m_simplebook_amsitems->Layout(); m_sizer_amsitems->Fit(m_simplebook_amsitems); - m_sizer_body->Add(m_simplebook_amsitems, 0, wxEXPAND, 0); - + m_panel_top = new wxPanel(m_simplebook_amsitems, wxID_ANY, wxDefaultPosition, wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); m_sizer_top = new wxBoxSizer(wxHORIZONTAL); m_panel_top->SetSizer(m_sizer_top); @@ -1338,12 +1337,11 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_amsitems->AddPage(m_panel_top, wxEmptyString, false); m_simplebook_amsitems->AddPage(m_panel_top_empty, wxEmptyString, false); - m_sizer_body->Add(0, 0, 1, wxEXPAND | wxTOP, 18); wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_left = new wxBoxSizer(wxVERTICAL); - m_panel_can = new StaticBox(amswin, wxID_ANY, wxDefaultPosition, AMS_CANS_SIZE, wxBORDER_NONE); + m_panel_can = new StaticBox(m_amswin, wxID_ANY, wxDefaultPosition, AMS_CANS_SIZE, wxBORDER_NONE); m_panel_can->SetMinSize(AMS_CANS_SIZE); m_panel_can->SetCornerRadius(FromDIP(10)); m_panel_can->SetBackgroundColor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); @@ -1389,7 +1387,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons wxBoxSizer *m_sizer_left_bottom = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer_sextruder = new wxBoxSizer(wxVERTICAL); - auto extruder_pane = new wxPanel(amswin, wxID_ANY, wxDefaultPosition, AMS_EXTRUDER_SIZE); + auto extruder_pane = new wxPanel(m_amswin, wxID_ANY, wxDefaultPosition, AMS_EXTRUDER_SIZE); extruder_pane->SetSizer(sizer_sextruder); extruder_pane->Layout(); @@ -1413,14 +1411,13 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons StateColor btn_bd_white(std::pair(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); StateColor btn_text_green(std::pair(*wxBLACK, StateColor::Disabled), std::pair(AMS_CONTROL_WHITE_COLOUR, StateColor::Enabled)); m_sizer_left_bottom->AddStretchSpacer(); - m_button_extruder_feed = new Button(amswin, _L("Load Filament")); + m_button_extruder_feed = new Button(m_amswin, _L("Load Filament")); m_button_extruder_feed->SetBackgroundColor(btn_bg_green); m_button_extruder_feed->SetBorderColor(btn_bd_green); m_button_extruder_feed->SetTextColor(btn_text_green); m_button_extruder_feed->SetFont(Label::Body_13); - - m_button_extruder_back = new Button(amswin, _L("Unload Filament")); + m_button_extruder_back = new Button(m_amswin, _L("Unload Filament")); m_button_extruder_back->SetBackgroundColor(btn_bg_white); m_button_extruder_back->SetBorderColor(btn_bd_white); m_button_extruder_back->SetFont(Label::Body_13); @@ -1434,7 +1431,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_sizer_bottom->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(43)); wxBoxSizer *m_sizer_right = new wxBoxSizer(wxVERTICAL); - m_simplebook_right = new wxSimplebook(amswin, wxID_ANY); + m_simplebook_right = new wxSimplebook(m_amswin, wxID_ANY); m_simplebook_right->SetMinSize(AMS_STEP_SIZE); m_simplebook_right->SetSize(AMS_STEP_SIZE); m_simplebook_right->SetBackgroundColour(*wxWHITE); @@ -1447,7 +1444,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_tip_right_top->SetForegroundColour(AMS_CONTROL_BRAND_COLOUR); m_tip_right_top->Wrap(AMS_STEP_SIZE.x); m_sizer_right_tip->Add(m_tip_right_top, 0, 0, 0); - m_sizer_right_tip->Add(0, 0, 0, wxTOP, 10); + m_sizer_right_tip->Add(0, 0, 0, wxTOP, FromDIP(10)); m_tip_load_info = new wxStaticText(tip_right, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_tip_load_info->SetFont(::Label::Body_13); m_tip_load_info->SetForegroundColour(AMS_CONTROL_GRAY700); @@ -1470,31 +1467,34 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_right->AddPage(m_filament_unload_step, wxEmptyString, false); wxBoxSizer *m_sizer_right_bottom = new wxBoxSizer(wxHORIZONTAL); - m_sizer_right_bottom->Add(0, 0, 1, wxEXPAND, 5); - m_button_ams_setting = new Button(amswin, _L("AMS Settings")); + m_sizer_right_bottom->Add(0, 0, 1, wxEXPAND, FromDIP(5)); + m_button_ams_setting = new Button(m_amswin, _L("AMS Settings")); m_button_ams_setting->SetBackgroundColor(btn_bg_white); m_button_ams_setting->SetBorderColor(btn_bd_white); m_button_ams_setting->SetFont(Label::Body_13); m_button_ams_setting->Hide(); - m_sizer_right_bottom->Add(m_button_ams_setting, 0, wxTOP, 20); - m_sizer_right->Add(m_sizer_right_bottom, 0, wxEXPAND, 5); - m_sizer_bottom->Add(m_sizer_right, 0, wxEXPAND, 5); - m_sizer_body->Add(m_sizer_bottom, 0, wxEXPAND | wxLEFT, 11); + m_sizer_right_bottom->Add(m_button_ams_setting, 0, wxTOP, FromDIP(20)); + m_sizer_right->Add(m_sizer_right_bottom, 0, wxEXPAND, FromDIP(5)); + m_sizer_bottom->Add(m_sizer_right, 0, wxEXPAND, FromDIP(5)); + + m_sizer_body->Add(m_simplebook_amsitems, 0, wxEXPAND, 0); + m_sizer_body->Add(0, 0, 1, wxEXPAND | wxTOP, FromDIP(18)); + m_sizer_body->Add(m_sizer_bottom, 0, wxEXPAND | wxLEFT, FromDIP(11)); init_scaled_buttons(); - amswin->SetSizer(m_sizer_body); - amswin->Layout(); - amswin->Fit(); + m_amswin->SetSizer(m_sizer_body); + m_amswin->Layout(); + m_amswin->Fit(); //Thaw(); - SetSize(amswin->GetSize()); - SetMinSize(amswin->GetSize()); + SetSize(m_amswin->GetSize()); + SetMinSize(m_amswin->GetSize()); // calibration mode - m_simplebook_calibration = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, amswin->GetSize(), wxTAB_TRAVERSAL); + m_simplebook_calibration = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, m_amswin->GetSize(), wxTAB_TRAVERSAL); - auto m_in_calibration_panel = new wxWindow(m_simplebook_calibration, wxID_ANY, wxDefaultPosition, amswin->GetSize(), wxTAB_TRAVERSAL); + auto m_in_calibration_panel = new wxWindow(m_simplebook_calibration, wxID_ANY, wxDefaultPosition, m_amswin->GetSize(), wxTAB_TRAVERSAL); m_in_calibration_panel->SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR); wxBoxSizer *sizer_calibration_h = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer_calibration_v = new wxBoxSizer(wxVERTICAL); @@ -1506,15 +1506,15 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_text_calibration_tip->SetFont(::Label::Body_14); m_text_calibration_tip->SetForegroundColour(AMS_CONTROL_GRAY700); sizer_calibration_v->Add(thumbnail, 0, wxALIGN_CENTER, 0); - sizer_calibration_v->Add(0, 0, 0, wxTOP, 16); + sizer_calibration_v->Add(0, 0, 0, wxTOP, FromDIP(16)); sizer_calibration_v->Add(m_text_calibration_percent, 0, wxALIGN_CENTER, 0); - sizer_calibration_v->Add(0, 0, 0, wxTOP, 8); + sizer_calibration_v->Add(0, 0, 0, wxTOP, FromDIP(8)); sizer_calibration_v->Add(m_text_calibration_tip, 0, wxALIGN_CENTER, 0); sizer_calibration_h->Add(sizer_calibration_v, 1, wxALIGN_CENTER, 0); m_in_calibration_panel->SetSizer(sizer_calibration_h); m_in_calibration_panel->Layout(); - auto m_calibration_err_panel = new wxWindow(m_simplebook_calibration, wxID_ANY, wxDefaultPosition, amswin->GetSize(), wxTAB_TRAVERSAL); + auto m_calibration_err_panel = new wxWindow(m_simplebook_calibration, wxID_ANY, wxDefaultPosition, m_amswin->GetSize(), wxTAB_TRAVERSAL); m_calibration_err_panel->SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR); wxBoxSizer *sizer_err_calibration_h = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer_err_calibration_v = new wxBoxSizer(wxVERTICAL); @@ -1547,10 +1547,10 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons sizer_button->Add(m_button_calibration_cancel, 0, wxALL, 5); sizer_err_calibration_v->Add(m_hyperlink, 0, wxALIGN_CENTER, 0); - sizer_err_calibration_v->Add(0, 0, 0, wxTOP, 6); + sizer_err_calibration_v->Add(0, 0, 0, wxTOP, FromDIP(6)); sizer_err_calibration_v->Add(m_tip_calibration_err, 0, wxALIGN_CENTER, 0); - sizer_err_calibration_v->Add(0, 0, 0, wxTOP, 8); - sizer_err_calibration_v->Add(sizer_button, 0, wxALIGN_CENTER | wxTOP, 18); + sizer_err_calibration_v->Add(0, 0, 0, wxTOP, FromDIP(8)); + sizer_err_calibration_v->Add(sizer_button, 0, wxALIGN_CENTER | wxTOP, FromDIP(18)); sizer_err_calibration_h->Add(sizer_err_calibration_v, 1, wxALIGN_CENTER, 0); m_calibration_err_panel->SetSizer(sizer_err_calibration_h); m_calibration_err_panel->Layout(); @@ -1558,7 +1558,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_calibration->AddPage(m_in_calibration_panel, wxEmptyString, false); m_simplebook_calibration->AddPage(m_calibration_err_panel, wxEmptyString, false); - AddPage(amswin, wxEmptyString, false); + AddPage(m_amswin, wxEmptyString, false); AddPage(m_simplebook_calibration, wxEmptyString, false); UpdateStepCtrl(); @@ -1778,8 +1778,23 @@ void AMSControl::UpdateAms(std::vector info, bool keep_selection) if (i < info.size() && info.size() > 1) { item->amsItem->Update(m_ams_info[i]); item->amsItem->Open(); + + if (!m_simplebook_amsitems->IsShown()) { + m_simplebook_amsitems->Show(); + m_amswin->Layout(); + m_amswin->Fit(); + SetSize(m_amswin->GetSize()); + SetMinSize(m_amswin->GetSize()); + } } else { item->amsItem->Close(); + if (m_simplebook_amsitems->IsShown()) { + m_simplebook_amsitems->Hide(); + m_amswin->Layout(); + m_amswin->Fit(); + SetSize(m_amswin->GetSize()); + SetMinSize(m_amswin->GetSize()); + } } } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 32a6f4d8bf..45f4670c96 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -449,6 +449,7 @@ protected: wxStaticText *m_text_calibration_percent = {nullptr}; wxWindow * m_none_ams_panel = {nullptr}; wxWindow * m_panel_top = {nullptr}; + wxWindow * m_amswin = {nullptr}; StaticBox * m_panel_can = {nullptr}; wxBoxSizer *m_sizer_top = {nullptr}; From ce082f6e2a66fd87341f9ceb0a9680b153b9bdae Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Thu, 18 Aug 2022 10:00:38 +0800 Subject: [PATCH 019/137] ENH: modified the machine_start_code and machine_end_code Signed-off-by: qing.zhang Change-Id: Ic2fe491491b6e3e46870773e68aa3823ab37640a --- resources/profiles/BBL.json | 2 +- resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json | 4 ++-- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json | 4 ++-- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index c80313be36..bd01b30ca2 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.01.05", + "version": "01.01.01.06", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index e2de9f562d..642bc72179 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -22,8 +22,8 @@ "18x28", "0x28" ], - "machine_start_gcode": "\n;===== date: 202200731 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\nM975 S1\n;===== prepare print temperature and material end =====\n\n\n;===== wipe mouth ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nG0 X126 F120\nG0 X130\nG0 X126\nG0 X130\nG0 X128\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe mouth end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n ;G0 Y0.5\n ;G0 X18 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", - "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 1.0} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nM17 S\nM17 Z0.5 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F900\n{else}\n G1 Z250 F900\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0", + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n ;G0 Y0.5\n ;G0 X18 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_end_gcode": ";===== date: 202200810 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM17 S\nM17 Z0.35 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n\n", "scan_first_layer": "1", "machine_load_filament_time": "17", "machine_unload_filament_time": "16", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json index 80a46ba7cf..74f6c6ee9a 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json @@ -26,6 +26,6 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": "\n;===== date: 202200731 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\nM975 S1\n;===== prepare print temperature and material end =====\n\n\n;===== wipe mouth ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nG0 X126 F120\nG0 X130\nG0 X126\nG0 X130\nG0 X128\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe mouth end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 P500\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nM400 S3\n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800 \n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.160 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.080 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_extruder]} \n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800 \n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.160 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.080 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "nozzle_type": "stainless_steel" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json index 8ed4e921a1..3d7cd43f8b 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json @@ -22,8 +22,8 @@ "18x28", "0x28" ], - "machine_start_gcode": "\n;===== date: 202200731 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\nM975 S1\n;===== prepare print temperature and material end =====\n\n\n;===== wipe mouth ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nG0 X126 F120\nG0 X130\nG0 X126\nG0 X130\nG0 X128\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe mouth end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n ;G0 Y0.5\n ;G0 X18 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", - "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 1.0} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nM17 S\nM17 Z0.5 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F900\n{else}\n G1 Z250 F900\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0", + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y5.5 \nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n ;G0 Y0.5\n ;G0 X18 E18 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_end_gcode": ";===== date: 202200810 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM17 S\nM17 Z0.35 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n\n", "scan_first_layer": "1", "machine_load_filament_time": "17", "machine_unload_filament_time": "16", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json index e00b134574..b7cf921fd3 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json @@ -26,5 +26,5 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": "\n;===== date: 202200731 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\nM975 S1\n;===== prepare print temperature and material end =====\n\n\n;===== wipe mouth ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nG0 X126 F120\nG0 X130\nG0 X126\nG0 X130\nG0 X128\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe mouth end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 P500\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \nG0 Y5.5 \nG0 X18 E25\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n ;G0 Y0.9\n ;G0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.030 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.015 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623 \n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \nG0 Y5.5 \nG0 X18 E25\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n ;G0 Y0.9\n ;G0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.030 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.015 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623 \n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json index e06a0c188f..b02c38d6a9 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json @@ -29,5 +29,5 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": "\n;===== date: 202200731 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\nM975 S1\n;===== prepare print temperature and material end =====\n\n\n;===== wipe mouth ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nG0 X126 F120\nG0 X130\nG0 X126\nG0 X130\nG0 X128\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe mouth end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 P500\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nM400 S3\n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y4.5 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 E3 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 Y5.5 \nG0 X129 E15\nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n\n T1000 \n M83 \n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800 \n G0 X185.000 E9.35441 F4800 \n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.010 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_extruder]} \n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623 \n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y4.5 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 E3 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 Y5.5 \nG0 X129 E15\nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n\n T1000 \n M83 \n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800 \n G0 X185.000 E9.35441 F4800 \n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.010 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_extruder]} \n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623 \n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4" } From d73142c2f9ea8b73fb6e1e803c57e2b7d653b08e Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Thu, 18 Aug 2022 14:17:02 +0800 Subject: [PATCH 020/137] ENH: new seam strategy from prusa2.5 As title. Thanks @Prusa Signed-off-by: salt.wei Change-Id: I2fa177e27ac53211952ea9b6c62e98182b8f05ce --- src/libslic3r/AABBTreeIndirect.hpp | 160 +- src/libslic3r/AABBTreeLines.hpp | 112 ++ src/libslic3r/CMakeLists.txt | 8 + src/libslic3r/ExtrusionEntity.cpp | 72 +- src/libslic3r/ExtrusionEntity.hpp | 12 +- src/libslic3r/GCode.cpp | 46 +- src/libslic3r/GCode.hpp | 6 +- src/libslic3r/GCode/SeamPlacer.cpp | 2177 +++++++++++++++---------- src/libslic3r/GCode/SeamPlacer.hpp | 257 +-- src/libslic3r/Geometry/Bicubic.hpp | 291 ++++ src/libslic3r/Geometry/Curves.hpp | 218 +++ src/libslic3r/KDTreeIndirect.hpp | 498 ++++-- src/libslic3r/MultiPoint.cpp | 17 + src/libslic3r/MultiPoint.hpp | 5 + src/libslic3r/NormalUtils.cpp | 142 ++ src/libslic3r/NormalUtils.hpp | 69 + src/libslic3r/Polyline.cpp | 22 + src/libslic3r/Polyline.hpp | 3 + src/libslic3r/ShortEdgeCollapse.cpp | 183 +++ src/libslic3r/ShortEdgeCollapse.hpp | 16 + src/libslic3r/TriangleSetSampling.cpp | 71 + src/libslic3r/TriangleSetSampling.hpp | 20 + src/libslic3r/libslic3r.h | 23 + 23 files changed, 3105 insertions(+), 1323 deletions(-) create mode 100644 src/libslic3r/AABBTreeLines.hpp create mode 100644 src/libslic3r/Geometry/Bicubic.hpp create mode 100644 src/libslic3r/Geometry/Curves.hpp create mode 100644 src/libslic3r/NormalUtils.cpp create mode 100644 src/libslic3r/NormalUtils.hpp create mode 100644 src/libslic3r/ShortEdgeCollapse.cpp create mode 100644 src/libslic3r/ShortEdgeCollapse.hpp create mode 100644 src/libslic3r/TriangleSetSampling.cpp create mode 100644 src/libslic3r/TriangleSetSampling.hpp diff --git a/src/libslic3r/AABBTreeIndirect.hpp b/src/libslic3r/AABBTreeIndirect.hpp index 217166f8c7..9b9c886ecc 100644 --- a/src/libslic3r/AABBTreeIndirect.hpp +++ b/src/libslic3r/AABBTreeIndirect.hpp @@ -446,6 +446,57 @@ namespace detail { } } + // Real-time collision detection, Ericson, Chapter 5 + template + static inline Vector closest_point_to_triangle(const Vector &p, const Vector &a, const Vector &b, const Vector &c) + { + using Scalar = typename Vector::Scalar; + // Check if P in vertex region outside A + Vector ab = b - a; + Vector ac = c - a; + Vector ap = p - a; + Scalar d1 = ab.dot(ap); + Scalar d2 = ac.dot(ap); + if (d1 <= 0 && d2 <= 0) + return a; + // Check if P in vertex region outside B + Vector bp = p - b; + Scalar d3 = ab.dot(bp); + Scalar d4 = ac.dot(bp); + if (d3 >= 0 && d4 <= d3) + return b; + // Check if P in edge region of AB, if so return projection of P onto AB + Scalar vc = d1*d4 - d3*d2; + if (a != b && vc <= 0 && d1 >= 0 && d3 <= 0) { + Scalar v = d1 / (d1 - d3); + return a + v * ab; + } + // Check if P in vertex region outside C + Vector cp = p - c; + Scalar d5 = ab.dot(cp); + Scalar d6 = ac.dot(cp); + if (d6 >= 0 && d5 <= d6) + return c; + // Check if P in edge region of AC, if so return projection of P onto AC + Scalar vb = d5*d2 - d1*d6; + if (vb <= 0 && d2 >= 0 && d6 <= 0) { + Scalar w = d2 / (d2 - d6); + return a + w * ac; + } + // Check if P in edge region of BC, if so return projection of P onto BC + Scalar va = d3*d6 - d5*d4; + if (va <= 0 && (d4 - d3) >= 0 && (d5 - d6) >= 0) { + Scalar w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); + return b + w * (c - b); + } + // P inside face region. Compute Q through its barycentric coordinates (u,v,w) + Scalar denom = Scalar(1.0) / (va + vb + vc); + Scalar v = vb * denom; + Scalar w = vc * denom; + return a + ab * v + ac * w; // = u*a + v*b + w*c, u = va * denom = 1.0-v-w + }; + + // Nothing to do with COVID-19 social distancing. template struct IndexedTriangleSetDistancer { @@ -453,74 +504,36 @@ namespace detail { using IndexedFaceType = AIndexedFaceType; using TreeType = ATreeType; using VectorType = AVectorType; + using ScalarType = typename VectorType::Scalar; const std::vector &vertices; const std::vector &faces; const TreeType &tree; const VectorType origin; + + inline VectorType closest_point_to_origin(size_t primitive_index, + ScalarType& squared_distance){ + const auto &triangle = this->faces[primitive_index]; + VectorType closest_point = closest_point_to_triangle(origin, + this->vertices[triangle(0)].template cast(), + this->vertices[triangle(1)].template cast(), + this->vertices[triangle(2)].template cast()); + squared_distance = (origin - closest_point).squaredNorm(); + return closest_point; + } }; - // Real-time collision detection, Ericson, Chapter 5 - template - static inline Vector closest_point_to_triangle(const Vector &p, const Vector &a, const Vector &b, const Vector &c) - { - using Scalar = typename Vector::Scalar; - // Check if P in vertex region outside A - Vector ab = b - a; - Vector ac = c - a; - Vector ap = p - a; - Scalar d1 = ab.dot(ap); - Scalar d2 = ac.dot(ap); - if (d1 <= 0 && d2 <= 0) - return a; - // Check if P in vertex region outside B - Vector bp = p - b; - Scalar d3 = ab.dot(bp); - Scalar d4 = ac.dot(bp); - if (d3 >= 0 && d4 <= d3) - return b; - // Check if P in edge region of AB, if so return projection of P onto AB - Scalar vc = d1*d4 - d3*d2; - if (a != b && vc <= 0 && d1 >= 0 && d3 <= 0) { - Scalar v = d1 / (d1 - d3); - return a + v * ab; - } - // Check if P in vertex region outside C - Vector cp = p - c; - Scalar d5 = ab.dot(cp); - Scalar d6 = ac.dot(cp); - if (d6 >= 0 && d5 <= d6) - return c; - // Check if P in edge region of AC, if so return projection of P onto AC - Scalar vb = d5*d2 - d1*d6; - if (vb <= 0 && d2 >= 0 && d6 <= 0) { - Scalar w = d2 / (d2 - d6); - return a + w * ac; - } - // Check if P in edge region of BC, if so return projection of P onto BC - Scalar va = d3*d6 - d5*d4; - if (va <= 0 && (d4 - d3) >= 0 && (d5 - d6) >= 0) { - Scalar w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); - return b + w * (c - b); - } - // P inside face region. Compute Q through its barycentric coordinates (u,v,w) - Scalar denom = Scalar(1.0) / (va + vb + vc); - Scalar v = vb * denom; - Scalar w = vc * denom; - return a + ab * v + ac * w; // = u*a + v*b + w*c, u = va * denom = 1.0-v-w - }; - - template - static inline Scalar squared_distance_to_indexed_triangle_set_recursive( - IndexedTriangleSetDistancerType &distancer, + template + static inline Scalar squared_distance_to_indexed_primitives_recursive( + IndexedPrimitivesDistancerType &distancer, size_t node_idx, Scalar low_sqr_d, Scalar up_sqr_d, size_t &i, - Eigen::PlainObjectBase &c) + Eigen::PlainObjectBase &c) { - using Vector = typename IndexedTriangleSetDistancerType::VectorType; + using Vector = typename IndexedPrimitivesDistancerType::VectorType; if (low_sqr_d > up_sqr_d) return low_sqr_d; @@ -538,13 +551,9 @@ namespace detail { assert(node.is_valid()); if (node.is_leaf()) { - const auto &triangle = distancer.faces[node.idx]; - Vector c_candidate = closest_point_to_triangle( - distancer.origin, - distancer.vertices[triangle(0)].template cast(), - distancer.vertices[triangle(1)].template cast(), - distancer.vertices[triangle(2)].template cast()); - set_min((c_candidate - distancer.origin).squaredNorm(), node.idx, c_candidate); + Scalar sqr_dist; + Vector c_candidate = distancer.closest_point_to_origin(node.idx, sqr_dist); + set_min(sqr_dist, node.idx, c_candidate); } else { @@ -561,7 +570,7 @@ namespace detail { { size_t i_left; Vector c_left = c; - Scalar sqr_d_left = squared_distance_to_indexed_triangle_set_recursive(distancer, left_node_idx, low_sqr_d, up_sqr_d, i_left, c_left); + Scalar sqr_d_left = squared_distance_to_indexed_primitives_recursive(distancer, left_node_idx, low_sqr_d, up_sqr_d, i_left, c_left); set_min(sqr_d_left, i_left, c_left); looked_left = true; }; @@ -569,13 +578,13 @@ namespace detail { { size_t i_right; Vector c_right = c; - Scalar sqr_d_right = squared_distance_to_indexed_triangle_set_recursive(distancer, right_node_idx, low_sqr_d, up_sqr_d, i_right, c_right); + Scalar sqr_d_right = squared_distance_to_indexed_primitives_recursive(distancer, right_node_idx, low_sqr_d, up_sqr_d, i_right, c_right); set_min(sqr_d_right, i_right, c_right); looked_right = true; }; // must look left or right if in box - using BBoxScalar = typename IndexedTriangleSetDistancerType::TreeType::BoundingBox::Scalar; + using BBoxScalar = typename IndexedPrimitivesDistancerType::TreeType::BoundingBox::Scalar; if (node_left.bbox.contains(distancer.origin.template cast())) look_left(); if (node_right.bbox.contains(distancer.origin.template cast())) @@ -709,10 +718,15 @@ inline bool intersect_ray_all_hits( origin, dir, VectorType(dir.cwiseInverse()), eps } }; - if (! tree.empty()) { + if (tree.empty()) { + hits.clear(); + } else { + // Reusing the output memory if there is some memory already pre-allocated. + ray_intersector.hits = std::move(hits); + ray_intersector.hits.clear(); ray_intersector.hits.reserve(8); detail::intersect_ray_recursive_all_hits(ray_intersector, 0); - std::swap(hits, ray_intersector.hits); + hits = std::move(ray_intersector.hits); std::sort(hits.begin(), hits.end(), [](const auto &l, const auto &r) { return l.t < r.t; }); } return ! hits.empty(); @@ -742,7 +756,7 @@ inline typename VectorType::Scalar squared_distance_to_indexed_triangle_set( auto distancer = detail::IndexedTriangleSetDistancer { vertices, faces, tree, point }; return tree.empty() ? Scalar(-1) : - detail::squared_distance_to_indexed_triangle_set_recursive(distancer, size_t(0), Scalar(0), std::numeric_limits::infinity(), hit_idx_out, hit_point_out); + detail::squared_distance_to_indexed_primitives_recursive(distancer, size_t(0), Scalar(0), std::numeric_limits::infinity(), hit_idx_out, hit_point_out); } // Decides if exists some triangle in defined radius on a 3D indexed triangle set using a pre-built AABBTreeIndirect::Tree. @@ -759,22 +773,22 @@ inline bool is_any_triangle_in_radius( const TreeType &tree, // Point to which the closest point on the indexed triangle set is searched for. const VectorType &point, - // Maximum distance in which triangle is search for - typename VectorType::Scalar &max_distance) + //Square of maximum distance in which triangle is searched for + typename VectorType::Scalar &max_distance_squared) { using Scalar = typename VectorType::Scalar; auto distancer = detail::IndexedTriangleSetDistancer { vertices, faces, tree, point }; - size_t hit_idx; - VectorType hit_point = VectorType::Ones() * (std::nan("")); + size_t hit_idx; + VectorType hit_point = VectorType::Ones() * (NaN); if(tree.empty()) { return false; } - detail::squared_distance_to_indexed_triangle_set_recursive(distancer, size_t(0), Scalar(0), max_distance, hit_idx, hit_point); + detail::squared_distance_to_indexed_primitives_recursive(distancer, size_t(0), Scalar(0), max_distance_squared, hit_idx, hit_point); return hit_point.allFinite(); } diff --git a/src/libslic3r/AABBTreeLines.hpp b/src/libslic3r/AABBTreeLines.hpp new file mode 100644 index 0000000000..7b9595419a --- /dev/null +++ b/src/libslic3r/AABBTreeLines.hpp @@ -0,0 +1,112 @@ +#ifndef SRC_LIBSLIC3R_AABBTREELINES_HPP_ +#define SRC_LIBSLIC3R_AABBTREELINES_HPP_ + +#include "libslic3r/Point.hpp" +#include "libslic3r/EdgeGrid.hpp" +#include "libslic3r/AABBTreeIndirect.hpp" +#include "libslic3r/Line.hpp" + +namespace Slic3r { + +namespace AABBTreeLines { + +namespace detail { + +template +struct IndexedLinesDistancer { + using LineType = ALineType; + using TreeType = ATreeType; + using VectorType = AVectorType; + using ScalarType = typename VectorType::Scalar; + + const std::vector &lines; + const TreeType &tree; + + const VectorType origin; + + inline VectorType closest_point_to_origin(size_t primitive_index, + ScalarType &squared_distance) { + VectorType nearest_point; + const LineType &line = lines[primitive_index]; + squared_distance = line_alg::distance_to_squared(line, origin, &nearest_point); + return nearest_point; + } +}; + +} + +// Build a balanced AABB Tree over a vector of float lines, balancing the tree +// on centroids of the lines. +// Epsilon is applied to the bounding boxes of the AABB Tree to cope with numeric inaccuracies +// during tree traversal. +template +inline AABBTreeIndirect::Tree<2, typename LineType::Scalar> build_aabb_tree_over_indexed_lines( + const std::vector &lines, + //FIXME do we want to apply an epsilon? + const float eps = 0) + { + using TreeType = AABBTreeIndirect::Tree<2, typename LineType::Scalar>; +// using CoordType = typename TreeType::CoordType; + using VectorType = typename TreeType::VectorType; + using BoundingBox = typename TreeType::BoundingBox; + + struct InputType { + size_t idx() const { + return m_idx; + } + const BoundingBox& bbox() const { + return m_bbox; + } + const VectorType& centroid() const { + return m_centroid; + } + + size_t m_idx; + BoundingBox m_bbox; + VectorType m_centroid; + }; + + std::vector input; + input.reserve(lines.size()); + const VectorType veps(eps, eps); + for (size_t i = 0; i < lines.size(); ++i) { + const LineType &line = lines[i]; + InputType n; + n.m_idx = i; + n.m_centroid = (line.a + line.b) * 0.5; + n.m_bbox = BoundingBox(line.a, line.a); + n.m_bbox.extend(line.b); + n.m_bbox.min() -= veps; + n.m_bbox.max() += veps; + input.emplace_back(n); + } + + TreeType out; + out.build(std::move(input)); + return out; +} + +// Finding a closest line, its closest point and squared distance to the closest point +// Returns squared distance to the closest point or -1 if the input is empty. +template +inline typename VectorType::Scalar squared_distance_to_indexed_lines( + const std::vector &lines, + const TreeType &tree, + const VectorType &point, + size_t &hit_idx_out, + Eigen::PlainObjectBase &hit_point_out) + { + using Scalar = typename VectorType::Scalar; + auto distancer = detail::IndexedLinesDistancer + { lines, tree, point }; + return tree.empty() ? + Scalar(-1) : + AABBTreeIndirect::detail::squared_distance_to_indexed_primitives_recursive(distancer, size_t(0), Scalar(0), + std::numeric_limits::infinity(), hit_idx_out, hit_point_out); +} + +} + +} + +#endif /* SRC_LIBSLIC3R_AABBTREELINES_HPP_ */ diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 2ebdb72e01..c6f01a65db 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -142,10 +142,12 @@ set(lisbslic3r_sources GCodeWriter.hpp Geometry.cpp Geometry.hpp + Geometry/Bicubic.hpp Geometry/Circle.cpp Geometry/Circle.hpp Geometry/ConvexHull.cpp Geometry/ConvexHull.hpp + Geometry/Curves.hpp Geometry/MedialAxis.cpp Geometry/MedialAxis.hpp Geometry/Voronoi.hpp @@ -176,6 +178,8 @@ set(lisbslic3r_sources CustomGCode.hpp Arrange.hpp Arrange.cpp + NormalUtils.cpp + NormalUtils.hpp Orient.hpp Orient.cpp MultiPoint.cpp @@ -222,6 +226,8 @@ set(lisbslic3r_sources QuadricEdgeCollapse.cpp QuadricEdgeCollapse.hpp Semver.cpp + ShortEdgeCollapse.cpp + ShortEdgeCollapse.hpp ShortestPath.cpp ShortestPath.hpp SLAPrint.cpp @@ -264,6 +270,8 @@ set(lisbslic3r_sources Thread.hpp TriangleSelector.cpp TriangleSelector.hpp + TriangleSetSampling.cpp + TriangleSetSampling.hpp MTUtils.hpp VariableWidth.cpp VariableWidth.hpp diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index 2189f649fd..537adfdcc8 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -158,11 +158,10 @@ double ExtrusionLoop::length() const return len; } -bool ExtrusionLoop::split_at_vertex(const Point &point) +bool ExtrusionLoop::split_at_vertex(const Point &point, const double scaled_epsilon) { for (ExtrusionPaths::iterator path = this->paths.begin(); path != this->paths.end(); ++path) { - int idx = path->polyline.find_point(point); - if (idx != -1) { + if (int idx = path->polyline.find_point(point, scaled_epsilon); idx != -1) { if (this->paths.size() == 1) { // just change the order of points Polyline p1, p2; @@ -207,46 +206,57 @@ bool ExtrusionLoop::split_at_vertex(const Point &point) return false; } -std::pair ExtrusionLoop::get_closest_path_and_point(const Point& point, bool prefer_non_overhang) const +ExtrusionLoop::ClosestPathPoint ExtrusionLoop::get_closest_path_and_point(const Point &point, bool prefer_non_overhang) const { // Find the closest path and closest point belonging to that path. Avoid overhangs, if asked for. - size_t path_idx = 0; - Point p; - { - double min = std::numeric_limits::max(); - Point p_non_overhang; - size_t path_idx_non_overhang = 0; - double min_non_overhang = std::numeric_limits::max(); - for (const ExtrusionPath& path : this->paths) { - Point p_tmp = point.projection_onto(path.polyline); - double dist = (p_tmp - point).cast().norm(); - if (dist < min) { - p = p_tmp; - min = dist; - path_idx = &path - &this->paths.front(); - } - if (prefer_non_overhang && !is_bridge(path.role()) && dist < min_non_overhang) { - p_non_overhang = p_tmp; - min_non_overhang = dist; - path_idx_non_overhang = &path - &this->paths.front(); - } + ClosestPathPoint out{0, 0}; + double min2 = std::numeric_limits::max(); + ClosestPathPoint best_non_overhang{0, 0}; + double min2_non_overhang = std::numeric_limits::max(); + for (const ExtrusionPath &path : this->paths) { + std::pair foot_pt_ = foot_pt(path.polyline.points, point); + double d2 = (foot_pt_.second - point).cast().squaredNorm(); + if (d2 < min2) { + out.foot_pt = foot_pt_.second; + out.path_idx = &path - &this->paths.front(); + out.segment_idx = foot_pt_.first; + min2 = d2; } - if (prefer_non_overhang && min_non_overhang != std::numeric_limits::max()) { - // Only apply the non-overhang point if there is one. - path_idx = path_idx_non_overhang; - p = p_non_overhang; + if (prefer_non_overhang && !is_bridge(path.role()) && d2 < min2_non_overhang) { + best_non_overhang.foot_pt = foot_pt_.second; + best_non_overhang.path_idx = &path - &this->paths.front(); + best_non_overhang.segment_idx = foot_pt_.first; + min2_non_overhang = d2; } } - return std::make_pair(path_idx, p); + if (prefer_non_overhang && min2_non_overhang != std::numeric_limits::max()) + // Only apply the non-overhang point if there is one. + out = best_non_overhang; + return out; } // Splitting an extrusion loop, possibly made of multiple segments, some of the segments may be bridging. -void ExtrusionLoop::split_at(const Point &point, bool prefer_non_overhang) +void ExtrusionLoop::split_at(const Point &point, bool prefer_non_overhang, const double scaled_epsilon) { if (this->paths.empty()) return; - auto [path_idx, p] = get_closest_path_and_point(point, prefer_non_overhang); + auto [path_idx, segment_idx, p] = get_closest_path_and_point(point, prefer_non_overhang); + + // Snap p to start or end of segment_idx if closer than scaled_epsilon. + { + const Point *p1 = this->paths[path_idx].polyline.points.data() + segment_idx; + const Point *p2 = p1; + ++p2; + double d2_1 = (point - *p1).cast().squaredNorm(); + double d2_2 = (point - *p2).cast().squaredNorm(); + const double thr2 = scaled_epsilon * scaled_epsilon; + if (d2_1 < d2_2) { + if (d2_1 < thr2) p = *p1; + } else { + if (d2_2 < thr2) p = *p2; + } + } // now split path_idx in two parts const ExtrusionPath &path = this->paths[path_idx]; diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 2fc6608000..6863a0df3b 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -314,9 +314,15 @@ public: const Point& last_point() const override { assert(this->first_point() == this->paths.back().polyline.points.back()); return this->first_point(); } Polygon polygon() const; double length() const override; - bool split_at_vertex(const Point &point); - void split_at(const Point &point, bool prefer_non_overhang); - std::pair get_closest_path_and_point(const Point& point, bool prefer_non_overhang) const; + bool split_at_vertex(const Point &point, const double scaled_epsilon = scaled(0.001)); + void split_at(const Point &point, bool prefer_non_overhang, const double scaled_epsilon = scaled(0.001)); + struct ClosestPathPoint + { + size_t path_idx; + size_t segment_idx; + Point foot_pt; + }; + ClosestPathPoint get_closest_path_and_point(const Point &point, bool prefer_non_overhang) const; void clip_end(double distance, ExtrusionPaths* paths) const; // Test, whether the point is extruded by a bridging flow. // This used to be used to avoid placing seams on overhangs, but now the EdgeGrid is used instead. diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ec38f8e120..74b4035957 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1567,7 +1567,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato print.throw_if_canceled(); // Collect custom seam data from all objects. - m_seam_placer.init(print); + std::function throw_if_canceled_func = [&print]() { print.throw_if_canceled(); }; + m_seam_placer.init(print, throw_if_canceled_func); // BBS: priming logic is removed, always set first extruer here. //if (! (has_wipe_tower && print.config().single_extruder_multi_material_priming)) @@ -2792,7 +2793,6 @@ GCode::LayerResult GCode::process_layer( m_wipe_tower->set_is_first_print(true); // Extrude the skirt, brim, support, perimeters, infill ordered by the extruders. - std::vector> lower_layer_edge_grids(layers.size()); for (unsigned int extruder_id : layer_tools.extruders) { gcode += (layer_tools.has_wipe_tower && m_wipe_tower) ? @@ -2981,9 +2981,9 @@ GCode::LayerResult GCode::process_layer( //This behaviour is same with cura if (is_infill_first && !first_layer) { gcode += this->extrude_infill(print, by_region_specific, false); - gcode += this->extrude_perimeters(print, by_region_specific, lower_layer_edge_grids[instance_to_print.layer_id]); + gcode += this->extrude_perimeters(print, by_region_specific); } else { - gcode += this->extrude_perimeters(print, by_region_specific, lower_layer_edge_grids[instance_to_print.layer_id]); + gcode += this->extrude_perimeters(print, by_region_specific); gcode += this->extrude_infill(print,by_region_specific, false); } // ironing @@ -3161,14 +3161,11 @@ static std::unique_ptr calculate_layer_edge_grid(const Layer& la } -std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, double speed, std::unique_ptr *lower_layer_edge_grid) +std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, double speed) { // get a copy; don't modify the orientation of the original loop object otherwise // next copies (if any) would not detect the correct orientation - if (m_layer->lower_layer && lower_layer_edge_grid != nullptr && ! *lower_layer_edge_grid) - *lower_layer_edge_grid = calculate_layer_edge_grid(*m_layer->lower_layer); - //BBS: extrude contour of wall ccw, hole of wall cw, except spiral mode bool was_clockwise = loop.is_clockwise(); if (m_config.spiral_mode || !is_perimeter(loop.role())) @@ -3178,17 +3175,13 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou // find the point of the loop that is closest to the current extruder position // or randomize if requested Point last_pos = this->last_pos(); - if (m_config.spiral_mode) { + if (!m_config.spiral_mode && description == "perimeter") { + assert(m_layer != nullptr); + bool is_outer_wall_first = m_config.wall_infill_order == WallInfillOrder::OuterInnerInfill + || m_config.wall_infill_order == WallInfillOrder::InfillOuterInner; + m_seam_placer.place_seam(m_layer, loop, is_outer_wall_first, this->last_pos()); + } else loop.split_at(last_pos, false); - } - else { - //BBS - bool is_outer_wall_first = - m_config.wall_infill_order == WallInfillOrder::OuterInnerInfill || - m_config.wall_infill_order == WallInfillOrder::InfillOuterInner; - m_seam_placer.place_seam(loop, this->last_pos(), is_outer_wall_first, - EXTRUDER_CONFIG(nozzle_diameter), lower_layer_edge_grid ? lower_layer_edge_grid->get() : nullptr); - } // clip the path to avoid the extruder to get exactly on the first point of the loop; // if polyline was shorter than the clipping distance we'd get a null polyline, so @@ -3298,14 +3291,14 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string return gcode; } -std::string GCode::extrude_entity(const ExtrusionEntity &entity, std::string description, double speed, std::unique_ptr *lower_layer_edge_grid) +std::string GCode::extrude_entity(const ExtrusionEntity &entity, std::string description, double speed) { if (const ExtrusionPath* path = dynamic_cast(&entity)) return this->extrude_path(*path, description, speed); else if (const ExtrusionMultiPath* multipath = dynamic_cast(&entity)) return this->extrude_multi_path(*multipath, description, speed); else if (const ExtrusionLoop* loop = dynamic_cast(&entity)) - return this->extrude_loop(*loop, description, speed, lower_layer_edge_grid); + return this->extrude_loop(*loop, description, speed); else throw Slic3r::InvalidArgument("Invalid argument supplied to extrude()"); return ""; @@ -3327,24 +3320,15 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou } // Extrude perimeters: Decide where to put seams (hide or align seams). -std::string GCode::extrude_perimeters(const Print &print, const std::vector &by_region, std::unique_ptr &lower_layer_edge_grid) +std::string GCode::extrude_perimeters(const Print &print, const std::vector &by_region) { std::string gcode; for (const ObjectByExtruder::Island::Region ®ion : by_region) if (! region.perimeters.empty()) { m_config.apply(print.get_print_region(®ion - &by_region.front()).config()); - // plan_perimeters tries to place seams, it needs to have the lower_layer_edge_grid calculated already. - if (m_layer->lower_layer && ! lower_layer_edge_grid) - lower_layer_edge_grid = calculate_layer_edge_grid(*m_layer->lower_layer); - - m_seam_placer.plan_perimeters(std::vector(region.perimeters.begin(), region.perimeters.end()), - *m_layer, m_config.seam_position, this->last_pos(), EXTRUDER_CONFIG(nozzle_diameter), - (m_layer == NULL ? nullptr : m_layer->object()), - (lower_layer_edge_grid ? lower_layer_edge_grid.get() : nullptr)); - for (const ExtrusionEntity* ee : region.perimeters) - gcode += this->extrude_entity(*ee, "perimeter", -1., &lower_layer_edge_grid); + gcode += this->extrude_entity(*ee, "perimeter", -1.); } return gcode; } diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 702f47fe73..29abf88def 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -325,8 +325,8 @@ private: std::string preamble(); // BBS std::string change_layer(coordf_t print_z, bool lazy_raise = false); - std::string extrude_entity(const ExtrusionEntity &entity, std::string description = "", double speed = -1., std::unique_ptr *lower_layer_edge_grid = nullptr); - std::string extrude_loop(ExtrusionLoop loop, std::string description, double speed = -1., std::unique_ptr *lower_layer_edge_grid = nullptr); + std::string extrude_entity(const ExtrusionEntity &entity, std::string description = "", double speed = -1.); + std::string extrude_loop(ExtrusionLoop loop, std::string description, double speed = -1.); std::string extrude_multi_path(ExtrusionMultiPath multipath, std::string description = "", double speed = -1.); std::string extrude_path(ExtrusionPath path, std::string description = "", double speed = -1.); @@ -393,7 +393,7 @@ private: // For sequential print, the instance of the object to be printing has to be defined. const size_t single_object_instance_idx); - std::string extrude_perimeters(const Print &print, const std::vector &by_region, std::unique_ptr &lower_layer_edge_grid); + std::string extrude_perimeters(const Print &print, const std::vector &by_region); std::string extrude_infill(const Print &print, const std::vector &by_region, bool ironing); std::string extrude_support(const ExtrusionEntityCollection &support_fills); diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 97a64a64ef..bfb88d2f3c 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1,987 +1,1384 @@ #include "SeamPlacer.hpp" +#include "tbb/parallel_for.h" +#include "tbb/blocked_range.h" +#include "tbb/parallel_reduce.h" +#include +#include +#include +#include + +#include "libslic3r/AABBTreeLines.hpp" +#include "libslic3r/KDTreeIndirect.hpp" #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/Print.hpp" #include "libslic3r/BoundingBox.hpp" -#include "libslic3r/EdgeGrid.hpp" #include "libslic3r/ClipperUtils.hpp" -#include "libslic3r/SVG.hpp" #include "libslic3r/Layer.hpp" +#include "libslic3r/Geometry/Curves.hpp" +#include "libslic3r/ShortEdgeCollapse.hpp" +#include "libslic3r/TriangleSetSampling.hpp" + +#include "libslic3r/Utils.hpp" + +//#define DEBUG_FILES + +#ifdef DEBUG_FILES +#include +#include +#endif + namespace Slic3r { -// This penalty is added to all points inside custom blockers (subtracted from pts inside enforcers). -static constexpr float ENFORCER_BLOCKER_PENALTY = 100; +namespace SeamPlacerImpl { -// In case there are custom enforcers/blockers, the loop polygon shall always have -// sides smaller than this (so it isn't limited to original resolution). -static constexpr float MINIMAL_POLYGON_SIDE = scaled(0.2f); - -// When spAligned is active and there is a support enforcer, -// add this penalty to its center. -static constexpr float ENFORCER_CENTER_PENALTY = -10.f; - - - - -static float extrudate_overlap_penalty(float nozzle_r, float weight_zero, float overlap_distance) +// ************ FOR BACKPORT COMPATIBILITY ONLY *************** +// Color mapping of a value into RGB false colors. +inline Vec3f value_to_rgbf(float minimum, float maximum, float value) { - // The extrudate is not fully supported by the lower layer. Fit a polynomial penalty curve. - // Solved by sympy package: -/* -from sympy import * -(x,a,b,c,d,r,z)=symbols('x a b c d r z') -p = a + b*x + c*x*x + d*x*x*x -p2 = p.subs(solve([p.subs(x, -r), p.diff(x).subs(x, -r), p.diff(x,x).subs(x, -r), p.subs(x, 0)-z], [a, b, c, d])) -from sympy.plotting import plot -plot(p2.subs(r,0.2).subs(z,1.), (x, -1, 3), adaptive=False, nb_of_points=400) -*/ - if (overlap_distance < - nozzle_r) { - // The extrudate is fully supported by the lower layer. This is the ideal case, therefore zero penalty. - return 0.f; - } else { - float x = overlap_distance / nozzle_r; - float x2 = x * x; - float x3 = x2 * x; - return weight_zero * (1.f + 3.f * x + 3.f * x2 + x3); - } + float ratio = 2.0f * (value - minimum) / (maximum - minimum); + float b = std::max(0.0f, (1.0f - ratio)); + float r = std::max(0.0f, (ratio - 1.0f)); + float g = 1.0f - b - r; + return Vec3f{r, g, b}; } +// Color mapping of a value into RGB false colors. +inline Vec3i value_to_rgbi(float minimum, float maximum, float value) { return (value_to_rgbf(minimum, maximum, value) * 255).cast(); } +// *************************** +template int sgn(T val) { return int(T(0) < val) - int(val < T(0)); } -// Return a value in <0, 1> of a cubic B-spline kernel centered around zero. -// The B-spline is re-scaled so it has value 1 at zero. -static inline float bspline_kernel(float x) +// base function: ((e^(((1)/(x^(2)+1)))-1)/(e-1)) +// checkout e.g. here: https://www.geogebra.org/calculator +float gauss(float value, float mean_x_coord, float mean_value, float falloff_speed) { - x = std::abs(x); - if (x < 1.f) { - return 1.f - (3.f / 2.f) * x * x + (3.f / 4.f) * x * x * x; - } - else if (x < 2.f) { - x -= 1.f; - float x2 = x * x; - float x3 = x2 * x; - return (1.f / 4.f) - (3.f / 4.f) * x + (3.f / 4.f) * x2 - (1.f / 4.f) * x3; - } - else - return 0; + float shifted = value - mean_x_coord; + float denominator = falloff_speed * shifted * shifted + 1.0f; + float exponent = 1.0f / denominator; + return mean_value * (std::exp(exponent) - 1.0f) / (std::exp(1.0f) - 1.0f); } - - -static Points::const_iterator project_point_to_polygon_and_insert(Polygon &polygon, const Point &pt, double eps) +float compute_angle_penalty(float ccw_angle) { - assert(polygon.points.size() >= 2); - if (polygon.points.size() <= 1) - if (polygon.points.size() == 1) - return polygon.points.begin(); + // This function is used: + // ((ℯ^(((1)/(x^(2)*3+1)))-1)/(ℯ-1))*1+((1)/(2+ℯ^(-x))) + // looks scary, but it is gaussian combined with sigmoid, + // so that concave points have much smaller penalty over convex ones + // https://github.com/prusa3d/PrusaSlicer/tree/master/doc/seam_placement/corner_penalty_function.png + return gauss(ccw_angle, 0.0f, 1.0f, 3.0f) + 1.0f / (2 + std::exp(-ccw_angle)); +} - Point pt_min; - double d_min = std::numeric_limits::max(); - size_t i_min = size_t(-1); +/// Coordinate frame +class Frame +{ +public: + Frame() + { + mX = Vec3f(1, 0, 0); + mY = Vec3f(0, 1, 0); + mZ = Vec3f(0, 0, 1); + } - for (size_t i = 0; i < polygon.points.size(); ++ i) { - size_t j = i + 1; - if (j == polygon.points.size()) - j = 0; - const Point &p1 = polygon.points[i]; - const Point &p2 = polygon.points[j]; - const Slic3r::Point v_seg = p2 - p1; - const Slic3r::Point v_pt = pt - p1; - const int64_t l2_seg = int64_t(v_seg(0)) * int64_t(v_seg(0)) + int64_t(v_seg(1)) * int64_t(v_seg(1)); - int64_t t_pt = int64_t(v_seg(0)) * int64_t(v_pt(0)) + int64_t(v_seg(1)) * int64_t(v_pt(1)); - if (t_pt < 0) { - // Closest to p1. - double dabs = sqrt(int64_t(v_pt(0)) * int64_t(v_pt(0)) + int64_t(v_pt(1)) * int64_t(v_pt(1))); - if (dabs < d_min) { - d_min = dabs; - i_min = i; - pt_min = p1; - } - } - else if (t_pt > l2_seg) { - // Closest to p2. Then p2 is the starting point of another segment, which shall be discovered in the next step. - continue; - } else { - // Closest to the segment. - assert(t_pt >= 0 && t_pt <= l2_seg); - int64_t d_seg = int64_t(v_seg(1)) * int64_t(v_pt(0)) - int64_t(v_seg(0)) * int64_t(v_pt(1)); - double d = double(d_seg) / sqrt(double(l2_seg)); - double dabs = std::abs(d); - if (dabs < d_min) { - d_min = dabs; - i_min = i; - // Evaluate the foot point. - pt_min = p1; - double linv = double(d_seg) / double(l2_seg); - pt_min(0) = pt(0) - coord_t(floor(double(v_seg(1)) * linv + 0.5)); - pt_min(1) = pt(1) + coord_t(floor(double(v_seg(0)) * linv + 0.5)); - assert(Line(p1, p2).distance_to(pt_min) < scale_(1e-5)); - } + Frame(const Vec3f &x, const Vec3f &y, const Vec3f &z) : mX(x), mY(y), mZ(z) {} + + void set_from_z(const Vec3f &z) + { + mZ = z.normalized(); + Vec3f tmpZ = mZ; + Vec3f tmpX = (std::abs(tmpZ.x()) > 0.99f) ? Vec3f(0, 1, 0) : Vec3f(1, 0, 0); + mY = (tmpZ.cross(tmpX)).normalized(); + mX = mY.cross(tmpZ); + } + + Vec3f to_world(const Vec3f &a) const { return a.x() * mX + a.y() * mY + a.z() * mZ; } + + Vec3f to_local(const Vec3f &a) const { return Vec3f(mX.dot(a), mY.dot(a), mZ.dot(a)); } + + const Vec3f &binormal() const { return mX; } + + const Vec3f &tangent() const { return mY; } + + const Vec3f &normal() const { return mZ; } + +private: + Vec3f mX, mY, mZ; +}; + +Vec3f sample_sphere_uniform(const Vec2f &samples) +{ + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, 1.0f - 2.0f * samples.y()}; +} + +Vec3f sample_hemisphere_uniform(const Vec2f &samples) +{ + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, abs(1.0f - 2.0f * samples.y())}; +} + +Vec3f sample_power_cosine_hemisphere(const Vec2f &samples, float power) +{ + float term1 = 2.f * float(PI) * samples.x(); + float term2 = pow(samples.y(), 1.f / (power + 1.f)); + float term3 = sqrt(1.f - term2 * term2); + + return Vec3f(cos(term1) * term3, sin(term1) * term3, term2); +} + +std::vector raycast_visibility(const AABBTreeIndirect::Tree<3, float> &raycasting_tree, + const indexed_triangle_set & triangles, + const TriangleSetSamples & samples, + size_t negative_volumes_start_index) +{ + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; + + // prepare uniform samples of a hemisphere + float step_size = 1.0f / SeamPlacer::sqr_rays_per_sample_point; + std::vector precomputed_sample_directions(SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + for (size_t x_idx = 0; x_idx < SeamPlacer::sqr_rays_per_sample_point; ++x_idx) { + float sample_x = x_idx * step_size + step_size / 2.0; + for (size_t y_idx = 0; y_idx < SeamPlacer::sqr_rays_per_sample_point; ++y_idx) { + size_t dir_index = x_idx * SeamPlacer::sqr_rays_per_sample_point + y_idx; + float sample_y = y_idx * step_size + step_size / 2.0; + precomputed_sample_directions[dir_index] = sample_hemisphere_uniform({sample_x, sample_y}); } } - assert(i_min != size_t(-1)); - if ((pt_min - polygon.points[i_min]).cast().norm() > eps) { - // Insert a new point on the segment i_min, i_min+1. - return polygon.points.insert(polygon.points.begin() + (i_min + 1), pt_min); - } - return polygon.points.begin() + i_min; -} + bool model_contains_negative_parts = negative_volumes_start_index < triangles.indices.size(); + std::vector result(samples.positions.size()); + tbb::parallel_for(tbb::blocked_range(0, result.size()), [&triangles, &precomputed_sample_directions, model_contains_negative_parts, negative_volumes_start_index, + &raycasting_tree, &result, &samples](tbb::blocked_range r) { + // Maintaining hits memory outside of the loop, so it does not have to be reallocated for each query. + std::vector hits; + for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { + result[s_idx] = 1.0f; + constexpr float decrease_step = 1.0f / (SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + const Vec3f ¢er = samples.positions[s_idx]; + const Vec3f &normal = samples.normals[s_idx]; + // apply the local direction via Frame struct - the local_dir is with respect to +Z being forward + Frame f; + f.set_from_z(normal); -static std::vector polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, float min_arm_length) -{ - assert(polygon.points.size() + 1 == lengths.size()); - if (min_arm_length > 0.25f * lengths.back()) - min_arm_length = 0.25f * lengths.back(); + for (const auto &dir : precomputed_sample_directions) { + Vec3f final_ray_dir = (f.to_world(dir)); + if (!model_contains_negative_parts) { + igl::Hit hitpoint; + // FIXME: This AABBTTreeIndirect query will not compile for float ray origin and + // direction. + Vec3d final_ray_dir_d = final_ray_dir.cast(); + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + bool hit = AABBTreeIndirect::intersect_ray_first_hit(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hitpoint); + if (hit && its_face_normal(triangles, hitpoint.id).dot(final_ray_dir) <= 0) { result[s_idx] -= decrease_step; } + } else { // TODO improve logic for order based boolean operations - consider order of volumes + bool casting_from_negative_volume = samples.triangle_indices[s_idx] >= negative_volumes_start_index; - // Find the initial prev / next point span. - size_t idx_prev = polygon.points.size(); - size_t idx_curr = 0; - size_t idx_next = 1; - while (idx_prev > idx_curr && lengths.back() - lengths[idx_prev] < min_arm_length) - -- idx_prev; - while (idx_next < idx_prev && lengths[idx_next] < min_arm_length) - ++ idx_next; - - std::vector angles(polygon.points.size(), 0.f); - for (; idx_curr < polygon.points.size(); ++ idx_curr) { - // Move idx_prev up until the distance between idx_prev and idx_curr is lower than min_arm_length. - if (idx_prev >= idx_curr) { - while (idx_prev < polygon.points.size() && lengths.back() - lengths[idx_prev] + lengths[idx_curr] > min_arm_length) - ++ idx_prev; - if (idx_prev == polygon.points.size()) - idx_prev = 0; - } - while (idx_prev < idx_curr && lengths[idx_curr] - lengths[idx_prev] > min_arm_length) - ++ idx_prev; - // Move idx_prev one step back. - if (idx_prev == 0) - idx_prev = polygon.points.size() - 1; - else - -- idx_prev; - // Move idx_next up until the distance between idx_curr and idx_next is greater than min_arm_length. - if (idx_curr <= idx_next) { - while (idx_next < polygon.points.size() && lengths[idx_next] - lengths[idx_curr] < min_arm_length) - ++ idx_next; - if (idx_next == polygon.points.size()) - idx_next = 0; - } - while (idx_next < idx_curr && lengths.back() - lengths[idx_curr] + lengths[idx_next] < min_arm_length) - ++ idx_next; - // Calculate angle between idx_prev, idx_curr, idx_next. - const Point &p0 = polygon.points[idx_prev]; - const Point &p1 = polygon.points[idx_curr]; - const Point &p2 = polygon.points[idx_next]; - const Point v1 = p1 - p0; - const Point v2 = p2 - p1; - int64_t dot = int64_t(v1(0))*int64_t(v2(0)) + int64_t(v1(1))*int64_t(v2(1)); - int64_t cross = int64_t(v1(0))*int64_t(v2(1)) - int64_t(v1(1))*int64_t(v2(0)); - float angle = float(atan2(double(cross), double(dot))); - angles[idx_curr] = angle; - } - - return angles; -} - - - -void SeamPlacer::init(const Print& print) -{ - m_enforcers.clear(); - m_blockers.clear(); - m_seam_history.clear(); - m_po_list.clear(); - - const std::vector& nozzle_dmrs = print.config().nozzle_diameter.values; - float max_nozzle_dmr = *std::max_element(nozzle_dmrs.begin(), nozzle_dmrs.end()); - - - std::vector temp_enf; - std::vector temp_blk; - std::vector temp_polygons; - - for (const PrintObject* po : print.objects()) { - - auto merge_and_offset = [po, &temp_polygons, max_nozzle_dmr](EnforcerBlockerType type, std::vector& out) { - // Offset the triangles out slightly. - auto offset_out = [](Polygon& input, float offset) -> ExPolygons { - ClipperLib::Paths out(1); - std::vector deltas(input.points.size(), offset); - input.make_counter_clockwise(); - out.front() = mittered_offset_path_scaled(input.points, deltas, 3.); - return ClipperPaths_to_Slic3rExPolygons(out, true); // perform union - }; - - - temp_polygons.clear(); - po->project_and_append_custom_facets(true, type, temp_polygons); - out.clear(); - out.reserve(temp_polygons.size()); - float offset = scale_(max_nozzle_dmr + po->config().elefant_foot_compensation); - for (Polygons &src : temp_polygons) { - out.emplace_back(ExPolygons()); - for (Polygon& plg : src) { - ExPolygons offset_explg = offset_out(plg, offset); - if (! offset_explg.empty()) - out.back().emplace_back(std::move(offset_explg.front())); - } - - offset = scale_(max_nozzle_dmr); - } - }; - merge_and_offset(EnforcerBlockerType::BLOCKER, temp_blk); - merge_and_offset(EnforcerBlockerType::ENFORCER, temp_enf); - - // Remember this PrintObject and initialize a store of enforcers and blockers for it. - m_po_list.push_back(po); - size_t po_idx = m_po_list.size() - 1; - m_enforcers.emplace_back(std::vector(temp_enf.size())); - m_blockers.emplace_back(std::vector(temp_blk.size())); - - // A helper class to store data to build the AABB tree from. - class CustomTriangleRef { - public: - CustomTriangleRef(size_t idx, - Point&& centroid, - BoundingBox&& bb) - : m_idx{idx}, m_centroid{centroid}, - m_bbox{AlignedBoxType(bb.min, bb.max)} - {} - size_t idx() const { return m_idx; } - const Point& centroid() const { return m_centroid; } - const TreeType::BoundingBox& bbox() const { return m_bbox; } - - private: - size_t m_idx; - Point m_centroid; - AlignedBoxType m_bbox; - }; - - // A lambda to extract the ExPolygons and save them into the member AABB tree. - // Will be called for enforcers and blockers separately. - auto add_custom = [](std::vector& src, std::vector& dest) { - // Go layer by layer, and append all the ExPolygons into the AABB tree. - size_t layer_idx = 0; - for (ExPolygons& expolys_on_layer : src) { - CustomTrianglesPerLayer& layer_data = dest[layer_idx]; - std::vector triangles_data; - layer_data.polys.reserve(expolys_on_layer.size()); - triangles_data.reserve(expolys_on_layer.size()); - - for (ExPolygon& expoly : expolys_on_layer) { - if (expoly.empty()) - continue; - layer_data.polys.emplace_back(std::move(expoly)); - triangles_data.emplace_back(layer_data.polys.size() - 1, - layer_data.polys.back().centroid(), - layer_data.polys.back().bounding_box()); - } - // All polygons are saved, build the AABB tree for them. - layer_data.tree.build(std::move(triangles_data)); - ++layer_idx; - } - }; - - add_custom(temp_enf, m_enforcers.at(po_idx)); - add_custom(temp_blk, m_blockers.at(po_idx)); - } -} - - - -void SeamPlacer::plan_perimeters(const std::vector perimeters, - const Layer& layer, SeamPosition seam_position, - Point last_pos, coordf_t nozzle_dmr, const PrintObject* po, - const EdgeGrid::Grid* lower_layer_edge_grid) -{ - // When printing the perimeters, we want the seams on external and internal perimeters to match. - // We have a list of perimeters in the order to be printed. Each internal perimeter must inherit - // the seam from the previous external perimeter. - - m_plan.clear(); - m_plan_idx = 0; - - if (perimeters.empty() || ! po) - return; - - m_plan.resize(perimeters.size()); - - for (int i = 0; i < int(perimeters.size()); ++i) { - if (perimeters[i]->role() == erExternalPerimeter && perimeters[i]->is_loop()) { - last_pos = this->calculate_seam( - layer, seam_position, *dynamic_cast(perimeters[i]), nozzle_dmr, - po, lower_layer_edge_grid, last_pos); - m_plan[i].external = true; - m_plan[i].seam_position = seam_position; - m_plan[i].layer = &layer; - m_plan[i].po = po; - } - m_plan[i].pt = last_pos; - } -} - - -void SeamPlacer::place_seam(ExtrusionLoop& loop, const Point& last_pos, bool external_first, double nozzle_diameter, - const EdgeGrid::Grid* lower_layer_edge_grid) -{ - const double seam_offset = nozzle_diameter; - - Point seam = last_pos; - if (! m_plan.empty() && m_plan_idx < m_plan.size()) { - if (m_plan[m_plan_idx].external) { - seam = m_plan[m_plan_idx].pt; - // One more heuristics: if the seam is too far from current nozzle position, - // try to place it again. This can happen in cases where the external perimeter - // does not belong to the preceding ones and they are ordered so they end up - // far from each other. - if ((seam.cast() - last_pos.cast()).squaredNorm() > std::pow(scale_(5.*nozzle_diameter), 2.)) - seam = this->calculate_seam(*m_plan[m_plan_idx].layer, m_plan[m_plan_idx].seam_position, loop, nozzle_diameter, - m_plan[m_plan_idx].po, lower_layer_edge_grid, last_pos); - } - else if (! external_first) { - // Internal perimeter printed before the external. - // First get list of external seams. - std::vector ext_seams; - for (size_t i = 0; i < m_plan.size(); ++i) { - if (m_plan[i].external) - ext_seams.emplace_back(i); - } - - if (! ext_seams.empty()) { - // First find the line segment closest to an external seam: - int path_idx = 0; - int line_idx = 0; - size_t ext_seam_idx = size_t(-1); - double min_dist_sqr = std::numeric_limits::max(); - std::vector lines_vect; - for (int i = 0; i < int(loop.paths.size()); ++i) { - lines_vect.emplace_back(loop.paths[i].polyline.lines()); - const Lines& lines = lines_vect.back(); - for (int j = 0; j < int(lines.size()); ++j) { - for (size_t k : ext_seams) { - double d_sqr = lines[j].distance_to_squared(m_plan[k].pt); - if (d_sqr < min_dist_sqr) { - path_idx = i; - line_idx = j; - ext_seam_idx = k; - min_dist_sqr = d_sqr; + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + if (casting_from_negative_volume) { // if casting from negative volume face, invert direction, change start pos + final_ray_dir = -1.0 * final_ray_dir; + ray_origin_d = (center - normal * 0.01f).cast(); + } + Vec3d final_ray_dir_d = final_ray_dir.cast(); + bool some_hit = AABBTreeIndirect::intersect_ray_all_hits(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hits); + if (some_hit) { + int counter = 0; + // NOTE: iterating in reverse, from the last hit for one simple reason: We know the state of the ray at that point; + // It cannot be inside model, and it cannot be inside negative volume + for (int hit_index = int(hits.size()) - 1; hit_index >= 0; --hit_index) { + Vec3f face_normal = its_face_normal(triangles, hits[hit_index].id); + if (hits[hit_index].id >= int(negative_volumes_start_index)) { // negative volume hit + counter -= sgn(face_normal.dot(final_ray_dir)); // if volume face aligns with ray dir, we are leaving negative space + // which in reverse hit analysis means, that we are entering negative space :) and vice versa + } else { + counter += sgn(face_normal.dot(final_ray_dir)); } } + if (counter == 0) { result[s_idx] -= decrease_step; } } } - - // Only accept seam that is reasonably close. - double limit_dist_sqr = std::pow(double(scale_((ext_seam_idx - m_plan_idx) * nozzle_diameter * 2.)), 2.); - if (ext_seam_idx != size_t(-1) && min_dist_sqr < limit_dist_sqr) { - // Now find a projection of the external seam - const Lines& lines = lines_vect[path_idx]; - Point closest = m_plan[ext_seam_idx].pt.projection_onto(lines[line_idx]); - double dist = (closest.cast() - lines[line_idx].b.cast()).norm(); - - // And walk along the perimeter until we make enough space for - // seams of all perimeters beforethe external one. - double offset = (ext_seam_idx - m_plan_idx) * scale_(seam_offset); - double last_offset = offset; - offset -= dist; - const Point* a = &closest; - const Point* b = &lines[line_idx].b; - while (++line_idx < int(lines.size()) && offset > 0.) { - last_offset = offset; - offset -= lines[line_idx].length(); - a = &lines[line_idx].a; - b = &lines[line_idx].b; - } - - // We have walked far enough, too far maybe. Interpolate on the - // last segment to find the end precisely. - offset = std::min(0., offset); // In case that offset is still positive (we may have "wrapped around") - double ratio = last_offset / (last_offset - offset); - seam = (a->cast() + ((b->cast() - a->cast()) * ratio)).cast(); - } } } - else { - // We should have a candidate ready from before. If not, use last_pos. - if (m_plan_idx > 0 && m_plan[m_plan_idx - 1].precalculated) - seam = m_plan[m_plan_idx - 1].pt; - } - } + }); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; - // Split the loop at the point with a minium penalty. - if (!loop.split_at_vertex(seam)) - // The point is not in the original loop. Insert it. - loop.split_at(seam, true); - - if (external_first && m_plan_idx+1 1) { - const ExtrusionPath& last = loop.paths.back(); - auto it = last.polyline.points.crbegin() + 1; - for (; it != last.polyline.points.crend(); ++it) { - running_sqr += (it->cast() - (it - 1)->cast()).squaredNorm(); - if (running_sqr > dist_sqr) - break; - running_sqr_last = running_sqr; - } - if (running_sqr <= dist_sqr) - it = last.polyline.points.crend() - 1; - // Now interpolate. - double ratio = (std::sqrt(dist_sqr) - std::sqrt(running_sqr_last)) / (std::sqrt(running_sqr) - std::sqrt(running_sqr_last)); - m_plan[m_plan_idx + 1].pt = ((it - 1)->cast() + (it->cast() - (it - 1)->cast()) * std::min(ratio, 1.)).cast(); - m_plan[m_plan_idx + 1].precalculated = true; - } - } - - ++m_plan_idx; + return result; } -constexpr float CLOSE_TO_LAST_SEAM_THRESHOLD = 5; - -// Returns a seam for an EXTERNAL perimeter. -Point SeamPlacer::calculate_seam(const Layer& layer, const SeamPosition seam_position, - const ExtrusionLoop& loop, coordf_t nozzle_dmr, const PrintObject* po, - const EdgeGrid::Grid* lower_layer_edge_grid, Point last_pos) +std::vector calculate_polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, float min_arm_length) { - assert(loop.role() == erExternalPerimeter); - Polygon polygon = loop.polygon(); - bool was_clockwise = polygon.make_counter_clockwise(); - BoundingBox polygon_bb = polygon.bounding_box(); - const coord_t nozzle_r = coord_t(scale_(0.5 * nozzle_dmr) + 0.5); + std::vector result(polygon.size()); - size_t po_idx = std::find(m_po_list.begin(), m_po_list.end(), po) - m_po_list.begin(); + if (polygon.size() == 1) { result[0] = 0.0f; } - // Find current layer in respective PrintObject. Cache the result so the - // lookup is only done once per layer, not for each loop. - const Layer* layer_po = nullptr; - if (po == m_last_po && layer.print_z == m_last_print_z) - layer_po = m_last_layer_po; - else { - layer_po = po->get_layer_at_printz(layer.print_z); - m_last_po = po; - m_last_print_z = layer.print_z; - m_last_layer_po = layer_po; - } - if (! layer_po) - return last_pos; + size_t idx_prev = 0; + size_t idx_curr = 0; + size_t idx_next = 0; - // Index of this layer in the respective PrintObject. - size_t layer_idx = layer_po->id() - po->layers().front()->id(); // raft layers + float distance_to_prev = 0; + float distance_to_next = 0; - assert(layer_idx < po->layer_count()); - - if (this->is_custom_seam_on_layer(layer_idx, po_idx)) { - // Seam enf/blockers can begin and end in between the original vertices. - // Let add extra points in between and update the leghths. - polygon.densify(MINIMAL_POLYGON_SIDE); + // push idx_prev far enough back as initialization + while (distance_to_prev < min_arm_length) { + idx_prev = Slic3r::prev_idx_modulo(idx_prev, polygon.size()); + distance_to_prev += lengths[idx_prev]; } - if (seam_position != spRandom) { - // Retrieve the last start position for this object. - float last_pos_weight = 1.f; - - if (seam_position == spAligned) { - // Seam is aligned to the seam at the preceding layer. - if (po != nullptr) { - std::optional pos = m_seam_history.get_last_seam(m_po_list[po_idx], layer_idx, polygon_bb); - if (pos.has_value()) { - last_pos = *pos; - last_pos_weight = is_custom_enforcer_on_layer(layer_idx, po_idx) ? 0.f : 1.f; - } - } - } - else if (seam_position == spRear) { - // Object is centered around (0,0) in its current coordinate system. - last_pos.x() = 0; - last_pos.y() = coord_t(3. * po->bounding_box().radius()); - last_pos_weight = 5.f; - } if (seam_position == spNearest) { - // last_pos already contains current nozzle position - - // BBS: if the project point of current nozzle position is close to the last seam of this object - // then we think the current nozzle position is almost same with last same. - // So that last seam can be treat as one factor even in cost based strategy to make seam more posible to be aligned - if (po != nullptr) { - std::optional pos = m_seam_history.get_last_seam(m_po_list[po_idx], layer_idx, polygon_bb); - if (pos.has_value()) { - Point project_point = polygon.point_projection(last_pos); - if ((pos->cast() - project_point.cast()).squaredNorm() < std::pow(scale_(CLOSE_TO_LAST_SEAM_THRESHOLD), 2.)) - last_pos = *pos; - } - } + for (size_t _i = 0; _i < polygon.size(); ++_i) { + // pull idx_prev to current as much as possible, while respecting the min_arm_length + while (distance_to_prev - lengths[idx_prev] > min_arm_length) { + distance_to_prev -= lengths[idx_prev]; + idx_prev = Slic3r::next_idx_modulo(idx_prev, polygon.size()); } - // Insert a projection of last_pos into the polygon. - size_t last_pos_proj_idx; - { - auto it = project_point_to_polygon_and_insert(polygon, last_pos, 0.1 * nozzle_r); - last_pos_proj_idx = it - polygon.points.begin(); + // push idx_next forward as far as needed + while (distance_to_next < min_arm_length) { + distance_to_next += lengths[idx_next]; + idx_next = Slic3r::next_idx_modulo(idx_next, polygon.size()); } - // Parametrize the polygon by its length. - std::vector lengths = polygon.parameter_by_length(); + // Calculate angle between idx_prev, idx_curr, idx_next. + const Point &p0 = polygon.points[idx_prev]; + const Point &p1 = polygon.points[idx_curr]; + const Point &p2 = polygon.points[idx_next]; + result[idx_curr] = float(angle(p1 - p0, p2 - p1)); - // For each polygon point, store a penalty. - // First calculate the angles, store them as penalties. The angles are caluculated over a minimum arm length of nozzle_r. - std::vector penalties = polygon_angles_at_vertices(polygon, lengths, float(nozzle_r)); - // No penalty for reflex points, slight penalty for convex points, high penalty for flat surfaces. - const float penaltyConvexVertex = 1.f; - const float penaltyFlatSurface = 5.f; - const float penaltyOverhangHalf = 10.f; - // Penalty for visible seams. - for (size_t i = 0; i < polygon.points.size(); ++ i) { - float ccwAngle = penalties[i]; - if (was_clockwise) - ccwAngle = - ccwAngle; - float penalty = 0; - if (ccwAngle <- float(0.6 * PI)) - // Sharp reflex vertex. We love that, it hides the seam perfectly. - penalty = 0.f; - else if (ccwAngle > float(0.6 * PI)) - // Seams on sharp convex vertices are more visible than on reflex vertices. - penalty = penaltyConvexVertex; - else if (ccwAngle < 0.f) { - // Interpolate penalty between maximum and zero. - penalty = penaltyFlatSurface * bspline_kernel(ccwAngle * float(PI * 2. / 3.)); - } else { - assert(ccwAngle >= 0.f); - // Interpolate penalty between maximum and the penalty for a convex vertex. - penalty = penaltyConvexVertex + (penaltyFlatSurface - penaltyConvexVertex) * bspline_kernel(ccwAngle * float(PI * 2. / 3.)); - } - // Give a negative penalty for points close to the last point or the prefered seam location. - float dist_to_last_pos_proj = (i < last_pos_proj_idx) ? - std::min(lengths[last_pos_proj_idx] - lengths[i], lengths.back() - lengths[last_pos_proj_idx] + lengths[i]) : - std::min(lengths[i] - lengths[last_pos_proj_idx], lengths.back() - lengths[i] + lengths[last_pos_proj_idx]); - float dist_max = 0.1f * lengths.back(); // 5.f * nozzle_dmr - penalty -= last_pos_weight * bspline_kernel(dist_to_last_pos_proj / dist_max); - penalties[i] = std::max(0.f, penalty); - } + // increase idx_curr by one + float curr_distance = lengths[idx_curr]; + idx_curr++; + distance_to_prev += curr_distance; + distance_to_next -= curr_distance; + } - // Penalty for overhangs. - if (lower_layer_edge_grid) { - // Use the edge grid distance field structure over the lower layer to calculate overhangs. - coord_t nozzle_r = coord_t(std::floor(scale_(0.5 * nozzle_dmr) + 0.5)); - coord_t search_r = coord_t(std::floor(scale_(0.8 * nozzle_dmr) + 0.5)); - for (size_t i = 0; i < polygon.points.size(); ++ i) { - const Point &p = polygon.points[i]; - coordf_t dist; - // Signed distance is positive outside the object, negative inside the object. - // The point is considered at an overhang, if it is more than nozzle radius - // outside of the lower layer contour. - [[maybe_unused]] bool found = lower_layer_edge_grid->signed_distance(p, search_r, dist); - // If the approximate Signed Distance Field was initialized over lower_layer_edge_grid, - // then the signed distnace shall always be known. - assert(found); - penalties[i] += extrudate_overlap_penalty(float(nozzle_r), penaltyOverhangHalf, float(dist)); - } - } - - // Custom seam. Huge (negative) constant penalty is applied inside - // blockers (enforcers) to rule out points that should not win. - this->apply_custom_seam(polygon, po_idx, penalties, lengths, layer_idx, seam_position); - - // Find a point with a minimum penalty. - size_t idx_min = std::min_element(penalties.begin(), penalties.end()) - penalties.begin(); - - if (seam_position != spAligned || ! is_custom_enforcer_on_layer(layer_idx, po_idx)) { - // Very likely the weight of idx_min is very close to the weight of last_pos_proj_idx. - // In that case use last_pos_proj_idx instead. - float penalty_aligned = penalties[last_pos_proj_idx]; - float penalty_min = penalties[idx_min]; - float penalty_diff_abs = std::abs(penalty_min - penalty_aligned); - float penalty_max = std::max(std::abs(penalty_min), std::abs(penalty_aligned)); - float penalty_diff_rel = (penalty_max == 0.f) ? 0.f : penalty_diff_abs / penalty_max; - // printf("Align seams, penalty aligned: %f, min: %f, diff abs: %f, diff rel: %f\n", penalty_aligned, penalty_min, penalty_diff_abs, penalty_diff_rel); - if (std::abs(penalty_diff_rel) < 0.05) { - // Penalty of the aligned point is very close to the minimum penalty. - // Align the seams as accurately as possible. - idx_min = last_pos_proj_idx; - } - } - - if (seam_position == spAligned || seam_position == spNearest) - m_seam_history.add_seam(po, polygon.points[idx_min], polygon_bb); - - - // Export the contour into a SVG file. - #if 0 - { - static int iRun = 0; - SVG svg(debug_out_path("GCode_extrude_loop-%d.svg", iRun ++)); - if (m_layer->lower_layer != NULL) - svg.draw(m_layer->lower_layer->slices); - for (size_t i = 0; i < loop.paths.size(); ++ i) - svg.draw(loop.paths[i].as_polyline(), "red"); - Polylines polylines; - for (size_t i = 0; i < loop.paths.size(); ++ i) - polylines.push_back(loop.paths[i].as_polyline()); - Slic3r::Polygons polygons; - coordf_t nozzle_dmr = EXTRUDER_CONFIG(nozzle_diameter); - coord_t delta = scale_(0.5*nozzle_dmr); - Slic3r::offset(polylines, &polygons, delta); -// for (size_t i = 0; i < polygons.size(); ++ i) svg.draw((Polyline)polygons[i], "blue"); - svg.draw(last_pos, "green", 3); - svg.draw(polygon.points[idx_min], "yellow", 3); - svg.Close(); - } - #endif - return polygon.points[idx_min]; - - } else - return this->get_random_seam(layer_idx, polygon, po_idx); + return result; } - -Point SeamPlacer::get_random_seam(size_t layer_idx, const Polygon& polygon, size_t po_idx, - bool* saw_custom) const +struct CoordinateFunctor { - // Parametrize the polygon by its length. - const std::vector lengths = polygon.parameter_by_length(); + const std::vector *coordinates; + CoordinateFunctor(const std::vector *coords) : coordinates(coords) {} + CoordinateFunctor() : coordinates(nullptr) {} - // Which of the points are inside enforcers/blockers? - std::vector enforcers_idxs; - std::vector blockers_idxs; - this->get_enforcers_and_blockers(layer_idx, polygon, po_idx, enforcers_idxs, blockers_idxs); + const float &operator()(size_t idx, size_t dim) const { return coordinates->operator[](idx)[dim]; } +}; - bool has_enforcers = ! enforcers_idxs.empty(); - bool has_blockers = ! blockers_idxs.empty(); - if (saw_custom) - *saw_custom = has_enforcers || has_blockers; +// structure to store global information about the model - occlusion hits, enforcers, blockers +struct GlobalModelInfo +{ + TriangleSetSamples mesh_samples; + std::vector mesh_samples_visibility; + CoordinateFunctor mesh_samples_coordinate_functor; + KDTreeIndirect<3, float, CoordinateFunctor> mesh_samples_tree{CoordinateFunctor{}}; + float mesh_samples_radius; - assert(std::is_sorted(enforcers_idxs.begin(), enforcers_idxs.end())); - assert(std::is_sorted(blockers_idxs.begin(), blockers_idxs.end())); - std::vector edges; + indexed_triangle_set enforcers; + indexed_triangle_set blockers; + AABBTreeIndirect::Tree<3, float> enforcers_tree; + AABBTreeIndirect::Tree<3, float> blockers_tree; - // Lambda to calculate lengths of all edges of interest. Last parameter - // decides whether to measure edges inside or outside idxs. - // Negative number = not an edge of interest. - auto get_valid_length = [&lengths](const std::vector& idxs, - std::vector& edges, - bool measure_inside_edges) -> float + bool is_enforced(const Vec3f &position, float radius) const { - // First mark edges we are interested in by assigning a positive number. - edges.assign(lengths.size()-1, measure_inside_edges ? -1.f : 1.f); - for (size_t i=0; i the edge between them is the enforcer/blocker. - bool inside_edge = ((i != idxs.size()-1 && idxs[i+1] == this_pt_idx + 1) - || (i == idxs.size()-1 && idxs.back() == lengths.size()-2 && idxs[0] == 0)); - if (inside_edge) - edges[this_pt_idx] = measure_inside_edges ? 1.f : -1.f; + if (enforcers.empty()) { return false; } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(enforcers.vertices, enforcers.indices, enforcers_tree, position, radius_sqr); + } + + bool is_blocked(const Vec3f &position, float radius) const + { + if (blockers.empty()) { return false; } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(blockers.vertices, blockers.indices, blockers_tree, position, radius_sqr); + } + + float calculate_point_visibility(const Vec3f &position) const + { + std::vector points = find_nearby_points(mesh_samples_tree, position, mesh_samples_radius); + if (points.empty()) { return 1.0f; } + + auto compute_dist_to_plane = [](const Vec3f &position, const Vec3f &plane_origin, const Vec3f &plane_normal) { + Vec3f orig_to_point = position - plane_origin; + return std::abs(orig_to_point.dot(plane_normal)); + }; + + float total_weight = 0; + float total_visibility = 0; + for (size_t i = 0; i < points.size(); ++i) { + size_t sample_idx = points[i]; + + Vec3f sample_point = this->mesh_samples.positions[sample_idx]; + Vec3f sample_normal = this->mesh_samples.normals[sample_idx]; + + float weight = mesh_samples_radius - compute_dist_to_plane(position, sample_point, sample_normal); + weight += (mesh_samples_radius - (position - sample_point).norm()); + total_visibility += weight * mesh_samples_visibility[sample_idx]; + total_weight += weight; } - // Now measure them. - float running_total = 0.f; - for (size_t i=0; i 0.f) { - edges[i] = lengths[i+1] - lengths[i]; - running_total += edges[i]; + + return total_visibility / total_weight; + } + +#ifdef DEBUG_FILES + void debug_export(const indexed_triangle_set &obj_mesh) const + { + indexed_triangle_set divided_mesh = obj_mesh; + Slic3r::CNumericLocalesSetter locales_setter; + + { + auto filename = debug_out_path("visiblity.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } + + for (size_t i = 0; i < divided_mesh.vertices.size(); ++i) { + float visibility = calculate_point_visibility(divided_mesh.vertices[i]); + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", divided_mesh.vertices[i](0), divided_mesh.vertices[i](1), divided_mesh.vertices[i](2), color(0), color(1), color(2)); + } + for (size_t i = 0; i < divided_mesh.indices.size(); ++i) + fprintf(fp, "f %d %d %d\n", divided_mesh.indices[i][0] + 1, divided_mesh.indices[i][1] + 1, divided_mesh.indices[i][2] + 1); + fclose(fp); + } + + { + auto filename = debug_out_path("visiblity_samples.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } + + for (size_t i = 0; i < mesh_samples.positions.size(); ++i) { + float visibility = mesh_samples_visibility[i]; + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", mesh_samples.positions[i](0), mesh_samples.positions[i](1), mesh_samples.positions[i](2), color(0), color(1), color(2)); + } + fclose(fp); + } + } +#endif +}; + +// Extract perimeter polygons of the given layer +Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition configured_seam_preference, std::vector &corresponding_regions_out) +{ + Polygons polygons; + for (const LayerRegion *layer_region : layer->regions()) { + for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) { + if (ex_entity->is_collection()) { // collection of inner, outer, and overhang perimeters + for (const ExtrusionEntity *perimeter : static_cast(ex_entity)->entities) { + ExtrusionRole role = perimeter->role(); + if (perimeter->is_loop()) { + for (const ExtrusionPath &path : static_cast(perimeter)->paths) { + if (path.role() == ExtrusionRole::erExternalPerimeter) { role = ExtrusionRole::erExternalPerimeter; } + } + } + + if (role == ExtrusionRole::erExternalPerimeter || + (is_perimeter(role) && configured_seam_preference == spRandom)) { // for random seam alignment, extract all perimeters + Points p; + perimeter->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } + } + if (polygons.empty()) { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } + } else { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); } } - return running_total; + } + + if (polygons.empty()) { // If there are no perimeter polygons for whatever reason (disabled perimeters .. ) insert dummy point + // it is easier than checking everywhere if the layer is not emtpy, no seam will be placed to this layer anyway + polygons.emplace_back(std::vector{Point{0, 0}}); + corresponding_regions_out.push_back(nullptr); + } + + return polygons; +} + +// Insert SeamCandidates created from perimeter polygons in to the result vector. +// Compute its type (Enfrocer,Blocker), angle, and position +// each SeamCandidate also contains pointer to shared Perimeter structure representing the polygon +// if Custom Seam modifiers are present, oversamples the polygon if necessary to better fit user intentions +void process_perimeter_polygon( + const Polygon &orig_polygon, float z_coord, const LayerRegion *region, const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) +{ + if (orig_polygon.size() == 0) { return; } + Polygon polygon = orig_polygon; + bool was_clockwise = polygon.make_counter_clockwise(); + + std::vector lengths{}; + for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); } + lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); + std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, SeamPlacer::polygon_local_angles_arm_distance); + + result.perimeters.push_back({}); + Perimeter &perimeter = result.perimeters.back(); + + std::queue orig_polygon_points{}; + for (size_t index = 0; index < polygon.size(); ++index) { + Vec2f unscaled_p = unscale(polygon[index]).cast(); + orig_polygon_points.emplace(unscaled_p.x(), unscaled_p.y(), z_coord); + } + Vec3f first = orig_polygon_points.front(); + std::queue oversampled_points{}; + size_t orig_angle_index = 0; + perimeter.start_index = result.points.size(); + perimeter.flow_width = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).width() : 0.0f; + bool some_point_enforced = false; + while (!orig_polygon_points.empty() || !oversampled_points.empty()) { + EnforcedBlockedSeamPoint type = EnforcedBlockedSeamPoint::Neutral; + Vec3f position; + float local_ccw_angle = 0; + bool orig_point = false; + if (!oversampled_points.empty()) { + position = oversampled_points.front(); + oversampled_points.pop(); + } else { + position = orig_polygon_points.front(); + orig_polygon_points.pop(); + local_ccw_angle = was_clockwise ? -polygon_angles[orig_angle_index] : polygon_angles[orig_angle_index]; + orig_angle_index++; + orig_point = true; + } + + if (global_model_info.is_enforced(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Enforced; } + + if (global_model_info.is_blocked(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Blocked; } + some_point_enforced = some_point_enforced || type == EnforcedBlockedSeamPoint::Enforced; + + if (orig_point) { + Vec3f pos_of_next = orig_polygon_points.empty() ? first : orig_polygon_points.front(); + float distance_to_next = (position - pos_of_next).norm(); + if (global_model_info.is_enforced(position, distance_to_next)) { + Vec3f vec_to_next = (pos_of_next - position).normalized(); + float step_size = SeamPlacer::enforcer_oversampling_distance; + float step = step_size; + while (step < distance_to_next) { + oversampled_points.push(position + vec_to_next * step); + step += step_size; + } + } + } + + result.points.emplace_back(position, perimeter, local_ccw_angle, type); + } + + perimeter.end_index = result.points.size(); + + if (some_point_enforced) { + // We will patches of enforced points (patch: continuous section of enforced points), choose + // the longest patch, and select the middle point or sharp point (depending on the angle) + // this point will have high priority on this perimeter + size_t perimeter_size = perimeter.end_index - perimeter.start_index; + const auto next_index = [&](size_t idx) { return perimeter.start_index + Slic3r::next_idx_modulo(idx - perimeter.start_index, perimeter_size); }; + + std::vector patches_starts_ends; + for (size_t i = perimeter.start_index; i < perimeter.end_index; ++i) { + if (result.points[i].type != EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type == EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + if (result.points[i].type == EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type != EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + } + // if patches_starts_ends are empty, it means that the whole perimeter is enforced.. don't do anything in that case + if (!patches_starts_ends.empty()) { + // if the first point in the patches is not enforced, it marks a patch end. in that case, put it to the end and start on next + // to simplify the processing + assert(patches_starts_ends.size() % 2 == 0); + bool start_on_second = false; + if (result.points[patches_starts_ends[0]].type != EnforcedBlockedSeamPoint::Enforced) { + start_on_second = true; + patches_starts_ends.push_back(patches_starts_ends[0]); + } + // now pick the longest patch + std::pair longest_patch{0, 0}; + auto patch_len = [perimeter_size](const std::pair &start_end) { + if (start_end.second < start_end.first) { + return start_end.first + (perimeter_size - start_end.second); + } else { + return start_end.second - start_end.first; + } + }; + for (size_t patch_idx = start_on_second ? 1 : 0; patch_idx < patches_starts_ends.size(); patch_idx += 2) { + std::pair current_patch{patches_starts_ends[patch_idx], patches_starts_ends[patch_idx + 1]}; + if (patch_len(longest_patch) < patch_len(current_patch)) { longest_patch = current_patch; } + } + std::vector viable_points_indices; + std::vector large_angle_points_indices; + for (size_t point_idx = longest_patch.first; point_idx != longest_patch.second; point_idx = next_index(point_idx)) { + viable_points_indices.push_back(point_idx); + if (std::abs(result.points[point_idx].local_ccw_angle) > SeamPlacer::sharp_angle_snapping_threshold) { large_angle_points_indices.push_back(point_idx); } + } + assert(viable_points_indices.size() > 0); + if (large_angle_points_indices.empty()) { + size_t central_idx = viable_points_indices[viable_points_indices.size() / 2]; + result.points[central_idx].central_enforcer = true; + } else { + size_t central_idx = large_angle_points_indices.size() / 2; + result.points[large_angle_points_indices[central_idx]].central_enforcer = true; + } + } + } +} + +// Get index of previous and next perimeter point of the layer. Because SeamCandidates of all polygons of the given layer +// are sequentially stored in the vector, each perimeter contains info about start and end index. These vales are used to +// deduce index of previous and next neigbour in the corresponding perimeter. +std::pair find_previous_and_next_perimeter_point(const std::vector &perimeter_points, size_t point_index) +{ + const SeamCandidate ¤t = perimeter_points[point_index]; + int prev = point_index - 1; // for majority of points, it is true that neighbours lie behind and in front of them in the vector + int next = point_index + 1; + + if (point_index == current.perimeter.start_index) { + // if point_index is equal to start, it means that the previous neighbour is at the end + prev = current.perimeter.end_index; + } + + if (point_index == current.perimeter.end_index - 1) { + // if point_index is equal to end, than next neighbour is at the start + next = current.perimeter.start_index; + } + + assert(prev >= 0); + assert(next >= 0); + return {size_t(prev), size_t(next)}; +} + +// Computes all global model info - transforms object, performs raycasting +void compute_global_occlusion(GlobalModelInfo &result, const PrintObject *po, std::function throw_if_canceled) +{ + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: start"; + auto obj_transform = po->trafo_centered(); + indexed_triangle_set triangle_set; + indexed_triangle_set negative_volumes_set; + // add all parts + for (const ModelVolume *model_volume : po->model_object()->volumes) { + if (model_volume->type() == ModelVolumeType::MODEL_PART || model_volume->type() == ModelVolumeType::NEGATIVE_VOLUME) { + auto model_transformation = model_volume->get_matrix(); + indexed_triangle_set model_its = model_volume->mesh().its; + its_transform(model_its, model_transformation); + if (model_volume->type() == ModelVolumeType::MODEL_PART) { + its_merge(triangle_set, model_its); + } else { + its_merge(negative_volumes_set, model_its); + } + } + } + throw_if_canceled(); + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: end"; + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: start"; + its_short_edge_collpase(triangle_set, 25000); + its_short_edge_collpase(negative_volumes_set, 25000); + + size_t negative_volumes_start_index = triangle_set.indices.size(); + its_merge(triangle_set, negative_volumes_set); + its_transform(triangle_set, obj_transform); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: end"; + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visibility sample points: start"; + + result.mesh_samples = sample_its_uniform_parallel(SeamPlacer::raycasting_visibility_samples_count, triangle_set); + result.mesh_samples_coordinate_functor = CoordinateFunctor(&result.mesh_samples.positions); + result.mesh_samples_tree = KDTreeIndirect<3, float, CoordinateFunctor>(result.mesh_samples_coordinate_functor, result.mesh_samples.positions.size()); + + // The following code determines search area for random visibility samples on the mesh when calculating visibility of each perimeter point + // number of random samples in the given radius (area) is approximately poisson distribution + // to compute ideal search radius (area), we use exponential distribution (complementary distr to poisson) + // parameters of exponential distribution to compute area that will have with probability="probability" more than given number of samples="samples" + float probability = 0.9f; + float samples = 4; + float density = SeamPlacer::raycasting_visibility_samples_count / result.mesh_samples.total_area; + // exponential probability distrubtion function is : f(x) = P(X > x) = e^(l*x) where l is the rate parameter (computed as 1/u where u is mean value) + // probability that sampled area A with S samples contains more than samples count: + // P(S > samples in A) = e^-(samples/(density*A)); express A: + float search_area = samples / (-logf(probability) * density); + float search_radius = sqrt(search_area / PI); + result.mesh_samples_radius = search_radius; + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visiblity sample points: end"; + throw_if_canceled(); + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Mesh sample raidus: " << result.mesh_samples_radius; + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: start"; + auto raycasting_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(triangle_set.vertices, triangle_set.indices); + + throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: end"; + result.mesh_samples_visibility = raycast_visibility(raycasting_tree, triangle_set, result.mesh_samples, negative_volumes_start_index); + throw_if_canceled(); +#ifdef DEBUG_FILES + result.debug_export(triangle_set); +#endif +} + +void gather_enforcers_blockers(GlobalModelInfo &result, const PrintObject *po) +{ + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: start"; + + auto obj_transform = po->trafo_centered(); + + for (const ModelVolume *mv : po->model_object()->volumes) { + if (mv->is_seam_painted()) { + auto model_transformation = obj_transform * mv->get_matrix(); + + indexed_triangle_set enforcers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::ENFORCER); + its_transform(enforcers, model_transformation); + its_merge(result.enforcers, enforcers); + + indexed_triangle_set blockers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::BLOCKER); + its_transform(blockers, model_transformation); + its_merge(result.blockers, blockers); + } + } + + result.enforcers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.enforcers.vertices, result.enforcers.indices); + result.blockers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.blockers.vertices, result.blockers.indices); + + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: end"; +} + +struct SeamComparator +{ + SeamPosition setup; + float angle_importance; + explicit SeamComparator(SeamPosition setup) : setup(setup) + { + angle_importance = setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; + } + + // Standard comparator, must respect the requirements of comparators (e.g. give same result on same inputs) for sorting usage + // should return if a is better seamCandidate than b + bool is_first_better(const SeamCandidate &a, const SeamCandidate &b, const Vec2f &preffered_location = Vec2f{0.0f, 0.0f}) const + { + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { return a.central_enforcer; } + + // Blockers/Enforcers discrimination, top priority + if (a.type != b.type) { return a.type > b.type; } + + // avoid overhangs + if (a.overhang > 0.0f || b.overhang > 0.0f) { return a.overhang < b.overhang; } + + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } + + if (setup == SeamPosition::spRear && a.position.y() != b.position.y()) { return a.position.y() > b.position.y(); } + + float distance_penalty_a = 0.0f; + float distance_penalty_b = 0.0f; + if (setup == spNearest) { + distance_penalty_a = 1.0f - gauss((a.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + distance_penalty_b = 1.0f - gauss((b.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + } + + // the penalites are kept close to range [0-1.x] however, it should not be relied upon + float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) + distance_penalty_a; + float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle) + distance_penalty_b; + + return penalty_a < penalty_b; + } + + // Comparator used during alignment. If there is close potential aligned point, it is compared to the current + // seam point of the perimeter, to find out if the aligned point is not much worse than the current seam + // Also used by the random seam generator. + bool is_first_not_much_worse(const SeamCandidate &a, const SeamCandidate &b) const + { + // Blockers/Enforcers discrimination, top priority + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { + // Prefer centers of enforcers. + return a.central_enforcer; + } + + if (a.type == EnforcedBlockedSeamPoint::Enforced) { return true; } + + if (a.type == EnforcedBlockedSeamPoint::Blocked) { return false; } + + if (a.type != b.type) { return a.type > b.type; } + + // avoid overhangs + if ((a.overhang > 0.0f || b.overhang > 0.0f) && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { return a.overhang < b.overhang; } + + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } + + if (setup == SeamPosition::spRandom) { return true; } + + if (setup == SeamPosition::spRear) { return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); } + + float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle); + float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle); + + return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; + } + + bool are_similar(const SeamCandidate &a, const SeamCandidate &b) const { return is_first_not_much_worse(a, b) && is_first_not_much_worse(b, a); } +}; + +#ifdef DEBUG_FILES +void debug_export_points(const std::vector &layers, const BoundingBox &bounding_box, const SeamComparator &comparator) +{ + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + std::string angles_file_name = debug_out_path(("angles_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG angles_svg{angles_file_name, bounding_box}; + float min_vis = 0; + float max_vis = min_vis; + + float min_weight = std::numeric_limits::min(); + float max_weight = min_weight; + + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(-PI, PI, point.local_ccw_angle); + std::string fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; + angles_svg.draw(scaled(Vec2f(point.position.head<2>())), fill); + min_vis = std::min(min_vis, point.visibility); + max_vis = std::max(max_vis, point.visibility); + + min_weight = std::min(min_weight, -compute_angle_penalty(point.local_ccw_angle)); + max_weight = std::max(max_weight, -compute_angle_penalty(point.local_ccw_angle)); + } + + std::string visiblity_file_name = debug_out_path(("visibility_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG visibility_svg{visiblity_file_name, bounding_box}; + std::string weights_file_name = debug_out_path(("weight_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG weight_svg{weights_file_name, bounding_box}; + std::string overhangs_file_name = debug_out_path(("overhang_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG overhangs_svg{overhangs_file_name, bounding_box}; + + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(min_vis, max_vis, point.visibility); + std::string visibility_fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; + visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); + + Vec3i weight_color = value_to_rgbi(min_weight, max_weight, -compute_angle_penalty(point.local_ccw_angle)); + std::string weight_fill = "rgb(" + std::to_string(weight_color.x()) + "," + std::to_string(weight_color.y()) + "," + std::to_string(weight_color.z()) + ")"; + weight_svg.draw(scaled(Vec2f(point.position.head<2>())), weight_fill); + + Vec3i overhang_color = value_to_rgbi(-0.5, 0.5, std::clamp(point.overhang, -0.5f, 0.5f)); + std::string overhang_fill = "rgb(" + std::to_string(overhang_color.x()) + "," + std::to_string(overhang_color.y()) + "," + std::to_string(overhang_color.z()) + ")"; + overhangs_svg.draw(scaled(Vec2f(point.position.head<2>())), overhang_fill); + } + } +} +#endif + +// Pick best seam point based on the given comparator +void pick_seam_point(std::vector &perimeter_points, size_t start_index, const SeamComparator &comparator) +{ + size_t end_index = perimeter_points[start_index].perimeter.end_index; + + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index])) { seam_index = index; } + } + perimeter_points[start_index].perimeter.seam_index = seam_index; +} + +size_t pick_nearest_seam_point_index(const std::vector &perimeter_points, size_t start_index, const Vec2f &preffered_location) +{ + size_t end_index = perimeter_points[start_index].perimeter.end_index; + SeamComparator comparator{spNearest}; + + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index], preffered_location)) { seam_index = index; } + } + return seam_index; +} + +// picks random seam point uniformly, respecting enforcers blockers and overhang avoidance. +void pick_random_seam_point(const std::vector &perimeter_points, size_t start_index) +{ + SeamComparator comparator{spRandom}; + + // algorithm keeps a list of viable points and their lengths. If it finds a point + // that is much better than the viable_example_index (e.g. better type, no overhang; see is_first_not_much_worse) + // then it throws away stored lists and starts from start + // in the end, the list should contain points with same type (Enforced > Neutral > Blocked) and also only those which are not + // big overhang. + size_t viable_example_index = start_index; + size_t end_index = perimeter_points[start_index].perimeter.end_index; + struct Viable + { + // Candidate seam point index. + size_t index; + float edge_length; + Vec3f edge; + }; + std::vector viables; + + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { + // index ok, push info into viables + Vec3f edge_to_next{perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position}; + float dist_to_next = edge_to_next.norm(); + viables.push_back({index, dist_to_next, edge_to_next}); + } else if (comparator.is_first_not_much_worse(perimeter_points[viable_example_index], perimeter_points[index])) { + // index is worse then viable_example_index, skip this point + } else { + // index is better than viable example index, update example, clear gathered info, start again + // clear up all gathered info, start from scratch, update example index + viable_example_index = index; + viables.clear(); + + Vec3f edge_to_next = (perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position); + float dist_to_next = edge_to_next.norm(); + viables.push_back({index, dist_to_next, edge_to_next}); + } + } + + // now pick random point from the stored options + float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { return acc + v.edge_length; }); + float picked_len = len_sum * (rand() / (float(RAND_MAX) + 1)); + + size_t point_idx = 0; + while (picked_len - viables[point_idx].edge_length > 0) { + picked_len = picked_len - viables[point_idx].edge_length; + point_idx++; + } + + Perimeter &perimeter = perimeter_points[start_index].perimeter; + perimeter.seam_index = viables[point_idx].index; + perimeter.final_seam_position = perimeter_points[perimeter.seam_index].position + viables[point_idx].edge.normalized() * picked_len; + perimeter.finalized = true; +} + +class PerimeterDistancer +{ + std::vector lines; + AABBTreeIndirect::Tree<2, double> tree; + +public: + PerimeterDistancer(const Layer *layer) + { + static const float eps = float(scale_(g_config_slice_closing_radius)); + // merge with offset + ExPolygons merged = layer->merged(eps); + // ofsset back + ExPolygons layer_outline = offset_ex(merged, -eps); + for (const ExPolygon &island : layer_outline) { + assert(island.contour.is_counter_clockwise()); + for (const auto &line : island.contour.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } + for (const Polygon &hole : island.holes) { + assert(hole.is_clockwise()); + for (const auto &line : hole.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } + } + } + tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); + } + + float distance_from_perimeter(const Point &point) const + { + Vec2d p = unscale(point); + size_t hit_idx_out{}; + Vec2d hit_point_out = Vec2d::Zero(); + auto distance = AABBTreeLines::squared_distance_to_indexed_lines(lines, tree, p, hit_idx_out, hit_point_out); + if (distance < 0) { return std::numeric_limits::max(); } + + distance = sqrt(distance); + const Linef &line = lines[hit_idx_out]; + Vec2d v1 = line.b - line.a; + Vec2d v2 = p - line.a; + if ((v1.x() * v2.y()) - (v1.y() * v2.x()) > 0.0) { distance *= -1; } + return distance; + } +}; + +} // namespace SeamPlacerImpl + +// Parallel process and extract each perimeter polygon of the given print object. +// Gather SeamCandidates of each layer into vector and build KDtree over them +// Store results in the SeamPlacer variables m_seam_per_object +void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference) +{ + using namespace SeamPlacerImpl; + PrintObjectSeamData &seam_data = m_seam_per_object.emplace(po, PrintObjectSeamData{}).first->second; + seam_data.layers.resize(po->layer_count()); + + tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), [po, configured_seam_preference, &global_model_info, &seam_data](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + PrintObjectSeamData::LayerSeams &layer_seams = seam_data.layers[layer_idx]; + const Layer * layer = po->get_layer(layer_idx); + auto unscaled_z = layer->slice_z; + std::vector regions; + // NOTE corresponding region ptr may be null, if the layer has zero perimeters + Polygons polygons = extract_perimeter_polygons(layer, configured_seam_preference, regions); + for (size_t poly_index = 0; poly_index < polygons.size(); ++poly_index) { + process_perimeter_polygon(polygons[poly_index], unscaled_z, regions[poly_index], global_model_info, layer_seams); + } + auto functor = SeamCandidateCoordinateFunctor{layer_seams.points}; + seam_data.layers[layer_idx].points_tree = std::make_unique(functor, layer_seams.points.size()); + } + }); +} + +void SeamPlacer::calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info) +{ + using namespace SeamPlacerImpl; + + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, &global_model_info](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + for (auto &perimeter_point : layers[layer_idx].points) { perimeter_point.visibility = global_model_info.calculate_point_visibility(perimeter_point.position); } + } + }); +} + +void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) +{ + using namespace SeamPlacerImpl; + + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), [po, &layers](tbb::blocked_range r) { + std::unique_ptr prev_layer_distancer; + if (r.begin() > 0) { // previous layer exists + prev_layer_distancer = std::make_unique(po->layers()[r.begin() - 1]); + } + + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + size_t regions_with_perimeter = 0; + for (const LayerRegion *region : po->layers()[layer_idx]->regions()) { + if (region->perimeters.entities.size() > 0) { regions_with_perimeter++; } + }; + bool should_compute_layer_embedding = regions_with_perimeter > 1; + std::unique_ptr current_layer_distancer = std::make_unique(po->layers()[layer_idx]); + + for (SeamCandidate &perimeter_point : layers[layer_idx].points) { + Point point = Point::new_scale(Vec2f{perimeter_point.position.head<2>()}); + if (prev_layer_distancer.get() != nullptr) { + perimeter_point.overhang = (prev_layer_distancer->distance_from_perimeter(point) + 0.5f * perimeter_point.perimeter.flow_width - + tan(SeamPlacer::overhang_angle_threshold) * po->layers()[layer_idx]->height) / + (3.0f * perimeter_point.perimeter.flow_width); + // NOTE disables the feature to place seams on slowly decreasing areas. Remove the following line to enable. + perimeter_point.overhang = perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; + } + + if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) + perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + 0.5f * perimeter_point.perimeter.flow_width; + } + } + + prev_layer_distancer.swap(current_layer_distancer); + } + }); +} + +// Estimates, if there is good seam point in the layer_idx which is close to last_point_pos +// uses comparator.is_first_not_much_worse method to compare current seam with the closest point +// (if current seam is too far away ) +// If the current chosen stream is close enough, it is stored in seam_string. returns true and updates last_point_pos +// If the closest point is good enough to replace current chosen seam, it is stored in potential_string_seams, returns true and updates last_point_pos +// Otherwise does nothing, returns false +// Used by align_seam_points(). +std::optional> SeamPlacer::find_next_seam_in_layer(const std::vector &layers, + const Vec3f & projected_position, + const size_t layer_idx, + const float max_distance, + const SeamPlacerImpl::SeamComparator & comparator) const +{ + using namespace SeamPlacerImpl; + std::vector nearby_points_indices = find_nearby_points(*layers[layer_idx].points_tree, projected_position, max_distance); + + if (nearby_points_indices.empty()) { return {}; } + + size_t best_nearby_point_index = nearby_points_indices[0]; + size_t nearest_point_index = nearby_points_indices[0]; + + // Now find best nearby point, nearest point, and corresponding indices + for (const size_t &nearby_point_index : nearby_points_indices) { + const SeamCandidate &point = layers[layer_idx].points[nearby_point_index]; + if (point.perimeter.finalized) { + continue; // skip over finalized perimeters, try to find some that is not finalized + } + if (comparator.is_first_better(point, layers[layer_idx].points[best_nearby_point_index], projected_position.head<2>()) || + layers[layer_idx].points[best_nearby_point_index].perimeter.finalized) { + best_nearby_point_index = nearby_point_index; + } + if ((point.position - projected_position).squaredNorm() < (layers[layer_idx].points[nearest_point_index].position - projected_position).squaredNorm() || + layers[layer_idx].points[nearest_point_index].perimeter.finalized) { + nearest_point_index = nearby_point_index; + } + } + + const SeamCandidate &best_nearby_point = layers[layer_idx].points[best_nearby_point_index]; + const SeamCandidate &nearest_point = layers[layer_idx].points[nearest_point_index]; + + if (nearest_point.perimeter.finalized) { + // all points are from already finalized perimeter, skip + return {}; + } + + // from the nearest_point, deduce index of seam in the next layer + const SeamCandidate &next_layer_seam = layers[layer_idx].points[nearest_point.perimeter.seam_index]; + + // First try to pick central enforcer if any present + if (next_layer_seam.central_enforcer && (next_layer_seam.position - projected_position).squaredNorm() < sqr(3 * max_distance)) { + return {std::pair{layer_idx, nearest_point.perimeter.seam_index}}; + } + + // First try to align the nearest, then try the best nearby + if (comparator.is_first_not_much_worse(nearest_point, next_layer_seam)) { return {std::pair{layer_idx, nearest_point_index}}; } + // If nearest point is not good enough, try it with the best nearby point. + if (comparator.is_first_not_much_worse(best_nearby_point, next_layer_seam)) { return {std::pair{layer_idx, best_nearby_point_index}}; } + + return {}; +} + +std::vector> SeamPlacer::find_seam_string(const PrintObject * po, + std::pair start_seam, + const SeamPlacerImpl::SeamComparator &comparator) const +{ + const std::vector &layers = m_seam_per_object.find(po)->second.layers; + int layer_idx = start_seam.first; + + // initialize searching for seam string - cluster of nearby seams on previous and next layers + int next_layer = layer_idx + 1; + int step = 1; + std::pair prev_point_index = start_seam; + std::vector> seam_string{start_seam}; + + auto reverse_lookup_direction = [&]() { + step = -1; + prev_point_index = start_seam; + next_layer = layer_idx - 1; }; - // Find all seam candidate edges and their lengths. - float valid_length = 0.f; - if (has_enforcers) - valid_length = get_valid_length(enforcers_idxs, edges, true); + while (next_layer >= 0) { + if (next_layer >= int(layers.size())) { + reverse_lookup_direction(); + if (next_layer < 0) { break; } + } + float max_distance = SeamPlacer::seam_align_tolerable_dist_factor * layers[start_seam.first].points[start_seam.second].perimeter.flow_width; + Vec3f prev_position = layers[prev_point_index.first].points[prev_point_index.second].position; + Vec3f projected_position = prev_position; + projected_position.z() = float(po->get_layer(next_layer)->slice_z); - if (! has_enforcers || valid_length == 0.f) { - // Second condition covers case with isolated enf points. Given how the painted - // triangles are projected, this should not happen. Stay on the safe side though. - if (has_blockers) - valid_length = get_valid_length(blockers_idxs, edges, false); - if (valid_length == 0.f) // No blockers or everything blocked - use the whole polygon. - valid_length = lengths.back(); - } - assert(valid_length != 0.f); - // Now generate a random length and find the respective edge. - float rand_len = valid_length * (rand()/float(RAND_MAX)); - size_t pt_idx = 0; // Index of the edge where to put the seam. - if (valid_length == lengths.back()) { - // Whole polygon is used for placing the seam. - auto it = std::lower_bound(lengths.begin(), lengths.end(), rand_len); - pt_idx = it == lengths.begin() ? 0 : (it-lengths.begin()-1); // this takes care of a corner case where rand() returns 0 - } else { - float running = 0.f; - for (size_t i=0; i 0.f ? edges[i] : 0.f; - if (running >= rand_len) { - pt_idx = i; + std::optional> maybe_next_seam = find_next_seam_in_layer(layers, projected_position, next_layer, max_distance, comparator); + + if (maybe_next_seam.has_value()) { + // For old macOS (pre 10.14), std::optional does not have .value() method, so the code is using operator*() instead. + seam_string.push_back(maybe_next_seam.operator*()); + prev_point_index = seam_string.back(); + // String added, prev_point_index updated + } else { + if (step == 1) { + reverse_lookup_direction(); + if (next_layer < 0) { break; } + } else { break; } } + next_layer += step; } - - if (! has_enforcers && ! has_blockers) { - // The polygon may be too coarse, calculate the point exactly. - assert(valid_length == lengths.back()); - bool last_seg = pt_idx == polygon.points.size()-1; - size_t next_idx = last_seg ? 0 : pt_idx+1; - const Point& prev = polygon.points[pt_idx]; - const Point& next = polygon.points[next_idx]; - assert(next_idx == 0 || pt_idx+1 == next_idx); - coordf_t diff_x = next.x() - prev.x(); - coordf_t diff_y = next.y() - prev.y(); - coordf_t dist = lengths[last_seg ? pt_idx+1 : next_idx] - lengths[pt_idx]; - return Point(prev.x() + (rand_len - lengths[pt_idx]) * (diff_x/dist), - prev.y() + (rand_len - lengths[pt_idx]) * (diff_y/dist)); - - } else { - // The polygon should be dense enough. - return polygon.points[pt_idx]; - } + return seam_string; } - - - - - - - -void SeamPlacer::get_enforcers_and_blockers(size_t layer_id, - const Polygon& polygon, - size_t po_idx, - std::vector& enforcers_idxs, - std::vector& blockers_idxs) const +// clusters already chosen seam points into strings across multiple layers, and then +// aligns the strings via polynomial fit +// Does not change the positions of the SeamCandidates themselves, instead stores +// the new aligned position into the shared Perimeter structure of each perimeter +// Note that this position does not necesarilly lay on the perimeter. +void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator) { - enforcers_idxs.clear(); - blockers_idxs.clear(); + using namespace SeamPlacerImpl; - auto is_inside = [](const Point& pt, - const CustomTrianglesPerLayer& custom_data) -> bool { - assert(! custom_data.polys.empty()); - // Now ask the AABB tree which polygons we should check and check them. - std::vector candidates; - AABBTreeIndirect::get_candidate_idxs(custom_data.tree, pt, candidates); - if (! candidates.empty()) - for (size_t idx : candidates) - if (custom_data.polys[idx].contains(pt)) - return true; - return false; - }; - - if (! m_enforcers[po_idx].empty()) { - const CustomTrianglesPerLayer& enforcers = m_enforcers[po_idx][layer_id]; - if (! enforcers.polys.empty()) { - for (size_t i=0; i find_enforcer_centers(const Polygon& polygon, - const std::vector& lengths, - const std::vector& enforcers_idxs) -{ - std::vector out; - assert(polygon.points.size()+1 == lengths.size()); - assert(std::is_sorted(enforcers_idxs.begin(), enforcers_idxs.end())); - if (polygon.size() < 2 || enforcers_idxs.empty()) - return out; - - auto get_center_idx = [&lengths](size_t start_idx, size_t end_idx) -> size_t { - assert(end_idx >= start_idx); - if (start_idx == end_idx) - return start_idx; - float t_c = lengths[start_idx] + 0.5f * (lengths[end_idx] - lengths[start_idx]); - auto it = std::lower_bound(lengths.begin() + start_idx, lengths.begin() + end_idx, t_c); - int ret = it - lengths.begin(); - return ret; - }; - - int last_enforcer_start_idx = enforcers_idxs.front(); - bool first_pt_in_list = enforcers_idxs.front() != 0; - bool last_pt_in_list = enforcers_idxs.back() == polygon.points.size() - 1; - bool wrap_around = last_pt_in_list && first_pt_in_list; - - for (size_t i=0; i t_e) ? t_s + half_dist : t_e - half_dist; - - auto it = std::lower_bound(lengths.begin(), lengths.end(), t_c); - out[0] = it - lengths.begin(); - if (out[0] == lengths.size() - 1) - --out[0]; - assert(out[0] < lengths.size() - 1); - } - return out; -} - - - -void SeamPlacer::apply_custom_seam(const Polygon& polygon, size_t po_idx, - std::vector& penalties, - const std::vector& lengths, - int layer_id, SeamPosition seam_position) const -{ - if (! is_custom_seam_on_layer(layer_id, po_idx)) + // Prepares Debug files for writing. +#ifdef DEBUG_FILES + Slic3r::CNumericLocalesSetter locales_setter; + auto clusters_f = debug_out_path("seam_clusters.obj"); + FILE * clusters = boost::nowide::fopen(clusters_f.c_str(), "w"); + if (clusters == nullptr) { + BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; return; - - std::vector enforcers_idxs; - std::vector blockers_idxs; - this->get_enforcers_and_blockers(layer_id, polygon, po_idx, enforcers_idxs, blockers_idxs); - - for (size_t i : enforcers_idxs) { - assert(i < penalties.size()); - penalties[i] -= float(ENFORCER_BLOCKER_PENALTY); } - for (size_t i : blockers_idxs) { - assert(i < penalties.size()); - penalties[i] += float(ENFORCER_BLOCKER_PENALTY); - } - if (seam_position == spAligned) { - std::vector enf_centers = find_enforcer_centers(polygon, lengths, enforcers_idxs); - for (size_t idx : enf_centers) { - assert(idx < penalties.size()); - penalties[idx] += ENFORCER_CENTER_PENALTY; - } - } - -#if 0 - std::ostringstream os; - os << std::setw(3) << std::setfill('0') << layer_id; - int a = scale_(30.); - SVG svg("custom_seam" + os.str() + ".svg", BoundingBox(Point(-a, -a), Point(a, a))); - if (! m_enforcers[po_idx].empty()) - svg.draw(m_enforcers[po_idx][layer_id].polys, "blue"); - if (! m_blockers[po_idx].empty()) - svg.draw(m_blockers[po_idx][layer_id].polys, "red"); - - if (! blockers_idxs.empty()) { - ; - } - - - size_t min_idx = std::min_element(penalties.begin(), penalties.end()) - penalties.begin(); - - for (size_t i=0; i SeamHistory::get_last_seam(const PrintObject* po, size_t layer_id, const BoundingBox& island_bb) -{ - assert(layer_id >= m_layer_id || layer_id == 0); - if (layer_id != m_layer_id) { - // Get seam was called for different layer than last time. - if (layer_id == 0) // seq printing - m_data_this_layer.clear(); - m_data_last_layer = m_data_this_layer; - m_data_this_layer.clear(); - m_layer_id = layer_id; + // gather vector of all seams on the print_object - pair of layer_index and seam__index within that layer + const std::vector &layers = m_seam_per_object[po].layers; + std::vector> seams; + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + const std::vector &layer_perimeter_points = layers[layer_idx].points; + size_t current_point_index = 0; + while (current_point_index < layer_perimeter_points.size()) { + seams.emplace_back(layer_idx, layer_perimeter_points[current_point_index].perimeter.seam_index); + current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; + } } - std::optional out; + // sort them before alignment. Alignment is sensitive to initializaion, this gives it better chance to choose something nice + std::stable_sort(seams.begin(), seams.end(), [&comparator, &layers](const std::pair &left, const std::pair &right) { + return comparator.is_first_better(layers[left.first].points[left.second], layers[right.first].points[right.second]); + }); - auto seams_it = m_data_last_layer.find(po); - if (seams_it == m_data_last_layer.end()) - return out; + // align the seam points - start with the best, and check if they are aligned, if yes, skip, else start alignment + // Keeping the vectors outside, so with a bit of luck they will not get reallocated after couple of for loop iterations. + std::vector> seam_string; + std::vector> alternative_seam_string; + std::vector observations; + std::vector observation_points; + std::vector weights; - const std::vector& seam_data_po = seams_it->second; - - // Find a bounding-box on the last layer that is close to one we see now. - double min_score = std::numeric_limits::max(); - for (const SeamPoint& sp : seam_data_po) { - const BoundingBox& bb = sp.m_island_bb; - - if (! bb.overlap(island_bb)) { - // This bb does not even overlap. It is likely unrelated. + int global_index = 0; + while (global_index < int(seams.size())) { + size_t layer_idx = seams[global_index].first; + size_t seam_index = seams[global_index].second; + global_index++; + const std::vector &layer_perimeter_points = layers[layer_idx].points; + if (layer_perimeter_points[seam_index].perimeter.finalized) { + // This perimeter is already aligned, skip seam continue; - } + } else { + seam_string = this->find_seam_string(po, {layer_idx, seam_index}, comparator); + size_t step_size = 1 + seam_string.size() / 20; + for (size_t alternative_start = 0; alternative_start < seam_string.size(); alternative_start += step_size) { + size_t start_layer_idx = seam_string[alternative_start].first; + size_t seam_idx = layers[start_layer_idx].points[seam_string[alternative_start].second].perimeter.seam_index; + alternative_seam_string = this->find_seam_string(po, std::pair(start_layer_idx, seam_idx), comparator); + if (alternative_seam_string.size() > seam_string.size()) { seam_string = std::move(alternative_seam_string); } + } + if (seam_string.size() < seam_align_minimum_string_seams) { + // string NOT long enough to be worth aligning, skip + continue; + } - double score = std::pow(bb.min(0) - island_bb.min(0), 2.) - + std::pow(bb.min(1) - island_bb.min(1), 2.) - + std::pow(bb.max(0) - island_bb.max(0), 2.) - + std::pow(bb.max(1) - island_bb.max(1), 2.); + // String is long enough, all string seams and potential string seams gathered, now do the alignment + // sort by layer index + std::sort(seam_string.begin(), seam_string.end(), + [](const std::pair &left, const std::pair &right) { return left.first < right.first; }); - if (score < min_score) { - min_score = score; - out = sp.m_pos; + // repeat the alignment for the current seam, since it could be skipped due to alternative path being aligned. + global_index--; + + // gather all positions of seams and their weights + observations.resize(seam_string.size()); + observation_points.resize(seam_string.size()); + weights.resize(seam_string.size()); + + auto angle_3d = [](const Vec3f &a, const Vec3f &b) { return std::abs(acosf(a.normalized().dot(b.normalized()))); }; + + auto angle_weight = [](float angle) { return 1.0f / (0.1f + compute_angle_penalty(angle)); }; + + // gather points positions and weights + float total_length = 0.0f; + Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; + for (size_t index = 0; index < seam_string.size(); ++index) { + const SeamCandidate ¤t = layers[seam_string[index].first].points[seam_string[index].second]; + float layer_angle = 0.0f; + if (index > 0 && index < seam_string.size() - 1) { + layer_angle = angle_3d(current.position - layers[seam_string[index - 1].first].points[seam_string[index - 1].second].position, + layers[seam_string[index + 1].first].points[seam_string[index + 1].second].position - current.position); + } + observations[index] = current.position.head<2>(); + observation_points[index] = current.position.z(); + weights[index] = angle_weight(current.local_ccw_angle); + float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -1.0f : 1.0f; + if (current.type == EnforcedBlockedSeamPoint::Enforced) { + sign = 1.0f; + weights[index] += 3.0f; + } + total_length += sign * (last_point_pos - current.position).norm(); + last_point_pos = current.position; + } + + // Curve Fitting + size_t number_of_segments = std::max(size_t(1), size_t(std::max(0.0f, total_length) / SeamPlacer::seam_align_mm_per_segment)); + auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); + + // Do alignment - compute fitted point for each point in the string from its Z coord, and store the position into + // Perimeter structure of the point; also set flag aligned to true + for (size_t index = 0; index < seam_string.size(); ++index) { + const auto &pair = seam_string[index]; + float t = std::min(1.0f, std::abs(layers[pair.first].points[pair.second].local_ccw_angle) / SeamPlacer::sharp_angle_snapping_threshold); + if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced) { t = std::max(0.7f, t); } + + Vec3f current_pos = layers[pair.first].points[pair.second].position; + Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); + + // interpolate between current and fitted position, prefer current pos for large weights. + Vec3f final_position = t * current_pos + (1.0f - t) * to_3d(fitted_pos, current_pos.z()); + + Perimeter &perimeter = layers[pair.first].points[pair.second].perimeter; + perimeter.seam_index = pair.second; + perimeter.final_seam_position = final_position; + perimeter.finalized = true; + } + +#ifdef DEBUG_FILES + auto randf = []() { return float(rand()) / float(RAND_MAX); }; + Vec3f color{randf(), randf(), randf()}; + for (size_t i = 0; i < seam_string.size(); ++i) { + auto orig_seam = layers[seam_string[i].first].points[seam_string[i].second]; + fprintf(clusters, "v %f %f %f %f %f %f \n", orig_seam.position[0], orig_seam.position[1], orig_seam.position[2], color[0], color[1], color[2]); + } + + color = Vec3f{randf(), randf(), randf()}; + for (size_t i = 0; i < seam_string.size(); ++i) { + const Perimeter &perimeter = layers[seam_string[i].first].points[seam_string[i].second].perimeter; + fprintf(aligns, "v %f %f %f %f %f %f \n", perimeter.final_seam_position[0], perimeter.final_seam_position[1], perimeter.final_seam_position[2], color[0], + color[1], color[2]); + } +#endif } } - return out; +#ifdef DEBUG_FILES + fclose(clusters); + fclose(aligns); +#endif } - - -void SeamHistory::add_seam(const PrintObject* po, const Point& pos, const BoundingBox& island_bb) +void SeamPlacer::init(const Print &print, std::function throw_if_canceled_func) { - m_data_this_layer[po].push_back({pos, island_bb});; + using namespace SeamPlacerImpl; + m_seam_per_object.clear(); + + for (const PrintObject *po : print.objects()) { + throw_if_canceled_func(); + SeamPosition configured_seam_preference = po->config().seam_position.value; + SeamComparator comparator{configured_seam_preference}; + + { + GlobalModelInfo global_model_info{}; + gather_enforcers_blockers(global_model_info, po); + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { compute_global_occlusion(global_model_info, po, throw_if_canceled_func); } + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: start"; + gather_seam_candidates(po, global_model_info, configured_seam_preference); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: end"; + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : start"; + calculate_candidates_visibility(po, global_model_info); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : end"; + } + } // destruction of global_model_info (large structure, no longer needed) + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding : start"; + calculate_overhangs_and_layer_embedding(po); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding: end"; + throw_if_canceled_func(); + if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : start"; + // pick seam point + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, configured_seam_preference, comparator](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + std::vector &layer_perimeter_points = layers[layer_idx].points; + for (size_t current = 0; current < layer_perimeter_points.size(); current = layer_perimeter_points[current].perimeter.end_index) + if (configured_seam_preference == spRandom) + pick_random_seam_point(layer_perimeter_points, current); + else + pick_seam_point(layer_perimeter_points, current, comparator); + } + }); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : end"; + } + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spRear) { + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : start"; + align_seam_points(po, comparator); + BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : end"; + } + +#ifdef DEBUG_FILES + debug_export_points(m_seam_per_object[po].layers, po->bounding_box(), comparator); +#endif + } } - - -void SeamHistory::clear() +void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const { - m_layer_id = 0; - m_data_last_layer.clear(); - m_data_this_layer.clear(); + using namespace SeamPlacerImpl; + const PrintObject *po = layer->object(); + // Must not be called with supprot layer. + assert(dynamic_cast(layer) == nullptr); + // Object layer IDs are incremented by the number of raft layers. + assert(layer->id() >= po->slicing_parameters().raft_layers()); + const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers(); + const double unscaled_z = layer->slice_z; + + const PrintObjectSeamData::LayerSeams &layer_perimeters = m_seam_per_object.find(layer->object())->second.layers[layer_index]; + + // Find the closest perimeter in the SeamPlacer to the first point of this loop. + size_t closest_perimeter_point_index; + { + const Point &fp = loop.first_point(); + Vec2f unscaled_p = unscaled(fp); + closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(), to_3d(unscaled_p, float(unscaled_z))); + } + + Vec3f seam_position; + size_t seam_index; + if (const Perimeter &perimeter = layer_perimeters.points[closest_perimeter_point_index].perimeter; perimeter.finalized) { + seam_position = perimeter.final_seam_position; + seam_index = perimeter.seam_index; + } else { + seam_index = po->config().seam_position == spNearest ? pick_nearest_seam_point_index(layer_perimeters.points, perimeter.start_index, unscaled(last_pos)) : + perimeter.seam_index; + seam_position = layer_perimeters.points[seam_index].position; + } + + Point seam_point = Point::new_scale(seam_position.x(), seam_position.y()); + + if (const SeamCandidate &perimeter_point = layer_perimeters.points[seam_index]; + (po->config().seam_position == spNearest || po->config().seam_position == spAligned) && loop.role() == ExtrusionRole::erPerimeter && // Hopefully internal perimeter + (seam_position - perimeter_point.position).squaredNorm() < 4.0f && // seam is on perimeter point + perimeter_point.local_ccw_angle < -EPSILON // In concave angles + ) { // In this case, we are at internal perimeter, where the external perimeter has seam in concave angle. We want to align + // the internal seam into the concave corner, and not on the perpendicular projection on the closest edge (which is what the split_at function does) + size_t index_of_prev = seam_index == perimeter_point.perimeter.start_index ? perimeter_point.perimeter.end_index - 1 : seam_index - 1; + size_t index_of_next = seam_index == perimeter_point.perimeter.end_index - 1 ? perimeter_point.perimeter.start_index : seam_index + 1; + + Vec2f dir_to_middle = ((perimeter_point.position - layer_perimeters.points[index_of_prev].position).head<2>().normalized() + + (perimeter_point.position - layer_perimeters.points[index_of_next].position).head<2>().normalized()) * + 0.5; + + ExtrusionLoop::ClosestPathPoint projected_point = loop.get_closest_path_and_point(seam_point, true); + // get closest projected point, determine depth of the seam point. + float depth = (float) unscale(Point(seam_point - projected_point.foot_pt)).norm(); + float angle_factor = cos(-perimeter_point.local_ccw_angle / 2.0f); // There are some nice geometric identities in determination of the correct depth of new seam point. + // overshoot the target depth, in concave angles it will correctly snap to the corner; TODO: find out why such big overshoot is needed. + Vec2f final_pos = perimeter_point.position.head<2>() + (1.4142 * depth / angle_factor) * dir_to_middle; + seam_point = Point::new_scale(final_pos.x(), final_pos.y()); + } + + // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, + // thus empty path segments will not be produced by G-code export. + //if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { + if (!loop.split_at_vertex(seam_point)) { + // The point is not in the original loop. + // Insert it. + loop.split_at(seam_point, true); + } } - -} +} // namespace Slic3r diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 57c3532c3b..de99e12d34 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -3,12 +3,16 @@ #include #include +#include +#include +#include "libslic3r/libslic3r.h" #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/Polygon.hpp" #include "libslic3r/PrintConfig.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/AABBTreeIndirect.hpp" +#include "libslic3r/KDTreeIndirect.hpp" namespace Slic3r { @@ -16,119 +20,148 @@ class PrintObject; class ExtrusionLoop; class Print; class Layer; -namespace EdgeGrid { class Grid; } - - -class SeamHistory { -public: - SeamHistory() { clear(); } - std::optional get_last_seam(const PrintObject* po, size_t layer_id, const BoundingBox& island_bb); - void add_seam(const PrintObject* po, const Point& pos, const BoundingBox& island_bb); - void clear(); - -private: - struct SeamPoint { - Point m_pos; - BoundingBox m_island_bb; - }; - - std::map> m_data_last_layer; - std::map> m_data_this_layer; - size_t m_layer_id; -}; - - - -class SeamPlacer { -public: - void init(const Print& print); - - // When perimeters are printed, first call this function with the respective - // external perimeter. SeamPlacer will find a location for its seam and remember it. - // Subsequent calls to get_seam will return this position. - - - void plan_perimeters(const std::vector perimeters, - const Layer& layer, SeamPosition seam_position, - Point last_pos, coordf_t nozzle_dmr, const PrintObject* po, - const EdgeGrid::Grid* lower_layer_edge_grid); - - void place_seam(ExtrusionLoop& loop, const Point& last_pos, bool external_first, double nozzle_diameter, - const EdgeGrid::Grid* lower_layer_edge_grid); - - - using TreeType = AABBTreeIndirect::Tree<2, coord_t>; - using AlignedBoxType = Eigen::AlignedBox; - -private: - - // When given an external perimeter (!), returns the seam. - Point calculate_seam(const Layer& layer, const SeamPosition seam_position, - const ExtrusionLoop& loop, coordf_t nozzle_dmr, const PrintObject* po, - const EdgeGrid::Grid* lower_layer_edge_grid, Point last_pos); - - struct CustomTrianglesPerLayer { - Polygons polys; - TreeType tree; - }; - - // Just a cache to save some lookups. - const Layer* m_last_layer_po = nullptr; - coordf_t m_last_print_z = -1.; - const PrintObject* m_last_po = nullptr; - - struct SeamPoint { - Point pt; - bool precalculated = false; - bool external = false; - const Layer* layer = nullptr; - SeamPosition seam_position; - const PrintObject* po = nullptr; - }; - std::vector m_plan; - size_t m_plan_idx; - - std::vector> m_enforcers; - std::vector> m_blockers; - std::vector m_po_list; - - //std::map m_last_seam_position; - SeamHistory m_seam_history; - - // Get indices of points inside enforcers and blockers. - void get_enforcers_and_blockers(size_t layer_id, - const Polygon& polygon, - size_t po_id, - std::vector& enforcers_idxs, - std::vector& blockers_idxs) const; - - // Apply penalties to points inside enforcers/blockers. - void apply_custom_seam(const Polygon& polygon, size_t po_id, - std::vector& penalties, - const std::vector& lengths, - int layer_id, SeamPosition seam_position) const; - - // Return random point of a polygon. The distribution will be uniform - // along the contour and account for enforcers and blockers. - Point get_random_seam(size_t layer_idx, const Polygon& polygon, size_t po_id, - bool* saw_custom = nullptr) const; - - // Is there any enforcer/blocker on this layer? - bool is_custom_seam_on_layer(size_t layer_id, size_t po_idx) const { - return is_custom_enforcer_on_layer(layer_id, po_idx) - || is_custom_blocker_on_layer(layer_id, po_idx); - } - - bool is_custom_enforcer_on_layer(size_t layer_id, size_t po_idx) const { - return (! m_enforcers.at(po_idx).empty() && ! m_enforcers.at(po_idx)[layer_id].polys.empty()); - } - - bool is_custom_blocker_on_layer(size_t layer_id, size_t po_idx) const { - return (! m_blockers.at(po_idx).empty() && ! m_blockers.at(po_idx)[layer_id].polys.empty()); - } -}; - +namespace EdgeGrid { +class Grid; } +namespace SeamPlacerImpl { + +// ************ FOR BACKPORT COMPATIBILITY ONLY *************** +// Angle from v1 to v2, returning double atan2(y, x) normalized to <-PI, PI>. +template inline double angle(const Eigen::MatrixBase &v1, const Eigen::MatrixBase &v2) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "angle(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "angle(): second parameter is not a 2D vector"); + auto v1d = v1.template cast(); + auto v2d = v2.template cast(); + return atan2(cross2(v1d, v2d), v1d.dot(v2d)); +} +// *************************** + +struct GlobalModelInfo; +struct SeamComparator; + +enum class EnforcedBlockedSeamPoint { + Blocked = 0, + Neutral = 1, + Enforced = 2, +}; + +// struct representing single perimeter loop +struct Perimeter +{ + size_t start_index{}; + size_t end_index{}; // inclusive! + size_t seam_index{}; + float flow_width{}; + + // During alignment, a final position may be stored here. In that case, finalized is set to true. + // Note that final seam position is not limited to points of the perimeter loop. In theory it can be any position + // Random position also uses this flexibility to set final seam point position + bool finalized = false; + Vec3f final_seam_position = Vec3f::Zero(); +}; + +// Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, +// then all the needed attributes are computed and finally, for each perimeter one point is chosen as seam. +// This seam position can be then further aligned +struct SeamCandidate +{ + SeamCandidate(const Vec3f &pos, Perimeter &perimeter, float local_ccw_angle, EnforcedBlockedSeamPoint type) + : position(pos), perimeter(perimeter), visibility(0.0f), overhang(0.0f), embedded_distance(0.0f), local_ccw_angle(local_ccw_angle), type(type), central_enforcer(false) + {} + const Vec3f position; + // pointer to Perimeter loop of this point. It is shared across all points of the loop + Perimeter &perimeter; + float visibility; + float overhang; + // distance inside the merged layer regions, for detecting perimeter points which are hidden indside the print (e.g. multimaterial join) + // Negative sign means inside the print, comes from EdgeGrid structure + float embedded_distance; + float local_ccw_angle; + EnforcedBlockedSeamPoint type; + bool central_enforcer; // marks this candidate as central point of enforced segment on the perimeter - important for alignment +}; + +struct SeamCandidateCoordinateFunctor +{ + SeamCandidateCoordinateFunctor(const std::vector &seam_candidates) : seam_candidates(seam_candidates) {} + const std::vector &seam_candidates; + float operator()(size_t index, size_t dim) const { return seam_candidates[index].position[dim]; } +}; +} // namespace SeamPlacerImpl + +struct PrintObjectSeamData +{ + using SeamCandidatesTree = KDTreeIndirect<3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor>; + + struct LayerSeams + { + Slic3r::deque perimeters; + std::vector points; + std::unique_ptr points_tree; + }; + // Map of PrintObjects (PO) -> vector of layers of PO -> vector of perimeter + std::vector layers; + // Map of PrintObjects (PO) -> vector of layers of PO -> unique_ptr to KD + // tree of all points of the given layer + + void clear() { layers.clear(); } +}; + +class SeamPlacer +{ +public: + // Number of samples generated on the mesh. There are sqr_rays_per_sample_point*sqr_rays_per_sample_point rays casted from each samples + static constexpr size_t raycasting_visibility_samples_count = 30000; + // square of number of rays per sample point + static constexpr size_t sqr_rays_per_sample_point = 5; + + // arm length used during angles computation + static constexpr float polygon_local_angles_arm_distance = 0.3f; + // snapping angle - angles larger than this value will be snapped to during seam painting + static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; + // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction + static constexpr float overhang_angle_threshold = 45.0f * float(PI) / 180.0f; + + // determines angle importance compared to visibility ( neutral value is 1.0f. ) + static constexpr float angle_importance_aligned = 0.6f; + static constexpr float angle_importance_nearest = 1.0f; // use much higher angle importance for nearest mode, to combat the visibility info noise + + // For long polygon sides, if they are close to the custom seam drawings, they are oversampled with this step size + static constexpr float enforcer_oversampling_distance = 0.2f; + + // When searching for seam clusters for alignment: + // following value describes, how much worse score can point have and still be picked into seam cluster instead of original seam point on the same layer + static constexpr float seam_align_score_tolerance = 0.3f; + // seam_align_tolerable_dist_factor - how far to search for seam from current position, final dist is seam_align_tolerable_dist_factor * flow_width + static constexpr float seam_align_tolerable_dist_factor = 4.0f; + // minimum number of seams needed in cluster to make alignment happen + static constexpr size_t seam_align_minimum_string_seams = 6; + // millimeters covered by spline; determines number of splines for the given string + static constexpr size_t seam_align_mm_per_segment = 4.0f; + + // The following data structures hold all perimeter points for all PrintObject. + std::unordered_map m_seam_per_object; + + void init(const Print &print, std::function throw_if_canceled_func); + + void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; + +private: + void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference); + void calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); + void calculate_overhangs_and_layer_embedding(const PrintObject *po); + void align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator); + std::vector> find_seam_string(const PrintObject *po, std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator) const; + std::optional> find_next_seam_in_layer(const std::vector &layers, + const Vec3f & projected_position, + const size_t layer_idx, + const float max_distance, + const SeamPlacerImpl::SeamComparator & comparator) const; +}; + +} // namespace Slic3r + #endif // libslic3r_SeamPlacer_hpp_ diff --git a/src/libslic3r/Geometry/Bicubic.hpp b/src/libslic3r/Geometry/Bicubic.hpp new file mode 100644 index 0000000000..98c6f8bb29 --- /dev/null +++ b/src/libslic3r/Geometry/Bicubic.hpp @@ -0,0 +1,291 @@ +#ifndef BICUBIC_HPP +#define BICUBIC_HPP + +#include +#include +#include + +#include + +namespace Slic3r { + +namespace Geometry { + +namespace BicubicInternal { +// Linear kernel, to be able to test cubic methods with hat kernels. +template +struct LinearKernel +{ + typedef T FloatType; + + static T a00() { + return T(0.); + } + static T a01() { + return T(0.); + } + static T a02() { + return T(0.); + } + static T a03() { + return T(0.); + } + static T a10() { + return T(1.); + } + static T a11() { + return T(-1.); + } + static T a12() { + return T(0.); + } + static T a13() { + return T(0.); + } + static T a20() { + return T(0.); + } + static T a21() { + return T(1.); + } + static T a22() { + return T(0.); + } + static T a23() { + return T(0.); + } + static T a30() { + return T(0.); + } + static T a31() { + return T(0.); + } + static T a32() { + return T(0.); + } + static T a33() { + return T(0.); + } +}; + +// Interpolation kernel aka Catmul-Rom aka Keyes kernel. +template +struct CubicCatmulRomKernel +{ + typedef T FloatType; + + static T a00() { + return 0; + } + static T a01() { + return T( -0.5); + } + static T a02() { + return T( 1.); + } + static T a03() { + return T( -0.5); + } + static T a10() { + return T( 1.); + } + static T a11() { + return 0; + } + static T a12() { + return T( -5. / 2.); + } + static T a13() { + return T( 3. / 2.); + } + static T a20() { + return 0; + } + static T a21() { + return T( 0.5); + } + static T a22() { + return T( 2.); + } + static T a23() { + return T( -3. / 2.); + } + static T a30() { + return 0; + } + static T a31() { + return 0; + } + static T a32() { + return T( -0.5); + } + static T a33() { + return T( 0.5); + } +}; + +// B-spline kernel +template +struct CubicBSplineKernel +{ + typedef T FloatType; + + static T a00() { + return T( 1. / 6.); + } + static T a01() { + return T( -3. / 6.); + } + static T a02() { + return T( 3. / 6.); + } + static T a03() { + return T( -1. / 6.); + } + static T a10() { + return T( 4. / 6.); + } + static T a11() { + return 0; + } + static T a12() { + return T( -6. / 6.); + } + static T a13() { + return T( 3. / 6.); + } + static T a20() { + return T( 1. / 6.); + } + static T a21() { + return T( 3. / 6.); + } + static T a22() { + return T( 3. / 6.); + } + static T a23() { + return T( -3. / 6.); + } + static T a30() { + return 0; + } + static T a31() { + return 0; + } + static T a32() { + return 0; + } + static T a33() { + return T( 1. / 6.); + } +}; + +template +inline T clamp(T a, T lower, T upper) + { + return (a < lower) ? lower : + (a > upper) ? upper : a; +} +} + +template +struct CubicKernelWrapper +{ + typedef typename Kernel::FloatType FloatType; + + static constexpr size_t kernel_span = 4; + + static FloatType kernel(FloatType x) + { + x = fabs(x); + if (x >= (FloatType) 2.) + return 0.0f; + if (x <= (FloatType) 1.) { + FloatType x2 = x * x; + FloatType x3 = x2 * x; + return Kernel::a10() + Kernel::a11() * x + Kernel::a12() * x2 + Kernel::a13() * x3; + } + assert(x > (FloatType )1. && x < (FloatType )2.); + x -= (FloatType) 1.; + FloatType x2 = x * x; + FloatType x3 = x2 * x; + return Kernel::a00() + Kernel::a01() * x + Kernel::a02() * x2 + Kernel::a03() * x3; + } + + static FloatType interpolate(FloatType f0, FloatType f1, FloatType f2, FloatType f3, FloatType x) + { + const FloatType x2 = x * x; + const FloatType x3 = x * x * x; + return f0 * (Kernel::a00() + Kernel::a01() * x + Kernel::a02() * x2 + Kernel::a03() * x3) + + f1 * (Kernel::a10() + Kernel::a11() * x + Kernel::a12() * x2 + Kernel::a13() * x3) + + f2 * (Kernel::a20() + Kernel::a21() * x + Kernel::a22() * x2 + Kernel::a23() * x3) + + f3 * (Kernel::a30() + Kernel::a31() * x + Kernel::a32() * x2 + Kernel::a33() * x3); + } +}; + +// Linear splines +template +using LinearKernel = CubicKernelWrapper>; + +// Catmul-Rom splines +template +using CubicCatmulRomKernel = CubicKernelWrapper>; + +// Cubic B-splines +template +using CubicBSplineKernel = CubicKernelWrapper>; + +template +static typename KernelWrapper::FloatType cubic_interpolate(const Eigen::ArrayBase &F, + const typename KernelWrapper::FloatType pt) { + typedef typename KernelWrapper::FloatType T; + const int w = int(F.size()); + const int ix = (int) floor(pt); + const T s = pt - T( ix); + + if (ix > 1 && ix + 2 < w) { + // Inside the fully interpolated region. + return KernelWrapper::interpolate(F[ix - 1], F[ix], F[ix + 1], F[ix + 2], s); + } + // Transition region. Extend with a constant function. + auto f = [&F, w](T x) { + return F[BicubicInternal::clamp(x, 0, w - 1)]; + }; + return KernelWrapper::interpolate(f(ix - 1), f(ix), f(ix + 1), f(ix + 2), s); +} + +template +static float bicubic_interpolate(const Eigen::MatrixBase &F, + const Eigen::Matrix &pt) { + typedef typename Kernel::FloatType T; + const int w = F.cols(); + const int h = F.rows(); + const int ix = (int) floor(pt[0]); + const int iy = (int) floor(pt[1]); + const T s = pt[0] - T( ix); + const T t = pt[1] - T( iy); + + if (ix > 1 && ix + 2 < w && iy > 1 && iy + 2 < h) { + // Inside the fully interpolated region. + return Kernel::interpolate( + Kernel::interpolate(F(ix - 1, iy - 1), F(ix, iy - 1), F(ix + 1, iy - 1), F(ix + 2, iy - 1), s), + Kernel::interpolate(F(ix - 1, iy), F(ix, iy), F(ix + 1, iy), F(ix + 2, iy), s), + Kernel::interpolate(F(ix - 1, iy + 1), F(ix, iy + 1), F(ix + 1, iy + 1), F(ix + 2, iy + 1), s), + Kernel::interpolate(F(ix - 1, iy + 2), F(ix, iy + 2), F(ix + 1, iy + 2), F(ix + 2, iy + 2), s), t); + } + // Transition region. Extend with a constant function. + auto f = [&F, w, h](int x, int y) { + return F(BicubicInternal::clamp(x, 0, w - 1), BicubicInternal::clamp(y, 0, h - 1)); + }; + return Kernel::interpolate( + Kernel::interpolate(f(ix - 1, iy - 1), f(ix, iy - 1), f(ix + 1, iy - 1), f(ix + 2, iy - 1), s), + Kernel::interpolate(f(ix - 1, iy), f(ix, iy), f(ix + 1, iy), f(ix + 2, iy), s), + Kernel::interpolate(f(ix - 1, iy + 1), f(ix, iy + 1), f(ix + 1, iy + 1), f(ix + 2, iy + 1), s), + Kernel::interpolate(f(ix - 1, iy + 2), f(ix, iy + 2), f(ix + 1, iy + 2), f(ix + 2, iy + 2), s), t); +} + +} //namespace Geometry + +} // namespace Slic3r + +#endif /* BICUBIC_HPP */ diff --git a/src/libslic3r/Geometry/Curves.hpp b/src/libslic3r/Geometry/Curves.hpp new file mode 100644 index 0000000000..f4a5a0067e --- /dev/null +++ b/src/libslic3r/Geometry/Curves.hpp @@ -0,0 +1,218 @@ +#ifndef SRC_LIBSLIC3R_GEOMETRY_CURVES_HPP_ +#define SRC_LIBSLIC3R_GEOMETRY_CURVES_HPP_ + +#include "libslic3r/Point.hpp" +#include "Bicubic.hpp" + +#include + +//#define LSQR_DEBUG + +namespace Slic3r { +namespace Geometry { + +template +struct PolynomialCurve { + Eigen::MatrixXf coefficients; + + Vec get_fitted_value(const NumberType& value) const { + Vec result = Vec::Zero(); + size_t order = this->coefficients.rows() - 1; + auto x = NumberType(1.); + for (size_t index = 0; index < order + 1; ++index, x *= value) + result += x * this->coefficients.col(index); + return result; + } +}; + +//https://towardsdatascience.com/least-square-polynomial-CURVES-using-c-eigen-package-c0673728bd01 +template +PolynomialCurve fit_polynomial(const std::vector> &observations, + const std::vector &observation_points, + const std::vector &weights, size_t order) { + // check to make sure inputs are correct + size_t cols = order + 1; + assert(observation_points.size() >= cols); + assert(observation_points.size() == weights.size()); + assert(observations.size() == weights.size()); + + Eigen::MatrixXf data_points(Dimension, observations.size()); + Eigen::MatrixXf T(observations.size(), cols); + for (size_t i = 0; i < weights.size(); ++i) { + auto squared_weight = sqrt(weights[i]); + data_points.col(i) = observations[i] * squared_weight; + // Populate the matrix + auto x = squared_weight; + auto c = observation_points[i]; + for (size_t j = 0; j < cols; ++j, x *= c) + T(i, j) = x; + } + + const auto QR = T.householderQr(); + Eigen::MatrixXf coefficients(Dimension, cols); + // Solve for linear least square fit + for (size_t dim = 0; dim < Dimension; ++dim) { + coefficients.row(dim) = QR.solve(data_points.row(dim).transpose()); + } + + return {std::move(coefficients)}; +} + +template +struct PiecewiseFittedCurve { + using Kernel = KernelType; + + Eigen::MatrixXf coefficients; + NumberType start; + NumberType segment_size; + size_t endpoints_level_of_freedom; + + Vec get_fitted_value(const NumberType &observation_point) const { + Vec result = Vec::Zero(); + + //find corresponding segment index; expects kernels to be centered + int middle_right_segment_index = floor((observation_point - start) / segment_size); + //find index of first segment that is affected by the point i; this can be deduced from kernel_span + int start_segment_idx = middle_right_segment_index - Kernel::kernel_span / 2 + 1; + for (int segment_index = start_segment_idx; segment_index < int(start_segment_idx + Kernel::kernel_span); + segment_index++) { + NumberType segment_start = start + segment_index * segment_size; + NumberType normalized_segment_distance = (segment_start - observation_point) / segment_size; + + int parameter_index = segment_index + endpoints_level_of_freedom; + parameter_index = std::clamp(parameter_index, 0, int(coefficients.cols()) - 1); + result += Kernel::kernel(normalized_segment_distance) * coefficients.col(parameter_index); + } + return result; + } +}; + +// observations: data to be fitted by the curve +// observation points: growing sequence of points where the observations were made. +// In other words, for function f(x) = y, observations are y0...yn, and observation points are x0...xn +// weights: how important the observation is +// segments_count: number of segments inside the valid length of the curve +// endpoints_level_of_freedom: number of additional parameters at each end; reasonable values depend on the kernel span +template +PiecewiseFittedCurve fit_curve( + const std::vector> &observations, + const std::vector &observation_points, + const std::vector &weights, + size_t segments_count, + size_t endpoints_level_of_freedom) { + + // check to make sure inputs are correct + assert(segments_count > 0); + assert(observations.size() > 0); + assert(observation_points.size() == observations.size()); + assert(observation_points.size() == weights.size()); + assert(segments_count <= observations.size()); + + //prepare sqrt of weights, which will then be applied to both matrix T and observed data: https://en.wikipedia.org/wiki/Weighted_least_squares + std::vector sqrt_weights(weights.size()); + for (size_t index = 0; index < weights.size(); ++index) { + assert(weights[index] > 0); + sqrt_weights[index] = sqrt(weights[index]); + } + + // prepare result and compute metadata + PiecewiseFittedCurve result { }; + + NumberType valid_length = observation_points.back() - observation_points.front(); + NumberType segment_size = valid_length / NumberType(segments_count); + result.start = observation_points.front(); + result.segment_size = segment_size; + result.endpoints_level_of_freedom = endpoints_level_of_freedom; + + // prepare observed data + // Eigen defaults to column major memory layout. + Eigen::MatrixXf data_points(Dimension, observations.size()); + for (size_t index = 0; index < observations.size(); ++index) { + data_points.col(index) = observations[index] * sqrt_weights[index]; + } + // parameters count is always increased by one to make the parametric space of the curve symmetric. + // without this fix, the end of the curve is less flexible than the beginning + size_t parameters_count = segments_count + 1 + 2 * endpoints_level_of_freedom; + //Create weight matrix T for each point and each segment; + Eigen::MatrixXf T(observation_points.size(), parameters_count); + T.setZero(); + //Fill the weight matrix + for (size_t i = 0; i < observation_points.size(); ++i) { + NumberType observation_point = observation_points[i]; + //find corresponding segment index; expects kernels to be centered + int middle_right_segment_index = floor((observation_point - result.start) / result.segment_size); + //find index of first segment that is affected by the point i; this can be deduced from kernel_span + int start_segment_idx = middle_right_segment_index - int(Kernel::kernel_span / 2) + 1; + for (int segment_index = start_segment_idx; segment_index < int(start_segment_idx + Kernel::kernel_span); + segment_index++) { + NumberType segment_start = result.start + segment_index * result.segment_size; + NumberType normalized_segment_distance = (segment_start - observation_point) / result.segment_size; + + int parameter_index = segment_index + endpoints_level_of_freedom; + parameter_index = std::clamp(parameter_index, 0, int(parameters_count) - 1); + T(i, parameter_index) += Kernel::kernel(normalized_segment_distance) * sqrt_weights[i]; + } + } + +#ifdef LSQR_DEBUG + std::cout << "weight matrix: " << std::endl; + for (int obs = 0; obs < observation_points.size(); ++obs) { + std::cout << std::endl; + for (int segment = 0; segment < parameters_count; ++segment) { + std::cout << T(obs, segment) << " "; + } + } + std::cout << std::endl; +#endif + + // Solve for linear least square fit + result.coefficients.resize(Dimension, parameters_count); + const auto QR = T.fullPivHouseholderQr(); + for (size_t dim = 0; dim < Dimension; ++dim) { + result.coefficients.row(dim) = QR.solve(data_points.row(dim).transpose()); + } + + return result; +} + + +template +PiecewiseFittedCurve> +fit_linear_spline( + const std::vector> &observations, + std::vector observation_points, + std::vector weights, + size_t segments_count, + size_t endpoints_level_of_freedom = 0) { + return fit_curve>(observations, observation_points, weights, segments_count, + endpoints_level_of_freedom); +} + +template +PiecewiseFittedCurve> +fit_cubic_bspline( + const std::vector> &observations, + std::vector observation_points, + std::vector weights, + size_t segments_count, + size_t endpoints_level_of_freedom = 0) { + return fit_curve>(observations, observation_points, weights, segments_count, + endpoints_level_of_freedom); +} + +template +PiecewiseFittedCurve> +fit_catmul_rom_spline( + const std::vector> &observations, + std::vector observation_points, + std::vector weights, + size_t segments_count, + size_t endpoints_level_of_freedom = 0) { + return fit_curve>(observations, observation_points, weights, segments_count, + endpoints_level_of_freedom); +} + +} +} + +#endif /* SRC_LIBSLIC3R_GEOMETRY_CURVES_HPP_ */ diff --git a/src/libslic3r/KDTreeIndirect.hpp b/src/libslic3r/KDTreeIndirect.hpp index 12e462569e..37c10827b1 100644 --- a/src/libslic3r/KDTreeIndirect.hpp +++ b/src/libslic3r/KDTreeIndirect.hpp @@ -11,224 +11,362 @@ namespace Slic3r { +enum class VisitorReturnMask : unsigned int { + CONTINUE_LEFT = 1, + CONTINUE_RIGHT = 2, + STOP = 4, +}; + // KD tree for N-dimensional closest point search. template class KDTreeIndirect { public: - static constexpr size_t NumDimensions = ANumDimensions; - using CoordinateFn = ACoordinateFn; - using CoordType = ACoordType; + static constexpr size_t NumDimensions = ANumDimensions; + using CoordinateFn = ACoordinateFn; + using CoordType = ACoordType; // Following could be static constexpr size_t, but that would not link in C++11 enum : size_t { npos = size_t(-1) }; - KDTreeIndirect(CoordinateFn coordinate) : coordinate(coordinate) {} - KDTreeIndirect(CoordinateFn coordinate, std::vector indices) : coordinate(coordinate) { this->build(std::move(indices)); } - KDTreeIndirect(CoordinateFn coordinate, std::vector &&indices) : coordinate(coordinate) { this->build(std::move(indices)); } - KDTreeIndirect(CoordinateFn coordinate, size_t num_indices) : coordinate(coordinate) { this->build(num_indices); } - KDTreeIndirect(KDTreeIndirect &&rhs) : m_nodes(std::move(rhs.m_nodes)), coordinate(std::move(rhs.coordinate)) {} - KDTreeIndirect& operator=(KDTreeIndirect &&rhs) { m_nodes = std::move(rhs.m_nodes); coordinate = std::move(rhs.coordinate); return *this; } - void clear() { m_nodes.clear(); } + KDTreeIndirect(CoordinateFn coordinate) : coordinate(coordinate) {} + KDTreeIndirect(CoordinateFn coordinate, std::vector indices) : coordinate(coordinate) { this->build(indices); } + KDTreeIndirect(CoordinateFn coordinate, size_t num_indices) : coordinate(coordinate) { this->build(num_indices); } + KDTreeIndirect(KDTreeIndirect &&rhs) : m_nodes(std::move(rhs.m_nodes)), coordinate(std::move(rhs.coordinate)) {} + KDTreeIndirect& operator=(KDTreeIndirect &&rhs) { m_nodes = std::move(rhs.m_nodes); coordinate = std::move(rhs.coordinate); return *this; } + void clear() { m_nodes.clear(); } - void build(size_t num_indices) - { - std::vector indices; - indices.reserve(num_indices); - for (size_t i = 0; i < num_indices; ++ i) - indices.emplace_back(i); - this->build(std::move(indices)); - } + void build(size_t num_indices) + { + std::vector indices; + indices.reserve(num_indices); + for (size_t i = 0; i < num_indices; ++ i) + indices.emplace_back(i); + this->build(indices); + } - void build(std::vector &&indices) - { - if (indices.empty()) - clear(); - else { - // Allocate enough memory for a full binary tree. - m_nodes.assign(next_highest_power_of_2(indices.size() + 1), npos); - build_recursive(indices, 0, 0, 0, indices.size() - 1); - } - indices.clear(); - } + void build(std::vector &indices) + { + if (indices.empty()) + clear(); + else { + // Allocate enough memory for a full binary tree. + m_nodes.assign(next_highest_power_of_2(indices.size() + 1), npos); + build_recursive(indices, 0, 0, 0, indices.size() - 1); + } + indices.clear(); + } - enum class VisitorReturnMask : unsigned int - { - CONTINUE_LEFT = 1, - CONTINUE_RIGHT = 2, - STOP = 4, - }; - template - unsigned int descent_mask(const CoordType &point_coord, const CoordType &search_radius, size_t idx, size_t dimension) const - { - CoordType dist = point_coord - this->coordinate(idx, dimension); - return (dist * dist < search_radius + CoordType(EPSILON)) ? - // The plane intersects a hypersphere centered at point_coord of search_radius. - ((unsigned int)(VisitorReturnMask::CONTINUE_LEFT) | (unsigned int)(VisitorReturnMask::CONTINUE_RIGHT)) : - // The plane does not intersect the hypersphere. - (dist > CoordType(0)) ? (unsigned int)(VisitorReturnMask::CONTINUE_RIGHT) : (unsigned int)(VisitorReturnMask::CONTINUE_LEFT); - } + template + unsigned int descent_mask(const CoordType &point_coord, const CoordType &search_radius, size_t idx, size_t dimension) const + { + CoordType dist = point_coord - this->coordinate(idx, dimension); + return (dist * dist < search_radius + CoordType(EPSILON)) ? + // The plane intersects a hypersphere centered at point_coord of search_radius. + ((unsigned int)(VisitorReturnMask::CONTINUE_LEFT) | (unsigned int)(VisitorReturnMask::CONTINUE_RIGHT)) : + // The plane does not intersect the hypersphere. + (dist > CoordType(0)) ? (unsigned int)(VisitorReturnMask::CONTINUE_RIGHT) : (unsigned int)(VisitorReturnMask::CONTINUE_LEFT); + } - // Visitor is supposed to return a bit mask of VisitorReturnMask. - template - void visit(Visitor &visitor) const - { + // Visitor is supposed to return a bit mask of VisitorReturnMask. + template + void visit(Visitor &visitor) const + { visit_recursive(0, 0, visitor); - } + } - CoordinateFn coordinate; + CoordinateFn coordinate; private: - // Build a balanced tree by splitting the input sequence by an axis aligned plane at a dimension. - void build_recursive(std::vector &input, size_t node, const size_t dimension, const size_t left, const size_t right) - { - if (left > right) - return; + // Build a balanced tree by splitting the input sequence by an axis aligned plane at a dimension. + void build_recursive(std::vector &input, size_t node, const size_t dimension, const size_t left, const size_t right) + { + if (left > right) + return; - assert(node < m_nodes.size()); + assert(node < m_nodes.size()); - if (left == right) { - // Insert a node into the balanced tree. - m_nodes[node] = input[left]; - return; - } + if (left == right) { + // Insert a node into the balanced tree. + m_nodes[node] = input[left]; + return; + } - // Partition the input to left / right pieces of the same length to produce a balanced tree. - size_t center = (left + right) / 2; - partition_input(input, dimension, left, right, center); - // Insert a node into the tree. - m_nodes[node] = input[center]; - // Build up the left / right subtrees. - size_t next_dimension = dimension; - if (++ next_dimension == NumDimensions) - next_dimension = 0; - if (center > left) - build_recursive(input, node * 2 + 1, next_dimension, left, center - 1); - build_recursive(input, node * 2 + 2, next_dimension, center + 1, right); - } + // Partition the input to left / right pieces of the same length to produce a balanced tree. + size_t center = (left + right) / 2; + partition_input(input, dimension, left, right, center); + // Insert a node into the tree. + m_nodes[node] = input[center]; + // Build up the left / right subtrees. + size_t next_dimension = dimension; + if (++ next_dimension == NumDimensions) + next_dimension = 0; + if (center > left) + build_recursive(input, node * 2 + 1, next_dimension, left, center - 1); + build_recursive(input, node * 2 + 2, next_dimension, center + 1, right); + } - // Partition the input m_nodes at "k" and "dimension" using the QuickSelect method: - // https://en.wikipedia.org/wiki/Quickselect - // Items left of the k'th item are lower than the k'th item in the "dimension", - // items right of the k'th item are higher than the k'th item in the "dimension", - void partition_input(std::vector &input, const size_t dimension, size_t left, size_t right, const size_t k) const - { - while (left < right) { - size_t center = (left + right) / 2; - CoordType pivot; - { - // Bubble sort the input[left], input[center], input[right], so that a median of the three values - // will end up in input[center]. - CoordType left_value = this->coordinate(input[left], dimension); - CoordType center_value = this->coordinate(input[center], dimension); - CoordType right_value = this->coordinate(input[right], dimension); - if (left_value > center_value) { - std::swap(input[left], input[center]); - std::swap(left_value, center_value); - } - if (left_value > right_value) { - std::swap(input[left], input[right]); - right_value = left_value; - } - if (center_value > right_value) { - std::swap(input[center], input[right]); - center_value = right_value; - } - pivot = center_value; - } - if (right <= left + 2) - // The interval is already sorted. - break; - size_t i = left; - size_t j = right - 1; - std::swap(input[center], input[j]); - // Partition the set based on the pivot. - for (;;) { - // Skip left points that are already at correct positions. - // Search will certainly stop at position (right - 1), which stores the pivot. - while (this->coordinate(input[++ i], dimension) < pivot) ; - // Skip right points that are already at correct positions. - while (this->coordinate(input[-- j], dimension) > pivot && i < j) ; - if (i >= j) - break; - std::swap(input[i], input[j]); - } - // Restore pivot to the center of the sequence. - std::swap(input[i], input[right - 1]); - // Which side the kth element is in? - if (k < i) - right = i - 1; - else if (k == i) - // Sequence is partitioned, kth element is at its place. - break; - else - left = i + 1; - } - } + // Partition the input m_nodes at "k" and "dimension" using the QuickSelect method: + // https://en.wikipedia.org/wiki/Quickselect + // Items left of the k'th item are lower than the k'th item in the "dimension", + // items right of the k'th item are higher than the k'th item in the "dimension", + void partition_input(std::vector &input, const size_t dimension, size_t left, size_t right, const size_t k) const + { + while (left < right) { + size_t center = (left + right) / 2; + CoordType pivot; + { + // Bubble sort the input[left], input[center], input[right], so that a median of the three values + // will end up in input[center]. + CoordType left_value = this->coordinate(input[left], dimension); + CoordType center_value = this->coordinate(input[center], dimension); + CoordType right_value = this->coordinate(input[right], dimension); + if (left_value > center_value) { + std::swap(input[left], input[center]); + std::swap(left_value, center_value); + } + if (left_value > right_value) { + std::swap(input[left], input[right]); + right_value = left_value; + } + if (center_value > right_value) { + std::swap(input[center], input[right]); + center_value = right_value; + } + pivot = center_value; + } + if (right <= left + 2) + // The interval is already sorted. + break; + size_t i = left; + size_t j = right - 1; + std::swap(input[center], input[j]); + // Partition the set based on the pivot. + for (;;) { + // Skip left points that are already at correct positions. + // Search will certainly stop at position (right - 1), which stores the pivot. + while (this->coordinate(input[++ i], dimension) < pivot) ; + // Skip right points that are already at correct positions. + while (this->coordinate(input[-- j], dimension) > pivot && i < j) ; + if (i >= j) + break; + std::swap(input[i], input[j]); + } + // Restore pivot to the center of the sequence. + std::swap(input[i], input[right - 1]); + // Which side the kth element is in? + if (k < i) + right = i - 1; + else if (k == i) + // Sequence is partitioned, kth element is at its place. + break; + else + left = i + 1; + } + } - template - void visit_recursive(size_t node, size_t dimension, Visitor &visitor) const - { - assert(! m_nodes.empty()); - if (node >= m_nodes.size() || m_nodes[node] == npos) - return; + template + void visit_recursive(size_t node, size_t dimension, Visitor &visitor) const + { + assert(! m_nodes.empty()); + if (node >= m_nodes.size() || m_nodes[node] == npos) + return; - // Left / right child node index. - size_t left = node * 2 + 1; - size_t right = left + 1; - unsigned int mask = visitor(m_nodes[node], dimension); - if ((mask & (unsigned int)VisitorReturnMask::STOP) == 0) { - size_t next_dimension = (++ dimension == NumDimensions) ? 0 : dimension; - if (mask & (unsigned int)VisitorReturnMask::CONTINUE_LEFT) - visit_recursive(left, next_dimension, visitor); - if (mask & (unsigned int)VisitorReturnMask::CONTINUE_RIGHT) - visit_recursive(right, next_dimension, visitor); - } - } + // Left / right child node index. + size_t left = node * 2 + 1; + size_t right = left + 1; + unsigned int mask = visitor(m_nodes[node], dimension); + if ((mask & (unsigned int)VisitorReturnMask::STOP) == 0) { + size_t next_dimension = (++ dimension == NumDimensions) ? 0 : dimension; + if (mask & (unsigned int)VisitorReturnMask::CONTINUE_LEFT) + visit_recursive(left, next_dimension, visitor); + if (mask & (unsigned int)VisitorReturnMask::CONTINUE_RIGHT) + visit_recursive(right, next_dimension, visitor); + } + } - std::vector m_nodes; + std::vector m_nodes; }; // Find a closest point using Euclidian metrics. // Returns npos if not found. -template -size_t find_closest_point(const KDTreeIndirectType &kdtree, const PointType &point, FilterFn filter) +template +std::array find_closest_points( + const KDTreeIndirect &kdtree, + const PointType &point, + FilterFn filter) { - using CoordType = typename KDTreeIndirectType::CoordType; + using Tree = KDTreeIndirect; - struct Visitor { - const KDTreeIndirectType &kdtree; - const PointType &point; - const FilterFn filter; - size_t min_idx = KDTreeIndirectType::npos; - CoordType min_dist = std::numeric_limits::max(); + struct Visitor + { + const Tree &kdtree; + const PointType &point; + const FilterFn filter; - Visitor(const KDTreeIndirectType &kdtree, const PointType &point, FilterFn filter) : kdtree(kdtree), point(point), filter(filter) {} - unsigned int operator()(size_t idx, size_t dimension) { - if (this->filter(idx)) { - auto dist = CoordType(0); - for (size_t i = 0; i < KDTreeIndirectType::NumDimensions; ++ i) { - CoordType d = point[i] - kdtree.coordinate(idx, i); - dist += d * d; - } - if (dist < min_dist) { - min_dist = dist; - min_idx = idx; - } - } - return kdtree.descent_mask(point[dimension], min_dist, idx, dimension); - } - } visitor(kdtree, point, filter); + std::array, K> results; - kdtree.visit(visitor); - return visitor.min_idx; + Visitor(const Tree &kdtree, const PointType &point, FilterFn filter) + : kdtree(kdtree), point(point), filter(filter) + { + results.fill(std::make_pair(Tree::npos, + std::numeric_limits::max())); + } + unsigned int operator()(size_t idx, size_t dimension) + { + if (this->filter(idx)) { + auto dist = CoordT(0); + for (size_t i = 0; i < D; ++i) { + CoordT d = point[i] - kdtree.coordinate(idx, i); + dist += d * d; + } + + auto res = std::make_pair(idx, dist); + auto it = std::lower_bound(results.begin(), results.end(), + res, [](auto &r1, auto &r2) { + return r1.second < r2.second; + }); + + if (it != results.end()) { + std::rotate(it, std::prev(results.end()), results.end()); + *it = res; + } + } + return kdtree.descent_mask(point[dimension], + results.front().second, idx, + dimension); + } + } visitor(kdtree, point, filter); + + kdtree.visit(visitor); + std::array ret; + for (size_t i = 0; i < K; i++) ret[i] = visitor.results[i].first; + + return ret; +} + +template +std::array find_closest_points( + const KDTreeIndirect &kdtree, const PointType &point) +{ + return find_closest_points(kdtree, point, [](size_t) { return true; }); +} + +template +size_t find_closest_point(const KDTreeIndirect &kdtree, + const PointType &point, + FilterFn filter) +{ + return find_closest_points<1>(kdtree, point, filter)[0]; } template size_t find_closest_point(const KDTreeIndirectType& kdtree, const PointType& point) { - return find_closest_point(kdtree, point, [](size_t) { return true; }); + return find_closest_point(kdtree, point, [](size_t) { return true; }); +} + +// Find nearby points (spherical neighbourhood) using Euclidian metrics. +template +std::vector find_nearby_points(const KDTreeIndirectType &kdtree, const PointType ¢er, + const typename KDTreeIndirectType::CoordType& max_distance, FilterFn filter) +{ + using CoordType = typename KDTreeIndirectType::CoordType; + + struct Visitor { + const KDTreeIndirectType &kdtree; + const PointType center; + const CoordType max_distance_squared; + const FilterFn filter; + std::vector result; + + Visitor(const KDTreeIndirectType &kdtree, const PointType& center, const CoordType &max_distance, + FilterFn filter) : + kdtree(kdtree), center(center), max_distance_squared(max_distance*max_distance), filter(filter) { + } + unsigned int operator()(size_t idx, size_t dimension) { + if (this->filter(idx)) { + auto dist = CoordType(0); + for (size_t i = 0; i < KDTreeIndirectType::NumDimensions; ++i) { + CoordType d = center[i] - kdtree.coordinate(idx, i); + dist += d * d; + } + if (dist < max_distance_squared) { + result.push_back(idx); + } + } + return kdtree.descent_mask(center[dimension], max_distance_squared, idx, dimension); + } + } visitor(kdtree, center, max_distance, filter); + + kdtree.visit(visitor); + return visitor.result; +} + +template +std::vector find_nearby_points(const KDTreeIndirectType &kdtree, const PointType ¢er, + const typename KDTreeIndirectType::CoordType& max_distance) +{ + return find_nearby_points(kdtree, center, max_distance, [](size_t) { + return true; + }); +} + +// Find nearby points (spherical neighbourhood) using Euclidian metrics. +template +std::vector find_nearby_points(const KDTreeIndirectType &kdtree, + const PointType &bb_min, + const PointType &bb_max, + FilterFn filter) +{ + struct Visitor { + const KDTreeIndirectType &kdtree; + const PointType &bb_min, &bb_max; + const FilterFn filter; + std::vector result; + + Visitor(const KDTreeIndirectType &kdtree, const PointType& bbmin, const PointType& bbmax, + FilterFn filter) : + kdtree(kdtree), bb_min{bbmin}, bb_max{bbmax}, filter(filter) { + } + unsigned int operator()(size_t idx, size_t dimension) { + unsigned int ret = + static_cast(VisitorReturnMask::CONTINUE_LEFT) | + static_cast(VisitorReturnMask::CONTINUE_RIGHT); + + if (this->filter(idx)) { + PointType p; + bool contains = true; + for (size_t i = 0; i < KDTreeIndirectType::NumDimensions; ++i) { + p(i) = kdtree.coordinate(idx, i); + contains = contains && bb_min(i) <= p(i) && p(i) <= bb_max(i); + } + + if (p(dimension) < bb_min(dimension)) + ret = static_cast(VisitorReturnMask::CONTINUE_RIGHT); + if (p(dimension) > bb_max(dimension)) + ret = static_cast(VisitorReturnMask::CONTINUE_LEFT); + + if (contains) + result.emplace_back(idx); + } + + return ret; + } + } visitor(kdtree, bb_min, bb_max, filter); + + kdtree.visit(visitor); + return visitor.result; } } // namespace Slic3r diff --git a/src/libslic3r/MultiPoint.cpp b/src/libslic3r/MultiPoint.cpp index 227f0eea3d..0076300ea6 100644 --- a/src/libslic3r/MultiPoint.cpp +++ b/src/libslic3r/MultiPoint.cpp @@ -63,6 +63,23 @@ int MultiPoint::find_point(const Point &point) const return -1; // not found } +int MultiPoint::find_point(const Point &point, double scaled_epsilon) const +{ + if (scaled_epsilon == 0) return this->find_point(point); + + auto dist2_min = std::numeric_limits::max(); + auto eps2 = scaled_epsilon * scaled_epsilon; + int idx_min = -1; + for (const Point &pt : this->points) { + double d2 = (pt - point).cast().squaredNorm(); + if (d2 < dist2_min) { + idx_min = int(&pt - &this->points.front()); + dist2_min = d2; + } + } + return dist2_min < eps2 ? idx_min : -1; +} + bool MultiPoint::has_boundary_point(const Point &point) const { double dist = (point.projection_onto(*this) - point).cast().norm(); diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index 86555c33a6..4c1f9049ed 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -43,7 +43,12 @@ public: double length() const; bool is_valid() const { return this->points.size() >= 2; } + // Return index of a polygon point exactly equal to point. + // Return -1 if no such point exists. int find_point(const Point &point) const; + // Return index of the closest point to point closer than scaled_epsilon. + // Return -1 if no such point exists. + int find_point(const Point &point, const double scaled_epsilon) const; bool has_boundary_point(const Point &point) const; int closest_point_index(const Point &point) const { int idx = -1; diff --git a/src/libslic3r/NormalUtils.cpp b/src/libslic3r/NormalUtils.cpp new file mode 100644 index 0000000000..dc94515656 --- /dev/null +++ b/src/libslic3r/NormalUtils.cpp @@ -0,0 +1,142 @@ +#include "NormalUtils.hpp" + +using namespace Slic3r; + +Vec3f NormalUtils::create_triangle_normal( + const stl_triangle_vertex_indices &indices, + const std::vector & vertices) +{ + const stl_vertex &v0 = vertices[indices[0]]; + const stl_vertex &v1 = vertices[indices[1]]; + const stl_vertex &v2 = vertices[indices[2]]; + Vec3f direction = (v1 - v0).cross(v2 - v0); + direction.normalize(); + return direction; +} + +std::vector NormalUtils::create_triangle_normals( + const indexed_triangle_set &its) +{ + std::vector normals; + normals.reserve(its.indices.size()); + for (const Vec3crd &index : its.indices) { + normals.push_back(create_triangle_normal(index, its.vertices)); + } + return normals; +} + +NormalUtils::Normals NormalUtils::create_normals_average_neighbor( + const indexed_triangle_set &its) +{ + size_t count_vertices = its.vertices.size(); + std::vector normals(count_vertices, Vec3f(.0f, .0f, .0f)); + std::vector count(count_vertices, 0); + for (const Vec3crd &indice : its.indices) { + Vec3f normal = create_triangle_normal(indice, its.vertices); + for (int i = 0; i < 3; ++i) { + normals[indice[i]] += normal; + ++count[indice[i]]; + } + } + // normalize to size 1 + for (auto &normal : normals) { + size_t index = &normal - &normals.front(); + normal /= static_cast(count[index]); + } + return normals; +} + +// calc triangle angle of vertex defined by index to triangle indices +float NormalUtils::indice_angle(int i, + const Vec3crd & indice, + const std::vector &vertices) +{ + int i1 = (i == 0) ? 2 : (i - 1); + int i2 = (i == 2) ? 0 : (i + 1); + + Vec3f v1 = vertices[i1] - vertices[i]; + Vec3f v2 = vertices[i2] - vertices[i]; + + v1.normalize(); + v2.normalize(); + + float w = v1.dot(v2); + if (w > 1.f) + w = 1.f; + else if (w < -1.f) + w = -1.f; + return acos(w); +} + +NormalUtils::Normals NormalUtils::create_normals_angle_weighted( + const indexed_triangle_set &its) +{ + size_t count_vertices = its.vertices.size(); + std::vector normals(count_vertices, Vec3f(.0f, .0f, .0f)); + std::vector count(count_vertices, 0.f); + for (const Vec3crd &indice : its.indices) { + Vec3f normal = create_triangle_normal(indice, its.vertices); + Vec3f angles(indice_angle(0, indice, its.vertices), + indice_angle(1, indice, its.vertices), 0.f); + angles[2] = (M_PI - angles[0] - angles[1]); + for (int i = 0; i < 3; ++i) { + const float &weight = angles[i]; + normals[indice[i]] += normal * weight; + count[indice[i]] += weight; + } + } + // normalize to size 1 + for (auto &normal : normals) { + size_t index = &normal - &normals.front(); + normal /= count[index]; + } + return normals; +} + +NormalUtils::Normals NormalUtils::create_normals_nelson_weighted( + const indexed_triangle_set &its) +{ + size_t count_vertices = its.vertices.size(); + std::vector normals(count_vertices, Vec3f(.0f, .0f, .0f)); + std::vector count(count_vertices, 0.f); + const std::vector &vertices = its.vertices; + for (const Vec3crd &indice : its.indices) { + Vec3f normal = create_triangle_normal(indice, vertices); + + const stl_vertex &v0 = vertices[indice[0]]; + const stl_vertex &v1 = vertices[indice[1]]; + const stl_vertex &v2 = vertices[indice[2]]; + + float e0 = (v0 - v1).norm(); + float e1 = (v1 - v2).norm(); + float e2 = (v2 - v0).norm(); + + Vec3f coefs(e0 * e2, e0 * e1, e1 * e2); + for (int i = 0; i < 3; ++i) { + const float &weight = coefs[i]; + normals[indice[i]] += normal * weight; + count[indice[i]] += weight; + } + } + // normalize to size 1 + for (auto &normal : normals) { + size_t index = &normal - &normals.front(); + normal /= count[index]; + } + return normals; +} + +// calculate normals by averaging normals of neghbor triangles +std::vector NormalUtils::create_normals( + const indexed_triangle_set &its, VertexNormalType type) +{ + switch (type) { + case VertexNormalType::AverageNeighbor: + return create_normals_average_neighbor(its); + case VertexNormalType::AngleWeighted: + return create_normals_angle_weighted(its); + case VertexNormalType::NelsonMaxWeighted: + default: + return create_normals_nelson_weighted(its); + } +} diff --git a/src/libslic3r/NormalUtils.hpp b/src/libslic3r/NormalUtils.hpp new file mode 100644 index 0000000000..60ec57f724 --- /dev/null +++ b/src/libslic3r/NormalUtils.hpp @@ -0,0 +1,69 @@ +#ifndef slic3r_NormalUtils_hpp_ +#define slic3r_NormalUtils_hpp_ + +#include "Point.hpp" +#include "Model.hpp" + +namespace Slic3r { + +/// +/// Collection of static function +/// to create normals +/// +class NormalUtils +{ +public: + using Normal = Vec3f; + using Normals = std::vector; + NormalUtils() = delete; // only static functions + + enum class VertexNormalType { + AverageNeighbor, + AngleWeighted, + NelsonMaxWeighted + }; + + /// + /// Create normal for triangle defined by indices from vertices + /// + /// index into vertices + /// vector of vertices + /// normal to triangle(normalized to size 1) + static Normal create_triangle_normal( + const stl_triangle_vertex_indices &indices, + const std::vector & vertices); + + /// + /// Create normals for each vertices + /// + /// indices and vertices + /// Vector of normals + static Normals create_triangle_normals(const indexed_triangle_set &its); + + /// + /// Create normals for each vertex by averaging neighbor triangles normal + /// + /// Triangle indices and vertices + /// Type of calculation normals + /// Normal for each vertex + static Normals create_normals( + const indexed_triangle_set &its, + VertexNormalType type = VertexNormalType::NelsonMaxWeighted); + static Normals create_normals_average_neighbor(const indexed_triangle_set &its); + static Normals create_normals_angle_weighted(const indexed_triangle_set &its); + static Normals create_normals_nelson_weighted(const indexed_triangle_set &its); + + /// + /// Calculate angle of trinagle side. + /// + /// index to indices, define angle point + /// address to vertices + /// vertices data + /// Angle [in radian] + static float indice_angle(int i, + const Vec3crd & indice, + const std::vector &vertices); +}; + +} // namespace Slic3r +#endif // slic3r_NormalUtils_hpp_ diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index ca11357bb4..78b064e24f 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -517,6 +517,28 @@ bool remove_degenerate(Polylines &polylines) return modified; } +std::pair foot_pt(const Points &polyline, const Point &pt) +{ + if (polyline.size() < 2) return std::make_pair(-1, Point(0, 0)); + + auto d2_min = std::numeric_limits::max(); + Point foot_pt_min; + Point prev = polyline.front(); + auto it = polyline.begin(); + auto it_proj = polyline.begin(); + for (++it; it != polyline.end(); ++it) { + Point foot_pt = pt.projection_onto(Line(prev, *it)); + double d2 = (foot_pt - pt).cast().squaredNorm(); + if (d2 < d2_min) { + d2_min = d2; + foot_pt_min = foot_pt; + it_proj = it; + } + prev = *it; + } + return std::make_pair(int(it_proj - polyline.begin()) - 1, foot_pt_min); +} + ThickLines ThickPolyline::thicklines() const { ThickLines lines; diff --git a/src/libslic3r/Polyline.hpp b/src/libslic3r/Polyline.hpp index d97801ac63..45361f68e2 100644 --- a/src/libslic3r/Polyline.hpp +++ b/src/libslic3r/Polyline.hpp @@ -222,6 +222,9 @@ const Point& leftmost_point(const Polylines &polylines); bool remove_degenerate(Polylines &polylines); +// Returns index of a segment of a polyline and foot point of pt on polyline. +std::pair foot_pt(const Points &polyline, const Point &pt); + class ThickPolyline : public Polyline { public: ThickPolyline() : endpoints(std::make_pair(false, false)) {} diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp new file mode 100644 index 0000000000..b36278c37f --- /dev/null +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -0,0 +1,183 @@ +#include "ShortEdgeCollapse.hpp" +#include "libslic3r/NormalUtils.hpp" + +#include +#include +#include +#include + +namespace Slic3r { + +void its_short_edge_collpase(indexed_triangle_set &mesh, size_t target_triangle_count) { + // whenever vertex is removed, its mapping is update to the index of vertex with wich it merged + std::vector vertices_index_mapping(mesh.vertices.size()); + for (size_t idx = 0; idx < vertices_index_mapping.size(); ++idx) { + vertices_index_mapping[idx] = idx; + } + // Algorithm uses get_final_index query to get the actual vertex index. The query also updates all mappings on the way, essentially flattening the mapping + std::vector flatten_queue; + auto get_final_index = [&vertices_index_mapping, &flatten_queue](const size_t &orig_index) { + flatten_queue.clear(); + size_t idx = orig_index; + while (vertices_index_mapping[idx] != idx) { + flatten_queue.push_back(idx); + idx = vertices_index_mapping[idx]; + } + for (size_t i : flatten_queue) { + vertices_index_mapping[i] = idx; + } + return idx; + + }; + + // if face is removed, mark it here + std::vector face_removal_flags(mesh.indices.size(), false); + + std::vector triangles_neighbors = its_face_neighbors_par(mesh); + + // now compute vertices dot product - this is used during edge collapse, + // to determine which vertex to remove and which to keep; We try to keep the one with larger angle, because it defines the shape "more". + // The min vertex dot product is lowest dot product of its normal with the normals of faces around it. + // the lower the dot product, the more we want to keep the vertex + // NOTE: This score is not updated, even though the decimation does change the mesh. It saves computation time, and there are no strong reasons to update. + std::vector min_vertex_dot_product(mesh.vertices.size(), 1); + { + std::vector face_normals = its_face_normals(mesh); + std::vector vertex_normals = NormalUtils::create_normals(mesh); + + for (size_t face_idx = 0; face_idx < mesh.indices.size(); ++face_idx) { + Vec3i t = mesh.indices[face_idx]; + Vec3f n = face_normals[face_idx]; + min_vertex_dot_product[t[0]] = std::min(min_vertex_dot_product[t[0]], n.dot(vertex_normals[t[0]])); + min_vertex_dot_product[t[1]] = std::min(min_vertex_dot_product[t[1]], n.dot(vertex_normals[t[1]])); + min_vertex_dot_product[t[2]] = std::min(min_vertex_dot_product[t[2]], n.dot(vertex_normals[t[2]])); + } + } + + // lambda to remove face. It flags the face as removed, and updates neighbourhood info + auto remove_face = [&triangles_neighbors, &face_removal_flags](int face_idx, int other_face_idx) { + if (face_idx < 0) { + return; + } + face_removal_flags[face_idx] = true; + Vec3i neighbors = triangles_neighbors[face_idx]; + int n_a = neighbors[0] != other_face_idx ? neighbors[0] : neighbors[1]; + int n_b = neighbors[2] != other_face_idx ? neighbors[2] : neighbors[1]; + if (n_a > 0) + for (int &n : triangles_neighbors[n_a]) { + if (n == face_idx) { + n = n_b; + break; + } + } + if (n_b > 0) + for (int &n : triangles_neighbors[n_b]) { + if (n == face_idx) { + n = n_a; + break; + } + } + }; + + std::mt19937_64 generator { 27644437 };// default constant seed! so that results are deterministic + std::vector face_indices(mesh.indices.size()); + for (size_t idx = 0; idx < face_indices.size(); ++idx) { + face_indices[idx] = idx; + } + //tmp face indices used only for swapping + std::vector tmp_face_indices(mesh.indices.size()); + + float decimation_ratio = 1.0f; // decimation ratio updated in each iteration. it is number of removed triangles / number of all + float edge_len = 0.2f; // Allowed collapsible edge size. Starts low, but is gradually increased + + while (face_indices.size() > target_triangle_count) { + // simpple func to increase the edge len - if decimation ratio is low, it increases the len up to twice, if decimation ratio is high, increments are low + edge_len = edge_len * (1.0f + 1.0 - decimation_ratio); + float max_edge_len_squared = edge_len * edge_len; + + //shuffle the faces and traverse in random order, this MASSIVELY improves the quality of the result + std::shuffle(face_indices.begin(), face_indices.end(), generator); + + for (const size_t &face_idx : face_indices) { + if (face_removal_flags[face_idx]) { + // if face already removed from previous collapses, skip (each collapse removes two triangles [at least] ) + continue; + } + + // look at each edge if it is good candidate for collapse + for (size_t edge_idx = 0; edge_idx < 3; ++edge_idx) { + size_t vertex_index_keep = get_final_index(mesh.indices[face_idx][edge_idx]); + size_t vertex_index_remove = get_final_index(mesh.indices[face_idx][(edge_idx + 1) % 3]); + //check distance, skip long edges + if ((mesh.vertices[vertex_index_keep] - mesh.vertices[vertex_index_remove]).squaredNorm() + > max_edge_len_squared) { + continue; + } + // swap indexes if vertex_index_keep has higher dot product (we want to keep low dot product vertices) + if (min_vertex_dot_product[vertex_index_remove] < min_vertex_dot_product[vertex_index_keep]) { + size_t tmp = vertex_index_keep; + vertex_index_keep = vertex_index_remove; + vertex_index_remove = tmp; + } + + //remove vertex + { + // map its index to the index of the kept vertex + vertices_index_mapping[vertex_index_remove] = vertices_index_mapping[vertex_index_keep]; + } + + int neighbor_to_remove_face_idx = triangles_neighbors[face_idx][edge_idx]; + // remove faces + remove_face(face_idx, neighbor_to_remove_face_idx); + remove_face(neighbor_to_remove_face_idx, face_idx); + + // break. this triangle is done + break; + } + } + + // filter face_indices, remove those that have been collapsed + size_t prev_size = face_indices.size(); + tmp_face_indices.clear(); + for (size_t face_idx : face_indices) { + if (!face_removal_flags[face_idx]){ + tmp_face_indices.push_back(face_idx); + } + } + face_indices.swap(tmp_face_indices); + + decimation_ratio = float(prev_size - face_indices.size()) / float(prev_size); + //std::cout << " DECIMATION RATIO: " << decimation_ratio << std::endl; + } + + //Extract the result mesh + std::unordered_map final_vertices_mapping; + std::vector final_vertices; + std::vector final_indices; + final_indices.reserve(face_indices.size()); + for (size_t idx : face_indices) { + Vec3i final_face; + for (size_t i = 0; i < 3; ++i) { + final_face[i] = get_final_index(mesh.indices[idx][i]); + } + if (final_face[0] == final_face[1] || final_face[1] == final_face[2] || final_face[2] == final_face[0]) { + continue; // discard degenerate triangles + } + + for (size_t i = 0; i < 3; ++i) { + if (final_vertices_mapping.find(final_face[i]) == final_vertices_mapping.end()) { + final_vertices_mapping[final_face[i]] = final_vertices.size(); + final_vertices.push_back(mesh.vertices[final_face[i]]); + } + final_face[i] = final_vertices_mapping[final_face[i]]; + } + + final_indices.push_back(final_face); + } + + mesh.vertices = final_vertices; + mesh.indices = final_indices; +} + +} //namespace Slic3r + diff --git a/src/libslic3r/ShortEdgeCollapse.hpp b/src/libslic3r/ShortEdgeCollapse.hpp new file mode 100644 index 0000000000..e6f1822c89 --- /dev/null +++ b/src/libslic3r/ShortEdgeCollapse.hpp @@ -0,0 +1,16 @@ +#ifndef SRC_LIBSLIC3R_SHORTEDGECOLLAPSE_HPP_ +#define SRC_LIBSLIC3R_SHORTEDGECOLLAPSE_HPP_ + +#include "libslic3r/TriangleMesh.hpp" + +namespace Slic3r{ + +// Decimates the model by collapsing short edges. It starts with very small edges and gradually increases the collapsible length, +// until the target triangle count is reached (the algorithm will certainly undershoot the target count, result will have less triangles than target count) +// The algorithm does not check for triangle flipping, disconnections, self intersections or any other degeneration that can appear during mesh processing. +void its_short_edge_collpase(indexed_triangle_set &mesh, size_t target_triangle_count); + +} + + +#endif /* SRC_LIBSLIC3R_SHORTEDGECOLLAPSE_HPP_ */ diff --git a/src/libslic3r/TriangleSetSampling.cpp b/src/libslic3r/TriangleSetSampling.cpp new file mode 100644 index 0000000000..bb03ff6d75 --- /dev/null +++ b/src/libslic3r/TriangleSetSampling.cpp @@ -0,0 +1,71 @@ +#include "TriangleSetSampling.hpp" +#include +#include +#include +#include + +namespace Slic3r { + +TriangleSetSamples sample_its_uniform_parallel(size_t samples_count, const indexed_triangle_set &triangle_set) { + std::vector triangles_area(triangle_set.indices.size()); + + tbb::parallel_for(tbb::blocked_range(0, triangle_set.indices.size()), + [&triangle_set, &triangles_area]( + tbb::blocked_range r) { + for (size_t t_idx = r.begin(); t_idx < r.end(); ++t_idx) { + const Vec3f &a = triangle_set.vertices[triangle_set.indices[t_idx].x()]; + const Vec3f &b = triangle_set.vertices[triangle_set.indices[t_idx].y()]; + const Vec3f &c = triangle_set.vertices[triangle_set.indices[t_idx].z()]; + double area = double(0.5 * (b - a).cross(c - a).norm()); + triangles_area[t_idx] = area; + } + }); + + std::map area_sum_to_triangle_idx; + float area_sum = 0; + for (size_t t_idx = 0; t_idx < triangles_area.size(); ++t_idx) { + area_sum += triangles_area[t_idx]; + area_sum_to_triangle_idx[area_sum] = t_idx; + } + + std::mt19937_64 mersenne_engine { 27644437 }; + // random numbers on interval [0, 1) + std::uniform_real_distribution fdistribution; + + auto get_random = [&fdistribution, &mersenne_engine]() { + return Vec3d { fdistribution(mersenne_engine), fdistribution(mersenne_engine), fdistribution(mersenne_engine) }; + }; + + std::vector random_samples(samples_count); + std::generate(random_samples.begin(), random_samples.end(), get_random); + + TriangleSetSamples result; + result.total_area = area_sum; + result.positions.resize(samples_count); + result.normals.resize(samples_count); + result.triangle_indices.resize(samples_count); + + tbb::parallel_for(tbb::blocked_range(0, samples_count), + [&triangle_set, &area_sum_to_triangle_idx, &area_sum, &random_samples, &result]( + tbb::blocked_range r) { + for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { + double t_sample = random_samples[s_idx].x() * area_sum; + size_t t_idx = area_sum_to_triangle_idx.upper_bound(t_sample)->second; + + double sq_u = std::sqrt(random_samples[s_idx].y()); + double v = random_samples[s_idx].z(); + + Vec3f A = triangle_set.vertices[triangle_set.indices[t_idx].x()]; + Vec3f B = triangle_set.vertices[triangle_set.indices[t_idx].y()]; + Vec3f C = triangle_set.vertices[triangle_set.indices[t_idx].z()]; + + result.positions[s_idx] = A * (1 - sq_u) + B * (sq_u * (1 - v)) + C * (v * sq_u); + result.normals[s_idx] = ((B - A).cross(C - B)).normalized(); + result.triangle_indices[s_idx] = t_idx; + } + }); + + return result; +} + +} diff --git a/src/libslic3r/TriangleSetSampling.hpp b/src/libslic3r/TriangleSetSampling.hpp new file mode 100644 index 0000000000..28a661d76f --- /dev/null +++ b/src/libslic3r/TriangleSetSampling.hpp @@ -0,0 +1,20 @@ +#ifndef SRC_LIBSLIC3R_TRIANGLESETSAMPLING_HPP_ +#define SRC_LIBSLIC3R_TRIANGLESETSAMPLING_HPP_ + +#include +#include "libslic3r/Point.hpp" + +namespace Slic3r { + +struct TriangleSetSamples { + float total_area; + std::vector positions; + std::vector normals; + std::vector triangle_indices; +}; + +TriangleSetSamples sample_its_uniform_parallel(size_t samples_count, const indexed_triangle_set &triangle_set); + +} + +#endif /* SRC_LIBSLIC3R_TRIANGLESETSAMPLING_HPP_ */ diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 63b0422907..44d5de1305 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -24,6 +24,13 @@ #include #include +#ifdef _WIN32 +// On MSVC, std::deque degenerates to a list of pointers, which defeats its purpose of reducing allocator load and memory fragmentation. +// https://github.com/microsoft/STL/issues/147#issuecomment-1090148740 +// Thus it is recommended to use boost::container::deque instead. +#include +#endif // _WIN32 + #include "Technologies.hpp" #include "Semver.hpp" @@ -96,6 +103,16 @@ namespace Slic3r { extern Semver SEMVER; +// On MSVC, std::deque degenerates to a list of pointers, which defeats its purpose of reducing allocator load and memory fragmentation. +template> +using deque = +#ifdef _WIN32 + // Use boost implementation, which allocates blocks of 512 bytes instead of blocks of 8 bytes. + boost::container::deque; +#else // _WIN32 + std::deque; +#endif // _WIN32 + template inline T unscale(Q v) { return T(v) * T(SCALING_FACTOR); } @@ -341,6 +358,12 @@ public: inline bool empty() const { return size() == 0; } }; +template> +constexpr T NaN = std::numeric_limits::quiet_NaN(); + +constexpr float NaNf = NaN; +constexpr double NaNd = NaN; + } // namespace Slic3r #endif From 54012ba11b0058270a85cc0c52af5963761e5a01 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 18 Aug 2022 16:00:03 +0800 Subject: [PATCH 021/137] FIX: the text shape is affected by instance transformation Change-Id: If2222a24056bbc1636b5da586e6cc1950d8cdb5a (cherry picked from commit 996d013c2e7f1bdbdc4afbac540f99a20b063cca) --- src/slic3r/GUI/GUI_ObjectList.cpp | 50 +++++++++++++++++-------------- src/slic3r/GUI/GUI_ObjectList.hpp | 3 ++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 8c9a42b80c..1bb9ca0052 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1962,28 +1962,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode wxGetApp().plater()->canvas3D()->update_instance_printable_state_for_object((size_t)obj_idx); // apply the instance transform to all volumes and reset instance transform except the offset - { - const Geometry::Transformation &instance_transformation = model_object.instances[0]->get_transformation(); - Vec3d original_instance_center = instance_transformation.get_offset(); - - const Transform3d &transformation_matrix = instance_transformation.get_matrix(); - for (ModelVolume *volume : model_object.volumes) { - const Transform3d &volume_matrix = volume->get_matrix(); - Transform3d new_matrix = transformation_matrix * volume_matrix; - volume->set_transformation(new_matrix); - } - model_object.instances[0]->set_transformation(Geometry::Transformation()); - - model_object.ensure_on_bed(); - // keep new instance center the same as the original center - model_object.translate(-original_instance_center); - model_object.origin_translation += original_instance_center; - model_object.translate_instances(model_object.origin_translation); - model_object.origin_translation = Vec3d::Zero(); - - // update the cache data in selection to keep the data of ModelVolume and GLVolume are consistent - wxGetApp().plater()->update(); - } + apply_object_instance_transfrom_to_all_volumes(&model_object); selection_changed(); @@ -2086,6 +2065,10 @@ void ObjectList::load_mesh_part(const TriangleMesh& mesh, const wxString& name, take_snapshot("Load Mesh Part"); ModelObject* mo = (*m_objects)[obj_idx]; + + // apply the instance transform to all volumes and reset instance transform except the offset + apply_object_instance_transfrom_to_all_volumes(mo); + ModelVolume* mv = mo->add_volume(mesh); mv->name = name.ToStdString(); @@ -5045,5 +5028,28 @@ bool ObjectList::has_paint_on_segmentation() return m_objects_model->HasInfoItem(InfoItemType::MmuSegmentation); } +void ObjectList::apply_object_instance_transfrom_to_all_volumes(ModelObject *model_object) { + const Geometry::Transformation &instance_transformation = model_object->instances[0]->get_transformation(); + Vec3d original_instance_center = instance_transformation.get_offset(); + + const Transform3d &transformation_matrix = instance_transformation.get_matrix(); + for (ModelVolume *volume : model_object->volumes) { + const Transform3d &volume_matrix = volume->get_matrix(); + Transform3d new_matrix = transformation_matrix * volume_matrix; + volume->set_transformation(new_matrix); + } + model_object->instances[0]->set_transformation(Geometry::Transformation()); + + model_object->ensure_on_bed(); + // keep new instance center the same as the original center + model_object->translate(-original_instance_center); + model_object->origin_translation += original_instance_center; + model_object->translate_instances(model_object->origin_translation); + model_object->origin_translation = Vec3d::Zero(); + + // update the cache data in selection to keep the data of ModelVolume and GLVolume are consistent + wxGetApp().plater()->update(); +} + } //namespace GUI } //namespace Slic3r diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index f57c8fc29e..0192983ff7 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -452,6 +452,9 @@ private: void OnEditingStarted(wxDataViewEvent &event); void OnEditingDone(wxDataViewEvent &event); + // apply the instance transform to all volumes and reset instance transform except the offset + void apply_object_instance_transfrom_to_all_volumes(ModelObject *model_object); + std::vector m_columns_width; }; From 4ef43af2dd5bc4d7c3a5651315f47daca55816c0 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 15 Aug 2022 17:44:49 +0800 Subject: [PATCH 022/137] ENH: popup different warning message for unsupported sharp tails 1. unsupported sharp tails and large overhang have different messages 2. do not popup warning for total area (only warning for one single large overhang) Change-Id: I153e559915a92c6676468539cf619dafe915f997 (cherry picked from commit 67b593150f8de847d9b1999bf0d7a549eb1ef154) --- src/libslic3r/Print.hpp | 8 +++++++- src/libslic3r/PrintObject.cpp | 35 +++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index b07b6719e6..3007eef292 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -49,6 +49,12 @@ struct groupedVolumeSlices ExPolygons slices; }; +enum SupportNecessaryType { + NoNeedSupp=0, + SharpTail, + LargeOverhang, +}; + namespace FillAdaptive { struct Octree; struct OctreeDeleter; @@ -457,7 +463,7 @@ private: std::pair prepare_adaptive_infill_data(); // BBS - bool is_support_necessary(); + SupportNecessaryType is_support_necessary(); // XYZ in scaled coordinates Vec3crd m_size; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 5119157366..d6d47f5c7e 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -419,11 +419,17 @@ void PrintObject::generate_support_material() m_print->throw_if_canceled(); } else { // BBS: pop a warning if objects have significant amount of overhangs but support material is not enabled - if (this->is_support_necessary()) { + SupportNecessaryType sntype = this->is_support_necessary(); + if (sntype != NoNeedSupp) { m_print->set_status(50, L("Checking support necessity")); - - std::string warning_message = format(L("It seems object %s needs support to print. Please enable support generation."), this->model_object()->name); - this->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning_message, PrintStateBase::SlicingNeedSupportOn); + if (sntype == SharpTail) { + std::string warning_message = format(L("It seems object %s has completely floating regions. Please re-orient the object or enable support generation."), + this->model_object()->name); + this->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning_message, PrintStateBase::SlicingNeedSupportOn); + } else { + std::string warning_message = format(L("It seems object %s has large overhangs. Please enable support generation."), this->model_object()->name); + this->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning_message, PrintStateBase::SlicingNeedSupportOn); + } } #if 0 @@ -2447,7 +2453,7 @@ template void PrintObject::remove_bridges_from_contacts( float max_bridge_length, bool break_bridge); -bool PrintObject::is_support_necessary() +SupportNecessaryType PrintObject::is_support_necessary() { static const double super_overhang_area_threshold = SQ(scale_(5.0)); @@ -2470,7 +2476,7 @@ bool PrintObject::is_support_necessary() for (const ExPolygon& expoly : layerm->raw_slices) { // detect sharp tail if (intersection_ex({ expoly }, lower_layer_offseted).empty()) - return true; + return SharpTail; } } @@ -2502,18 +2508,19 @@ bool PrintObject::is_support_necessary() double super_overhang_area = 0.0; for (Polygon& poly : super_overhang_polys) { bool is_ccw = poly.is_counter_clockwise(); + double area_ = poly.area(); if (is_ccw) { - if (super_overhang_area > super_overhang_area_threshold) - return true; - super_overhang_area = poly.area(); + if (area_ > super_overhang_area_threshold) + return LargeOverhang; + super_overhang_area += area_; } else { - super_overhang_area -= poly.area(); + super_overhang_area -= area_; } } - if (super_overhang_area > super_overhang_area_threshold) - return true; + //if (super_overhang_area > super_overhang_area_threshold) + // return LargeOverhang; // 3. check overhang distance const double distance_threshold_scaled = extrusion_width_scaled * 2; @@ -2528,10 +2535,10 @@ bool PrintObject::is_support_necessary() }), exceed_overhang.end()); if (!exceed_overhang.empty()) - return true; + return LargeOverhang; } - return false; + return NoNeedSupp; } static void project_triangles_to_slabs(ConstLayerPtrsAdaptor layers, const indexed_triangle_set &custom_facets, const Transform3f &tr, bool seam, std::vector &out) From 79814a766248ef7fd805b196fec7ef2195517a52 Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Wed, 17 Aug 2022 16:29:47 +0800 Subject: [PATCH 023/137] ENH: support default filament for volumes Signed-off-by: yifan.wu Change-Id: I51cfb0e3a40578f94c6d20e85c12cda2b6bb2e74 --- src/slic3r/GUI/ExtraRenderers.cpp | 7 ++- src/slic3r/GUI/GUI_Factories.cpp | 4 +- src/slic3r/GUI/GUI_ObjectList.cpp | 21 ++++--- src/slic3r/GUI/GUI_ObjectList.hpp | 3 + src/slic3r/GUI/ObjectDataViewModel.cpp | 43 +++++++------ src/slic3r/GUI/ObjectDataViewModel.hpp | 2 +- src/slic3r/GUI/wxExtensions.cpp | 85 ++++++++++++++++---------- src/slic3r/GUI/wxExtensions.hpp | 3 + 8 files changed, 106 insertions(+), 62 deletions(-) diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 4931a71ea2..fd5206ddc3 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -313,11 +313,16 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR labelRect.GetTopLeft(), wxSize(labelRect.GetWidth(), -1), 0, nullptr, wxCB_READONLY | CB_NO_DROP_ICON | CB_NO_TEXT); c_editor->GetDropDown().SetUseContentWidth(true); + // BBS + int def_id = get_default_extruder_idx ? get_default_extruder_idx() : 0; + wxBitmap* default_icon = get_extruder_color_icon(def_id, true); + if (is_volume_selected()) + c_editor->Append("default", *default_icon); for (size_t i = 0; i < icons.size(); i++) c_editor->Append(wxString::Format("%d", i+1), *icons[i]); - c_editor->SetSelection(atoi(data.GetText().c_str()) - 1); + c_editor->SetSelection(atoi(data.GetText().c_str())); #ifdef __linux__ diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 9935afc1ef..30b6da13f7 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -689,7 +689,9 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) initial_extruder = config.has("extruder") ? config.extruder() : 1; } - for (int i = 0; i <= filaments_cnt; i++) + ItemType sel_type = obj_list()->get_item_type(sels[0]); + int i = (sel_type & ItemType::itVolume) ? 0 : 1; + for (; i < filaments_cnt; i++) { bool is_active_extruder = i == initial_extruder; int icon_idx = i == 0 ? 0 : i - 1; diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 1bb9ca0052..dbed51e3b7 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -587,6 +587,11 @@ ModelConfig& ObjectList::get_item_config(const wxDataViewItem& item) const (*m_objects)[obj_idx]->config; } +ItemType ObjectList::get_item_type(const wxDataViewItem& item) const +{ + return m_objects_model->GetItemType(item); +} + void ObjectList::update_filament_values_for_items(const size_t filaments_count) { for (size_t i = 0; i < m_objects->size(); ++i) @@ -1364,7 +1369,7 @@ void ObjectList::key_event(wxKeyEvent& event) //else if (event.GetUnicodeKey() == 'p') // toggle_printable_state(); else if (filaments_count() > 1) { - std::vector numbers = { '1', '2', '3', '4', '5', '6', '7', '8', '9' }; + std::vector numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; wxChar key_char = event.GetUnicodeKey(); if (std::find(numbers.begin(), numbers.end(), key_char) != numbers.end()) { long extruder_number; @@ -1841,8 +1846,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo ModelVolume* new_volume = model_object.add_volume(std::move(mesh), type); new_volume->name = boost::filesystem::path(input_file).filename().string(); // set a default extruder value, since user can't add it manually - // BBS - new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); + new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); // update source data new_volume->source.input_file = input_file; new_volume->source.object_idx = obj_idx; @@ -1944,8 +1948,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode const wxString name = _L("Generic") + "-" + _(type_name); new_volume->name = into_u8(name); // set a default extruder value, since user can't add it manually - // BBS - new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); + new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); new_volume->source.is_from_builtin_objects = true; select_item([this, obj_idx, new_volume]() { @@ -4718,7 +4721,7 @@ void ObjectList::ItemValueChanged(wxDataViewEvent &event) else if (event.GetColumn() == colFilament) { wxDataViewItem item = event.GetItem(); if (m_objects_model->GetItemType(item) == itObject) - m_objects_model->UpdateVolumesExtruderBitmap(item, true); + m_objects_model->UpdateVolumesExtruderBitmap(item); update_filament_in_config(item); } } @@ -4798,13 +4801,17 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) wxDataViewItem item = (sel_item_type & itInstance) ? m_objects_model->GetObject(item) : sel_item; ItemType type = m_objects_model->GetItemType(item); + // ignore extruder 0 for object + if ((sel_item_type & (itObject | itInstance)) && extruder == 0) + continue; + ModelConfig& config = get_item_config(item); if (config.has("extruder")) config.set("extruder", extruder); else config.set_key_value("extruder", new ConfigOptionInt(extruder)); - // for object, clear all its volume's extruder config + // BBS: for object, clear all its volume's extruder config if (type & itObject) { ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); for (ModelVolume* mv : node->m_model_object->volumes) { diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 0192983ff7..59a8db69a7 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -311,6 +311,9 @@ public: int get_selected_obj_idx() const; ModelConfig& get_item_config(const wxDataViewItem& item) const; + // BBS + ItemType get_item_type(const wxDataViewItem& item) const; + void changed_object(const int obj_idx = -1) const; void part_selection_changed(); diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 73e2847898..6080e303fd 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -343,11 +343,16 @@ void ObjectDataViewModelNode::UpdateExtruderAndColorIcon(wxString extruder /*= " m_extruder = extruder; // update extruder // update color icon + bool as_default = false; size_t extruder_idx = atoi(extruder.c_str()); if (extruder_idx == 0) { - if (m_type & itObject); - else if (m_type & itVolume && m_volume_type == ModelVolumeType::MODEL_PART) { + if (m_type & itObject) { + // Do nothing + } + else if (m_type & itVolume) { + // m_volume_type should be MODEL_PART or PARAMETER_MODIFIER type extruder_idx = atoi(m_parent->GetExtruder().c_str()); + as_default = true; } else { m_extruder_bmp = wxNullBitmap; @@ -355,15 +360,8 @@ void ObjectDataViewModelNode::UpdateExtruderAndColorIcon(wxString extruder /*= " } } - if (extruder_idx > 0) --extruder_idx; - // Create the bitmap with color bars. - std::vector bmps = get_extruder_color_icons(false);// use wide icons - if (bmps.empty()) { - m_extruder_bmp = wxNullBitmap; - return; - } - - m_extruder_bmp = *bmps[extruder_idx >= bmps.size() ? 0 : extruder_idx]; + wxBitmap* bitmap = get_extruder_color_icon(extruder_idx, as_default); + m_extruder_bmp = bitmap ? *bitmap : wxNullBitmap; } // ***************************************************************************** @@ -549,7 +547,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent wxString extruder_str = extruder == 0 ? _(L("default")) : wxString::Format("%d", extruder); const auto node = new ObjectDataViewModelNode(root, name, volume_type, GetVolumeIcon(volume_type, warning_icon_name), - extruder == 0 ? root->m_extruder : extruder_str, root->m_volumes_cnt, warning_icon_name); + extruder_str, root->m_volumes_cnt, warning_icon_name); insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position); // if part with errors is added, but object wasn't marked, then mark it @@ -1372,26 +1370,33 @@ void ObjectDataViewModel::UpdateItemNames() } // BBS: add use_obj_extruder -void ObjectDataViewModel::UpdateVolumesExtruderBitmap(wxDataViewItem obj_item, bool use_obj_extruder) +void ObjectDataViewModel::UpdateVolumesExtruderBitmap(wxDataViewItem obj_item) { if (!obj_item.IsOk() || GetItemType(obj_item) != itObject) return; ObjectDataViewModelNode* obj_node = static_cast(obj_item.GetID()); + ModelObject* mo = obj_node->m_model_object; for (auto child : obj_node->GetChildren()) - if (child->GetVolumeType() == ModelVolumeType::MODEL_PART) - child->UpdateExtruderAndColorIcon(use_obj_extruder ? obj_node->GetExtruder() : ""); + // BBS: also update PARAMETER_MODIFIER + if (child->GetVolumeType() == ModelVolumeType::MODEL_PART || child->GetVolumeType() == ModelVolumeType::PARAMETER_MODIFIER) { + int vol_idx = child->GetIdx(); + ModelVolume* mv = mo->volumes[vol_idx]; + const ConfigOption* opt = mv->config.option("extruder"); + int vol_extr = opt ? opt->getInt() : 0; + child->UpdateExtruderAndColorIcon(std::to_string(vol_extr)); + } } int ObjectDataViewModel::GetDefaultExtruderIdx(wxDataViewItem item) { ItemType type = GetItemType(item); if (type == itObject) - return 0; + return 1; - if (type == itVolume && GetVolumeType(item) == ModelVolumeType::MODEL_PART) { + if (type == itVolume && (GetVolumeType(item) == ModelVolumeType::MODEL_PART || GetVolumeType(item) == ModelVolumeType::PARAMETER_MODIFIER)) { wxDataViewItem obj_item = GetParent(item); int extruder_id = GetExtruderNumber(obj_item); - if (extruder_id > 0) extruder_id--; + //if (extruder_id > 0) extruder_id--; return extruder_id; } @@ -1582,7 +1587,7 @@ void ObjectDataViewModel::SetExtruder(const wxString& extruder, wxDataViewItem i node->UpdateExtruderAndColorIcon(extruder); if (node->GetType() == itObject) - UpdateVolumesExtruderBitmap(item, true); + UpdateVolumesExtruderBitmap(item); // BBS ItemChanged(item); diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index 749edae4b4..a9101874f8 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -449,7 +449,7 @@ public: bool UpdateColumValues(unsigned col); void UpdateExtruderBitmap(wxDataViewItem item); // BBS: add use_obj_extruder - void UpdateVolumesExtruderBitmap(wxDataViewItem object_item, bool use_obj_extruder = false); + void UpdateVolumesExtruderBitmap(wxDataViewItem object_item); int GetDefaultExtruderIdx(wxDataViewItem item); // BBS diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 8eb2d9d07e..8667807b12 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -462,16 +462,14 @@ wxBitmap create_scaled_bitmap( const std::string& bmp_name_in, return *bmp; } -std::vector get_extruder_color_icons(bool thin_icon/* = false*/) +wxBitmap* get_extruder_color_icon(int extruder_id, bool as_default, bool thin_icon/* = false*/) { static Slic3r::GUI::BitmapCache bmp_cache; - // Create the bitmap with color bars. - std::vector bmps; + bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); - - if (colors.empty()) - return bmps; + if (colors.empty() || extruder_id > colors.size()) + return nullptr; unsigned char rgb[3]; @@ -483,44 +481,65 @@ std::vector get_extruder_color_icons(bool thin_icon/* = false*/) const int icon_width = lround((thin_icon ? 2 : 4.5) * em); const int icon_height = lround(2 * em); - bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); - - int index = 0; wxClientDC cdc((wxWindow*)Slic3r::GUI::wxGetApp().mainframe); wxMemoryDC dc(&cdc); dc.SetFont(::Label::Body_12); + std::string color = colors[extruder_id - 1]; + auto cache_label = as_default ? "default" : std::to_string(extruder_id); + std::string bitmap_key = color + "-h" + std::to_string(icon_height) + "-w" + std::to_string(icon_width) + + "-i" + cache_label; + + auto disp_label = as_default ? _L("default") : std::to_string(extruder_id); + wxBitmap* bitmap = bmp_cache.find(bitmap_key); + if (bitmap == nullptr) { + // Paint the color icon. + //Slic3r::GUI::BitmapCache::parse_color(color, rgb); + // there is no neede to scale created solid bitmap + wxColor clr(color); + bitmap = bmp_cache.insert(bitmap_key, wxBitmap(icon_width, icon_height)); + dc.SelectObject(*bitmap); + dc.SetBackground(wxBrush(clr)); + dc.Clear(); + if (clr.Red() > 224 && clr.Blue() > 224 && clr.Green() > 224) { + dc.SetBrush(wxBrush(clr)); + dc.SetPen(*wxGREY_PEN); + dc.DrawRectangle(0, 0, icon_width, icon_height); + } + auto size = dc.GetTextExtent(disp_label); + dc.SetTextForeground(clr.GetLuminance() < 0.51 ? *wxWHITE : *wxBLACK); + dc.DrawText(disp_label, (icon_width - size.x) / 2, (icon_height - size.y) / 2); + dc.SelectObject(wxNullBitmap); + } + + return bitmap; +} + +std::vector get_extruder_color_icons(bool thin_icon/* = false*/) +{ + // Create the bitmap with color bars. + std::vector bmps; + int index = 0; + std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); for (const std::string &color : colors) { - auto label = std::to_string(++index); - std::string bitmap_key = color + "-h" + std::to_string(icon_height) + "-w" + std::to_string(icon_width) - + "-i" + label; - - wxBitmap* bitmap = bmp_cache.find(bitmap_key); - if (bitmap == nullptr) { - // Paint the color icon. - //Slic3r::GUI::BitmapCache::parse_color(color, rgb); - // there is no neede to scale created solid bitmap - wxColor clr(color); - bitmap = bmp_cache.insert(bitmap_key, wxBitmap(icon_width, icon_height)); - dc.SelectObject(*bitmap); - dc.SetBackground(wxBrush(clr)); - dc.Clear(); - if (clr.Red() > 224 && clr.Blue() > 224 && clr.Green() > 224) { - dc.SetBrush(wxBrush(clr)); - dc.SetPen(*wxGREY_PEN); - dc.DrawRectangle(0, 0, icon_width, icon_height); - } - auto size = dc.GetTextExtent(wxString(label)); - dc.SetTextForeground(clr.GetLuminance() < 0.51 ? *wxWHITE : *wxBLACK); - dc.DrawText(label, (icon_width - size.x) / 2, (icon_height - size.y) / 2); - dc.SelectObject(wxNullBitmap); - } + wxBitmap* bitmap = get_extruder_color_icon(++index, false, thin_icon); bmps.emplace_back(bitmap); } return bmps; } +bool is_volume_selected() +{ + Slic3r::GUI::ObjectList* obj_list = Slic3r::GUI::wxGetApp().obj_list(); + + wxDataViewItemArray sels; + obj_list->GetSelections(sels); + if (sels.IsEmpty()) + return false; + + return (obj_list->get_item_type(sels[0]) & Slic3r::GUI::ItemType::itVolume) != 0; +} void apply_extruder_selector(Slic3r::GUI::BitmapComboBox** ctrl, wxWindow* parent, diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 7545f9c934..5c423bb0af 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -64,7 +64,10 @@ wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullp const int px_cnt = 16, const bool grayscale = false, const bool resize = false); #endif +// BBS +wxBitmap* get_extruder_color_icon(int extruder_id, bool as_default, bool thin_icon = false); std::vector get_extruder_color_icons(bool thin_icon = false); +bool is_volume_selected(); namespace Slic3r { namespace GUI { From 0e6f8578192dc638b0d4ad35c18239a9728694e4 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Fri, 19 Aug 2022 14:54:13 +0800 Subject: [PATCH 024/137] NEW:add 3Dconnexion devices shortcut text Change-Id: I1174b150c6c45a6465dba91f717359cee04c155d --- bbl/i18n/BambuStudio.pot | 73 +++++++++++---------- bbl/i18n/de/BambuStudio_de.po | 92 +++++++++++++++----------- bbl/i18n/en/BambuStudio_en.po | 91 +++++++++++++++----------- bbl/i18n/es/BambuStudio_es.po | 92 +++++++++++++++----------- bbl/i18n/fr/BambuStudio_fr.po | 92 +++++++++++++++----------- bbl/i18n/hu/BambuStudio_hu.po | 92 +++++++++++++++----------- bbl/i18n/nl/BambuStudio_nl.po | 92 +++++++++++++++----------- bbl/i18n/sv/BambuStudio_sv.po | 91 +++++++++++++++----------- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 93 ++++++++++++++++----------- resources/i18n/de/BambuStudio.mo | Bin 163276 -> 162948 bytes resources/i18n/en/BambuStudio.mo | Bin 149487 -> 149123 bytes resources/i18n/es/BambuStudio.mo | Bin 164034 -> 163697 bytes resources/i18n/fr/BambuStudio.mo | Bin 164321 -> 163993 bytes resources/i18n/hu/BambuStudio.mo | Bin 165886 -> 165442 bytes resources/i18n/nl/BambuStudio.mo | Bin 161930 -> 161602 bytes resources/i18n/sv/BambuStudio.mo | Bin 153133 -> 152766 bytes resources/i18n/zh_cn/BambuStudio.mo | Bin 148550 -> 148456 bytes src/slic3r/GUI/KBShortcutsDialog.cpp | 14 ++-- 18 files changed, 485 insertions(+), 337 deletions(-) diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index 41cc462563..cc8e6a1a71 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -629,9 +629,6 @@ msgstr "" msgid "Cone" msgstr "" -msgid "Timelapse Wipe Tower" -msgstr "" - msgid "Add settings" msgstr "" @@ -1867,6 +1864,9 @@ msgstr "" msgid "Normal mode" msgstr "" +msgid "Cost" +msgstr "" + msgid "Prepare time" msgstr "" @@ -2089,6 +2089,9 @@ msgstr "" msgid "&About %s" msgstr "" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "" @@ -2238,27 +2241,12 @@ msgstr "" msgid "Preferences" msgstr "" -msgid "About" -msgstr "" - msgid "View" msgstr "" msgid "Help" msgstr "" -msgid "&File" -msgstr "" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "" - -msgid "&Help" -msgstr "" - msgid "&Open G-code" msgstr "" @@ -2290,6 +2278,15 @@ msgstr "" msgid "Quit %s" msgstr "" +msgid "&File" +msgstr "" + +msgid "&View" +msgstr "" + +msgid "&Help" +msgstr "" + msgid "Save configuration as:" msgstr "" @@ -2336,27 +2333,24 @@ msgstr "" msgid "Load failed [%d]!" msgstr "" -msgid "3Dconnexion settings" -msgstr "" - -msgid "Device:" -msgstr "" - msgid "Speed:" msgstr "" -msgid "Translation" -msgstr "" - -msgid "Zoom" -msgstr "" - msgid "Deadzone:" msgstr "" msgid "Options:" msgstr "" +msgid "Zoom" +msgstr "" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "" + msgid "Swap Y/Z axes" msgstr "" @@ -2674,9 +2668,6 @@ msgstr "" msgid "Used Materials" msgstr "" -msgid "Cost" -msgstr "" - msgid "Estimated time" msgstr "" @@ -3851,6 +3842,9 @@ msgstr "" msgid "Paste from clipboard" msgstr "" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "" @@ -3989,6 +3983,9 @@ msgstr "" msgid "Support/Color Painting: adjust pen radius" msgstr "" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "" @@ -5941,7 +5938,13 @@ msgstr "" #, possible-c-format, possible-boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" msgid "Optimizing toolpath" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index a47d247b74..f48bfebd37 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -647,9 +647,6 @@ msgstr "Zylinder" msgid "Cone" msgstr "Kegel" -msgid "Timelapse Wipe Tower" -msgstr "Zeitraffer-Wischturm" - msgid "Add settings" msgstr "Einstellungen hinzufügen" @@ -2025,6 +2022,9 @@ msgstr "Gesamtvorhersage" msgid "Normal mode" msgstr "Normaler Modus" +msgid "Cost" +msgstr "Kosten" + msgid "Prepare time" msgstr "Vorbereitungszeit" @@ -2252,6 +2252,9 @@ msgstr "Prüfen auf Update" msgid "&About %s" msgstr "&Über %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Standardansicht" @@ -2401,27 +2404,12 @@ msgstr "Orthogonale Ansicht verwenden" msgid "Preferences" msgstr "Vorlieben" -msgid "About" -msgstr "" - msgid "View" msgstr "Ansicht" msgid "Help" msgstr "Hilfe" -msgid "&File" -msgstr "&Datei" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&Anzeige" - -msgid "&Help" -msgstr "&Hilfe" - msgid "&Open G-code" msgstr "Öffne G-C&ode" @@ -2453,6 +2441,15 @@ msgstr "&Beenden" msgid "Quit %s" msgstr "%s verlassen" +msgid "&File" +msgstr "&Datei" + +msgid "&View" +msgstr "&Anzeige" + +msgid "&Help" +msgstr "&Hilfe" + msgid "Save configuration as:" msgstr "Konfiguration speichern unter:" @@ -2499,27 +2496,24 @@ msgstr "Laufend..." msgid "Load failed [%d]!" msgstr "Laden fehlgeschlagen [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion Einstellungen" - -msgid "Device:" -msgstr "Gerät:" - msgid "Speed:" msgstr "Geschwindigkeit:" -msgid "Translation" -msgstr "Übersetzung" - -msgid "Zoom" -msgstr "Vergrößern" - msgid "Deadzone:" msgstr "Todeszone:" msgid "Options:" msgstr "Optionen:" +msgid "Zoom" +msgstr "Vergrößern" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion Einstellungen" + msgid "Swap Y/Z axes" msgstr "Y/Z-Achsen vertauschen" @@ -2843,9 +2837,6 @@ msgstr "Filamentbedarf (g)" msgid "Used Materials" msgstr "Genutztes Material" -msgid "Cost" -msgstr "Kosten" - msgid "Estimated time" msgstr "Geschätzte Zeit" @@ -4121,6 +4112,9 @@ msgstr "Zu Zwischenablage kopieren" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Liste der Tastaturkürzel anzeigen" @@ -4262,6 +4256,9 @@ msgstr "⌘+Mausrad" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Farbmalen: Stiftradius einstellen" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Farbmalerei: Position des Abschnitts anpassen" @@ -6556,10 +6553,14 @@ msgstr "Überprüfung der Notwendigkeit der Supports" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Es scheint, dass Objekt %s Support zum Drucken benötigt. Bitte aktivieren " -"Sie die Support-Generierung." msgid "Optimizing toolpath" msgstr "Optimieren des Werkzeugwegs" @@ -6619,6 +6620,23 @@ msgstr "Support: Löcher in Schicht %d repairieren" msgid "Support: propagate branches at layer %d" msgstr "Support: Verbreiten von Zweigen auf Ebene %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Zeitraffer-Wischturm" + +#~ msgid "Device:" +#~ msgstr "Gerät:" + +#~ msgid "Translation" +#~ msgstr "Übersetzung" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Es scheint, dass Objekt %s Support zum Drucken benötigt. Bitte aktivieren " +#~ "Sie die Support-Generierung." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Mausrad" diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index f5dc875dda..7cdecca8e0 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -642,9 +642,6 @@ msgstr "Cylinder" msgid "Cone" msgstr "Cone" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse Wipe Tower" - msgid "Add settings" msgstr "Add Settings" @@ -1986,6 +1983,9 @@ msgstr "Total estimation" msgid "Normal mode" msgstr "Normal mode" +msgid "Cost" +msgstr "Cost" + msgid "Prepare time" msgstr "Prepare time" @@ -2213,6 +2213,9 @@ msgstr "Check for Updates" msgid "&About %s" msgstr "&About %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Default View" @@ -2362,27 +2365,12 @@ msgstr "Use Orthogonal View" msgid "Preferences" msgstr "Preferences" -msgid "About" -msgstr "" - msgid "View" msgstr "View" msgid "Help" msgstr "Help" -msgid "&File" -msgstr "&File" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&View" - -msgid "&Help" -msgstr "&Help" - msgid "&Open G-code" msgstr "&Open G-code" @@ -2414,6 +2402,15 @@ msgstr "&Quit" msgid "Quit %s" msgstr "Quit %s" +msgid "&File" +msgstr "&File" + +msgid "&View" +msgstr "&View" + +msgid "&Help" +msgstr "&Help" + msgid "Save configuration as:" msgstr "Save configuration as:" @@ -2460,27 +2457,24 @@ msgstr "Playing..." msgid "Load failed [%d]!" msgstr "Loading failed [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion settings" - -msgid "Device:" -msgstr "Device:" - msgid "Speed:" msgstr "Speed:" -msgid "Translation" -msgstr "Translation" - -msgid "Zoom" -msgstr "Zoom" - msgid "Deadzone:" msgstr "Deadzone:" msgid "Options:" msgstr "Options:" +msgid "Zoom" +msgstr "Zoom" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion settings" + msgid "Swap Y/Z axes" msgstr "Swap Y/Z axes" @@ -2802,9 +2796,6 @@ msgstr "Used Filament (g)" msgid "Used Materials" msgstr "Used Materials" -msgid "Cost" -msgstr "Cost" - msgid "Estimated time" msgstr "Estimated time" @@ -4038,6 +4029,9 @@ msgstr "Copy to clipboard" msgid "Paste from clipboard" msgstr "Paste from clipboard" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Show keyboard shortcuts list" @@ -4179,6 +4173,9 @@ msgstr "" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Color Painting: adjust pen radius" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Color Painting: adjust section position" @@ -6402,9 +6399,14 @@ msgstr "Checking support necessity" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"It seems object %s needs support to print. Please enable support generation." msgid "Optimizing toolpath" msgstr "Optimizing toolpath" @@ -6462,6 +6464,23 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse Wipe Tower" + +#~ msgid "Device:" +#~ msgstr "Device:" + +#~ msgid "Translation" +#~ msgstr "Translation" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." + #~ msgid "the 3mf is not compatible, load geometry data only!" #~ msgstr "The 3mf is not compatible, loading geometry data only!" diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index fe5cae4c0d..057f2ab2f3 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -649,9 +649,6 @@ msgstr "Cilindro" msgid "Cone" msgstr "Cono" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse Torre de limpieza" - msgid "Add settings" msgstr "Añadir ajustes" @@ -2023,6 +2020,9 @@ msgstr "Estimación total" msgid "Normal mode" msgstr "Modo normal" +msgid "Cost" +msgstr "Coste" + msgid "Prepare time" msgstr "Planificar tiempo" @@ -2250,6 +2250,9 @@ msgstr "Comprobar Actualicaciones" msgid "&About %s" msgstr "&Acerca de %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Vista por Defecto" @@ -2399,27 +2402,12 @@ msgstr "Utilizar Vista Ortogonal" msgid "Preferences" msgstr "Preferencias" -msgid "About" -msgstr "" - msgid "View" msgstr "Vista" msgid "Help" msgstr "Ayuda" -msgid "&File" -msgstr "&Archivo" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "Ve&r" - -msgid "&Help" -msgstr "Ayu&da" - msgid "&Open G-code" msgstr "Abrir código G (&O)" @@ -2451,6 +2439,15 @@ msgstr "Sa&lir" msgid "Quit %s" msgstr "Cerrar %s" +msgid "&File" +msgstr "&Archivo" + +msgid "&View" +msgstr "Ve&r" + +msgid "&Help" +msgstr "Ayu&da" + msgid "Save configuration as:" msgstr "Guardar la configuración como:" @@ -2497,27 +2494,24 @@ msgstr "Reproduciendo..." msgid "Load failed [%d]!" msgstr "¡La carga ha fallado [%d]!" -msgid "3Dconnexion settings" -msgstr "Ajustes de conexión 3D" - -msgid "Device:" -msgstr "Dispositivo:" - msgid "Speed:" msgstr "Velocidad:" -msgid "Translation" -msgstr "Translación" - -msgid "Zoom" -msgstr "Zoom" - msgid "Deadzone:" msgstr "Punto muerto:" msgid "Options:" msgstr "Opciones:" +msgid "Zoom" +msgstr "Zoom" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "Ajustes de conexión 3D" + msgid "Swap Y/Z axes" msgstr "Intercambiar los ejes Y/Z" @@ -2843,9 +2837,6 @@ msgstr "Filamento Usado (g)" msgid "Used Materials" msgstr "Materiales usados" -msgid "Cost" -msgstr "Coste" - msgid "Estimated time" msgstr "Tiempo estimado" @@ -4110,6 +4101,9 @@ msgstr "Copiar al portapapeles" msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" @@ -4251,6 +4245,9 @@ msgstr "⌘+Rueda del ratón" msgid "Support/Color Painting: adjust pen radius" msgstr "Soporte/Pintado en color: ajuste del radio de la pluma" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" @@ -6541,10 +6538,14 @@ msgstr "Comprobación de la necesidad de soporte" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Parece que el objeto %s necesita soporte para imprimir. Por favor, active la " -"generación de soporte." msgid "Optimizing toolpath" msgstr "Optimización de la trayectoria de la herramienta" @@ -6603,6 +6604,23 @@ msgstr "Soporte: arreglar huecos en la capa %d" msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse Torre de limpieza" + +#~ msgid "Device:" +#~ msgstr "Dispositivo:" + +#~ msgid "Translation" +#~ msgstr "Translación" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active " +#~ "la generación de soporte." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Rueda del ratón" diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index dd50f7b362..bedfeeacee 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -650,9 +650,6 @@ msgstr "Cylindre" msgid "Cone" msgstr "Cône" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse Wipe Tower" - msgid "Add settings" msgstr "Ajouter des réglages" @@ -1991,6 +1988,9 @@ msgstr "Estimation totale" msgid "Normal mode" msgstr "Mode normal" +msgid "Cost" +msgstr "Coût" + msgid "Prepare time" msgstr "Temps de préparation" @@ -2219,6 +2219,9 @@ msgstr "Vérifier la mise à jour" msgid "&About %s" msgstr "&Au sujet de %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Vue par défaut" @@ -2368,27 +2371,12 @@ msgstr "Utiliser la vue orthogonale" msgid "Preferences" msgstr "Préférences" -msgid "About" -msgstr "" - msgid "View" msgstr "Vue" msgid "Help" msgstr "Aide" -msgid "&File" -msgstr "&File" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&View" - -msgid "&Help" -msgstr "&Help" - msgid "&Open G-code" msgstr "&Open G-code" @@ -2420,6 +2408,15 @@ msgstr "&Quit" msgid "Quit %s" msgstr "Quit %s" +msgid "&File" +msgstr "&File" + +msgid "&View" +msgstr "&View" + +msgid "&Help" +msgstr "&Help" + msgid "Save configuration as:" msgstr "Enregistrer la configuration sous :" @@ -2466,27 +2463,24 @@ msgstr "En jouant..." msgid "Load failed [%d]!" msgstr "Le chargement a échoué [%d] !" -msgid "3Dconnexion settings" -msgstr "Paramètres 3Dconnexion" - -msgid "Device:" -msgstr "Appareil :" - msgid "Speed:" msgstr "Vitesse:" -msgid "Translation" -msgstr "Traduction" - -msgid "Zoom" -msgstr "Zoom" - msgid "Deadzone:" msgstr "Zone morte :" msgid "Options:" msgstr "Options :" +msgid "Zoom" +msgstr "Zoom" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "Paramètres 3Dconnexion" + msgid "Swap Y/Z axes" msgstr "Permuter les axes Y/Z" @@ -2807,9 +2801,6 @@ msgstr "Filament Utilisé (g)" msgid "Used Materials" msgstr "Matériaux utilisés" -msgid "Cost" -msgstr "Coût" - msgid "Estimated time" msgstr "Temps estimé" @@ -4071,6 +4062,9 @@ msgstr "Copier dans le presse-papier" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Afficher la liste des raccourcis clavier" @@ -4212,6 +4206,9 @@ msgstr "⌘+molette de la souris" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" @@ -6510,10 +6507,14 @@ msgstr "Vérification de la nécessité du support" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Il semble que l'objet %s ait besoin d'aide pour imprimer. Veuillez activer " -"la génération de support." msgid "Optimizing toolpath" msgstr "Optimisation du parcours d'outil" @@ -6572,6 +6573,23 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse Wipe Tower" + +#~ msgid "Device:" +#~ msgstr "Appareil :" + +#~ msgid "Translation" +#~ msgstr "Traduction" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Il semble que l'objet %s ait besoin d'aide pour imprimer. Veuillez " +#~ "activer la génération de support." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + molette de la souris" diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index d03679417b..d6e3fd6a25 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -646,9 +646,6 @@ msgstr "Henger" msgid "Cone" msgstr "Kúp" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse törlő torony" - msgid "Add settings" msgstr "Beállítások hozzáadása" @@ -2014,6 +2011,9 @@ msgstr "Összesített becslés" msgid "Normal mode" msgstr "Normal mode" +msgid "Cost" +msgstr "Költség" + msgid "Prepare time" msgstr "Előkészítési idő" @@ -2245,6 +2245,9 @@ msgstr "Frissítés keresése" msgid "&About %s" msgstr "&%s névjegye" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Alapértelmezett nézet" @@ -2394,27 +2397,12 @@ msgstr "Ortogonális nézet használata" msgid "Preferences" msgstr "Beállítások" -msgid "About" -msgstr "" - msgid "View" msgstr "Nézet" msgid "Help" msgstr "Segítség" -msgid "&File" -msgstr "&File" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&View" - -msgid "&Help" -msgstr "&Help" - msgid "&Open G-code" msgstr "&Open G-code" @@ -2446,6 +2434,15 @@ msgstr "&Kilépés" msgid "Quit %s" msgstr "Kilépés %s" +msgid "&File" +msgstr "&File" + +msgid "&View" +msgstr "&View" + +msgid "&Help" +msgstr "&Help" + msgid "Save configuration as:" msgstr "Konfiguráció mentése mint:" @@ -2497,27 +2494,24 @@ msgstr "Lejátszás..." msgid "Load failed [%d]!" msgstr "Loading failed [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion beállítások" - -msgid "Device:" -msgstr "Eszköz:" - msgid "Speed:" msgstr "Sebesség:" -msgid "Translation" -msgstr "Translation" - -msgid "Zoom" -msgstr "Zoom" - msgid "Deadzone:" msgstr "Tiltott zóna:" msgid "Options:" msgstr "Opciók:" +msgid "Zoom" +msgstr "Zoom" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion beállítások" + msgid "Swap Y/Z axes" msgstr "Swap Y/Z axes" @@ -2839,9 +2833,6 @@ msgstr "Used Filament (g)" msgid "Used Materials" msgstr "Used Materials" -msgid "Cost" -msgstr "Költség" - msgid "Estimated time" msgstr "Becsült idő" @@ -4088,6 +4079,9 @@ msgstr "Másolás a vágólapra" msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Gyorsgombok listájának megjelenítése" @@ -4229,6 +4223,9 @@ msgstr "⌘+Egérgörgő" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Color Painting: adjust pen radius" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Color Painting: adjust section position" @@ -6502,10 +6499,14 @@ msgstr "Támasz szükségességének ellenőrzése" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Úgy tűnik %s objektumnak támaszra lenne szüksége a nyomtatáshoz. Kérjük, " -"engedélyezd a támasz generálását." msgid "Optimizing toolpath" msgstr "Szerszámút optimalizálása" @@ -6563,6 +6564,23 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse törlő torony" + +#~ msgid "Device:" +#~ msgstr "Eszköz:" + +#~ msgid "Translation" +#~ msgstr "Translation" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Úgy tűnik %s objektumnak támaszra lenne szüksége a nyomtatáshoz. Kérjük, " +#~ "engedélyezd a támasz generálását." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Mouse wheel" diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index 34359a62ac..2827f77988 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -644,9 +644,6 @@ msgstr "Cilinder" msgid "Cone" msgstr "Kegel" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse Wipe Tower" - msgid "Add settings" msgstr "Instellingen toevoegen" @@ -2015,6 +2012,9 @@ msgstr "Schatting totaal" msgid "Normal mode" msgstr "Normale modus" +msgid "Cost" +msgstr "Kosten" + msgid "Prepare time" msgstr "Voorbereidingstijd" @@ -2242,6 +2242,9 @@ msgstr "Zoeken naar updates" msgid "&About %s" msgstr "&Over %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Standaard weergave" @@ -2391,27 +2394,12 @@ msgstr "Orthogonale weergave gebruiken" msgid "Preferences" msgstr "Voorkeuren" -msgid "About" -msgstr "" - msgid "View" msgstr "Weergave" msgid "Help" msgstr "Help" -msgid "&File" -msgstr "&Bestand" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&Bekijken" - -msgid "&Help" -msgstr "&Help" - msgid "&Open G-code" msgstr "&Open G-code" @@ -2443,6 +2431,15 @@ msgstr "&Afsluiten" msgid "Quit %s" msgstr "Quit %s" +msgid "&File" +msgstr "&Bestand" + +msgid "&View" +msgstr "&Bekijken" + +msgid "&Help" +msgstr "&Help" + msgid "Save configuration as:" msgstr "Bewaar configuratie als:" @@ -2489,27 +2486,24 @@ msgstr "Afspelen..." msgid "Load failed [%d]!" msgstr "Laden mislukt [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion instellingen" - -msgid "Device:" -msgstr "Apparaat:" - msgid "Speed:" msgstr "Snelheid" -msgid "Translation" -msgstr "Vertaling" - -msgid "Zoom" -msgstr "Inzoomen" - msgid "Deadzone:" msgstr "Deadzone:" msgid "Options:" msgstr "Opties:" +msgid "Zoom" +msgstr "Inzoomen" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion instellingen" + msgid "Swap Y/Z axes" msgstr "Wissel Y/Z assen om" @@ -2843,9 +2837,6 @@ msgstr "Verbruikt filament (g)" msgid "Used Materials" msgstr "Verbruikte materialen" -msgid "Cost" -msgstr "Kosten" - msgid "Estimated time" msgstr "Geschatte tijd" @@ -4115,6 +4106,9 @@ msgstr "Kopieer naar klembord" msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Toon lijst met sneltoetsen" @@ -4256,6 +4250,9 @@ msgstr "⌘+muiswiel" msgid "Support/Color Painting: adjust pen radius" msgstr "Ondersteuning(support)/kleur intekenen: pas de pen diameter aan" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Ondersteuning(support)/kleur intekenen: pas de sectie positie aan" @@ -6558,10 +6555,14 @@ msgstr "Controleren of support is noodzakelijk" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Het lijkt er op dat object %s support nodig heeft om te printen. Zet support " -"genereren aan indien nodig." msgid "Optimizing toolpath" msgstr "Optimaliseren van het pad" @@ -6621,6 +6622,23 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse Wipe Tower" + +#~ msgid "Device:" +#~ msgstr "Apparaat:" + +#~ msgid "Translation" +#~ msgstr "Vertaling" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Het lijkt er op dat object %s support nodig heeft om te printen. Zet " +#~ "support genereren aan indien nodig." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + muiswiel" diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index a4810b1823..1d065b80e9 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -640,9 +640,6 @@ msgstr "Cylinder" msgid "Cone" msgstr "Kon" -msgid "Timelapse Wipe Tower" -msgstr "Timelapse Wipe Tower" - msgid "Add settings" msgstr "Lägg till inställning" @@ -1989,6 +1986,9 @@ msgstr "Total Uppskattning" msgid "Normal mode" msgstr "Normalt läge" +msgid "Cost" +msgstr "Kostnad" + msgid "Prepare time" msgstr "Förbered tid" @@ -2216,6 +2216,9 @@ msgstr "Sök efter Uppdatering" msgid "&About %s" msgstr "&Om %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "Standard Vy" @@ -2365,27 +2368,12 @@ msgstr "Använd Ortogonal Vy" msgid "Preferences" msgstr "Inställningar" -msgid "About" -msgstr "" - msgid "View" msgstr "Vy" msgid "Help" msgstr "Hjälp" -msgid "&File" -msgstr "&Fil" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "&Visa" - -msgid "&Help" -msgstr "&Hjälp" - msgid "&Open G-code" msgstr "&Öppna G-kod" @@ -2417,6 +2405,15 @@ msgstr "&Avsluta" msgid "Quit %s" msgstr "Avsluta %s" +msgid "&File" +msgstr "&Fil" + +msgid "&View" +msgstr "&Visa" + +msgid "&Help" +msgstr "&Hjälp" + msgid "Save configuration as:" msgstr "Spara konfigurationen som:" @@ -2463,27 +2460,24 @@ msgstr "Spelar..." msgid "Load failed [%d]!" msgstr "Laddning misslyckad [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion inställningar" - -msgid "Device:" -msgstr "Enhet:" - msgid "Speed:" msgstr "Hastighet:" -msgid "Translation" -msgstr "Översättning" - -msgid "Zoom" -msgstr "Zooma" - msgid "Deadzone:" msgstr "Upphör:" msgid "Options:" msgstr "Val:" +msgid "Zoom" +msgstr "Zooma" + +msgid "Translation/Zoom" +msgstr "" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion inställningar" + msgid "Swap Y/Z axes" msgstr "Byta Y/Z axes" @@ -2804,9 +2798,6 @@ msgstr "Filament Åtgång (g)" msgid "Used Materials" msgstr "Material Åtgång" -msgid "Cost" -msgstr "Kostnad" - msgid "Estimated time" msgstr "Uppskattad tid" @@ -4048,6 +4039,9 @@ msgstr "Kopiera till urklipp" msgid "Paste from clipboard" msgstr "Klistra in ifrån urklipp" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Visa tangentbordets genvägs lista" @@ -4188,6 +4182,9 @@ msgstr "" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Färgläggning: justera penn radie" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Färgläggning:justera sektions positionen" @@ -6410,9 +6407,14 @@ msgstr "Kontrollera supportens nödvändighet" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." msgstr "" -"Objekt verkar %s behöva support för att skrivas ut. Aktivera support valen." msgid "Optimizing toolpath" msgstr "Optimerar verktygsbanan" @@ -6469,6 +6471,23 @@ msgstr "Support: åtgärda hål vid lager %d" msgid "Support: propagate branches at layer %d" msgstr "Support: föröka grenar vid lager %d" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "Timelapse Wipe Tower" + +#~ msgid "Device:" +#~ msgstr "Enhet:" + +#~ msgid "Translation" +#~ msgstr "Översättning" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "" +#~ "Objekt verkar %s behöva support för att skrivas ut. Aktivera support " +#~ "valen." + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + mushjul" diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index 50c223c6ea..4328109f7c 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-12 15:19+0800\n" +"POT-Creation-Date: 2022-08-19 14:51+0800\n" "PO-Revision-Date: 2022-08-07 21:57+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -634,9 +634,6 @@ msgstr "圆柱体" msgid "Cone" msgstr "锥体" -msgid "Timelapse Wipe Tower" -msgstr "延时摄影擦料塔" - msgid "Add settings" msgstr "添加设置" @@ -1933,6 +1930,9 @@ msgstr "总预估" msgid "Normal mode" msgstr "普通模式" +msgid "Cost" +msgstr "成本" + msgid "Prepare time" msgstr "准备时间" @@ -2162,6 +2162,9 @@ msgstr "检查新版本" msgid "&About %s" msgstr "关于 %s" +msgid "Open Network Test" +msgstr "" + msgid "Default View" msgstr "默认视图" @@ -2311,27 +2314,12 @@ msgstr "使用正交视角" msgid "Preferences" msgstr "偏好设置" -msgid "About" -msgstr "" - msgid "View" msgstr "视图" msgid "Help" msgstr "帮助" -msgid "&File" -msgstr "" - -msgid "&Edit" -msgstr "" - -msgid "&View" -msgstr "" - -msgid "&Help" -msgstr "" - msgid "&Open G-code" msgstr "打开G-code" @@ -2363,6 +2351,15 @@ msgstr "" msgid "Quit %s" msgstr "" +msgid "&File" +msgstr "" + +msgid "&View" +msgstr "" + +msgid "&Help" +msgstr "" + msgid "Save configuration as:" msgstr "预设另存为:" @@ -2414,27 +2411,24 @@ msgstr "正在播放中……" msgid "Load failed [%d]!" msgstr "加载失败 [%d]!" -msgid "3Dconnexion settings" -msgstr "3Dconnexion设置" - -msgid "Device:" -msgstr "设备:" - msgid "Speed:" msgstr "速度:" -msgid "Translation" -msgstr "翻译" - -msgid "Zoom" -msgstr "视角缩放" - msgid "Deadzone:" msgstr "死区:" msgid "Options:" msgstr "选项:" +msgid "Zoom" +msgstr "视角缩放" + +msgid "Translation/Zoom" +msgstr "平移/缩放" + +msgid "3Dconnexion settings" +msgstr "3Dconnexion设置" + msgid "Swap Y/Z axes" msgstr "交换Y/Z轴" @@ -2750,9 +2744,6 @@ msgstr "耗材丝消耗重量(g)" msgid "Used Materials" msgstr "材料消耗" -msgid "Cost" -msgstr "成本" - msgid "Estimated time" msgstr "预估打印时间" @@ -3952,6 +3943,9 @@ msgstr "复制到剪贴板" msgid "Paste from clipboard" msgstr "从剪切板粘贴" +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "显示/隐藏 3Dconnexion设备的设置对话框" + msgid "Show keyboard shortcuts list" msgstr "显示键盘快捷键列表" @@ -4092,6 +4086,9 @@ msgstr "⌘+鼠标滚轮" msgid "Support/Color Painting: adjust pen radius" msgstr "支撑/颜色绘制:调节画笔半径" +msgid "⌥+Mouse wheel" +msgstr "⌥+鼠标滚轮" + msgid "Support/Color Painting: adjust section position" msgstr "支撑/色彩绘制:调节剖面位置" @@ -6141,8 +6138,14 @@ msgstr "正在检查支撑必要性" #, c-format, boost-format msgid "" -"It seems object %s needs support to print. Please enable support generation." -msgstr "对象“%s”可能需要添加支撑才能打印。建议开启支撑生成。" +"It seems object %s has completely floating regions. Please re-orient the " +"object or enable support generation." +msgstr "" + +#, c-format, boost-format +msgid "" +"It seems object %s has large overhangs. Please enable support generation." +msgstr "" msgid "Optimizing toolpath" msgstr "正在优化走线" @@ -6199,6 +6202,21 @@ msgstr "支撑:正在修补层%d的空洞" msgid "Support: propagate branches at layer %d" msgstr "支撑:正在生长层%d的树枝" +#~ msgid "Timelapse Wipe Tower" +#~ msgstr "延时摄影擦料塔" + +#~ msgid "Device:" +#~ msgstr "设备:" + +#~ msgid "Translation" +#~ msgstr "翻译" + +#, c-format, boost-format +#~ msgid "" +#~ "It seems object %s needs support to print. Please enable support " +#~ "generation." +#~ msgstr "对象“%s”可能需要添加支撑才能打印。建议开启支撑生成。" + #~ msgid "Clipping of view" #~ msgstr "剪切视图" @@ -6393,9 +6411,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ "the oozing can't been seen" #~ msgstr "当完全在填充区域内部空驶时不会抽,即便渗出滴料也是不可见的。" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+鼠标滚轮" - #~ msgid "sdfsadf Any arrow" #~ msgstr "方向键" diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index c954408e1e00dc8aec0afb4b2250e817d6a3547c..85d5fd6ceb8a0a64ee44f85f20f3fd8d82f9b724 100644 GIT binary patch delta 36260 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 diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index af36af44df4e651929990a40eb8f5c472a6c574a..96cb31d2206b552573d43de17995ee97e68a600c 100644 GIT binary patch delta 36327 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 KFjruv=>HE#;E+E6 delta 36685 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 diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index 5266e7ac1598408270d2f498bcd55ad143b6a475..d6b87497466bffc5d40483963c121e36a9b83ddc 100644 GIT binary patch delta 36246 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

v~GwT}(hZFVehhnOIC{1bMo;(AISm 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 delta 36553 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 diff --git a/resources/i18n/fr/BambuStudio.mo b/resources/i18n/fr/BambuStudio.mo index fa03152dc937da842474fa744c890ff6225f901b..2eab11cc0aaf80e137b0eee1c675a3e519f4260d 100644 GIT binary patch delta 36219 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 diff --git a/resources/i18n/hu/BambuStudio.mo b/resources/i18n/hu/BambuStudio.mo index 712afaed1b6eb6b43ef6984a6bdffc371eefbf14..502e58149b4963d75ec55b764ba724fd192a08ad 100644 GIT binary patch delta 37291 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 Zwzb1kuUvz-?r-P)I^0(No@bHx{|BoewKf0% delta 37720 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 diff --git a/resources/i18n/nl/BambuStudio.mo b/resources/i18n/nl/BambuStudio.mo index 4a0f6d9e73cc2f92a251d2b1b925e938bac38b70..415ed188a7d4f15303279c3a4d17cbfa99dac90a 100644 GIT binary patch delta 36178 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%0DtRv`3_W&-PtIJ4E?skMs`@ z4ec1|AK51&qG#_Y|EQk+5xv90qvrgT+vOAe$HBzgRyT^Z{nC>IgYu6Mh3QN?%C=JEoatAh3?t|%yR+BtuE}Hnf4%(D!Yed(+^BZl!@@i7Y}wZ9Nt*u$t30C@ diff --git a/resources/i18n/sv/BambuStudio.mo b/resources/i18n/sv/BambuStudio.mo index 7c77ba48cfce62b7e3af443e2c0abd479ea34f01..795484bbd296704e2e33e5a91f1a1a654f3cc656 100644 GIT binary patch delta 36306 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⋘3MRrNOQ8q1UA;fobpQZeA%Kd{uq=!Q_)eA6tbcz$C2S=gJzS`^4Z<&R0^cZW`PDjkA5 zY@q?x^^~hd-eK~l;J-Xu#OD2EHEE5wXOaKwHQ|3c$o$tPvn{!mNvuuJigG6<92b9H zmuRF0kw-rhFe_y`VIuN=UbjdaLVcwfz`LJ`=uaoMQ?3N+`hyns- z#9yzOJaor4^w#EGBTd&-gXf=n$crGo6&(n`d_40HcM`%is5{6$dyuxWQsyF09-gZw*5=Nb>!B>ewgF8i#~?~>o}mv~ki z{z5$~cs>z#Y0BKw=YLGwyXqABz}?l>T=0K;=|qrLgmQy%jLrX*Lv%Kf@)c;{Jay!> zomZJP+}}w*K-zWg{lvp?73JFK98MrpSA09FZG?w-QvUZJUny6B{PpQX;%JiY}6~wdX^FJL0bw$VOn3)RpQDBHo z_hj;q8>IbuJ))wY*S~~|@m#1KfG_ci#H(=YiXz>QyBUqvv}KgOTi?GHQ1L5U**M$i zJRTfKx_&KN6qlFkIv zTKDoyOUmTu_ME@*JhYdGW2r*!2*SEj^YAJj>VPA-n~{E*{KAA|5k6uo>`ORQ&)E1J z97&zOlNM~#5|Z76yAEmjNoznoef5jFUoZ% zywE-$N`0F>HP_(q9vfLs`$IZ4ghb+ba{{iewJ6m2P50N672SL%Ld$U!Sxw zc4oR#ZlTHY{PW8%;reu@F?XO%D^J-5)Lj>wacAdtC!^xH6najDBS~nEZAe@Cvxhu9 zlJHpansWPc>-s@jKit8y54r!KV`F)?8ev^0tO{2qoX|d}xUTA?Rf@^_7viCp+>7-v zcXn=FzvFv4l9uor{CRoNP@_Ins2+<}OIM4)-DZ;NMi()aL(9e#>7*_S}XqF}iTdfj`-T5@H*0J*=6ZW z1&wXE63;9oZ?Wx2Y~oFM?kQ>cNjt^!(G**g}8VGCPR(w`q;69VvT({Asq4?SzwZU#27dY}yLj zRx{EIa=Xv*@K)PcaWdOc_y~m?k{*i!-H6{IoQ%6Uy*@b5g zXxrE_>Mi_Bne4><$P2~)C|f{3hGe0lKe=^%Cb1X|o#xgxg@;#?SKQ{GBVX5Z+u`_> zJ8Z*ENS|jLR+)O-lX)&T_O@l>*m}?4e9{+a{|_d!6AAff>>Ll=q>{iS0hE$+$Ot*ERz_dirVo3bfQ5vMreN96am^={|c{51aa za`zykD)%Xy@)DO3Pe5hy)I%;e4>hnA?4^N=+&{191R8M1B0qp~?QjUs?V^m2E!2+& zv(gD&^RO-XJ;*c|2$W^p8*?xM!wH4jUKk0*@T73D@>(vakhQ#jBRWb z@ubwz&z9dz`Ut{*asTV7+qCZq-m#5|Z1gxIg;wxDa_)Jg<)Z_+NMBESO)73qS}GN` zR{(kGY{MDo%tr2;lrc6jgoALiruHNiPNjg0g1Ryo_|FbZ;4oAq{}|;u zp%>}RNIPLG{Edp-HmoQ9<8Dj6V{sz>ycQE~$Fm2iCnMov9{A1VJOAJh;wf+pc~7aN1>ter#VDVM+n4k~bZP~arL+~^ zrkt*gJo_5cQ|1$8TX27(>~Ty+SugSnl2=muuQG}2cyKHUO|U8j``8M%=>f`gCG81$ z|MK8*;<<_UqWlxWrBK&$(sWJZ4&?cYl&?ox2)7TDNh5gxx$(nSXqtOkwKI#Iujd*YzYi z>z|Q_5|jCr%x5I#r@$n_0fbj`UnegKX&Wfli+F7w-eMbEO!}Xs-=_Rb!roYthQAWN zOPO@s(a1kaJdXVPLJTjo#VbM)_{9+MEx!wG4yB=PbT%1OK@6@4Zz zI`==MC)I;-CKVYMw(sARGUs6x74ob>Q^CV*^aFvq6%+0H_MeGIIJ3Nw2KPp z9?`X3v#x5Yc|_|2o4YsrpT=4p*xWUsSrmP0*R@UeW|0BiqH+Y3Y!}srNB*}|_h#)Q pIxc&3*wy|2>c)ejUZ11+9GJ=@kp~t>MRjb`@%Jq^L%nYM{eLY|kof=r diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index c5a2d5dab4d31b044fcaf3b5bbe23b40887d1309..6e326ac8484bdfff7bc7c31d030adc285586ce85 100644 GIT binary patch delta 37500 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 delta 37554 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 diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index ef26876e95..7d285d3ef4 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -181,6 +181,11 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl + "X", L("Cut") }, { ctrl + "C", L("Copy to clipboard") }, { ctrl + "V", L("Paste from clipboard") }, + // Configuration + { ctrl + "P", L("Preferences") }, + //3D control + { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, + //DEL #ifdef __APPLE__ {"fn+⌫", L("Delete selected")}, #else @@ -215,7 +220,6 @@ void KBShortcutsDialog::fill_shortcuts() {L("Arrow Left"), L("Move selection 10 mm in negative X direction")}, {L("Arrow Right"), L("Move selection 10 mm in positive X direction")}, {L("Shift+Any arrow"), L("Movement step set to 1 mm")}, - {"Esc", L("Deselect all")}, {"1-9", L("keyboard 1-9: set filament for object/part")}, {ctrl + "0", L("Camera view - Default")}, @@ -225,11 +229,11 @@ void KBShortcutsDialog::fill_shortcuts() {ctrl + "4", L("Camera view - Behind")}, {ctrl + "5", L("Camera Angle - Left side")}, {ctrl + "6", L("Camera Angle - Right side")}, + {ctrl + "A", L("Select all objects")}, {ctrl + "D", L("Delete all")}, {ctrl + "Z", L("Undo")}, {ctrl + "Y", L("Redo")}, - {ctrl + "M", L("Clone selected")}, { "M", L("Gizmo move") }, { "S", L("Gizmo scale") }, { "R", L("Gizmo rotate") }, @@ -237,6 +241,7 @@ void KBShortcutsDialog::fill_shortcuts() { "F", L("Gizmo Place face on bed") }, { "L", L("Gizmo SLA support points") }, { "P", L("Gizmo FDM paint-on seam") }, + }; m_full_shortcuts.push_back({ { _L("Plater"), "" }, plater_shortcuts }); @@ -245,13 +250,11 @@ void KBShortcutsDialog::fill_shortcuts() {"Shift+", L("Move: press to snap by 1mm") }, #ifdef __APPLE__ {L("⌘+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - {L("⌘+Mouse wheel"), L("Support/Color Painting: adjust section position")}, + {L("⌥+Mouse wheel"), L("Support/Color Painting: adjust section position")}, #else {L("Ctrl+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, {L("Alt+Mouse wheel"), L("Support/Color Painting: adjust section position")}, #endif - - }; m_full_shortcuts.push_back({{_L("Gizmo"), ""}, gizmos_shortcuts}); @@ -293,7 +296,6 @@ void KBShortcutsDialog::fill_shortcuts() m_full_shortcuts.push_back({ { _L("Preview"), "" }, preview_shortcuts }); } - wxPanel* KBShortcutsDialog::create_page(wxWindow* parent, const ShortcutsItem& shortcuts, const wxFont& font, const wxFont& bold_font) { wxPanel* main_page = new wxPanel(parent); From edacd17fab4f3db146c87d4f0c71aa350a2c598b Mon Sep 17 00:00:00 2001 From: Stone Li Date: Fri, 19 Aug 2022 14:26:44 +0800 Subject: [PATCH 025/137] FIX: fix crash when close downloadingProgressDialog Change-Id: Ie35bb83223d70d3d343f795bc449998a4df15500 --- src/slic3r/GUI/DownloadProgressDialog.cpp | 11 +++++++++++ src/slic3r/GUI/DownloadProgressDialog.hpp | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DownloadProgressDialog.cpp b/src/slic3r/GUI/DownloadProgressDialog.cpp index f1af5269d1..1f2fbe7ecb 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.cpp +++ b/src/slic3r/GUI/DownloadProgressDialog.cpp @@ -51,6 +51,8 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title) Layout(); Fit(); CentreOnParent(); + + Bind(wxEVT_CLOSE_WINDOW, &DownloadProgressDialog::on_close, this); } bool DownloadProgressDialog::Show(bool show) @@ -91,6 +93,15 @@ bool DownloadProgressDialog::Show(bool show) return DPIDialog::Show(show); } +void DownloadProgressDialog::on_close(wxCloseEvent& event) +{ + if (m_upgrade_job) { + m_upgrade_job->cancel(); + m_upgrade_job->join(); + } + event.Skip(); +} + DownloadProgressDialog::~DownloadProgressDialog() {} void DownloadProgressDialog::on_dpi_changed(const wxRect &suggested_rect) {} diff --git a/src/slic3r/GUI/DownloadProgressDialog.hpp b/src/slic3r/GUI/DownloadProgressDialog.hpp index fcb44a208d..b35d206d11 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.hpp +++ b/src/slic3r/GUI/DownloadProgressDialog.hpp @@ -33,6 +33,7 @@ class DownloadProgressDialog : public DPIDialog { protected: bool Show(bool show) override; + void on_close(wxCloseEvent& event); public: DownloadProgressDialog(wxString title); @@ -42,7 +43,7 @@ public: void update_release_note(std::string release_note, std::string version); std::shared_ptr m_status_bar; - std::shared_ptr m_upgrade_job; + std::shared_ptr m_upgrade_job { nullptr }; wxPanel * m_panel_download; From 5194e68ae47a0a0c1e367cf1097eefde35a1f535 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 19 Aug 2022 15:44:59 +0800 Subject: [PATCH 026/137] FIX: wipe tower are not generated after painting Change-Id: I895641496b40429fdb1a08174ea7f30832ba24d0 (cherry picked from commit 1b7852e78acb7e89942315008de2842bf806a1c7) --- src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 918935648b..918faaf47f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -756,6 +756,7 @@ void GLGizmoMmuSegmentation::on_set_state() if (get_state() == Off) { ModelObject* mo = m_c->selection_info()->model_object(); if (mo) Slic3r::save_object_mesh(*mo); + m_parent.post_event(SimpleEvent(EVT_GLCANVAS_FORCE_UPDATE)); } } From 038a04175a7b5a69a7ae644e9326d1c1bc742845 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 17 Aug 2022 17:41:14 +0800 Subject: [PATCH 027/137] FIX: fix saving wrong encoding to 3mf Change-Id: Icebf770b3dde06216e427744de9377e3f0adda29 Signed-off-by: Stone Li --- src/libslic3r/Format/bbs_3mf.cpp | 55 +++++++++++++++++--------------- src/libslic3r/Utils.hpp | 1 + src/libslic3r/utils.cpp | 36 +++++++++++++++++++++ src/slic3r/GUI/Auxiliary.cpp | 2 +- 4 files changed, 67 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index be32d06155..f46a0b087e 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -2757,31 +2757,31 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) check_painting_version(m_mm_painting_version, MM_PAINTING_VERSION, _(L("The selected 3MF contains multi-material painted object using a newer version of BambuStudio and is not compatible.")));*/ } else if (m_curr_metadata_name == BBL_MODEL_ID_TAG) { - m_model_id = m_curr_characters; + m_model_id = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_MODEL_NAME_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found model name = " << m_curr_characters; - model_info.model_name = m_curr_characters; + model_info.model_name = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_DESIGNER_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found designer = " << m_curr_characters; - m_designer = m_curr_characters; + m_designer = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_DESIGNER_USER_ID_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found designer_user_id = " << m_curr_characters; - m_designer_user_id = m_curr_characters; + m_designer_user_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 = m_curr_characters; + model_info.cover_file = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_DESCRIPTION_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found description = " << m_curr_characters; - model_info.description = m_curr_characters; + model_info.description = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_LICENSE_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found license = " << m_curr_characters; - model_info.license = m_curr_characters; + model_info.license = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_COPYRIGHT_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found copyright = " << m_curr_characters; - model_info.copyright = m_curr_characters; + model_info.copyright = xml_unescape(m_curr_characters); } else if (m_curr_metadata_name == BBL_REGION_TAG) { BOOST_LOG_TRIVIAL(trace) << "design_info, load_3mf found region = " << m_curr_characters; - m_contry_code = m_curr_characters; + m_contry_code = xml_unescape(m_curr_characters); } return true; @@ -4363,6 +4363,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return false; } + { std::stringstream stream; reset_stream(stream); @@ -4413,27 +4414,29 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) model_id = project->project_model_id; region_code = project->project_country_code; } + if (!sub_model) { + stream << " <" << METADATA_TAG << " name=\"" << BBL_MODEL_NAME_TAG << "\">" << xml_escape(name) << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_TAG << "\">" << xml_escape(user_name) << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_USER_ID_TAG << "\">" << user_id << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_COVER_FILE_TAG << "\">" << xml_escape(design_cover) << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_DESCRIPTION_TAG << "\">" << xml_escape(description) << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_COPYRIGHT_TAG << "\">" << xml_escape(copyright) << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_LICENSE_TAG << "\">" << xml_escape(license) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_MODEL_NAME_TAG << "\">" << xml_escape(name) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_TAG << "\">" << xml_escape(user_name) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_USER_ID_TAG << "\">" << user_id << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_DESIGNER_COVER_FILE_TAG << "\">" << xml_escape(design_cover) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_DESCRIPTION_TAG << "\">" << xml_escape(description) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_COPYRIGHT_TAG << "\">" << xml_escape(copyright) << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_LICENSE_TAG << "\">" << xml_escape(license) << "\n"; + /* save model info */ + if (!model_id.empty()) { + stream << " <" << METADATA_TAG << " name=\"" << BBL_MODEL_ID_TAG << "\">" << model_id << "\n"; + stream << " <" << METADATA_TAG << " name=\"" << BBL_REGION_TAG << "\">" << region_code << "\n"; + } - /* save model info */ - if (!model_id.empty()) { - stream << " <" << METADATA_TAG << " name=\"" << BBL_MODEL_ID_TAG << "\">" << model_id << "\n"; - stream << " <" << METADATA_TAG << " name=\"" << BBL_REGION_TAG << "\">" << region_code << "\n"; + std::string date = Slic3r::Utils::utc_timestamp(Slic3r::Utils::get_current_time_utc()); + // keep only the date part of the string + date = date.substr(0, 10); + stream << " <" << METADATA_TAG << " name=\"CreationDate\">" << date << "\n"; + stream << " <" << METADATA_TAG << " name=\"ModificationDate\">" << date << "\n"; + stream << " <" << METADATA_TAG << " name=\"Application\">" << SLIC3R_APP_KEY << "-" << SLIC3R_VERSION << "\n"; } - std::string date = Slic3r::Utils::utc_timestamp(Slic3r::Utils::get_current_time_utc()); - // keep only the date part of the string - date = date.substr(0, 10); - stream << " <" << METADATA_TAG << " name=\"CreationDate\">" << date << "\n"; - stream << " <" << METADATA_TAG << " name=\"ModificationDate\">" << date << "\n"; - stream << " <" << METADATA_TAG << " name=\"Application\">" << SLIC3R_APP_KEY << "-" << SLIC3R_VERSION << "\n"; stream << " <" << RESOURCES_TAG << ">\n"; std::string buf = stream.str(); if (! buf.empty() && ! mz_zip_writer_add_staged_data(&context, buf.data(), buf.size())) { diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 485cd0a05a..44281c5920 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -283,6 +283,7 @@ inline typename CONTAINER_TYPE::value_type& next_value_modulo(typename CONTAINER } extern std::string xml_escape(std::string text, bool is_marked = false); +extern std::string xml_unescape(std::string text); #if defined __GNUC__ && __GNUC__ < 5 && !defined __clang__ diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 67b873cc46..731848ed55 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -1182,6 +1182,42 @@ std::string xml_escape(std::string text, bool is_marked/* = false*/) return text; } +std::string xml_unescape(std::string s) +{ + std::string ret; + std::string::size_type i = 0; + std::string::size_type pos = 0; + while (i < s.size()) { + std::string rep; + if (s[i] == '&') { + if (s.substr(i, 4) == "<") { + ret += s.substr(pos, i - pos) + "<"; + i += 4; + pos = i; + } + else if (s.substr(i, 4) == ">") { + ret += s.substr(pos, i - pos) + ">"; + i += 4; + pos = i; + } + else if (s.substr(i, 5) == "&") { + ret += s.substr(pos, i - pos) + "&"; + i += 5; + pos = i; + } + else { + ++i; + } + } + else { + ++i; + } + } + + ret += s.substr(pos); + return ret; +} + std::string format_memsize_MB(size_t n) { std::string out; diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 73d5baa94b..c3ea3d703e 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -364,7 +364,7 @@ void AuFile::on_set_cover() { if (wxGetApp().plater()->model().model_info == nullptr) { wxGetApp().plater()->model().model_info = std::make_shared(); } - wxGetApp().plater()->model().model_info->cover_file = m_file_name.ToStdString(); + wxGetApp().plater()->model().model_info->cover_file = std::string(m_file_name.ToUTF8().data()); auto full_path = m_file_path.branch_path(); auto full_root_path = full_path.branch_path(); From 83a9459837770fe9fa8181f7f8549f84ba05d21a Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Fri, 19 Aug 2022 15:38:11 +0800 Subject: [PATCH 028/137] Fix a typo error in preset Change-Id: Idb3f872d226c9ff841751915eae608ded25676c7 --- src/libslic3r/Preset.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 6407aab34e..a1c981535d 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1394,7 +1394,7 @@ bool PresetCollection::load_user_preset(std::string name, std::map Date: Fri, 19 Aug 2022 17:59:29 +0800 Subject: [PATCH 029/137] ENH: force retraction and wiping when leave external wall This can reduce dragging and reduce seams Signed-off-by: salt.wei Change-Id: I60e3c11493ca9ef00a8fd22c437f67cddac32724 --- src/libslic3r/GCode.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 74b4035957..3142d491a3 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3798,6 +3798,11 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role) return false; } + //BBS: force to retract when leave from external perimeter for a long travel + //Better way is judging whether the travel move direction is same with last extrusion move. + if (is_perimeter(m_last_processor_extrusion_role) && m_last_processor_extrusion_role != erPerimeter) + return true; + if (role == erSupportMaterial || role == erSupportTransition) { const SupportLayer* support_layer = dynamic_cast(m_layer); //FIXME support_layer->support_islands.contains should use some search structure! From 5bea8a76fc59fd0e13a092404a3141bca8d8a8fb Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Mon, 22 Aug 2022 14:47:01 +0800 Subject: [PATCH 030/137] ENH: cherry pick some fix about seam from PrusaSlicer Synced from PrusaSlicer. Thanks Signed-off-by: salt.wei Change-Id: I043088d9795f5352d4e0b5060402b70897fd7592 --- src/libslic3r/GCode/SeamPlacer.cpp | 38 ++++++++++++++---------------- src/libslic3r/GCode/SeamPlacer.hpp | 3 +-- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index bfb88d2f3c..1c9ecda834 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -422,11 +422,12 @@ void process_perimeter_polygon( if (orig_polygon.size() == 0) { return; } Polygon polygon = orig_polygon; bool was_clockwise = polygon.make_counter_clockwise(); + float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f; std::vector lengths{}; for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); } lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); - std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, SeamPlacer::polygon_local_angles_arm_distance); + std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, angle_arm_len); result.perimeters.push_back({}); Perimeter &perimeter = result.perimeters.back(); @@ -829,6 +830,10 @@ void pick_random_seam_point(const std::vector &perimeter_points, }; std::vector viables; + const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position; + float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f, 78.233f, 133.3333f))) * 43758.5453f); + rand = rand - (int) rand; + for (size_t index = start_index; index < end_index; ++index) { if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { // index ok, push info into viables @@ -851,7 +856,7 @@ void pick_random_seam_point(const std::vector &perimeter_points, // now pick random point from the stored options float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { return acc + v.edge_length; }); - float picked_len = len_sum * (rand() / (float(RAND_MAX) + 1)); + float picked_len = len_sum * rand; size_t point_idx = 0; while (picked_len - viables[point_idx].edge_length > 0) { @@ -873,11 +878,7 @@ class PerimeterDistancer public: PerimeterDistancer(const Layer *layer) { - static const float eps = float(scale_(g_config_slice_closing_radius)); - // merge with offset - ExPolygons merged = layer->merged(eps); - // ofsset back - ExPolygons layer_outline = offset_ex(merged, -eps); + ExPolygons layer_outline = layer->lslices; for (const ExPolygon &island : layer_outline) { assert(island.contour.is_counter_clockwise()); for (const auto &line : island.contour.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } @@ -889,9 +890,9 @@ public: tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); } - float distance_from_perimeter(const Point &point) const + float distance_from_perimeter(const Vec2f &point) const { - Vec2d p = unscale(point); + Vec2d p = point.cast(); size_t hit_idx_out{}; Vec2d hit_point_out = Vec2d::Zero(); auto distance = AABBTreeLines::squared_distance_to_indexed_lines(lines, tree, p, hit_idx_out, hit_point_out); @@ -966,17 +967,15 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) std::unique_ptr current_layer_distancer = std::make_unique(po->layers()[layer_idx]); for (SeamCandidate &perimeter_point : layers[layer_idx].points) { - Point point = Point::new_scale(Vec2f{perimeter_point.position.head<2>()}); + Vec2f point = Vec2f{perimeter_point.position.head<2>()}; if (prev_layer_distancer.get() != nullptr) { - perimeter_point.overhang = (prev_layer_distancer->distance_from_perimeter(point) + 0.5f * perimeter_point.perimeter.flow_width - - tan(SeamPlacer::overhang_angle_threshold) * po->layers()[layer_idx]->height) / - (3.0f * perimeter_point.perimeter.flow_width); - // NOTE disables the feature to place seams on slowly decreasing areas. Remove the following line to enable. + perimeter_point.overhang = prev_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width - + tan(SeamPlacer::overhang_angle_threshold) * po->layers()[layer_idx]->height; perimeter_point.overhang = perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; } if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) - perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + 0.5f * perimeter_point.perimeter.flow_width; + perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width; } } @@ -1199,7 +1198,7 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: observations[index] = current.position.head<2>(); observation_points[index] = current.position.z(); weights[index] = angle_weight(current.local_ccw_angle); - float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -1.0f : 1.0f; + float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f; if (current.type == EnforcedBlockedSeamPoint::Enforced) { sign = 1.0f; weights[index] += 3.0f; @@ -1216,8 +1215,8 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: // Perimeter structure of the point; also set flag aligned to true for (size_t index = 0; index < seam_string.size(); ++index) { const auto &pair = seam_string[index]; - float t = std::min(1.0f, std::abs(layers[pair.first].points[pair.second].local_ccw_angle) / SeamPlacer::sharp_angle_snapping_threshold); - if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced) { t = std::max(0.7f, t); } + float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle) / SeamPlacer::sharp_angle_snapping_threshold, 3.0f)); + if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced) { t = std::max(0.4f, t); } Vec3f current_pos = layers[pair.first].points[pair.second].position; Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); @@ -1373,8 +1372,7 @@ void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool extern // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, // thus empty path segments will not be produced by G-code export. - //if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { - if (!loop.split_at_vertex(seam_point)) { + if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { // The point is not in the original loop. // Insert it. loop.split_at(seam_point, true); diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index de99e12d34..43727f1731 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -118,11 +118,10 @@ public: // square of number of rays per sample point static constexpr size_t sqr_rays_per_sample_point = 5; - // arm length used during angles computation - static constexpr float polygon_local_angles_arm_distance = 0.3f; // snapping angle - angles larger than this value will be snapped to during seam painting static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction + //BBS static constexpr float overhang_angle_threshold = 45.0f * float(PI) / 180.0f; // determines angle importance compared to visibility ( neutral value is 1.0f. ) From dbe354995e6d0c77f636faf2295b7aa7275b9f20 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Thu, 18 Aug 2022 14:17:14 +0800 Subject: [PATCH 031/137] ENH:Optimized Gizmo toolbar layout Change-Id: I9e323c310abd2afcf0f9586ba261f714dd718f38 --- resources/images/seperator.svg | 70 +----------------- src/slic3r/GUI/GLCanvas3D.cpp | 128 ++++++++++++++++++++++++++------- src/slic3r/GUI/GLCanvas3D.hpp | 7 ++ src/slic3r/GUI/GLToolbar.cpp | 8 ++- src/slic3r/GUI/GLToolbar.hpp | 5 +- src/slic3r/GUI/GUI_App.cpp | 20 +++--- src/slic3r/GUI/GUI_Preview.cpp | 2 + 7 files changed, 132 insertions(+), 108 deletions(-) diff --git a/resources/images/seperator.svg b/resources/images/seperator.svg index d8313899c7..c053a0aa4a 100644 --- a/resources/images/seperator.svg +++ b/resources/images/seperator.svg @@ -1,69 +1,3 @@ - - - - - - - - - - - - - + + diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index fbbaccb051..e9a54f7da7 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -595,6 +595,7 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, Bed3D &bed) #endif , m_in_render(false) , m_main_toolbar(GLToolbar::Normal, "Main") + , m_separator_toolbar(GLToolbar::Normal, "Separator") , m_assemble_view_toolbar(GLToolbar::Normal, "Assembly_View") , m_return_toolbar() , m_canvas_type(ECanvasType::CanvasView3D) @@ -1021,6 +1022,11 @@ void GLCanvas3D::enable_return_toolbar(bool enable) m_return_toolbar.set_enabled(enable); } +void GLCanvas3D::enable_separator_toolbar(bool enable) +{ + m_separator_toolbar.set_enabled(enable); +} + void GLCanvas3D::enable_dynamic_background(bool enable) { m_dynamic_background_enabled = enable; @@ -4989,6 +4995,9 @@ bool GLCanvas3D::_init_toolbars() if (!_init_return_toolbar()) return false; + if (!_init_separator_toolbar()) + return false; + #if 0 if (!_init_view_toolbar()) return false; @@ -5129,16 +5138,6 @@ bool GLCanvas3D::_init_main_toolbar() if (!m_main_toolbar.add_item(item)) return false; - GLToolbarItem::Data sperate_item; - sperate_item.name = "seperatetag"; - sperate_item.icon_filename = "seperator.svg"; - sperate_item.sprite_id = ++item.sprite_id; - sperate_item.left.action_callback = [this]() { }; - sperate_item.visibility_callback = []()->bool { return true; }; - sperate_item.enabling_callback = []()->bool { return false; }; - if (!m_main_toolbar.add_item(sperate_item)) - return false; - return true; } @@ -5202,16 +5201,6 @@ bool GLCanvas3D::_init_assemble_view_toolbar() m_assemble_view_toolbar.set_separator_size(10); m_assemble_view_toolbar.set_gap_size(4); - GLToolbarItem::Data sperate_item; - sperate_item.name = "start_seperator"; - sperate_item.icon_filename = "seperator.svg"; - sperate_item.sprite_id = 0; - sperate_item.left.action_callback = [this]() {}; - sperate_item.visibility_callback = []()->bool { return true; }; - sperate_item.enabling_callback = []()->bool { return false; }; - if (!m_assemble_view_toolbar.add_item(sperate_item)) - return false; - GLToolbarItem::Data item; item.name = "assembly_view"; item.icon_filename = "toolbar_assemble.svg"; @@ -5240,6 +5229,45 @@ bool GLCanvas3D::_init_return_toolbar() return m_return_toolbar.init(); } +bool GLCanvas3D::_init_separator_toolbar() +{ + if (!m_separator_toolbar.is_enabled()) + return true; + + + BackgroundTexture::Metadata background_data; + background_data.filename = "toolbar_background.png"; + background_data.left = 0; + background_data.top = 0; + background_data.right = 0; + background_data.bottom = 0; + + if (!m_separator_toolbar.init(background_data)) + { + // unable to init the toolbar texture, disable it + m_separator_toolbar.set_enabled(false); + return true; + } + + m_separator_toolbar.set_layout_type(GLToolbar::Layout::Horizontal); + //BBS: assemble toolbar is at the top and right, we don't need the rounded-corner effect at the left side and the top side + m_separator_toolbar.set_horizontal_orientation(GLToolbar::Layout::HO_Left); + m_separator_toolbar.set_vertical_orientation(GLToolbar::Layout::VO_Top); + m_separator_toolbar.set_border(5.0f); + + GLToolbarItem::Data sperate_item; + sperate_item.name = "start_seperator"; + sperate_item.icon_filename = "seperator.svg"; + sperate_item.sprite_id = 0; + sperate_item.left.action_callback = [this]() {}; + sperate_item.visibility_callback = []()->bool { return true; }; + sperate_item.enabling_callback = []()->bool { return false; }; + if (!m_separator_toolbar.add_item(sperate_item)) + return false; + + return true; +} + // BBS #if 0 @@ -5839,6 +5867,7 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() //BBS: GUI refactor: GLToolbar m_main_toolbar.set_scale(sc); m_assemble_view_toolbar.set_scale(sc); + m_separator_toolbar.set_scale(sc); collapse_toolbar.set_scale(sc); size *= m_retina_helper->get_scale_factor(); @@ -5848,15 +5877,16 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() //BBS: GUI refactor: GLToolbar m_main_toolbar.set_icons_size(GLGizmosManager::Default_Icons_Size * scale); m_assemble_view_toolbar.set_icons_size(size); + m_separator_toolbar.set_icons_size(size); collapse_toolbar.set_icons_size(size); #endif // ENABLE_RETINA_GL //BBS: GUI refactor: GLToolbar #if BBS_TOOLBAR_ON_TOP - float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : 0.0f; + float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : GLToolbar::Default_Icons_Size; - float top_tb_width = m_main_toolbar.get_width() + m_gizmos.get_scaled_total_width() + m_assemble_view_toolbar.get_width() + collapse_toolbar_width; - int items_cnt = m_main_toolbar.get_visible_items_cnt() + m_gizmos.get_selectable_icons_cnt() + m_assemble_view_toolbar.get_visible_items_cnt() + collapse_toolbar.get_visible_items_cnt(); + float top_tb_width = m_main_toolbar.get_width() + m_gizmos.get_scaled_total_width() + m_assemble_view_toolbar.get_width() + m_separator_toolbar.get_width() + collapse_toolbar_width; + int items_cnt = m_main_toolbar.get_visible_items_cnt() + m_gizmos.get_selectable_icons_cnt() + m_assemble_view_toolbar.get_visible_items_cnt() + m_separator_toolbar.get_visible_items_cnt() + collapse_toolbar.get_visible_items_cnt(); float noitems_width = top_tb_width - size * items_cnt; // width of separators and borders in top toolbars // calculate scale needed for items in all top toolbars @@ -5912,6 +5942,7 @@ void GLCanvas3D::_render_overlays() //BBS: GUI refactor: GLToolbar m_main_toolbar.set_scale(scale); m_assemble_view_toolbar.set_scale(scale); + m_separator_toolbar.set_scale(scale); wxGetApp().plater()->get_collapse_toolbar().set_scale(scale); m_gizmos.set_overlay_scale(scale); #else @@ -5924,10 +5955,13 @@ void GLCanvas3D::_render_overlays() //BBS: GUI refactor: GLToolbar m_main_toolbar.set_icons_size(gizmo_size); m_assemble_view_toolbar.set_icons_size(gizmo_size); + m_separator_toolbar.set_icons_size(gizmo_size); wxGetApp().plater()->get_collapse_toolbar().set_icons_size(size); m_gizmos.set_overlay_icon_size(gizmo_size); #endif // ENABLE_RETINA_GL + _render_separator_toolbar_right(); + _render_separator_toolbar_left(); _render_main_toolbar(); //BBS: GUI refactor: GLToolbar _render_imgui_select_plate_toolbar(); @@ -6130,8 +6164,9 @@ void GLCanvas3D::_render_main_toolbar() float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : 0.0f; float gizmo_width = m_gizmos.get_scaled_total_width(); float assemble_width = m_assemble_view_toolbar.get_width(); + float separator_width = m_separator_toolbar.get_width(); float top = 0.5f * (float)cnv_size.get_height() * inv_zoom; - float left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + gizmo_width + assemble_width - collapse_toolbar_width)) * inv_zoom; + float left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + separator_width + gizmo_width + assemble_width - collapse_toolbar_width)) * inv_zoom; #else float gizmo_height = m_gizmos.get_scaled_total_height(); float space_height = GLGizmosManager::Default_Icons_Size * wxGetApp().toolbar_icon_scale(); @@ -6322,8 +6357,9 @@ void GLCanvas3D::_render_assemble_view_toolbar() const float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : 0.0f; float gizmo_width = m_gizmos.get_scaled_total_width(); float assemble_width = m_assemble_view_toolbar.get_width(); + float separator_width = m_separator_toolbar.get_width(); float top = 0.5f * (float)cnv_size.get_height() * inv_zoom; - float main_toolbar_left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + gizmo_width + assemble_width - collapse_toolbar_width)) * inv_zoom; + float main_toolbar_left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + gizmo_width + assemble_width - separator_width - collapse_toolbar_width)) * inv_zoom; float left = main_toolbar_left + (m_main_toolbar.get_width() + gizmo_width) * inv_zoom; //float left = 0.5f * (m_main_toolbar.get_width() + gizmo_width - m_assemble_view_toolbar.get_width() + collapse_toolbar_width) * inv_zoom; #else @@ -6392,6 +6428,48 @@ void GLCanvas3D::_render_return_toolbar() const imgui.end(); } +void GLCanvas3D::_render_separator_toolbar_right() const +{ + if (!m_separator_toolbar.is_enabled()) + return; + + Size cnv_size = get_canvas_size(); + float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); + + GLToolbar& collapse_toolbar = wxGetApp().plater()->get_collapse_toolbar(); + float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : 0.0f; + float gizmo_width = m_gizmos.get_scaled_total_width(); + float assemble_width = m_assemble_view_toolbar.get_width(); + float separator_width = m_separator_toolbar.get_width(); + float top = 0.5f * (float)cnv_size.get_height() * inv_zoom; + float main_toolbar_left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + gizmo_width + assemble_width - collapse_toolbar_width)) * inv_zoom; + float left = main_toolbar_left + (m_main_toolbar.get_width() + gizmo_width) * inv_zoom; + + m_separator_toolbar.set_position(top, left); + m_separator_toolbar.render(*this,GLToolbarItem::SeparatorLine); +} + +void GLCanvas3D::_render_separator_toolbar_left() const +{ + if (!m_separator_toolbar.is_enabled()) + return; + + Size cnv_size = get_canvas_size(); + float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); + + GLToolbar& collapse_toolbar = wxGetApp().plater()->get_collapse_toolbar(); + float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : 0.0f; + float gizmo_width = m_gizmos.get_scaled_total_width(); + float assemble_width = m_assemble_view_toolbar.get_width(); + float separator_width = m_separator_toolbar.get_width(); + float top = 0.5f * (float)cnv_size.get_height() * inv_zoom; + float main_toolbar_left = std::max(-0.5f * cnv_size.get_width(), -0.5f * (m_main_toolbar.get_width() + gizmo_width + assemble_width + separator_width - collapse_toolbar_width)) * inv_zoom; + float left = main_toolbar_left + (m_main_toolbar.get_width()) * inv_zoom; + + m_separator_toolbar.set_position(top, left); + m_separator_toolbar.render(*this,GLToolbarItem::SeparatorLine); +} + void GLCanvas3D::_render_collapse_toolbar() const { GLToolbar& collapse_toolbar = wxGetApp().plater()->get_collapse_toolbar(); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 2d26513d63..a09f4333b6 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -399,6 +399,7 @@ private: GLGizmosManager m_gizmos; //BBS: GUI refactor: GLToolbar mutable GLToolbar m_main_toolbar; + mutable GLToolbar m_separator_toolbar; mutable IMToolbar m_sel_plate_toolbar; mutable GLToolbar m_assemble_view_toolbar; mutable IMReturnToolbar m_return_toolbar; @@ -667,6 +668,7 @@ public: void enable_select_plate_toolbar(bool enable); void enable_assemble_view_toolbar(bool enable); void enable_return_toolbar(bool enable); + void enable_separator_toolbar(bool enable); void enable_dynamic_background(bool enable); void enable_labels(bool enable) { m_labels.enable(enable); } void enable_slope(bool enable) { m_slope.enable(enable); } @@ -686,6 +688,8 @@ public: float get_main_toolbar_width() { return m_main_toolbar.get_width();} float get_assemble_view_toolbar_width() { return m_assemble_view_toolbar.get_width(); } float get_assemble_view_toolbar_height() { return m_assemble_view_toolbar.get_height(); } + float get_separator_toolbar_width() { return m_separator_toolbar.get_width(); } + float get_separator_toolbar_height() { return m_separator_toolbar.get_height(); } float get_collapse_toolbar_width(); float get_collapse_toolbar_height(); @@ -923,6 +927,7 @@ private: bool _update_imgui_select_plate_toolbar(); bool _init_assemble_view_toolbar(); bool _init_return_toolbar(); + bool _init_separator_toolbar(); // BBS //bool _init_view_toolbar(); bool _init_collapse_toolbar(); @@ -967,6 +972,8 @@ private: void _render_imgui_select_plate_toolbar() const; void _render_assemble_view_toolbar() const; void _render_return_toolbar() const; + void _render_separator_toolbar_right() const; + void _render_separator_toolbar_left() const; void _render_collapse_toolbar() const; // BBS //void _render_view_toolbar() const; diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index 25d82b2625..0edf217efc 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -537,7 +537,7 @@ bool GLToolbar::update_items_state() return ret; } -void GLToolbar::render(const GLCanvas3D& parent) +void GLToolbar::render(const GLCanvas3D& parent,GLToolbarItem::EType type) { if (!m_enabled || m_items.empty()) return; @@ -548,7 +548,7 @@ void GLToolbar::render(const GLCanvas3D& parent) switch (m_layout.type) { default: - case Layout::Horizontal: { render_horizontal(parent); break; } + case Layout::Horizontal: { render_horizontal(parent,type); break; } case Layout::Vertical: { render_vertical(parent); break; } } } @@ -1385,7 +1385,7 @@ void GLToolbar::render_arrow(const GLCanvas3D& parent, GLToolbarItem* highlighte } } -void GLToolbar::render_horizontal(const GLCanvas3D& parent) +void GLToolbar::render_horizontal(const GLCanvas3D& parent,GLToolbarItem::EType type) { float inv_zoom = (float)wxGetApp().plater()->get_camera().get_inv_zoom(); float factor = inv_zoom * m_layout.scale; @@ -1403,6 +1403,8 @@ void GLToolbar::render_horizontal(const GLCanvas3D& parent) float left = m_layout.left; float top = m_layout.top; float right = left + scaled_width; + if (type == GLToolbarItem::SeparatorLine) + right = left + scaled_width * 0.5; float bottom = top - scaled_height; render_background(left, top, right, bottom, scaled_border); diff --git a/src/slic3r/GUI/GLToolbar.hpp b/src/slic3r/GUI/GLToolbar.hpp index c1b47b0fb0..af95aa2d0a 100644 --- a/src/slic3r/GUI/GLToolbar.hpp +++ b/src/slic3r/GUI/GLToolbar.hpp @@ -67,6 +67,7 @@ public: //BBS: GUI refactor: GLToolbar ActionWithText, ActionWithTextImage, + SeparatorLine, Num_Types }; @@ -399,7 +400,7 @@ public: // returns true if any item changed its state bool update_items_state(); - void render(const GLCanvas3D& parent); + void render(const GLCanvas3D& parent,GLToolbarItem::EType type = GLToolbarItem::Action); void render_arrow(const GLCanvas3D& parent, GLToolbarItem* highlighted_item); bool on_mouse(wxMouseEvent& evt, GLCanvas3D& parent); @@ -428,7 +429,7 @@ private: int contains_mouse_vertical(const Vec2d& mouse_pos, const GLCanvas3D& parent) const; void render_background(float left, float top, float right, float bottom, float border) const; - void render_horizontal(const GLCanvas3D& parent); + void render_horizontal(const GLCanvas3D& parent,GLToolbarItem::EType type); void render_vertical(const GLCanvas3D& parent); bool generate_icons_texture(); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 194b3ae44d..041ce1fba2 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2534,21 +2534,21 @@ float GUI_App::toolbar_icon_scale(const bool is_limited/* = false*/) const const float icon_sc = m_em_unit * 0.1f; #endif // __APPLE__ - return icon_sc; + //return icon_sc; - //const std::string& auto_val = app_config->get("toolkit_size"); + const std::string& auto_val = app_config->get("toolkit_size"); - //if (auto_val.empty()) - // return icon_sc; + if (auto_val.empty()) + return icon_sc; - //int int_val = 100; - //// correct value in respect to toolkit_size - //int_val = std::min(atoi(auto_val.c_str()), int_val); + int int_val = 100; + // correct value in respect to toolkit_size + int_val = std::min(atoi(auto_val.c_str()), int_val); - //if (is_limited && int_val < 50) - // int_val = 50; + if (is_limited && int_val < 50) + int_val = 50; - //return 0.01f * int_val * icon_sc; + return 0.01f * int_val * icon_sc; } void GUI_App::set_auto_toolbar_icon_scale(float scale) const diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index d9db9e0f31..e42bc599df 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -78,6 +78,7 @@ bool View3D::init(wxWindow* parent, Bed3D& bed, Model* model, DynamicPrintConfig //BBS: GUI refactor: GLToolbar m_canvas->enable_select_plate_toolbar(false); m_canvas->enable_assemble_view_toolbar(true); + m_canvas->enable_separator_toolbar(true); m_canvas->enable_labels(true); m_canvas->enable_slope(true); @@ -763,6 +764,7 @@ bool AssembleView::init(wxWindow* parent, Bed3D& bed, Model* model, DynamicPrint //BBS: GUI refactor: GLToolbar m_canvas->enable_assemble_view_toolbar(false); m_canvas->enable_return_toolbar(true); + m_canvas->enable_separator_toolbar(false); // BBS: set volume_selection_mode to Volume m_canvas->get_selection().set_volume_selection_mode(Selection::Volume); From 18d0ac259eb0781711f3831acd2b6f6076da2539 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Mon, 22 Aug 2022 15:42:47 +0800 Subject: [PATCH 032/137] ENH: add filament configure of 0.2 nozzle Signed-off-by: qing.zhang Change-Id: I23cc9979cefe6bf5198526007eb57a9ec785426e --- resources/profiles/BBL.json | 70 ++++++++++++++++++- .../Bambu ABS @BBL X1C 0.2 nozzle.json | 2 +- .../BBL/filament/Bambu PA-CF @BBL X1C.json | 22 +++++- .../Bambu PC @BBL X1C 0.2 nozzle.json | 17 +++++ .../BBL/filament/Bambu PLA Basic @BBL X1.json | 6 +- .../Bambu PLA Basic @BBL X1C 0.2 nozzle.json | 2 +- .../Bambu PLA Basic @BBL X1C 0.8 nozzle.json | 2 +- .../BBL/filament/Bambu PLA Matte @BBL X1.json | 4 +- .../Bambu PLA Matte @BBL X1C 0.2 nozzle.json | 2 +- .../Bambu PLA Matte @BBL X1C 0.8 nozzle.json | 2 +- .../BBL/filament/Bambu Support W @BBL X1.json | 4 +- .../Bambu Support W @BBL X1C 0.2 nozzle.json | 14 ++++ .../BBL/filament/Bambu TPU 95A @BBL X1.json | 4 +- .../Bambu TPU 95A @BBL X1C 0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic ABS @0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic ABS @base.json | 14 ++++ .../profiles/BBL/filament/Generic ABS.json | 9 +-- .../BBL/filament/Generic ASA @0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic ASA @base.json | 14 ++++ .../profiles/BBL/filament/Generic ASA.json | 9 +-- .../profiles/BBL/filament/Generic PA-CF.json | 36 +++++++--- .../profiles/BBL/filament/Generic PA.json | 10 +-- .../BBL/filament/Generic PC @0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic PC @base.json | 14 ++++ .../profiles/BBL/filament/Generic PC.json | 29 +++----- .../filament/Generic PETG @0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic PETG @base.json | 44 ++++++++++++ .../profiles/BBL/filament/Generic PETG.json | 41 +---------- .../BBL/filament/Generic PLA @0.2 nozzle.json | 14 ++++ .../BBL/filament/Generic PLA @base.json | 17 +++++ .../profiles/BBL/filament/Generic PLA-CF.json | 4 +- .../profiles/BBL/filament/Generic PLA.json | 12 +--- .../profiles/BBL/filament/Generic PVA.json | 3 +- .../BBL/machine/Bambu Lab X1 0.6 nozzle.json | 31 ++++++++ .../BBL/machine/Bambu Lab X1 0.8 nozzle.json | 35 ++++++++++ .../profiles/BBL/machine/Bambu Lab X1.json | 2 +- .../0.30mm Standard @BBL X1 0.6 nozzle.json | 11 +++ .../0.40mm Standard @BBL X1 0.8 nozzle.json | 11 +++ 38 files changed, 467 insertions(+), 114 deletions(-) create mode 100644 resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic ABS @base.json create mode 100644 resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic ASA @base.json create mode 100644 resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic PC @base.json create mode 100644 resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic PETG @base.json create mode 100644 resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Generic PLA @base.json create mode 100644 resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json create mode 100644 resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json create mode 100644 resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json create mode 100644 resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index bd01b30ca2..479f114906 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.01.06", + "version": "01.01.01.07", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -91,9 +91,17 @@ "name": "0.30mm Standard @BBL X1C 0.6 nozzle", "sub_path": "process/0.30mm Standard @BBL X1C 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @BBL X1 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL X1 0.6 nozzle.json" + }, { "name": "0.40mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.40mm Standard @BBL X1C 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @BBL X1 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL X1 0.8 nozzle.json" } ], "filament_list": [ @@ -185,30 +193,70 @@ "name": "PolyLite PLA @base", "sub_path": "filament/PolyLite PLA @base.json" }, + { + "name": "Generic PLA @base", + "sub_path": "filament/Generic PLA @base.json" + }, { "name": "Generic PLA", "sub_path": "filament/Generic PLA.json" }, + { + "name": "Generic PLA @0.2 nozzle", + "sub_path": "filament/Generic PLA @0.2 nozzle.json" + }, { "name": "Generic PLA-CF", "sub_path": "filament/Generic PLA-CF.json" }, + { + "name": "Generic PETG @base", + "sub_path": "filament/Generic PETG @base.json" + }, + { + "name": "Generic PETG @0.2 nozzle", + "sub_path": "filament/Generic PETG @0.2 nozzle.json" + }, { "name": "Generic PETG", "sub_path": "filament/Generic PETG.json" }, + { + "name": "Generic ABS @base", + "sub_path": "filament/Generic ABS @base.json" + }, { "name": "Generic ABS", "sub_path": "filament/Generic ABS.json" }, + { + "name": "Generic ABS @0.2 nozzle", + "sub_path": "filament/Generic ABS @0.2 nozzle.json" + }, { "name": "Generic TPU", "sub_path": "filament/Generic TPU.json" }, + { + "name": "Generic ASA @base", + "sub_path": "filament/Generic ASA @base.json" + }, + { + "name": "Generic ASA @0.2 nozzle", + "sub_path": "filament/Generic ASA @0.2 nozzle.json" + }, { "name": "Generic ASA", "sub_path": "filament/Generic ASA.json" }, + { + "name": "Generic PC @base", + "sub_path": "filament/Generic PC @base.json" + }, + { + "name": "Generic PC @0.2 nozzle", + "sub_path": "filament/Generic PC @0.2 nozzle.json" + }, { "name": "Generic PC", "sub_path": "filament/Generic PC.json" @@ -229,6 +277,10 @@ "name": "Bambu TPU 95A @BBL X1C", "sub_path": "filament/Bambu TPU 95A @BBL X1C.json" }, + { + "name": "Bambu TPU 95A @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu TPU 95A @BBL X1C 0.2 nozzle.json" + }, { "name": "Bambu TPU 95A @BBL X1", "sub_path": "filament/Bambu TPU 95A @BBL X1.json" @@ -281,6 +333,10 @@ "name": "Bambu Support W @BBL X1C", "sub_path": "filament/Bambu Support W @BBL X1C.json" }, + { + "name": "Bambu Support W @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL X1C 0.2 nozzle.json" + }, { "name": "Bambu Support W @BBL X1", "sub_path": "filament/Bambu Support W @BBL X1.json" @@ -297,6 +353,10 @@ "name": "Bambu PC @BBL X1C", "sub_path": "filament/Bambu PC @BBL X1C.json" }, + { + "name": "Bambu PC @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PC @BBL X1C 0.2 nozzle.json" + }, { "name": "Bambu PC @BBL X1C 0.8 nozzle", "sub_path": "filament/Bambu PC @BBL X1C 0.8 nozzle.json" @@ -339,6 +399,14 @@ "name": "Bambu Lab X1 0.4 nozzle", "sub_path": "machine/Bambu Lab X1 0.4 nozzle.json" }, + { + "name": "Bambu Lab X1 0.8 nozzle", + "sub_path": "machine/Bambu Lab X1 0.8 nozzle.json" + }, + { + "name": "Bambu Lab X1 0.6 nozzle", + "sub_path": "machine/Bambu Lab X1 0.6 nozzle.json" + }, { "name": "Bambu Lab X1 Carbon 0.2 nozzle", "sub_path": "machine/Bambu Lab X1 Carbon 0.2 nozzle.json" diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json index 3e546157c6..3dac721007 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "Bambu ABS @base", "filament_max_volumetric_speed": [ - "2" + "4" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json index b5e5767a53..958e53c829 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json @@ -8,7 +8,27 @@ "filament_max_volumetric_speed": [ "8" ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature": [ + "290" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "fan_cooling_layer_time": [ + "6" + ], + "full_fan_speed_layer": [ + "2" + ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.4 nozzle" + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..1ba66f49df --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.2 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "setting_id": "GFSC00_02", + "name": "Bambu PC @BBL X1C 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu PC @base", + "filament_max_volumetric_speed": [ + "1" + ], + "nozzle_temperature": [ + "260" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json index 8ebcaa36d5..0957d4dd0f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1.json @@ -12,6 +12,8 @@ "8" ], "compatible_printers": [ - "Bambu Lab X1 0.4 nozzle" - ] + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] } diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json index 1d178e4082..feb592f8ab 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "Bambu PLA Basic @base", "filament_max_volumetric_speed": [ - "2.5" + "4" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json index b839b9bfc4..aca84b0d7a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json @@ -9,7 +9,7 @@ "21" ], "slow_down_min_speed": [ - "30" + "20" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json index 02ded53c2f..83332e44ca 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json @@ -12,6 +12,8 @@ "8" ], "compatible_printers": [ - "Bambu Lab X1 0.4 nozzle" + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json index 15993f4cee..e3a2fd5ae4 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "Bambu PLA Matte @base", "filament_max_volumetric_speed": [ - "2.5" + "4" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json index d59a62fba1..7d46ab5456 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json @@ -9,7 +9,7 @@ "22" ], "slow_down_min_speed": [ - "30" + "20" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json b/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json index 070b48af75..c5f6c4454f 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL X1.json @@ -6,6 +6,8 @@ "instantiation": "true", "inherits": "Bambu Support W @base", "compatible_printers": [ - "Bambu Lab X1 0.4 nozzle" + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..75e31aed23 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support W @BBL X1C 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSS00_00", + "name": "Bambu Support W @BBL X1C 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support W @base", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json index 2f6278877d..9c041fa4f9 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1.json @@ -9,6 +9,8 @@ "6.4" ], "compatible_printers": [ - "Bambu Lab X1 0.4 nozzle" + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..b9850d224c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSU00_00", + "name": "Bambu TPU 95A @BBL X1C 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu TPU 95A @base", + "filament_max_volumetric_speed": [ + "0.5" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json new file mode 100644 index 0000000000..df120b8dfe --- /dev/null +++ b/resources/profiles/BBL/filament/Generic ABS @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSB99_00", + "name": "Generic ABS @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Generic ABS @base", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic ABS @base.json b/resources/profiles/BBL/filament/Generic ABS @base.json new file mode 100644 index 0000000000..044703f6a9 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic ABS @base.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "name": "Generic ABS @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "16" + ] +} diff --git a/resources/profiles/BBL/filament/Generic ABS.json b/resources/profiles/BBL/filament/Generic ABS.json index a2f2fa1597..d5aa991035 100644 --- a/resources/profiles/BBL/filament/Generic ABS.json +++ b/resources/profiles/BBL/filament/Generic ABS.json @@ -1,17 +1,10 @@ { "type": "filament", - "filament_id": "GFB99", "setting_id": "GFSB99", "name": "Generic ABS", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "16" - ], + "inherits": "Generic ABS @base", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json new file mode 100644 index 0000000000..50e258da07 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic ASA @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSB98_00", + "name": "Generic ASA @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Generic ASA @base", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic ASA @base.json b/resources/profiles/BBL/filament/Generic ASA @base.json new file mode 100644 index 0000000000..ac74598de7 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic ASA @base.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "name": "Generic ASA @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ] +} diff --git a/resources/profiles/BBL/filament/Generic ASA.json b/resources/profiles/BBL/filament/Generic ASA.json index 2d63f41ec2..6bdebc00e2 100644 --- a/resources/profiles/BBL/filament/Generic ASA.json +++ b/resources/profiles/BBL/filament/Generic ASA.json @@ -1,17 +1,10 @@ { "type": "filament", - "filament_id": "GFB98", "setting_id": "GFSB98", "name": "Generic ASA", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], + "inherits": "Generic ASA @base", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PA-CF.json b/resources/profiles/BBL/filament/Generic PA-CF.json index e99b4ce59d..cca171454e 100644 --- a/resources/profiles/BBL/filament/Generic PA-CF.json +++ b/resources/profiles/BBL/filament/Generic PA-CF.json @@ -7,18 +7,32 @@ "instantiation": "true", "inherits": "fdm_filament_pa", "filament_type": [ - "PA-CF" + "PA-CF" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature": [ + "290" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "fan_max_speed": [ + "40" ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "8" + "fan_min_speed": [ + "10" + ], + "fan_cooling_layer_time": [ + "6" + ], + "full_fan_speed_layer": [ + "2" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.4 nozzle" - ] + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] } diff --git a/resources/profiles/BBL/filament/Generic PA.json b/resources/profiles/BBL/filament/Generic PA.json index 401f1278a1..30e87d4cdb 100644 --- a/resources/profiles/BBL/filament/Generic PA.json +++ b/resources/profiles/BBL/filament/Generic PA.json @@ -7,15 +7,17 @@ "instantiation": "true", "inherits": "fdm_filament_pa", "nozzle_temperature_initial_layer": [ - "280" + "280" ], "nozzle_temperature": [ - "280" + "280" ], "filament_max_volumetric_speed": [ - "16" + "16" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.4 nozzle" + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json new file mode 100644 index 0000000000..c6ee4b7fb7 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PC @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSC99_00", + "name": "Generic PC @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Generic PC @base", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PC @base.json b/resources/profiles/BBL/filament/Generic PC @base.json new file mode 100644 index 0000000000..dc053680d1 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PC @base.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "name": "Generic PC @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "16" + ], + "filament_flow_ratio": [ + "0.94" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PC.json b/resources/profiles/BBL/filament/Generic PC.json index 35d6fcd54a..e201d139f5 100644 --- a/resources/profiles/BBL/filament/Generic PC.json +++ b/resources/profiles/BBL/filament/Generic PC.json @@ -1,20 +1,13 @@ { - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSC99", - "name": "Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "16" - ], - "filament_flow_ratio": [ - "0.94" - ], - "compatible_printers": [ - "Bambu Lab X1 Carbon 0.4 nozzle", - "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" - ] + "type": "filament", + "setting_id": "GFSC99", + "name": "Generic PC", + "from": "system", + "instantiation": "true", + "inherits": "Generic PC @base", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] } diff --git a/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json new file mode 100644 index 0000000000..c35fae366c --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSG99_00", + "name": "Generic PETG @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Generic PETG @base", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json new file mode 100644 index 0000000000..a9b4ab5784 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "name": "Generic PETG @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S255\n{endif};Prevent PETG from jamming" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PETG.json b/resources/profiles/BBL/filament/Generic PETG.json index 8d5fe9aa1c..10fbe5aa16 100644 --- a/resources/profiles/BBL/filament/Generic PETG.json +++ b/resources/profiles/BBL/filament/Generic PETG.json @@ -1,47 +1,10 @@ { "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSG99", + "setting_id": "GFSG99_00", "name": "Generic PETG", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "20" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S255\n{endif};Prevent PETG from jamming" - ], + "inherits": "Generic PETG @base", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json new file mode 100644 index 0000000000..bcf1c6080b --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "setting_id": "GFSL99_00", + "name": "Generic PLA @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Generic PLA @base", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PLA @base.json b/resources/profiles/BBL/filament/Generic PLA @base.json new file mode 100644 index 0000000000..d0d179742a --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PLA @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "name": "Generic PLA @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ] +} diff --git a/resources/profiles/BBL/filament/Generic PLA-CF.json b/resources/profiles/BBL/filament/Generic PLA-CF.json index 01d3ae4bbf..a0b250586c 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF.json @@ -22,6 +22,8 @@ "0" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.4 nozzle" + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PLA.json b/resources/profiles/BBL/filament/Generic PLA.json index 014cd3942f..f99a08d551 100644 --- a/resources/profiles/BBL/filament/Generic PLA.json +++ b/resources/profiles/BBL/filament/Generic PLA.json @@ -1,20 +1,10 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "GFSL99", "name": "Generic PLA", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], + "inherits": "Generic PLA @base", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PVA.json b/resources/profiles/BBL/filament/Generic PVA.json index f592862e7c..04e2607023 100644 --- a/resources/profiles/BBL/filament/Generic PVA.json +++ b/resources/profiles/BBL/filament/Generic PVA.json @@ -20,6 +20,7 @@ ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", - "Bambu Lab X1 0.4 nozzle" + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json new file mode 100644 index 0000000000..72f97d6de0 --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json @@ -0,0 +1,31 @@ +{ + "type": "machine", + "setting_id": "GM006", + "name": "Bambu Lab X1 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Lab X1 0.4 nozzle", + "printer_model": "Bambu Lab X1", + "default_filament_profile": [ + "Bambu PLA Basic @BBL X1" + ], + "default_print_profile": "0.30mm Standard @BBL X1 0.6 nozzle", + "nozzle_diameter": [ + "0.6" + ], + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ], + "retraction_length": [ + "1.4" + ], + "retraction_minimum_travel": [ + "3" + ], + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y5.0 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature[initial_extruder]}\nG0 E3 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \nG0 Y5.5 \nG0 X18 E25\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n\n ;G0 X18 Y28 F20000\n ;G0 Y0\n ;G0 Z0.3\n ;G0 X250 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n ;G0 Y0.9\n ;G0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.030 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.015 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623 \n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "nozzle_type": "hardened_steel" +} \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json new file mode 100644 index 0000000000..940e33fc62 --- /dev/null +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "machine", + "setting_id": "GM007", + "name": "Bambu Lab X1 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Lab X1 0.4 nozzle", + "printer_model": "Bambu Lab X1", + "default_filament_profile": [ + "Bambu PLA Basic @BBL X1" + ], + "nozzle_diameter": [ + "0.8" + ], + "printer_variant": "0.8", + "default_print_profile": "0.40mm Standard @BBL X1 0.8 nozzle", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "retraction_length": [ + "3" + ], + "retraction_minimum_travel": [ + "1" + ], + "retract_length_toolchange": [ + "3" + ], + "machine_start_gcode": "\n;===== date: 202200815 =====================\n;===== reset machine status =================\nG91\nM17 Z0.3 ; lower the z-motor current\nG0 Z7 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\n{if bbl_bed_temperature_gcode}\nM1002 set_heatbed_surface_temp:[bed_temperature_initial_layer_vector] ;config bed temps\nM140 A S[bed_temperature_initial_layer_single] ;set bed temp\nM190 A S[bed_temperature_initial_layer_single] ;wait for bed temp\n{else}\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n{endif}\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z2 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_tool]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_tool]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_tool]A\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z2 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;===== check scanner clarity ===========================\nM972 S5 P0 \nM400 S1\n;===== check scanner clarity end =======================\n\n=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_tool]==\"PLA\"}\n {if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \n{endif}\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z5 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y4.5 Z0.3 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 E3 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \nG0 Y5.5 \nG0 X129 E15\nG0 X18 E15\nM400\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n\n T1000 \n M83 \n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800 \n G0 X185.000 E9.35441 F4800 \n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.010 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X143.0 Y5.0 Z0.3 F18000.0;Move to first extrude line pos\n\nM400 P100\n\nM960 S1 P1\nM400 P100\nM973 S6 ; use auto exposure by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_extruder]} \n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623 \n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60} \n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 X128.0 Y253.0 Z0.2 F6000.0;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "nozzle_type": "hardened_steel" + } + \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1.json b/resources/profiles/BBL/machine/Bambu Lab X1.json index 1ebc1a3cee..943fb3c074 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1.json @@ -3,7 +3,7 @@ "name": "Bambu Lab X1", "model_id": "BL-P002", "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "nozzle_diameter": "0.4", + "nozzle_diameter": "0.4;0.6;0.8", "machine_tech": "FFF", "family": "BBL-3DP", "bed_model": "bbl-3dp-X1.stl", diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json new file mode 100644 index 0000000000..174a8c3460 --- /dev/null +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP011", + "name": "0.30mm Standard @BBL X1 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_bbl_0.30_nozzle_0.6", + "compatible_printers": [ + "Bambu Lab X1 0.6 nozzle" + ] +} diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json new file mode 100644 index 0000000000..29bfa35644 --- /dev/null +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP012", + "name": "0.40mm Standard @BBL X1 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_bbl_0.40_nozzle_0.8", + "compatible_printers": [ + "Bambu Lab X1 0.6 nozzle" + ] +} From d290fc809513fc2ac098f6deeb9e3ccd99dee59c Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Mon, 22 Aug 2022 17:19:58 +0800 Subject: [PATCH 033/137] FIX: fix exist invalid setting id Signed-off-by: qing.zhang Change-Id: If4e498a5b65f999634900ab6f0580c6edaab5acd --- resources/profiles/BBL/filament/Generic PETG.json | 2 +- resources/profiles/BBL/filament/fdm_filament_pla.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/BBL/filament/Generic PETG.json b/resources/profiles/BBL/filament/Generic PETG.json index 10fbe5aa16..b66c44d5bf 100644 --- a/resources/profiles/BBL/filament/Generic PETG.json +++ b/resources/profiles/BBL/filament/Generic PETG.json @@ -1,6 +1,6 @@ { "type": "filament", - "setting_id": "GFSG99_00", + "setting_id": "GFSG99", "name": "Generic PETG", "from": "system", "instantiation": "true", diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index a3b8a8f889..a93a17cb9c 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -65,7 +65,7 @@ "220" ], "temperature_vitrification": [ - "45" + "55" ], "nozzle_temperature_range_low": [ "190" From c6fc915164a54a1277057038a153d236cc5fad4b Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Mon, 22 Aug 2022 18:05:00 +0800 Subject: [PATCH 034/137] NEW: add preset of 0.6 & 0.8 X1C Signed-off-by: qing.zhang Change-Id: Ica13fe3284eb7165822d6f4f0f03da23625835eb --- .../profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json | 3 ++- resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json | 3 ++- resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json | 4 +++- .../profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json | 3 ++- .../profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json | 3 ++- resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json | 4 +++- resources/profiles/BBL/filament/Generic ABS.json | 4 +++- resources/profiles/BBL/filament/Generic ASA.json | 4 +++- resources/profiles/BBL/filament/Generic PA-CF.json | 4 +++- resources/profiles/BBL/filament/Generic PA.json | 4 +++- resources/profiles/BBL/filament/Generic PC.json | 4 +++- resources/profiles/BBL/filament/Generic PETG.json | 4 +++- resources/profiles/BBL/filament/Generic PLA-CF.json | 4 +++- resources/profiles/BBL/filament/Generic PLA.json | 4 +++- resources/profiles/BBL/filament/Generic PVA.json | 4 +++- resources/profiles/BBL/filament/Generic TPU.json | 4 +++- 16 files changed, 44 insertions(+), 16 deletions(-) diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json index e91cb8154b..c3230932b0 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json @@ -15,6 +15,7 @@ "10" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json index e1fc9845e5..fdaaec3bf2 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json @@ -11,6 +11,7 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", - "Bambu Lab X1 Carbon 0.6 nozzle" + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 0.6 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json index 958e53c829..944c053686 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @BBL X1C.json @@ -29,6 +29,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json index 82f7bc217a..d770c69d27 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.6 nozzle.json @@ -9,6 +9,7 @@ "260" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.6 nozzle" + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 0.6 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json index f10699dd06..141a95002c 100644 --- a/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PC @BBL X1C 0.8 nozzle.json @@ -9,6 +9,7 @@ "260" ], "compatible_printers": [ - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json index d78aa93bfc..3692f2dcc1 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support G @BBL X1C.json @@ -8,6 +8,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic ABS.json b/resources/profiles/BBL/filament/Generic ABS.json index d5aa991035..256bc5674f 100644 --- a/resources/profiles/BBL/filament/Generic ABS.json +++ b/resources/profiles/BBL/filament/Generic ABS.json @@ -9,6 +9,8 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic ASA.json b/resources/profiles/BBL/filament/Generic ASA.json index 6bdebc00e2..b2187b615f 100644 --- a/resources/profiles/BBL/filament/Generic ASA.json +++ b/resources/profiles/BBL/filament/Generic ASA.json @@ -9,6 +9,8 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PA-CF.json b/resources/profiles/BBL/filament/Generic PA-CF.json index cca171454e..55b8285143 100644 --- a/resources/profiles/BBL/filament/Generic PA-CF.json +++ b/resources/profiles/BBL/filament/Generic PA-CF.json @@ -33,6 +33,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PA.json b/resources/profiles/BBL/filament/Generic PA.json index 30e87d4cdb..f6baca4474 100644 --- a/resources/profiles/BBL/filament/Generic PA.json +++ b/resources/profiles/BBL/filament/Generic PA.json @@ -18,6 +18,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PC.json b/resources/profiles/BBL/filament/Generic PC.json index e201d139f5..6556f61cd5 100644 --- a/resources/profiles/BBL/filament/Generic PC.json +++ b/resources/profiles/BBL/filament/Generic PC.json @@ -8,6 +8,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PETG.json b/resources/profiles/BBL/filament/Generic PETG.json index b66c44d5bf..6171ba8a84 100644 --- a/resources/profiles/BBL/filament/Generic PETG.json +++ b/resources/profiles/BBL/filament/Generic PETG.json @@ -9,6 +9,8 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PLA-CF.json b/resources/profiles/BBL/filament/Generic PLA-CF.json index a0b250586c..fd54051e39 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF.json @@ -24,6 +24,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PLA.json b/resources/profiles/BBL/filament/Generic PLA.json index f99a08d551..0546d2e84e 100644 --- a/resources/profiles/BBL/filament/Generic PLA.json +++ b/resources/profiles/BBL/filament/Generic PLA.json @@ -9,6 +9,8 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic PVA.json b/resources/profiles/BBL/filament/Generic PVA.json index 04e2607023..04f533f0ae 100644 --- a/resources/profiles/BBL/filament/Generic PVA.json +++ b/resources/profiles/BBL/filament/Generic PVA.json @@ -21,6 +21,8 @@ "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } diff --git a/resources/profiles/BBL/filament/Generic TPU.json b/resources/profiles/BBL/filament/Generic TPU.json index 163440eb56..d28d152991 100644 --- a/resources/profiles/BBL/filament/Generic TPU.json +++ b/resources/profiles/BBL/filament/Generic TPU.json @@ -13,6 +13,8 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", - "Bambu Lab X1 Carbon 0.8 nozzle" + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" ] } From 9c55893954c1a23be35d4f6ab3df18572e6d6b4f Mon Sep 17 00:00:00 2001 From: "tao.jin" Date: Fri, 12 Aug 2022 16:57:33 +0800 Subject: [PATCH 035/137] NEW:Add progress bar for large file loading (3mf,stl,step) Change-Id: Ic54ca21e8193b15bbda08c22ea2fc4c93b440741 --- src/admesh/stl.h | 6 ++- src/admesh/stlinit.cpp | 23 ++++++++-- src/libslic3r/Format/STEP.cpp | 25 ++++++---- src/libslic3r/Format/STEP.hpp | 7 +++ src/libslic3r/Format/STL.cpp | 4 +- src/libslic3r/Format/STL.hpp | 5 +- src/libslic3r/Format/bbs_3mf.hpp | 1 + src/libslic3r/Model.cpp | 4 +- src/libslic3r/Model.hpp | 4 +- src/libslic3r/TriangleMesh.cpp | 6 +-- src/libslic3r/TriangleMesh.hpp | 4 +- src/slic3r/GUI/Plater.cpp | 79 +++++++++++++++++++++++++++----- 12 files changed, 130 insertions(+), 38 deletions(-) diff --git a/src/admesh/stl.h b/src/admesh/stl.h index 28d5ee1553..65527e6f6b 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -45,6 +45,8 @@ typedef Eigen::Matrix stl_triangle_vertex_indices static_assert(sizeof(stl_vertex) == 12, "size of stl_vertex incorrect"); static_assert(sizeof(stl_normal) == 12, "size of stl_normal incorrect"); +typedef std::function ImportstlProgressFn; + typedef enum { eNormal, // normal face eSmallOverhang, // small overhang @@ -244,7 +246,7 @@ struct indexed_triangle_set } }; -extern bool stl_open(stl_file *stl, const char *file); +extern bool stl_open(stl_file *stl, const char *file, ImportstlProgressFn stlFn = nullptr); extern void stl_stats_out(stl_file *stl, FILE *file, char *input_file); extern bool stl_print_neighbors(stl_file *stl, char *file); extern bool stl_write_ascii(stl_file *stl, const char *file, const char *label); @@ -398,7 +400,7 @@ extern void stl_calculate_volume(stl_file *stl); extern void stl_repair(stl_file *stl, bool fixall_flag, bool exact_flag, bool tolerance_flag, float tolerance, bool increment_flag, float increment, bool nearby_flag, int iterations, bool remove_unconnected_flag, bool fill_holes_flag, bool normal_directions_flag, bool normal_values_flag, bool reverse_all_flag, bool verbose_flag); extern void stl_allocate(stl_file *stl); -extern void stl_read(stl_file *stl, int first_facet, bool first); +extern void stl_read(stl_file *stl, int first_facet, bool first, ImportstlProgressFn stlFn = nullptr); extern void stl_facet_stats(stl_file *stl, stl_facet facet, bool &first); extern void stl_reallocate(stl_file *stl); extern void stl_add_facet(stl_file *stl, const stl_facet *new_facet); diff --git a/src/admesh/stlinit.cpp b/src/admesh/stlinit.cpp index 29131b1c75..f1be4ac77c 100644 --- a/src/admesh/stlinit.cpp +++ b/src/admesh/stlinit.cpp @@ -31,6 +31,7 @@ #include #include "stl.h" +#include "libslic3r/Format/STL.hpp" #include "libslic3r/LocalesUtils.hpp" @@ -42,6 +43,8 @@ extern void stl_internal_reverse_quads(char *buf, size_t cnt); #endif /* BOOST_ENDIAN_BIG_BYTE */ +const int LOAD_STL_UNIT_NUM = 5; + static FILE* stl_open_count_facets(stl_file *stl, const char *file) { // Open the file in binary mode first. @@ -145,7 +148,7 @@ static FILE* stl_open_count_facets(stl_file *stl, const char *file) /* Reads the contents of the file pointed to by fp into the stl structure, starting at facet first_facet. The second argument says if it's our first time running this for the stl and therefore we should reset our max and min stats. */ -static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first) +static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, ImportstlProgressFn stlFn) { if (stl->stats.type == binary) fseek(fp, HEADER_SIZE, SEEK_SET); @@ -153,7 +156,19 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first) rewind(fp); char normal_buf[3][32]; - for (uint32_t i = first_facet; i < stl->stats.number_of_facets; ++ i) { + + uint32_t facets_num = stl->stats.number_of_facets; + uint32_t unit = facets_num / LOAD_STL_UNIT_NUM + 1; + for (uint32_t i = first_facet; i < facets_num; ++ i) { + if ((i % unit) == 0) { + bool cb_cancel = false; + if (stlFn) { + stlFn(i, facets_num, cb_cancel); + if (cb_cancel) + return false; + } + } + stl_facet facet; if (stl->stats.type == binary) { @@ -232,7 +247,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first) return true; } -bool stl_open(stl_file *stl, const char *file) +bool stl_open(stl_file *stl, const char *file, ImportstlProgressFn stlFn) { Slic3r::CNumericLocalesSetter locales_setter; stl->clear(); @@ -240,7 +255,7 @@ bool stl_open(stl_file *stl, const char *file) if (fp == nullptr) return false; stl_allocate(stl); - bool result = stl_read(stl, fp, 0, true); + bool result = stl_read(stl, fp, 0, true, stlFn); fclose(fp); return result; } diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index f055540146..2b388199be 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -31,9 +31,6 @@ const double STEP_TRANS_CHORD_ERROR = 0.005; const double STEP_TRANS_ANGLE_RES = 1; -const int LOAD_STEP_STAGE_READ_FILE = 0; -const int LOAD_STEP_STAGE_GET_SOLID = 1; -const int LOAD_STEP_STAGE_GET_MESH = 2; namespace Slic3r { @@ -213,11 +210,11 @@ static void getNamedSolids(const TopLoc_Location& location, const std::string& p } } -bool load_step(const char *path, Model *model, ImportStepProgressFn proFn, StepIsUtf8Fn isUtf8Fn) +bool load_step(const char *path, Model *model, ImportStepProgressFn stepFn, StepIsUtf8Fn isUtf8Fn) { bool cb_cancel = false; - if (proFn) { - proFn(LOAD_STEP_STAGE_READ_FILE, 0, 1, cb_cancel); + if (stepFn) { + stepFn(LOAD_STEP_STAGE_READ_FILE, 0, 1, cb_cancel); if (cb_cancel) return false; } @@ -245,9 +242,13 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn proFn, StepI unsigned int id{1}; Standard_Integer topShapeLength = topLevelShapes.Length() + 1; + auto stage_unit2 = topShapeLength / LOAD_STEP_STAGE_UNIT_NUM + 1; + for (Standard_Integer iLabel = 1; iLabel < topShapeLength; ++iLabel) { - if (proFn) { - proFn(LOAD_STEP_STAGE_GET_SOLID, iLabel, topShapeLength, cb_cancel); + if (stepFn) { + if ((iLabel % stage_unit2) == 0) { + stepFn(LOAD_STEP_STAGE_GET_SOLID, iLabel, topShapeLength, cb_cancel); + } if (cb_cancel) { shapeTool.reset(nullptr); application->Close(document); @@ -338,9 +339,13 @@ bool load_step(const char *path, Model *model, ImportStepProgressFn proFn, StepI const char * last_slash = strrchr(path, DIR_SEPARATOR); new_object->name.assign((last_slash == nullptr) ? path : last_slash + 1); new_object->input_file = path; + + auto stage_unit3 = stl.size() / LOAD_STEP_STAGE_UNIT_NUM + 1; for (size_t i = 0; i < stl.size(); i++) { - if (proFn) { - proFn(LOAD_STEP_STAGE_GET_MESH, i, namedSolids.size(), cb_cancel); + if (stepFn) { + if ((i % stage_unit3) == 0) { + stepFn(LOAD_STEP_STAGE_GET_MESH, i, stl.size(), cb_cancel); + } if (cb_cancel) { model->delete_object(new_object); shapeTool.reset(nullptr); diff --git a/src/libslic3r/Format/STEP.hpp b/src/libslic3r/Format/STEP.hpp index 14d1db21fc..13965d4112 100644 --- a/src/libslic3r/Format/STEP.hpp +++ b/src/libslic3r/Format/STEP.hpp @@ -6,6 +6,13 @@ namespace Slic3r { class TriangleMesh; class ModelObject; +// load step stage +const int LOAD_STEP_STAGE_READ_FILE = 0; +const int LOAD_STEP_STAGE_GET_SOLID = 1; +const int LOAD_STEP_STAGE_GET_MESH = 2; +const int LOAD_STEP_STAGE_NUM = 3; +const int LOAD_STEP_STAGE_UNIT_NUM = 5; + typedef std::function ImportStepProgressFn; typedef std::function StepIsUtf8Fn; diff --git a/src/libslic3r/Format/STL.cpp b/src/libslic3r/Format/STL.cpp index 2f2c9ec7fb..3ba514dc9b 100644 --- a/src/libslic3r/Format/STL.cpp +++ b/src/libslic3r/Format/STL.cpp @@ -14,10 +14,10 @@ namespace Slic3r { -bool load_stl(const char *path, Model *model, const char *object_name_in) +bool load_stl(const char *path, Model *model, const char *object_name_in, ImportstlProgressFn stlFn) { TriangleMesh mesh; - if (! mesh.ReadSTLFile(path)) { + if (! mesh.ReadSTLFile(path, true, stlFn)) { // die "Failed to open $file\n" if !-e $path; return false; } diff --git a/src/libslic3r/Format/STL.hpp b/src/libslic3r/Format/STL.hpp index cff7dc0869..5f2f838bfe 100644 --- a/src/libslic3r/Format/STL.hpp +++ b/src/libslic3r/Format/STL.hpp @@ -1,13 +1,16 @@ #ifndef slic3r_Format_STL_hpp_ #define slic3r_Format_STL_hpp_ +#include + namespace Slic3r { +class Model; class TriangleMesh; class ModelObject; // Load an STL file into a provided model. -extern bool load_stl(const char *path, Model *model, const char *object_name = nullptr); +extern bool load_stl(const char *path, Model *model, const char *object_name = nullptr, ImportstlProgressFn stlFn = nullptr); extern bool store_stl(const char *path, TriangleMesh *mesh, bool binary); extern bool store_stl(const char *path, ModelObject *model_object, bool binary); diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index ff47b05aee..d7a90fba7f 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -166,6 +166,7 @@ const int IMPORT_STAGE_CHECK_MODE_GCODE = 9; const int UPDATE_GCODE_RESULT = 10; const int IMPORT_LOAD_CONFIG = 11; const int IMPORT_LOAD_MODEL_OBJECTS = 12; +const int IMPORT_STAGE_MAX = 13; //BBS export 3mf progress typedef std::function Export3mfProgressFn; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 888edd6c21..3788b286b6 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -137,7 +137,7 @@ Model::~Model() // Loading model from a file, it may be a simple geometry file as STL or OBJ, however it may be a project file as well. Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* config, ConfigSubstitutionContext* config_substitutions, LoadStrategy options, PlateDataPtrs* plate_data, std::vector* project_presets, bool *is_xxx, Semver* file_version, Import3mfProgressFn proFn, - ImportStepProgressFn stepFn, StepIsUtf8Fn stepIsUtf8Fn, BBLProject* project) + ImportstlProgressFn stlFn, ImportStepProgressFn stepFn, StepIsUtf8Fn stepIsUtf8Fn, BBLProject* project) { Model model; @@ -163,7 +163,7 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c boost::algorithm::iends_with(input_file, ".step")) result = load_step(input_file.c_str(), &model, stepFn, stepIsUtf8Fn); else if (boost::algorithm::iends_with(input_file, ".stl")) - result = load_stl(input_file.c_str(), &model); + result = load_stl(input_file.c_str(), &model, nullptr, stlFn); else if (boost::algorithm::iends_with(input_file, ".obj")) result = load_obj(input_file.c_str(), &model); //BBS: remove the old .amf.xml files diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 4629998021..ef134fcfc0 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -18,6 +18,8 @@ #include "Format/bbs_3mf.hpp" //BBS: add step #include "Format/STEP.hpp" +//BBS: add stl +#include "Format/STL.hpp" #include #include @@ -1282,7 +1284,7 @@ public: DynamicPrintConfig* config = nullptr, ConfigSubstitutionContext* config_substitutions = nullptr, LoadStrategy options = LoadStrategy::AddDefaultInstances, PlateDataPtrs* plate_data = nullptr, std::vector* project_presets = nullptr, bool* is_xxx = nullptr, Semver* file_version = nullptr, Import3mfProgressFn proFn = nullptr, - ImportStepProgressFn stepFn = nullptr, StepIsUtf8Fn stepIsUtf8Fn = nullptr, BBLProject* project = nullptr); + ImportstlProgressFn stlFn = nullptr, ImportStepProgressFn stepFn = nullptr, StepIsUtf8Fn stepIsUtf8Fn = nullptr, BBLProject* project = nullptr); // BBS static double findMaxSpeed(const ModelObject* object); static double getThermalLength(const ModelVolume* modelVolumePtr); diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index e732cc177f..5fa3611192 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -9,7 +9,7 @@ #include "Execution/ExecutionTBB.hpp" #include "Execution/ExecutionSeq.hpp" #include "Utils.hpp" - +#include "Format/STL.hpp" #include #include #include @@ -208,10 +208,10 @@ bool TriangleMesh::from_stl(stl_file& stl, bool repair) return true; } -bool TriangleMesh::ReadSTLFile(const char* input_file, bool repair) +bool TriangleMesh::ReadSTLFile(const char* input_file, bool repair, ImportstlProgressFn stlFn) { stl_file stl; - if (! stl_open(&stl, input_file)) + if (! stl_open(&stl, input_file, stlFn)) return false; return from_stl(stl, repair); } diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 3ebd3105c8..3fece644bd 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -10,7 +10,7 @@ #include "Point.hpp" #include "Polygon.hpp" #include "ExPolygon.hpp" - +#include "Format/STL.hpp" namespace Slic3r { class TriangleMesh; @@ -94,7 +94,7 @@ public: explicit TriangleMesh(indexed_triangle_set &&M, const RepairedMeshErrors& repaired_errors = RepairedMeshErrors()); void clear() { this->its.clear(); this->m_stats.clear(); } bool from_stl(stl_file& stl, bool repair = true); - bool ReadSTLFile(const char* input_file, bool repair = true); + bool ReadSTLFile(const char* input_file, bool repair = true, ImportstlProgressFn stlFn = nullptr); bool write_ascii(const char* output_file); bool write_binary(const char* output_file); float volume(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7a73c657ba..858905065f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1,5 +1,4 @@ #include "Plater.hpp" - #include #include #include @@ -41,6 +40,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Format/STL.hpp" +#include "libslic3r/Format/STEP.hpp" #include "libslic3r/Format/AMF.hpp" //#include "libslic3r/Format/3mf.hpp" #include "libslic3r/Format/bbs_3mf.hpp" @@ -2576,7 +2576,39 @@ std::vector Plater::priv::load_files(const std::vector& input_ int answer_convert_from_imperial_units = wxOK_DEFAULT; int tolal_model_count = 0; + int progress_percent = 0; + int total_files = input_files.size(); + const int stage_percent[IMPORT_STAGE_MAX+1] = { + 5, // IMPORT_STAGE_RESTORE + 10, // IMPORT_STAGE_OPEN + 30, // IMPORT_STAGE_READ_FILES + 50, // IMPORT_STAGE_EXTRACT + 60, // IMPORT_STAGE_LOADING_OBJECTS + 70, // IMPORT_STAGE_LOADING_PLATES + 80, // IMPORT_STAGE_FINISH + 85, // IMPORT_STAGE_ADD_INSTANCE + 90, // IMPORT_STAGE_UPDATE_GCODE + 92, // IMPORT_STAGE_CHECK_MODE_GCODE + 95, // UPDATE_GCODE_RESULT + 98, // IMPORT_LOAD_CONFIG + 99, // IMPORT_LOAD_MODEL_OBJECTS + 100 + }; + const int step_percent[LOAD_STEP_STAGE_NUM+1] = { + 5, // LOAD_STEP_STAGE_READ_FILE + 30, // LOAD_STEP_STAGE_GET_SOLID + 60, // LOAD_STEP_STAGE_GET_MESH + 100 + }; + + const float INPUT_FILES_RATIO = 0.7; + const float INIT_MODEL_RATIO = 0.75; + const float CENTER_AROUND_ORIGIN_RATIO = 0.8; + const float LOAD_MODEL_RATIO = 0.9; + for (size_t i = 0; i < input_files.size(); ++i) { + int file_percent = 0; + #ifdef _WIN32 auto path = input_files[i]; // On Windows, we swap slashes to back slashes, see GH #6803 as read_from_file() does not understand slashes on Windows thus it assignes full path to names of loaded objects. @@ -2586,15 +2618,13 @@ std::vector Plater::priv::load_files(const std::vector& input_ const auto &path = input_files[i]; #endif // _WIN32 const auto filename = path.filename(); - int progress_percent = static_cast(100.0f * static_cast(i) / static_cast(input_files.size())); + int progress_percent = static_cast(100.0f * static_cast(i) / static_cast(input_files.size())); const auto real_filename = (strategy & LoadStrategy::Restore) ? input_files[++i].filename() : filename; const auto dlg_info = _L("Loading file") + ": " + from_path(real_filename); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": load file %1%") % filename; dlg_cont = dlg.Update(progress_percent, dlg_info); if (!dlg_cont) return empty_result; - dlg.Fit(); - const bool type_3mf = std::regex_match(path.string(), pattern_3mf); // const bool type_zip_amf = !type_3mf && std::regex_match(path.string(), pattern_zip_amf); const bool type_any_amf = !type_3mf && std::regex_match(path.string(), pattern_any_amf); @@ -2625,13 +2655,15 @@ std::vector Plater::priv::load_files(const std::vector& input_ // BBS: backup & restore model = Slic3r::Model::read_from_archive(path.string(), &config_loaded, &config_substitutions, en_3mf_file_type, strategy, &plate_data, &project_presets, &file_version, - [this, &dlg, real_filename, progress_percent](int import_stage, int current, int total, bool &cancel) { + [this, &dlg, real_filename, &progress_percent, &file_percent, stage_percent, INPUT_FILES_RATIO, total_files, i](int import_stage, int current, int total, bool &cancel) { bool cont = true; + float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)stage_percent[import_stage] + (float)current * (float)(stage_percent[import_stage + 1] - stage_percent[import_stage]) /(float) total) / (float)total_files; + BOOST_LOG_TRIVIAL(trace) << "load_3mf_file: percent(float)=" << percent_float << ", stage = " << import_stage << ", curr = " << current << ", total = " << total; + progress_percent = (int)percent_float; wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); cont = dlg.Update(progress_percent, msg); cancel = !cont; }); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_3mf %3%, file_version %4% \n") % plate_data.size() % project_presets.size() % (en_3mf_file_type == En3mfType::From_BBS) % file_version.to_string(); @@ -2866,11 +2898,25 @@ std::vector Plater::priv::load_files(const std::vector& input_ Semver file_version; model = Slic3r::Model::read_from_file( path.string(), nullptr, nullptr, strategy, &plate_data, &project_presets, &is_xxx, &file_version, nullptr, - [&dlg, real_filename, progress_percent](int import_stage, int current, int total, bool &cancel) { - bool cont = true; - wxString msg = wxString::Format("Loading file: %s", from_path(real_filename)); - cont = dlg.Update(progress_percent, msg); - cancel = !cont; + [this, &dlg, real_filename, &progress_percent, &file_percent, INPUT_FILES_RATIO, total_files, i](int current, int total, bool &cancel) + { + bool cont = true; + float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * 100.0f * ((float)current / (float)total) / (float)total_files; + BOOST_LOG_TRIVIAL(trace) << "load_stl_file: percent(float)=" << percent_float << ", curr = " << current << ", total = " << total; + progress_percent = (int)percent_float; + wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); + cont = dlg.Update(progress_percent, msg); + cancel = !cont; + }, + [this, &dlg, real_filename, &progress_percent, &file_percent, step_percent, INPUT_FILES_RATIO, total_files, i](int load_stage, int current, int total, bool &cancel) + { + bool cont = true; + float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)step_percent[load_stage] + (float)current * (float)(step_percent[load_stage + 1] - step_percent[load_stage]) / (float)total) / (float)total_files; + BOOST_LOG_TRIVIAL(trace) << "load_step_file: percent(float)=" << percent_float << ", stage = " << load_stage << ", curr = " << current << ", total = " << total; + progress_percent = (int)percent_float; + wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); + cont = dlg.Update(progress_percent, msg); + cancel = !cont; }, [](int isUtf8StepFile) { if (!isUtf8StepFile) @@ -2912,6 +2958,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ continue; } + progress_percent = 100.0f * (float)i / (float)total_files + INIT_MODEL_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); + if (!dlg_cont) return empty_result; + if (load_model) { // The model should now be initialized auto convert_from_imperial_units = [](Model &model, bool only_small_volumes) { model.convert_from_imperial_units(only_small_volumes); }; @@ -2988,6 +3038,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ // return obj_idxs; //} + progress_percent = 100.0f * (float)i / (float)total_files + CENTER_AROUND_ORIGIN_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); + if (!dlg_cont) return empty_result; + int model_idx = 0; for (ModelObject *model_object : model.objects) { if (!type_3mf && !type_any_amf) model_object->center_around_origin(false); @@ -3004,6 +3058,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ tolal_model_count += model_idx; + progress_percent = 100.0f * (float)i / (float)total_files + LOAD_MODEL_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); + if (!dlg_cont) return empty_result; if (one_by_one) { // BBS: add load_old_project logic From 460374d6b2b33e142fd3ba83b56c7e007f292a47 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 22 Aug 2022 15:51:59 +0800 Subject: [PATCH 036/137] ENH:rescale thumbnail_3mf cover Change-Id: I1e0192a66f36898f925adc033457d6f42d3ca999 --- src/slic3r/GUI/Auxiliary.cpp | 5 +++-- src/slic3r/GUI/GUI_Utils.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index c3ea3d703e..8115f1d724 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -378,14 +378,15 @@ void AuFile::on_set_cover() } bool result = true; - wxImage thumbnail_img;; + wxImage thumbnail_img; + result = generate_image(m_file_path.string(), thumbnail_img, _3MF_COVER_SIZE); if (result) { auto cover_img_path = dir_path.string() + "/thumbnail_3mf.png"; thumbnail_img.SaveFile(encode_path(cover_img_path.c_str())); } - result = generate_image(m_file_path.string(), thumbnail_img, PRINTER_THUMBNAIL_SMALL_SIZE, GERNERATE_IMAGE_CROP_VERTICAL); + result = generate_image(m_file_path.string(), thumbnail_img, PRINTER_THUMBNAIL_SMALL_SIZE); if (result) { auto small_img_path = dir_path.string() + "/thumbnail_small.png"; thumbnail_img.SaveFile(encode_path(small_img_path.c_str())); diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index c2f6600d71..1c472f420d 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -450,7 +450,7 @@ bool generate_image(const std::string &filename, wxImage &image, wxSize img_size if (method == GERNERATE_IMAGE_RESIZE) { float h_factor = img.GetHeight() / (float) image.GetHeight(); float w_factor = img.GetWidth() / (float) image.GetWidth(); - float factor = std::max(h_factor, w_factor); + float factor = std::min(h_factor, w_factor); int tar_height = (int) ((float) img.GetHeight() / factor); int tar_width = (int) ((float) img.GetWidth() / factor); img = img.Rescale(tar_width, tar_height); @@ -465,7 +465,7 @@ bool generate_image(const std::string &filename, wxImage &image, wxSize img_size return false; } - image.ConvertAlphaToMask(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue()); + //image.ConvertAlphaToMask(image.GetMaskRed(), image.GetMaskGreen(), image.GetMaskBlue()); return true; } From 9245b4f36ab5c88f2971f7c99a32048c6d21d840 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 22 Aug 2022 16:14:21 +0800 Subject: [PATCH 037/137] FIX: utf8 convert error in WebGuideDialog Change-Id: Ie575117615b2a3dc3b11bc9c91e773ec104f7a61 --- src/slic3r/GUI/WebGuideDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 6d3afca61b..655c33f978 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -898,7 +898,7 @@ int GuideFrame::LoadProfile() } else { //cout << "is a file" << endl; //cout << iter->path().string() << endl; - wxString strVendor = wxString(iter->path().string()).BeforeLast('.'); + wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); strVendor = strVendor.AfterLast('\/'); From fdd9582e3e59bef3367b13e1957822b7095b19b1 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Thu, 18 Aug 2022 15:29:33 +0800 Subject: [PATCH 038/137] add the logic to reduce slicing time between shared-mesh objects also reduce the storage size Change-Id: I61d6e0997979ec0ce701cc580fa6640a21b6260f --- src/libslic3r/Brim.cpp | 12 +- src/libslic3r/Format/bbs_3mf.cpp | 195 ++++++++++++++++++++++--------- src/libslic3r/GCode.cpp | 13 ++- src/libslic3r/GCode.hpp | 43 ++++--- src/libslic3r/Model.cpp | 78 ++++++++----- src/libslic3r/Model.hpp | 15 +++ src/libslic3r/Print.cpp | 169 +++++++++++++++++++++++++-- src/libslic3r/Print.hpp | 7 ++ src/libslic3r/PrintBase.hpp | 2 + src/libslic3r/PrintObject.cpp | 25 ++-- src/libslic3r/TriangleMesh.hpp | 4 + src/slic3r/GUI/Plater.cpp | 8 ++ 12 files changed, 446 insertions(+), 125 deletions(-) diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index a7835f3e9b..f05af13b52 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -270,7 +270,7 @@ static ExPolygons top_level_outer_brim_area(const Print &print return diff_ex(brim_area, no_brim_area); } -// BBS: the brims of different objs will not overlapped with each other, and are stored by objs and by extruders +// BBS: the brims of different objs will not overlapped with each other, and are stored by objs and by extruders static ExPolygons top_level_outer_brim_area(const Print& print, const ConstPrintObjectPtrs& top_level_objects_with_brim, const float no_brim_offset, double& brim_width_max, std::map& brim_width_map, std::map& brimAreaMap, @@ -453,7 +453,7 @@ static ExPolygons inner_brim_area(const Print &print, return diff_ex(intersection_ex(to_polygons(std::move(brim_area)), holes), no_brim_area); } -// BBS: the brims of different objs will not overlapped with each other, and are stored by objs and by extruders +// BBS: the brims of different objs will not overlapped with each other, and are stored by objs and by extruders static ExPolygons inner_brim_area(const Print& print, const ConstPrintObjectPtrs& top_level_objects_with_brim, const float no_brim_offset, std::map& brimAreaMap, std::map& supportBrimAreaMap, @@ -906,7 +906,11 @@ static ExPolygons outer_inner_brim_area(const Print& print, std::vector groupVolumePtrs; for (auto& volumeID : volumeGroup.volume_ids) { ModelVolume* currentModelVolumePtr = nullptr; - for (auto volumePtr : object->model_object()->volumes) { + //BBS: support shared object logic + const PrintObject* shared_object = object->get_shared_object(); + if (!shared_object) + shared_object = object; + for (auto volumePtr : shared_object->model_object()->volumes) { if (volumePtr->id() == volumeID) { currentModelVolumePtr = volumePtr; break; @@ -1066,7 +1070,7 @@ static void optimize_polylines_by_reversing(Polylines *polylines) double dist_to_start = (next.first_point() - prev.last_point()).cast().norm(); double dist_to_end = (next.last_point() - prev.last_point()).cast().norm(); - if (dist_to_end < dist_to_start) + if (dist_to_end < dist_to_start) next.reverse(); } } diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index f46a0b087e..0c119c13cc 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -258,6 +258,8 @@ static constexpr const char* SOURCE_OFFSET_Z_KEY = "source_offset_z"; static constexpr const char* SOURCE_IN_INCHES = "source_in_inches"; static constexpr const char* SOURCE_IN_METERS = "source_in_meters"; +static constexpr const char* MESH_SHARED_KEY = "mesh_shared"; + static constexpr const char* MESH_STAT_EDGES_FIXED = "edges_fixed"; static constexpr const char* MESH_STAT_DEGENERATED_FACETS = "degenerate_facets"; static constexpr const char* MESH_STAT_FACETS_REMOVED = "facets_removed"; @@ -702,6 +704,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) std::string m_thumbnail_path; std::vector m_sub_model_paths; + std::map m_shared_meshes; + //BBS: plater related structures bool m_is_bbl_3mf { false }; bool m_parsing_slice_info { false }; @@ -847,8 +851,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _handle_start_relationship(const char** attributes, unsigned int num_attributes); - void _generate_current_object_list(std::vector &sub_objects, Id object_id, IdToCurrentObjectMap current_objects); - bool _generate_volumes_new(ModelObject& object, const std::vector &sub_objects, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions); + void _generate_current_object_list(std::vector &sub_objects, Id object_id, IdToCurrentObjectMap current_objects); + bool _generate_volumes_new(ModelObject& object, const std::vector &sub_objects, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions); bool _generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions); // callbacks to parse the .model file @@ -1281,7 +1285,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) add_error("3rd 3mf, can not find object, id " + std::to_string(object.first.second)); return false; } - std::vector object_id_list; + std::vector object_id_list; _generate_current_object_list(object_id_list, object.first, m_current_objects); ObjectMetadata::VolumeMetadataList volumes; @@ -1289,7 +1293,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) for (int k = 0; k < object_id_list.size(); k++) { - Id object_id = object_id_list[k]; + Id object_id = object_id_list[k].object_id; volumes.emplace_back(object_id.second); } @@ -1344,7 +1348,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) model_object->sla_drain_holes = std::move(obj_drain_holes->second); }*/ - std::vector object_id_list; + std::vector object_id_list; _generate_current_object_list(object_id_list, object.first, m_current_objects); ObjectMetadata::VolumeMetadataList volumes; @@ -1375,7 +1379,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) //volumes.emplace_back(0, (int)obj_geometry->second.triangles.size() - 1); for (int k = 0; k < object_id_list.size(); k++) { - Id object_id = object_id_list[k]; + Id object_id = object_id_list[k].object_id; volumes.emplace_back(object_id.second); } @@ -3279,34 +3283,34 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } - void _BBS_3MF_Importer::_generate_current_object_list(std::vector &sub_objects, Id object_id, IdToCurrentObjectMap current_objects) + void _BBS_3MF_Importer::_generate_current_object_list(std::vector &sub_objects, Id object_id, IdToCurrentObjectMap current_objects) { - std::list id_list; - id_list.push_back(object_id); + std::list id_list; + id_list.push_back({ object_id, Transform3d::Identity() }); while (!id_list.empty()) { - Id current_id = id_list.front(); + Component current_id = id_list.front(); id_list.pop_front(); - IdToCurrentObjectMap::iterator current_object = current_objects.find(current_id); + IdToCurrentObjectMap::iterator current_object = current_objects.find(current_id.object_id); if (current_object != current_objects.end()) { //found one if (!current_object->second.components.empty()) { for (const Component& comp: current_object->second.components) { - id_list.push_back(comp.object_id); + id_list.push_back(comp); } } else if (!(current_object->second.geometry.empty())) { //CurrentObject* ptr = &(current_objects[current_id]); //CurrentObject* ptr2 = &(current_object->second); - sub_objects.push_back(current_object->first); + sub_objects.push_back({ current_object->first, current_id.transform }); } } } } - bool _BBS_3MF_Importer::_generate_volumes_new(ModelObject& object, const std::vector &sub_objects, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions) + bool _BBS_3MF_Importer::_generate_volumes_new(ModelObject& object, const std::vector &sub_objects, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions) { if (!object.volumes.empty()) { add_error("object already built with parts"); @@ -3319,7 +3323,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) for (unsigned int index = 0; index < sub_objects.size(); index++) { //find the volume metadata firstly - Id object_id = sub_objects[index]; + Component sub_comp = sub_objects[index]; + Id object_id = sub_comp.object_id; IdToCurrentObjectMap::iterator current_object = m_current_objects.find(object_id); if (current_object == m_current_objects.end()) { add_error("sub_objects can not be found, id=" + std::to_string(object_id.second)); @@ -3338,68 +3343,112 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) Transform3d volume_matrix_to_object = Transform3d::Identity(); bool has_transform = false; + int shared_mesh_id = -1; if (volume_data) { + int found_count = 0; // extract the volume transformation from the volume's metadata, if present for (const Metadata& metadata : volume_data->metadata) { if (metadata.key == MATRIX_KEY) { volume_matrix_to_object = Slic3r::Geometry::transform3d_from_string(metadata.value); has_transform = ! volume_matrix_to_object.isApprox(Transform3d::Identity(), 1e-10); - break; + found_count++; } + else if (metadata.key == MESH_SHARED_KEY){ + //add the shared mesh logic + shared_mesh_id = ::atoi(metadata.value.c_str()); + found_count++; + } + + if (found_count >= 2) + break; } } else { //create a volume_data volume_data = &default_volume_data; } - // splits volume out of imported geometry - indexed_triangle_set its; - its.indices.assign(sub_object->geometry.triangles.begin(), sub_object->geometry.triangles.end()); - const size_t triangles_count = its.indices.size(); + + ModelVolume* volume = nullptr; + ModelVolume *shared_volume = nullptr; + if (shared_mesh_id != -1) { + std::map::iterator iter = m_shared_meshes.find(shared_mesh_id); + if (iter != m_shared_meshes.end()) { + shared_volume = iter->second; + } + } + + const size_t triangles_count = sub_object->geometry.triangles.size(); if (triangles_count == 0) { add_error("found no trianges in the object " + std::to_string(sub_object->id)); return false; } - for (const Vec3i& face : its.indices) { - for (const int tri_id : face) { - if (tri_id < 0 || tri_id >= int(sub_object->geometry.vertices.size())) { - add_error("invalid vertex id in object " + std::to_string(sub_object->id)); - return false; + if (!shared_volume){ + // splits volume out of imported geometry + indexed_triangle_set its; + its.indices.assign(sub_object->geometry.triangles.begin(), sub_object->geometry.triangles.end()); + //const size_t triangles_count = its.indices.size(); + //if (triangles_count == 0) { + // add_error("found no trianges in the object " + std::to_string(sub_object->id)); + // return false; + //} + for (const Vec3i& face : its.indices) { + for (const int tri_id : face) { + if (tri_id < 0 || tri_id >= int(sub_object->geometry.vertices.size())) { + add_error("invalid vertex id in object " + std::to_string(sub_object->id)); + return false; + } } } - } - its.vertices.assign(sub_object->geometry.vertices.begin(), sub_object->geometry.vertices.end()); + its.vertices.assign(sub_object->geometry.vertices.begin(), sub_object->geometry.vertices.end()); - // BBS - for (const std::string prop_str : sub_object->geometry.face_properties) { - FaceProperty face_prop; - face_prop.from_string(prop_str); - its.properties.push_back(face_prop); - } - - TriangleMesh triangle_mesh(std::move(its), volume_data->mesh_stats); - - if (m_version == 0) { - // if the 3mf was not produced by BambuStudio and there is only one instance, - // bake the transformation into the geometry to allow the reload from disk command - // to work properly - if (object.instances.size() == 1) { - triangle_mesh.transform(object.instances.front()->get_transformation().get_matrix(), false); - object.instances.front()->set_transformation(Slic3r::Geometry::Transformation()); - //FIXME do the mesh fixing? + // BBS + for (const std::string prop_str : sub_object->geometry.face_properties) { + FaceProperty face_prop; + face_prop.from_string(prop_str); + its.properties.push_back(face_prop); } - } - if (triangle_mesh.volume() < 0) - triangle_mesh.flip_triangles(); - ModelVolume* volume = object.add_volume(std::move(triangle_mesh)); + TriangleMesh triangle_mesh(std::move(its), volume_data->mesh_stats); + + if (m_version == 0) { + // if the 3mf was not produced by BambuStudio and there is only one instance, + // bake the transformation into the geometry to allow the reload from disk command + // to work properly + if (object.instances.size() == 1) { + triangle_mesh.transform(object.instances.front()->get_transformation().get_matrix(), false); + object.instances.front()->set_transformation(Slic3r::Geometry::Transformation()); + //FIXME do the mesh fixing? + } + } + if (triangle_mesh.volume() < 0) + triangle_mesh.flip_triangles(); + + volume = object.add_volume(std::move(triangle_mesh)); + + m_shared_meshes[sub_object->id] = volume; + } + else { + //create volume to use shared mesh + volume = object.add_volume_with_shared_mesh(*shared_volume); + } // stores the volume matrix taken from the metadata, if present if (has_transform) volume->source.transform = Slic3r::Geometry::Transformation(volume_matrix_to_object); + volume->calculate_convex_hull(); + //set transform from 3mf + Slic3r::Geometry::Transformation comp_transformatino(sub_comp.transform); + volume->set_transformation(volume->get_transformation() * comp_transformatino); + if (shared_volume) { + const TriangleMesh& trangle_mesh = volume->mesh(); + Vec3d shift = trangle_mesh.get_init_shift(); + if (!shift.isApprox(Vec3d::Zero())) + volume->translate(shift); + } + // recreate custom supports, seam and mmu segmentation from previously loaded attribute if (m_load_config) { volume->supported_facets.reserve(triangles_count); @@ -3448,7 +3497,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) volume->source.is_converted_from_inches = metadata.value == "1"; else if (metadata.key == SOURCE_IN_METERS) volume->source.is_converted_from_meters = metadata.value == "1"; - else if (metadata.key == MATRIX_KEY) + else if ((metadata.key == MATRIX_KEY) || (metadata.key == MESH_SHARED_KEY)) continue; else volume->config.set_deserialize(metadata.key, metadata.value, config_substitutions); @@ -4648,12 +4697,37 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (m_from_backup_save) { for (unsigned int index = 1; index <= object.volumes.size(); index ++) { unsigned int ref_id = object_id | (index << 16); - stream << " <" << COMPONENT_TAG << " objectid=\"" << ref_id << "\"/>\n"; + stream << " <" << COMPONENT_TAG << " objectid=\"" << ref_id; // << "\"/>\n"; + //add the transform of the volume + ModelVolume* volume = object.volumes[index - 1]; + const Transform3d& transf = volume->get_matrix(); + stream << "\" " << TRANSFORM_ATTR << "=\""; + for (unsigned c = 0; c < 4; ++c) { + for (unsigned r = 0; r < 3; ++r) { + stream << transf(r, c); + if (r != 2 || c != 3) + stream << " "; + } + } + stream << "\"/>\n"; } } else { - for (unsigned int index = object_id; index < volume_start_id; index ++) - stream << " <" << COMPONENT_TAG << " objectid=\"" << index << "\"/>\n"; + for (unsigned int index = object_id; index < volume_start_id; index ++) { + stream << " <" << COMPONENT_TAG << " objectid=\"" << index; // << "\"/>\n"; + //add the transform of the volume + ModelVolume* volume = object.volumes[index - object_id]; + const Transform3d& transf = volume->get_matrix(); + stream << "\" " << TRANSFORM_ATTR << "=\""; + for (unsigned c = 0; c < 4; ++c) { + for (unsigned r = 0; r < 3; ++r) { + stream << transf(r, c); + if (r != 2 || c != 3) + stream << " "; + } + } + stream << "\"/>\n"; + } } } else { @@ -4803,7 +4877,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) const Transform3d& matrix = volume->get_matrix(); for (size_t i = 0; i < its.vertices.size(); ++i) { - Vec3f v = (matrix * its.vertices[i].cast()).cast(); + //don't save the volume's matrix into vertex data + //add the shared mesh logic + //Vec3f v = (matrix * its.vertices[i].cast()).cast(); + Vec3f v = its.vertices[i]; char* ptr = buf; boost::spirit::karma::generate(ptr, boost::spirit::lit(" <") << VERTEX_TAG << " x=\""); ptr = format_coordinate(v.x(), ptr); @@ -5205,6 +5282,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Exporter::_add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const IdToObjectDataMap &objects_data, int export_plate_idx, bool save_gcode) { std::stringstream stream; + std::map shared_meshes; // Store mesh transformation in full precision, as the volumes are stored transformed and they need to be transformed back // when loaded as accurately as possible. stream << std::setprecision(std::numeric_limits::max_digits10); @@ -5297,6 +5375,17 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << METADATA_TAG << " "<< KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << volume->config.opt_serialize(key) << "\"/>\n"; } + //add the shared mesh logic + const TriangleMesh* current_mesh = volume->mesh_ptr(); + std::map::iterator mesh_iter; + mesh_iter = shared_meshes.find(current_mesh); + if (mesh_iter != shared_meshes.end()) { + stream << " <" << METADATA_TAG << " "<< KEY_ATTR << "=\"" << MESH_SHARED_KEY << "\" " << VALUE_ATTR << "=\"" << mesh_iter->second << "\"/>\n"; + } + else { + shared_meshes[current_mesh] = it->second; + } + // stores mesh's statistics const RepairedMeshErrors& stats = volume->mesh().stats().repaired_errors; stream << " <" << MESH_STAT_TAG << " "; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 3142d491a3..21ffc94d82 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -667,6 +667,7 @@ std::vector GCode::collect_layers_to_print(const PrintObjec --idx_tree_support_layer; } + layer_to_print.original_object = &object; layers_to_print.push_back(layer_to_print); bool has_extrusions = (layer_to_print.object_layer && layer_to_print.object_layer->has_extrusions()) @@ -2151,7 +2152,9 @@ std::vector GCode::sort_print_object_instances( // Sequential print, single object is being printed. for (ObjectByExtruder &object_by_extruder : objects_by_extruder) { const size_t layer_id = &object_by_extruder - objects_by_extruder.data(); - const PrintObject *print_object = layers[layer_id].object(); + //BBS:add the support of shared print object + const PrintObject *print_object = layers[layer_id].original_object; + //const PrintObject *print_object = layers[layer_id].object(); if (print_object) out.emplace_back(object_by_extruder, layer_id, *print_object, single_object_instance_idx); } @@ -2161,7 +2164,9 @@ std::vector GCode::sort_print_object_instances( sorted.reserve(objects_by_extruder.size()); for (ObjectByExtruder &object_by_extruder : objects_by_extruder) { const size_t layer_id = &object_by_extruder - objects_by_extruder.data(); - const PrintObject *print_object = layers[layer_id].object(); + //BBS:add the support of shared print object + const PrintObject *print_object = layers[layer_id].original_object; + //const PrintObject *print_object = layers[layer_id].object(); if (print_object) sorted.emplace_back(print_object, &object_by_extruder); } @@ -2171,6 +2176,10 @@ std::vector GCode::sort_print_object_instances( out.reserve(sorted.size()); for (const PrintInstance *instance : *ordering) { const PrintObject &print_object = *instance->print_object; + //BBS:add the support of shared print object + //const PrintObject* print_obj_ptr = &print_object; + //if (print_object.get_shared_object()) + // print_obj_ptr = print_object.get_shared_object(); std::pair key(&print_object, nullptr); auto it = std::lower_bound(sorted.begin(), sorted.end(), key); if (it != sorted.end() && it->first == &print_object) diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 29abf88def..dc80fa0339 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -41,11 +41,11 @@ class OozePrevention { public: bool enable; Points standby_points; - + OozePrevention() : enable(false) {} std::string pre_toolchange(GCode &gcodegen); std::string post_toolchange(GCode &gcodegen); - + private: int _get_temp(GCode &gcodegen); }; @@ -54,7 +54,7 @@ class Wipe { public: bool enable; Polyline path; - + Wipe() : enable(false) {} bool has_path() const { return !this->path.points.empty(); } void reset_path() { this->path = Polyline(); } @@ -136,15 +136,15 @@ public: }; class GCode { -public: +public: GCode() : m_origin(Vec2d::Zero()), - m_enable_loop_clipping(true), - m_enable_cooling_markers(false), + m_enable_loop_clipping(true), + m_enable_cooling_markers(false), m_enable_extrusion_role_markers(false), m_last_processor_extrusion_role(erNone), m_layer_count(0), - m_layer_index(-1), + m_layer_index(-1), m_layer(nullptr), m_object_layer_over_raft(false), //m_volumetric_speed(0), @@ -201,10 +201,11 @@ public: // public, so that it could be accessed by free helper functions from GCode.cpp struct LayerToPrint { - LayerToPrint() : object_layer(nullptr), support_layer(nullptr), tree_support_layer(nullptr) {} + LayerToPrint() : object_layer(nullptr), support_layer(nullptr), tree_support_layer(nullptr), original_object(nullptr) {} const Layer* object_layer; const SupportLayer* support_layer; const TreeSupportLayer* tree_support_layer; + const PrintObject* original_object; //BBS: used for shared object logic const Layer* layer() const { if (object_layer != nullptr) @@ -218,7 +219,11 @@ public: return nullptr; } - const PrintObject* object() const { return (this->layer() != nullptr) ? this->layer()->object() : nullptr; } + + const PrintObject* object() const + { + return (this->layer() != nullptr) ? this->layer()->object() : nullptr; + } coordf_t print_z() const { coordf_t sum_z = 0.; @@ -249,7 +254,7 @@ private: bool is_open() const { return f; } bool is_error() const; - + void flush(); void close(); @@ -257,12 +262,12 @@ private: void write(const std::string& what) { this->write(what.c_str()); } void write(const char* what); - // Write a string into a file. + // Write a string into a file. // Add a newline, if the string does not end with a newline already. // Used to export a custom G-code section processed by the PlaceholderParser. void writeln(const std::string& what); - // Formats and write into a file the given data. + // Formats and write into a file the given data. void write_format(const char* format, ...); private: @@ -375,7 +380,7 @@ private: InstanceToPrint(ObjectByExtruder &object_by_extruder, size_t layer_id, const PrintObject &print_object, size_t instance_id) : object_by_extruder(object_by_extruder), layer_id(layer_id), print_object(print_object), instance_id(instance_id) {} - // Repository + // Repository ObjectByExtruder &object_by_extruder; // Index into std::vector, which contains Object and Support layers for the current print_z, collected for a single object, or for possibly multiple objects with multiple instances. const size_t layer_id; @@ -500,14 +505,14 @@ private: bool object_layer_over_raft() const { return m_object_layer_over_raft; } friend ObjectByExtruder& object_by_extruder( - std::map> &by_extruder, - unsigned int extruder_id, - size_t object_idx, + std::map> &by_extruder, + unsigned int extruder_id, + size_t object_idx, size_t num_objects); friend std::vector& object_islands_by_extruder( - std::map> &by_extruder, - unsigned int extruder_id, - size_t object_idx, + std::map> &by_extruder, + unsigned int extruder_id, + size_t object_idx, size_t num_objects, size_t num_islands); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 3788b286b6..ba5516ba4e 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -185,10 +185,10 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c if (model.objects.empty()) throw Slic3r::RuntimeError("The supplied file couldn't be read because it's empty"); - + for (ModelObject *o : model.objects) o->input_file = input_file; - + if (options & LoadStrategy::AddDefaultInstances) model.add_default_instances(); @@ -259,14 +259,14 @@ Model Model::read_from_archive(const std::string& input_file, DynamicPrintConfig //BBS //CustomGCode::update_custom_gcode_per_print_z_from_config(model.custom_gcode_per_print_z, config); - + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format("import 3mf IMPORT_STAGE_UPDATE_GCODE\n"); if (proFn) { proFn(IMPORT_STAGE_UPDATE_GCODE, 0, 1, cb_cancel); if (cb_cancel) throw Slic3r::RuntimeError("Canceled"); } - + CustomGCode::check_mode_for_custom_gcode_per_print_z(model.custom_gcode_per_print_z); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format("import 3mf IMPORT_STAGE_CHECK_MODE_GCODE\n"); @@ -416,7 +416,7 @@ void Model::collect_reusable_objects(std::vector& objects) std::mem_fn(&ObjectBase::id)); model_object->volumes.clear(); } - // we never own these objects + // we never own these objects this->objects.clear(); } @@ -591,7 +591,7 @@ void Model::convert_multipart_object(unsigned int max_extruders) assert(this->objects.size() >= 2); if (this->objects.size() < 2) return; - + ModelObject* object = new ModelObject(this); object->input_file = this->objects.front()->input_file; object->name = boost::filesystem::path(this->objects.front()->input_file).stem().string(); @@ -601,7 +601,7 @@ void Model::convert_multipart_object(unsigned int max_extruders) for (const ModelObject* o : this->objects) for (const ModelVolume* v : o->volumes) { - // If there are more than one object, put all volumes together + // If there are more than one object, put all volumes together // Each object may contain any number of volumes and instances // The volumes transformations are relative to the object containing them... Geometry::Transformation trafo_volume = v->get_transformation(); @@ -620,7 +620,7 @@ void Model::convert_multipart_object(unsigned int max_extruders) } else { for (const ModelInstance* i : o->instances) // ...so, transform everything to a common reference system (world) - copy_volume(object->add_volume(*v))->set_transformation(i->get_transformation() * trafo_volume); + copy_volume(object->add_volume(*v))->set_transformation(i->get_transformation() * trafo_volume); } } @@ -1010,6 +1010,20 @@ ModelVolume* ModelObject::add_volume(const ModelVolume &other, TriangleMesh &&me return v; } +ModelVolume* ModelObject::add_volume_with_shared_mesh(const ModelVolume &other, ModelVolumeType type /*= ModelVolumeType::INVALID*/) +{ + ModelVolume* v = new ModelVolume(this, other.m_mesh); + if (type != ModelVolumeType::INVALID && v->type() != type) + v->set_type(type); + this->volumes.push_back(v); + // The volume should already be centered at this point of time when copying shared pointers of the triangle mesh and convex hull. +// v->center_geometry_after_creation(); +// this->invalidate_bounding_box(); + // BBS: backup + Slic3r::save_object_mesh(*this); + return v; +} + void ModelObject::delete_volume(size_t idx) { ModelVolumePtrs::iterator i = this->volumes.begin() + idx; @@ -1324,7 +1338,7 @@ Polygon ModelObject::convex_hull_2d(const Transform3d& trafo_instance) const void ModelObject::center_around_origin(bool include_modifiers) { - // calculate the displacements needed to + // calculate the displacements needed to // center this object around the origin const BoundingBoxf3 bb = include_modifiers ? full_raw_mesh_bounding_box() : raw_mesh_bounding_box(); @@ -1476,8 +1490,8 @@ void ModelObject::convert_units(ModelObjectPtrs& new_objects, ConversionType con // Perform conversion only if the target "imperial" state is different from the current one. // This check supports conversion of "mixed" set of volumes, each with different "imperial" state. - if (//vol->source.is_converted_from_inches != from_imperial && - (volume_idxs.empty() || + if (//vol->source.is_converted_from_inches != from_imperial && + (volume_idxs.empty() || std::find(volume_idxs.begin(), volume_idxs.end(), vol_idx) != volume_idxs.end())) { vol->scale_geometry_after_creation(koef); vol->set_offset(Vec3d(koef, koef, koef).cwiseProduct(volume->get_offset())); @@ -1598,7 +1612,7 @@ ModelObjectPtrs ModelObject::cut(size_t instance, std::array plane_poi if (attributes.has(ModelObjectCutAttribute::KeepLower)) lower->add_volume(*volume); } - else if (! volume->mesh().empty()) { + else if (! volume->mesh().empty()) { // Transform the mesh by the combined transformation matrix. // Flip the triangles in case the composite transformation is left handed. TriangleMesh mesh(volume->mesh()); @@ -1744,7 +1758,7 @@ ModelObjectPtrs ModelObject::segment(size_t instance, unsigned int max_extruders // Modifiers are not cut, but we still need to add the instance transformation // to the modifier volume transformation to preserve their shape properly. volume->set_transformation(Geometry::Transformation(instance_matrix * volume_matrix)); - upper->add_volume(*volume); + upper->add_volume(*volume); } else if (!volume->mesh().empty()) { // Transform the mesh by the combined transformation matrix. @@ -2185,7 +2199,7 @@ void ModelObject::print_info() const using namespace std; cout << fixed; boost::nowide::cout << "[" << boost::filesystem::path(this->input_file).filename().string() << "]" << endl; - + TriangleMesh mesh = this->raw_mesh(); BoundingBoxf3 bb = mesh.bounding_box(); Vec3d size = bb.size(); @@ -2203,7 +2217,7 @@ void ModelObject::print_info() const cout << "manifold = " << (mesh.stats().manifold() ? "yes" : "no") << endl; if (! mesh.stats().manifold()) cout << "open_edges = " << mesh.stats().open_edges << endl; - + if (mesh.stats().repaired()) { const RepairedMeshErrors& stats = mesh.stats().repaired_errors; if (stats.degenerate_facets > 0) @@ -2286,7 +2300,7 @@ void ModelVolume::set_material_id(t_model_material_id material_id) } ModelMaterial* ModelVolume::material() const -{ +{ return this->object->get_model()->get_material(m_material_id); } @@ -2362,8 +2376,10 @@ void ModelVolume::center_geometry_after_creation(bool update_source_offset) Vec3d shift = this->mesh().bounding_box().center(); if (!shift.isApprox(Vec3d::Zero())) { - if (m_mesh) - const_cast(m_mesh.get())->translate(-(float)shift(0), -(float)shift(1), -(float)shift(2)); + if (m_mesh) { + const_cast(m_mesh.get())->translate(-(float)shift(0), -(float)shift(1), -(float)shift(2)); + const_cast(m_mesh.get())->set_init_shift(shift); + } if (m_convex_hull) const_cast(m_convex_hull.get())->translate(-(float)shift(0), -(float)shift(1), -(float)shift(2)); translate(shift); @@ -2803,7 +2819,7 @@ double Model::getThermalLength(const std::vector modelVolumePtrs) } return thermalLength; } -// max printing speed, difference in bed temperature and envirument temperature and bed adhension coefficients are considered +// max printing speed, difference in bed temperature and envirument temperature and bed adhension coefficients are considered double ModelInstance::get_auto_brim_width(double deltaT, double adhension) const { BoundingBoxf3 raw_bbox = object->raw_mesh_bounding_box(); @@ -2896,7 +2912,7 @@ double ModelInstance::get_auto_brim_width() const void ModelInstance::get_arrange_polygon(void* ap) const { // static const double SIMPLIFY_TOLERANCE_MM = 0.1; - + Vec3d rotation = get_rotation(); rotation.z() = 0.; Transform3d trafo_instance = @@ -2909,7 +2925,7 @@ void ModelInstance::get_arrange_polygon(void* ap) const // pp = p.simplify(scaled(SIMPLIFY_TOLERANCE_MM)); // if (!pp.empty()) p = pp.front(); // } - + arrangement::ArrangePolygon& ret = *(arrangement::ArrangePolygon*)ap; ret.poly.contour = std::move(p); ret.translation = Vec2crd{scaled(get_offset(X)), scaled(get_offset(Y))}; @@ -3039,6 +3055,12 @@ void FacetsAnnotation::set_triangle_from_string(int triangle_id, const std::stri } } +bool FacetsAnnotation::equals(const FacetsAnnotation &other) const +{ + const std::pair>, std::vector>& data = other.get_data(); + return (m_data == data); +} + // Test whether the two models contain the same number of ModelObjects with the same set of IDs // ordered in the same order. In that case it is not necessary to kill the background processing. bool model_object_list_equal(const Model &model_old, const Model &model_new) @@ -3140,22 +3162,22 @@ bool model_property_changed(const ModelObject &model_object_old, const ModelObje bool model_custom_supports_data_changed(const ModelObject& mo, const ModelObject& mo_new) { - return model_property_changed(mo, mo_new, - [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, + return model_property_changed(mo, mo_new, + [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, [](const ModelVolume &mv_old, const ModelVolume &mv_new){ return mv_old.supported_facets.timestamp_matches(mv_new.supported_facets); }); } bool model_custom_seam_data_changed(const ModelObject& mo, const ModelObject& mo_new) { - return model_property_changed(mo, mo_new, - [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, + return model_property_changed(mo, mo_new, + [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, [](const ModelVolume &mv_old, const ModelVolume &mv_new){ return mv_old.seam_facets.timestamp_matches(mv_new.seam_facets); }); } bool model_mmu_segmentation_data_changed(const ModelObject& mo, const ModelObject& mo_new) { - return model_property_changed(mo, mo_new, - [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, + return model_property_changed(mo, mo_new, + [](const ModelVolumeType t) { return t == ModelVolumeType::MODEL_PART; }, [](const ModelVolume &mv_old, const ModelVolume &mv_new){ return mv_old.mmu_segmentation_facets.timestamp_matches(mv_new.mmu_segmentation_facets); }); } @@ -3189,7 +3211,7 @@ bool model_has_advanced_features(const Model &model) void check_model_ids_validity(const Model &model) { std::set ids; - auto check = [&ids](ObjectID id) { + auto check = [&ids](ObjectID id) { assert(id.valid()); assert(ids.find(id) == ids.end()); ids.insert(id); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index ef134fcfc0..ac78f5c981 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -308,6 +308,7 @@ public: ModelVolume* add_volume(TriangleMesh &&mesh, ModelVolumeType type = ModelVolumeType::MODEL_PART); ModelVolume* add_volume(const ModelVolume &volume, ModelVolumeType type = ModelVolumeType::INVALID); ModelVolume* add_volume(const ModelVolume &volume, TriangleMesh &&mesh); + ModelVolume* add_volume_with_shared_mesh(const ModelVolume &other, ModelVolumeType type = ModelVolumeType::MODEL_PART); void delete_volume(size_t idx); void clear_volumes(); void sort_volumes(bool full_sort); @@ -617,6 +618,7 @@ public: void set_triangle_from_string(int triangle_id, const std::string& str); // After deserializing the last triangle, shrink data to fit. void shrink_to_fit() { m_data.first.shrink_to_fit(); m_data.second.shrink_to_fit(); } + bool equals(const FacetsAnnotation &other) const; private: // Constructors to be only called by derived classes. @@ -676,6 +678,7 @@ public: // The triangular model. const TriangleMesh& mesh() const { return *m_mesh.get(); } + const TriangleMesh* mesh_ptr() const { return m_mesh.get(); } void set_mesh(const TriangleMesh &mesh) { m_mesh = std::make_shared(mesh); } void set_mesh(TriangleMesh &&mesh) { m_mesh = std::make_shared(std::move(mesh)); } void set_mesh(const indexed_triangle_set &mesh) { m_mesh = std::make_shared(mesh); } @@ -859,6 +862,18 @@ private: if (mesh.facets_count() > 1) calculate_convex_hull(); } + ModelVolume(ModelObject *object, const std::shared_ptr &mesh, ModelVolumeType type = ModelVolumeType::MODEL_PART) : m_mesh(mesh), m_type(type), object(object) + { + assert(this->id().valid()); + assert(this->config.id().valid()); + assert(this->supported_facets.id().valid()); + assert(this->seam_facets.id().valid()); + assert(this->mmu_segmentation_facets.id().valid()); + assert(this->id() != this->config.id()); + assert(this->id() != this->supported_facets.id()); + assert(this->id() != this->seam_facets.id()); + assert(this->id() != this->mmu_segmentation_facets.id()); + } ModelVolume(ModelObject *object, TriangleMesh &&mesh, TriangleMesh &&convex_hull, ModelVolumeType type = ModelVolumeType::MODEL_PART) : m_mesh(new TriangleMesh(std::move(mesh))), m_convex_hull(new TriangleMesh(std::move(convex_hull))), m_type(type), object(object) { assert(this->id().valid()); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 53d4037012..9737f7742f 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1130,6 +1130,46 @@ void Print::auto_assign_extruders(ModelObject* model_object) const } } +void PrintObject::set_shared_object(PrintObject *object) +{ + m_shared_object = object; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": this=%1%, found shared object from %2%")%this%m_shared_object; +} + +void PrintObject::clear_shared_object() +{ + if (m_shared_object) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": this=%1%, clear previous shared object data %2%")%this %m_shared_object; + m_layers.clear(); + m_support_layers.clear(); + m_tree_support_layers.clear(); + + m_shared_object = nullptr; + + invalidate_all_steps_without_cancel(); + } +} + +void PrintObject::copy_layers_from_shared_object() +{ + if (m_shared_object) { + m_layers.clear(); + m_support_layers.clear(); + m_tree_support_layers.clear(); + + firstLayerObjSliceByVolume.clear(); + firstLayerObjSliceByGroups.clear(); + + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": this=%1%, copied layers from object %2%")%this%m_shared_object; + m_layers = m_shared_object->layers(); + m_support_layers = m_shared_object->support_layers(); + m_tree_support_layers = m_shared_object->tree_support_layers(); + + firstLayerObjSliceByVolume = m_shared_object->firstLayerObjSlice(); + firstLayerObjSliceByGroups = m_shared_object->firstLayerObjGroups(); + } +} + // BBS BoundingBox PrintObject::get_first_layer_bbox(float& a, float& layer_height, std::string& name) { @@ -1179,15 +1219,115 @@ void Print::process() { name_tbb_thread_pool_threads_set_locale(); + //compute the PrintObject with the same geometries + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": this=%1%, enter")%this; + for (PrintObject *obj : m_objects) + obj->clear_shared_object(); + + //add the print_object share check logic + auto is_print_object_the_same = [this](const PrintObject* object1, const PrintObject* object2) -> bool{ + if (object1->trafo().matrix() != object2->trafo().matrix()) + return false; + const ModelObject* model_obj1 = object1->model_object(); + const ModelObject* model_obj2 = object2->model_object(); + if (model_obj1->volumes.size() != model_obj2->volumes.size()) + return false; + bool has_extruder1 = model_obj1->config.has("extruder"); + bool has_extruder2 = model_obj2->config.has("extruder"); + if ((has_extruder1 != has_extruder2) + || (has_extruder1 && model_obj1->config.extruder() != model_obj2->config.extruder())) + return false; + for (int index = 0; index < model_obj1->volumes.size(); index++) { + const ModelVolume &model_volume1 = *model_obj1->volumes[index]; + const ModelVolume &model_volume2 = *model_obj2->volumes[index]; + if (model_volume1.type() != model_volume2.type()) + return false; + if (model_volume1.mesh_ptr() != model_volume2.mesh_ptr()) + return false; + has_extruder1 = model_volume1.config.has("extruder"); + has_extruder2 = model_volume2.config.has("extruder"); + if ((has_extruder1 != has_extruder2) + || (has_extruder1 && model_volume1.config.extruder() != model_volume2.config.extruder())) + return false; + if (!model_volume1.supported_facets.equals(model_volume2.supported_facets)) + return false; + if (!model_volume1.seam_facets.equals(model_volume2.seam_facets)) + return false; + if (!model_volume1.mmu_segmentation_facets.equals(model_volume2.mmu_segmentation_facets)) + return false; + if (model_volume1.config.get() != model_volume2.config.get()) + return false; + } + //if (!object1->config().equals(object2->config())) + // return false; + if (model_obj1->config.get() != model_obj2->config.get()) + return false; + return true; + }; + int object_count = m_objects.size(); + std::set need_slicing_objects; + for (int index = 0; index < object_count; index++) + { + PrintObject *obj = m_objects[index]; + for (PrintObject *slicing_obj : need_slicing_objects) + { + if (is_print_object_the_same(obj, slicing_obj)) { + obj->set_shared_object(slicing_obj); + break; + } + } + if (!obj->get_shared_object()) + need_slicing_objects.insert(obj); + } + + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": total object counts %1% in current print, need to slice %2%")%m_objects.size()%need_slicing_objects.size(); BOOST_LOG_TRIVIAL(info) << "Starting the slicing process." << log_memory_info(); + for (PrintObject *obj : m_objects) { + if (need_slicing_objects.count(obj) != 0) { + obj->make_perimeters(); + } + else { + if (obj->set_started(posSlice)) + obj->set_done(posSlice); + if (obj->set_started(posPerimeters)) + obj->set_done(posPerimeters); + } + } + for (PrintObject *obj : m_objects) { + if (need_slicing_objects.count(obj) != 0) { + obj->infill(); + } + else { + if (obj->set_started(posPrepareInfill)) + obj->set_done(posPrepareInfill); + if (obj->set_started(posInfill)) + obj->set_done(posInfill); + } + } + for (PrintObject *obj : m_objects) { + if (need_slicing_objects.count(obj) != 0) { + obj->ironing(); + } + else { + if (obj->set_started(posIroning)) + obj->set_done(posIroning); + } + } + for (PrintObject *obj : m_objects) { + if (need_slicing_objects.count(obj) != 0) { + obj->generate_support_material(); + } + else { + if (obj->set_started(posSupportMaterial)) + obj->set_done(posSupportMaterial); + } + } + for (PrintObject *obj : m_objects) - obj->make_perimeters(); - for (PrintObject *obj : m_objects) - obj->infill(); - for (PrintObject *obj : m_objects) - obj->ironing(); - for (PrintObject *obj : m_objects) - obj->generate_support_material(); + { + if (need_slicing_objects.count(obj) == 0) + obj->copy_layers_from_shared_object(); + } if (this->set_started(psWipeTower)) { m_wipe_tower_data.clear(); m_tool_ordering.clear(); @@ -1290,8 +1430,17 @@ void Print::process() this->set_done(psSkirtBrim); } //BBS - for (PrintObject *obj : m_objects) - obj->simplify_extrusion_path(); + for (PrintObject *obj : m_objects) { + if (need_slicing_objects.count(obj) != 0) { + obj->simplify_extrusion_path(); + } + else { + if (obj->set_started(posSimplifyPath)) + obj->set_done(posSimplifyPath); + if (obj->set_started(posSimplifySupportPath)) + obj->set_done(posSimplifySupportPath); + } + } BOOST_LOG_TRIVIAL(info) << "Slicing process finished." << log_memory_info(); } @@ -1632,7 +1781,7 @@ void Print::_make_wipe_tower() for (LayerTools& layer_tools : layer_tools_array) { layer_tools.has_wipe_tower = true; if (layer_tools.wipe_tower_partitions == 0) { - layer_tools.wipe_tower_partitions = 1; + layer_tools.wipe_tower_partitions = 1; } } } diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 3007eef292..084763db3a 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -415,6 +415,11 @@ public: //BBS BoundingBox get_first_layer_bbox(float& area, float& layer_height, std::string& name); + PrintObject* get_shared_object() const { return m_shared_object; } + void set_shared_object(PrintObject *object); + void clear_shared_object(); + void copy_layers_from_shared_object(); + // BBS: Boundingbox of the first layer BoundingBox firstLayerObjectBrimBoundingBox; private: @@ -495,6 +500,8 @@ private: // BBS: per object skirt ExtrusionEntityCollection m_skirt; + PrintObject* m_shared_object{ nullptr }; + public: //BBS: When printing multi-material objects, this settings will make slicer to clip the overlapping object parts one by the other. //(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc). diff --git a/src/libslic3r/PrintBase.hpp b/src/libslic3r/PrintBase.hpp index 5196d63698..c6ecf4ebeb 100644 --- a/src/libslic3r/PrintBase.hpp +++ b/src/libslic3r/PrintBase.hpp @@ -629,6 +629,8 @@ protected: { return m_state.invalidate_multiple(il.begin(), il.end(), PrintObjectBase::cancel_callback(m_print)); } bool invalidate_all_steps() { return m_state.invalidate_all(PrintObjectBase::cancel_callback(m_print)); } + bool invalidate_all_steps_without_cancel() + { return m_state.invalidate_all([](){}); } bool is_step_started_unguarded(PrintObjectStepEnum step) const { return m_state.is_started_unguarded(step); } bool is_step_done_unguarded(PrintObjectStepEnum step) const { return m_state.is_done_unguarded(step); } diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index d6d47f5c7e..84429764eb 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -86,6 +86,7 @@ PrintObject::PrintObject(Print* print, ModelObject* model_object, const Transfor PrintObject::~PrintObject() { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": this=%1%, m_shared_object %2%")%this%m_shared_object; if (m_shared_regions && -- m_shared_regions->m_ref_cnt == 0) delete m_shared_regions; clear_layers(); clear_support_layers(); @@ -535,9 +536,11 @@ std::pair PrintObject::prepare void PrintObject::clear_layers() { - for (Layer *l : m_layers) - delete l; - m_layers.clear(); + if (!m_shared_object) { + for (Layer *l : m_layers) + delete l; + m_layers.clear(); + } } Layer* PrintObject::add_layer(int id, coordf_t height, coordf_t print_z, coordf_t slice_z) @@ -573,9 +576,11 @@ SupportLayer* PrintObject::get_support_layer_at_printz(coordf_t print_z, coordf_ void PrintObject::clear_tree_support_layers() { - for (TreeSupportLayer* l : m_tree_support_layers) - delete l; - m_tree_support_layers.clear(); + if (!m_shared_object) { + for (TreeSupportLayer* l : m_tree_support_layers) + delete l; + m_tree_support_layers.clear(); + } } std::shared_ptr PrintObject::alloc_tree_support_preview_cache() @@ -602,9 +607,11 @@ TreeSupportLayer* PrintObject::add_tree_support_layer(int id, coordf_t height, c void PrintObject::clear_support_layers() { - for (Layer *l : m_support_layers) - delete l; - m_support_layers.clear(); + if (!m_shared_object) { + for (Layer *l : m_support_layers) + delete l; + m_support_layers.clear(); + } } SupportLayer* PrintObject::add_support_layer(int id, int interface_id, coordf_t height, coordf_t print_z) diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 3fece644bd..79aac12cc6 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -152,10 +152,14 @@ public: const TriangleMeshStats& stats() const { return m_stats; } + void set_init_shift(const Vec3d &offset) { m_init_shift = offset; } + Vec3d get_init_shift() const { return m_init_shift; } + indexed_triangle_set its; private: TriangleMeshStats m_stats; + Vec3d m_init_shift {0.0, 0.0, 0.0}; }; // Index of face indices incident with a vertex index. diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 858905065f..ef7ffc1fb7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2740,6 +2740,14 @@ std::vector Plater::priv::load_files(const std::vector& input_ context += append; show_info(q, context, _L("Newer 3mf version")); } + else { + //if the minor version is not matched + if (file_version.min() != app_version.min()) { + wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software.\n"), + file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); + show_info(q, text, _L("Newer 3mf version")); + } + } } else if (!load_config) { for (ModelObject *model_object : model.objects) { model_object->config.reset(); From 1c3375bb078485cc01febd518e51079b58b8b531 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 19 Aug 2022 14:19:13 +0800 Subject: [PATCH 039/137] FIX:add ams hub upgrade module Change-Id: Iba636f5a13ab3350aa61b22548535aa7ad334cc0 --- src/slic3r/GUI/DeviceManager.cpp | 26 ++++++ src/slic3r/GUI/DeviceManager.hpp | 3 + src/slic3r/GUI/UpgradePanel.cpp | 146 +++++++++++++++++++++++++------ src/slic3r/GUI/UpgradePanel.hpp | 5 +- 4 files changed, 152 insertions(+), 28 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 67249ce20b..c3c226b76a 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1825,6 +1825,30 @@ int MachineObject::parse_json(std::string payload) #pragma endregion +#pragma region online + // parse online info + try { + if (jj.contains("online")) { + if (jj["online"].contains("ahb")) { + if (jj["online"]["ahb"].get()) { + online_ahb = true; + } else { + online_ahb = false; + } + } + if (jj["online"].contains("rfid")) { + if (jj["online"]["rfid"].get()) { + online_rfid = true; + } else { + online_rfid = false; + } + } + } + } catch (...) { + ; + } +#pragma endregion + #pragma region print_task if (jj.contains("printer_type")) { printer_type = parse_printer_type(jj["printer_type"].get()); @@ -2092,6 +2116,8 @@ int MachineObject::parse_json(std::string payload) new_ver_list.insert(std::make_pair(ver_info.name, ver_info)); } + } else { + new_ver_list.clear(); } } } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index fd18c6057b..e2759981f0 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -374,6 +374,9 @@ public: bool is_mapping_exceed_filament(std::vector& result, int &exceed_index); void reset_mapping_result(std::vector& result); + /*online*/ + bool online_rfid; + bool online_ahb; /* temperature */ float nozzle_temp; diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index ae825909c6..fc5a5cf34b 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -105,6 +105,13 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin wxBoxSizer *m_ams_content_sizer = new wxBoxSizer(wxVERTICAL); m_ams_content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); + + + m_ahb_panel = new AmsPanel(this, wxID_ANY); + m_ahb_panel->m_staticText_ams->SetLabel("AMS HUB"); + m_ams_content_sizer->Add(m_ahb_panel, 0, wxEXPAND, 0); + + m_ams_info_sizer = new wxGridSizer(0, 2, FromDIP(30), FromDIP(30)); @@ -120,7 +127,6 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin } m_ams_content_sizer->Add(m_ams_info_sizer, 0, wxEXPAND, 0); - m_ams_sizer->Add(m_ams_content_sizer, 1, wxEXPAND, 0); m_main_left_sizer->Add(m_ams_sizer, 0, wxEXPAND, 0); @@ -274,7 +280,7 @@ void MachineInfoPanel::update(MachineObject* obj) m_caption_text->SetLabelText(caption_text); show_status(MachineObject::UpgradingDisplayState::UpgradingUnavaliable); } else { - show_status(obj->upgrade_display_state); + show_status(obj->upgrade_display_state, obj->upgrade_status); if (obj->upgrade_display_state == (int) MachineObject::UpgradingDisplayState::UpgradingUnavaliable) { if (obj->can_abort()) { wxString caption_text = wxString::Format("%s(%s)", from_u8(obj->dev_name), _L("Printing")); @@ -356,6 +362,88 @@ void MachineInfoPanel::update_version_text(MachineObject* obj) void MachineInfoPanel::update_ams(MachineObject *obj) { + bool has_hub_model = false; + + //hub + if (!obj->online_ahb || obj->module_vers.find("ahb") == obj->module_vers.end()) + m_ahb_panel->Hide(); + else { + has_hub_model = true; + show_ams(true); + + for (auto i = 0; i < m_amspanel_list.GetCount(); i++) { + AmsPanel *amspanel = m_amspanel_list[i]; + amspanel->Hide(); + } + + m_ahb_panel->Show(); + + wxString hub_sn = "-"; + if (!obj->module_vers.find("ahb")->second.sn.empty()) { + wxString sn_text = obj->module_vers.find("ahb")->second.sn; + hub_sn = sn_text.MakeUpper(); + } + + + wxString hub_ver = "-"; + if (!obj->module_vers.find("ahb")->second.sw_ver.empty()) { + wxString sn_text = obj->module_vers.find("ahb")->second.sw_ver; + hub_ver = sn_text.MakeUpper(); + } + + /* auto ver_item = obj->new_ver_list.find("ahb"); + if (ver_item != obj->new_ver_list.end()) { + m_ahb_panel->m_ams_new_version_img->Show(); + hub_ver = wxString::Format("%s->%s", hub_ver, ver_item->second.sw_new_ver); + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + hub_ver = wxString::Format("%s(%s)", hub_ver, _L("Latest version")); + }*/ + + if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { + if (obj->upgrade_new_version && obj->ahb_new_version_number.compare(obj->module_vers.find("ahb")->second.sw_ver) != 0) { + m_ahb_panel->m_ams_new_version_img->Show(); + + if (obj->ahb_new_version_number.empty()) { + hub_ver = wxString::Format("%s", obj->module_vers.find("ahb")->second.sw_ver); + } else { + hub_ver = wxString::Format("%s->%s", obj->module_vers.find("ahb")->second.sw_ver, obj->ahb_new_version_number); + } + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + if (obj->ahb_new_version_number.empty()) { + wxString ver_text = wxString::Format("%s", obj->module_vers.find("ahb")->second.sw_ver); + hub_ver = ver_text; + } else { + wxString ver_text = wxString::Format("%s(%s)", obj->module_vers.find("ahb")->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } + } + } else { + auto ver_item = obj->new_ver_list.find("ahb"); + + if (ver_item == obj->new_ver_list.end()) { + m_ahb_panel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", obj->module_vers.find("ahb")->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } else { + if (ver_item->second.sw_new_ver != ver_item->second.sw_ver) { + m_ahb_panel->m_ams_new_version_img->Show(); + wxString ver_text = wxString::Format("%s->%s", ver_item->second.sw_ver, ver_item->second.sw_new_ver); + hub_ver = ver_text; + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", ver_item->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } + } + } + + m_ahb_panel->m_staticText_ams_sn_val->SetLabelText(hub_sn); + m_ahb_panel->m_staticText_ams_ver_val->SetLabelText(hub_ver); + } + + //ams if (obj->ams_exist_bits != 0) { show_ams(true); std::map ver_list = obj->get_ams_version(); @@ -394,38 +482,43 @@ void MachineInfoPanel::update_ams(MachineObject *obj) wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_id + 1)); ams_name = ams_text; - std::string ams_id = "ams/" + std::to_string(ams_index); - auto ver_item = obj->new_ver_list.find(ams_id); if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { if (obj->upgrade_new_version && obj->ams_new_version_number.compare(it->second.sw_ver) != 0) { amspanel->m_ams_new_version_img->Show(); - wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); - ams_ver = ver_text; + + if (obj->ams_new_version_number.empty()) { + ams_ver = wxString::Format("%s", it->second.sw_ver); + } else { + ams_ver = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); + } } else { amspanel->m_ams_new_version_img->Hide(); if (obj->ams_new_version_number.empty()) { wxString ver_text = wxString::Format("%s", it->second.sw_ver); - ams_ver = ver_text; + ams_ver = ver_text; } else { wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } } } else { + std::string ams_id = "ams/" + std::to_string(ams_index); + auto ver_item = obj->new_ver_list.find(ams_id); + if (ver_item == obj->new_ver_list.end()) { amspanel->m_ams_new_version_img->Hide(); wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } else { if (ver_item->second.sw_new_ver != ver_item->second.sw_ver) { amspanel->m_ams_new_version_img->Show(); wxString ver_text = wxString::Format("%s->%s", ver_item->second.sw_ver, ver_item->second.sw_new_ver); - ams_ver = ver_text; + ams_ver = ver_text; } else { amspanel->m_ams_new_version_img->Hide(); wxString ver_text = wxString::Format("%s(%s)", ver_item->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } } } @@ -446,18 +539,19 @@ void MachineInfoPanel::update_ams(MachineObject *obj) ams_index++; } } else { - show_ams(false); + if (!has_hub_model) { show_ams(false); } + } this->Layout(); } -void MachineInfoPanel::show_status(int status) +void MachineInfoPanel::show_status(int status, std::string upgrade_status_str) { - if (last_status == status) - return; - last_status = status; + if (last_status == status && last_status_str == upgrade_status_str) return; + last_status = status; + last_status_str = upgrade_status_str; - BOOST_LOG_TRIVIAL(trace) << "MachineInfoPanel: show_status = " << status; + BOOST_LOG_TRIVIAL(trace) << "MachineInfoPanel: show_status = " << status << ", str = " << upgrade_status_str; Freeze(); @@ -487,15 +581,7 @@ void MachineInfoPanel::show_status(int status) m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); m_staticText_upgrading_percent->Show(); } else if (status == (int) MachineObject::UpgradingDisplayState::UpgradingFinished) { - if (true) { - for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } - m_button_upgrade_firmware->Hide(); - m_staticText_upgrading_info->SetLabel(_L("Upgrading success")); - m_staticText_upgrading_info->Show(); - m_staticText_upgrading_info->SetForegroundColour(TEXT_NORMAL_CLR); - m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); - m_upgrade_retry_img->Hide(); - } else { + if (upgrade_status_str == "UPGRADE_FAIL") { m_staticText_upgrading_info->SetLabel(_L("Upgrading failed")); m_staticText_upgrading_info->SetForegroundColour(TEXT_FAILED_CLR); for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } @@ -503,6 +589,14 @@ void MachineInfoPanel::show_status(int status) m_staticText_upgrading_info->Show(); m_staticText_upgrading_percent->Hide(); m_upgrade_retry_img->Show(); + } else { + for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } + m_button_upgrade_firmware->Hide(); + m_staticText_upgrading_info->SetLabel(_L("Upgrading success")); + m_staticText_upgrading_info->Show(); + m_staticText_upgrading_info->SetForegroundColour(TEXT_NORMAL_CLR); + m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); + m_upgrade_retry_img->Hide(); } } else { ; diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index cd8ec6e788..412d45ed13 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -48,7 +48,7 @@ protected: wxStaticText * m_staticText_ver_val; wxStaticLine * m_staticline; wxStaticBitmap *m_ams_img; - + AmsPanel* m_ahb_panel; wxGridSizer * m_ams_info_sizer; @@ -75,6 +75,7 @@ protected: wxBitmap upgrade_green_icon; wxBitmap upgrade_yellow_icon; int last_status = -1; + std::string last_status_str = ""; void upgrade_firmware_internal(); void on_upgrade_firmware(wxCommandEvent &event); @@ -94,7 +95,7 @@ public: void update(MachineObject *obj); void update_version_text(MachineObject *obj); void update_ams(MachineObject *obj); - void show_status(int status); + void show_status(int status, std::string upgrade_status_str = ""); void show_ams(bool show = false, bool force_update = false); MachineObject *m_obj{nullptr}; From 95c285b5c1e9c43b35552d3d85fbe715875b23b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=BB=E4=B9=90=E5=A4=9A?= Date: Tue, 23 Aug 2022 22:17:10 +0800 Subject: [PATCH 040/137] remove: Revert "ENH: support default filament for volumes" This reverts commit 8f1b7d6e8b603e32bc1fa5d52fd0ab6dd8ddcb29. Change-Id: I73ac458be7d2d5d1f9c0a976e936f3f97c90f57d --- src/slic3r/GUI/ExtraRenderers.cpp | 7 +-- src/slic3r/GUI/GUI_Factories.cpp | 4 +- src/slic3r/GUI/GUI_ObjectList.cpp | 21 +++---- src/slic3r/GUI/GUI_ObjectList.hpp | 3 - src/slic3r/GUI/ObjectDataViewModel.cpp | 43 ++++++------- src/slic3r/GUI/ObjectDataViewModel.hpp | 2 +- src/slic3r/GUI/wxExtensions.cpp | 85 ++++++++++---------------- src/slic3r/GUI/wxExtensions.hpp | 3 - 8 files changed, 62 insertions(+), 106 deletions(-) diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index fd5206ddc3..4931a71ea2 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -313,16 +313,11 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR labelRect.GetTopLeft(), wxSize(labelRect.GetWidth(), -1), 0, nullptr, wxCB_READONLY | CB_NO_DROP_ICON | CB_NO_TEXT); c_editor->GetDropDown().SetUseContentWidth(true); - // BBS - int def_id = get_default_extruder_idx ? get_default_extruder_idx() : 0; - wxBitmap* default_icon = get_extruder_color_icon(def_id, true); - if (is_volume_selected()) - c_editor->Append("default", *default_icon); for (size_t i = 0; i < icons.size(); i++) c_editor->Append(wxString::Format("%d", i+1), *icons[i]); - c_editor->SetSelection(atoi(data.GetText().c_str())); + c_editor->SetSelection(atoi(data.GetText().c_str()) - 1); #ifdef __linux__ diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 30b6da13f7..9935afc1ef 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -689,9 +689,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) initial_extruder = config.has("extruder") ? config.extruder() : 1; } - ItemType sel_type = obj_list()->get_item_type(sels[0]); - int i = (sel_type & ItemType::itVolume) ? 0 : 1; - for (; i < filaments_cnt; i++) + for (int i = 0; i <= filaments_cnt; i++) { bool is_active_extruder = i == initial_extruder; int icon_idx = i == 0 ? 0 : i - 1; diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index dbed51e3b7..1bb9ca0052 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -587,11 +587,6 @@ ModelConfig& ObjectList::get_item_config(const wxDataViewItem& item) const (*m_objects)[obj_idx]->config; } -ItemType ObjectList::get_item_type(const wxDataViewItem& item) const -{ - return m_objects_model->GetItemType(item); -} - void ObjectList::update_filament_values_for_items(const size_t filaments_count) { for (size_t i = 0; i < m_objects->size(); ++i) @@ -1369,7 +1364,7 @@ void ObjectList::key_event(wxKeyEvent& event) //else if (event.GetUnicodeKey() == 'p') // toggle_printable_state(); else if (filaments_count() > 1) { - std::vector numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; + std::vector numbers = { '1', '2', '3', '4', '5', '6', '7', '8', '9' }; wxChar key_char = event.GetUnicodeKey(); if (std::find(numbers.begin(), numbers.end(), key_char) != numbers.end()) { long extruder_number; @@ -1846,7 +1841,8 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo ModelVolume* new_volume = model_object.add_volume(std::move(mesh), type); new_volume->name = boost::filesystem::path(input_file).filename().string(); // set a default extruder value, since user can't add it manually - new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); + // BBS + new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); // update source data new_volume->source.input_file = input_file; new_volume->source.object_idx = obj_idx; @@ -1948,7 +1944,8 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode const wxString name = _L("Generic") + "-" + _(type_name); new_volume->name = into_u8(name); // set a default extruder value, since user can't add it manually - new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); + // BBS + new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); new_volume->source.is_from_builtin_objects = true; select_item([this, obj_idx, new_volume]() { @@ -4721,7 +4718,7 @@ void ObjectList::ItemValueChanged(wxDataViewEvent &event) else if (event.GetColumn() == colFilament) { wxDataViewItem item = event.GetItem(); if (m_objects_model->GetItemType(item) == itObject) - m_objects_model->UpdateVolumesExtruderBitmap(item); + m_objects_model->UpdateVolumesExtruderBitmap(item, true); update_filament_in_config(item); } } @@ -4801,17 +4798,13 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) wxDataViewItem item = (sel_item_type & itInstance) ? m_objects_model->GetObject(item) : sel_item; ItemType type = m_objects_model->GetItemType(item); - // ignore extruder 0 for object - if ((sel_item_type & (itObject | itInstance)) && extruder == 0) - continue; - ModelConfig& config = get_item_config(item); if (config.has("extruder")) config.set("extruder", extruder); else config.set_key_value("extruder", new ConfigOptionInt(extruder)); - // BBS: for object, clear all its volume's extruder config + // for object, clear all its volume's extruder config if (type & itObject) { ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); for (ModelVolume* mv : node->m_model_object->volumes) { diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 59a8db69a7..0192983ff7 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -311,9 +311,6 @@ public: int get_selected_obj_idx() const; ModelConfig& get_item_config(const wxDataViewItem& item) const; - // BBS - ItemType get_item_type(const wxDataViewItem& item) const; - void changed_object(const int obj_idx = -1) const; void part_selection_changed(); diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 6080e303fd..73e2847898 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -343,16 +343,11 @@ void ObjectDataViewModelNode::UpdateExtruderAndColorIcon(wxString extruder /*= " m_extruder = extruder; // update extruder // update color icon - bool as_default = false; size_t extruder_idx = atoi(extruder.c_str()); if (extruder_idx == 0) { - if (m_type & itObject) { - // Do nothing - } - else if (m_type & itVolume) { - // m_volume_type should be MODEL_PART or PARAMETER_MODIFIER type + if (m_type & itObject); + else if (m_type & itVolume && m_volume_type == ModelVolumeType::MODEL_PART) { extruder_idx = atoi(m_parent->GetExtruder().c_str()); - as_default = true; } else { m_extruder_bmp = wxNullBitmap; @@ -360,8 +355,15 @@ void ObjectDataViewModelNode::UpdateExtruderAndColorIcon(wxString extruder /*= " } } - wxBitmap* bitmap = get_extruder_color_icon(extruder_idx, as_default); - m_extruder_bmp = bitmap ? *bitmap : wxNullBitmap; + if (extruder_idx > 0) --extruder_idx; + // Create the bitmap with color bars. + std::vector bmps = get_extruder_color_icons(false);// use wide icons + if (bmps.empty()) { + m_extruder_bmp = wxNullBitmap; + return; + } + + m_extruder_bmp = *bmps[extruder_idx >= bmps.size() ? 0 : extruder_idx]; } // ***************************************************************************** @@ -547,7 +549,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent wxString extruder_str = extruder == 0 ? _(L("default")) : wxString::Format("%d", extruder); const auto node = new ObjectDataViewModelNode(root, name, volume_type, GetVolumeIcon(volume_type, warning_icon_name), - extruder_str, root->m_volumes_cnt, warning_icon_name); + extruder == 0 ? root->m_extruder : extruder_str, root->m_volumes_cnt, warning_icon_name); insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position); // if part with errors is added, but object wasn't marked, then mark it @@ -1370,33 +1372,26 @@ void ObjectDataViewModel::UpdateItemNames() } // BBS: add use_obj_extruder -void ObjectDataViewModel::UpdateVolumesExtruderBitmap(wxDataViewItem obj_item) +void ObjectDataViewModel::UpdateVolumesExtruderBitmap(wxDataViewItem obj_item, bool use_obj_extruder) { if (!obj_item.IsOk() || GetItemType(obj_item) != itObject) return; ObjectDataViewModelNode* obj_node = static_cast(obj_item.GetID()); - ModelObject* mo = obj_node->m_model_object; for (auto child : obj_node->GetChildren()) - // BBS: also update PARAMETER_MODIFIER - if (child->GetVolumeType() == ModelVolumeType::MODEL_PART || child->GetVolumeType() == ModelVolumeType::PARAMETER_MODIFIER) { - int vol_idx = child->GetIdx(); - ModelVolume* mv = mo->volumes[vol_idx]; - const ConfigOption* opt = mv->config.option("extruder"); - int vol_extr = opt ? opt->getInt() : 0; - child->UpdateExtruderAndColorIcon(std::to_string(vol_extr)); - } + if (child->GetVolumeType() == ModelVolumeType::MODEL_PART) + child->UpdateExtruderAndColorIcon(use_obj_extruder ? obj_node->GetExtruder() : ""); } int ObjectDataViewModel::GetDefaultExtruderIdx(wxDataViewItem item) { ItemType type = GetItemType(item); if (type == itObject) - return 1; + return 0; - if (type == itVolume && (GetVolumeType(item) == ModelVolumeType::MODEL_PART || GetVolumeType(item) == ModelVolumeType::PARAMETER_MODIFIER)) { + if (type == itVolume && GetVolumeType(item) == ModelVolumeType::MODEL_PART) { wxDataViewItem obj_item = GetParent(item); int extruder_id = GetExtruderNumber(obj_item); - //if (extruder_id > 0) extruder_id--; + if (extruder_id > 0) extruder_id--; return extruder_id; } @@ -1587,7 +1582,7 @@ void ObjectDataViewModel::SetExtruder(const wxString& extruder, wxDataViewItem i node->UpdateExtruderAndColorIcon(extruder); if (node->GetType() == itObject) - UpdateVolumesExtruderBitmap(item); + UpdateVolumesExtruderBitmap(item, true); // BBS ItemChanged(item); diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index a9101874f8..749edae4b4 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -449,7 +449,7 @@ public: bool UpdateColumValues(unsigned col); void UpdateExtruderBitmap(wxDataViewItem item); // BBS: add use_obj_extruder - void UpdateVolumesExtruderBitmap(wxDataViewItem object_item); + void UpdateVolumesExtruderBitmap(wxDataViewItem object_item, bool use_obj_extruder = false); int GetDefaultExtruderIdx(wxDataViewItem item); // BBS diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 8667807b12..8eb2d9d07e 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -462,14 +462,16 @@ wxBitmap create_scaled_bitmap( const std::string& bmp_name_in, return *bmp; } -wxBitmap* get_extruder_color_icon(int extruder_id, bool as_default, bool thin_icon/* = false*/) +std::vector get_extruder_color_icons(bool thin_icon/* = false*/) { static Slic3r::GUI::BitmapCache bmp_cache; - bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); + // Create the bitmap with color bars. + std::vector bmps; std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); - if (colors.empty() || extruder_id > colors.size()) - return nullptr; + + if (colors.empty()) + return bmps; unsigned char rgb[3]; @@ -481,65 +483,44 @@ wxBitmap* get_extruder_color_icon(int extruder_id, bool as_default, bool thin_ic const int icon_width = lround((thin_icon ? 2 : 4.5) * em); const int icon_height = lround(2 * em); + bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); + + int index = 0; wxClientDC cdc((wxWindow*)Slic3r::GUI::wxGetApp().mainframe); wxMemoryDC dc(&cdc); dc.SetFont(::Label::Body_12); - std::string color = colors[extruder_id - 1]; - auto cache_label = as_default ? "default" : std::to_string(extruder_id); - std::string bitmap_key = color + "-h" + std::to_string(icon_height) + "-w" + std::to_string(icon_width) - + "-i" + cache_label; - - auto disp_label = as_default ? _L("default") : std::to_string(extruder_id); - wxBitmap* bitmap = bmp_cache.find(bitmap_key); - if (bitmap == nullptr) { - // Paint the color icon. - //Slic3r::GUI::BitmapCache::parse_color(color, rgb); - // there is no neede to scale created solid bitmap - wxColor clr(color); - bitmap = bmp_cache.insert(bitmap_key, wxBitmap(icon_width, icon_height)); - dc.SelectObject(*bitmap); - dc.SetBackground(wxBrush(clr)); - dc.Clear(); - if (clr.Red() > 224 && clr.Blue() > 224 && clr.Green() > 224) { - dc.SetBrush(wxBrush(clr)); - dc.SetPen(*wxGREY_PEN); - dc.DrawRectangle(0, 0, icon_width, icon_height); - } - auto size = dc.GetTextExtent(disp_label); - dc.SetTextForeground(clr.GetLuminance() < 0.51 ? *wxWHITE : *wxBLACK); - dc.DrawText(disp_label, (icon_width - size.x) / 2, (icon_height - size.y) / 2); - dc.SelectObject(wxNullBitmap); - } - - return bitmap; -} - -std::vector get_extruder_color_icons(bool thin_icon/* = false*/) -{ - // Create the bitmap with color bars. - std::vector bmps; - int index = 0; - std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); for (const std::string &color : colors) { - wxBitmap* bitmap = get_extruder_color_icon(++index, false, thin_icon); + auto label = std::to_string(++index); + std::string bitmap_key = color + "-h" + std::to_string(icon_height) + "-w" + std::to_string(icon_width) + + "-i" + label; + + wxBitmap* bitmap = bmp_cache.find(bitmap_key); + if (bitmap == nullptr) { + // Paint the color icon. + //Slic3r::GUI::BitmapCache::parse_color(color, rgb); + // there is no neede to scale created solid bitmap + wxColor clr(color); + bitmap = bmp_cache.insert(bitmap_key, wxBitmap(icon_width, icon_height)); + dc.SelectObject(*bitmap); + dc.SetBackground(wxBrush(clr)); + dc.Clear(); + if (clr.Red() > 224 && clr.Blue() > 224 && clr.Green() > 224) { + dc.SetBrush(wxBrush(clr)); + dc.SetPen(*wxGREY_PEN); + dc.DrawRectangle(0, 0, icon_width, icon_height); + } + auto size = dc.GetTextExtent(wxString(label)); + dc.SetTextForeground(clr.GetLuminance() < 0.51 ? *wxWHITE : *wxBLACK); + dc.DrawText(label, (icon_width - size.x) / 2, (icon_height - size.y) / 2); + dc.SelectObject(wxNullBitmap); + } bmps.emplace_back(bitmap); } return bmps; } -bool is_volume_selected() -{ - Slic3r::GUI::ObjectList* obj_list = Slic3r::GUI::wxGetApp().obj_list(); - - wxDataViewItemArray sels; - obj_list->GetSelections(sels); - if (sels.IsEmpty()) - return false; - - return (obj_list->get_item_type(sels[0]) & Slic3r::GUI::ItemType::itVolume) != 0; -} void apply_extruder_selector(Slic3r::GUI::BitmapComboBox** ctrl, wxWindow* parent, diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 5c423bb0af..7545f9c934 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -64,10 +64,7 @@ wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullp const int px_cnt = 16, const bool grayscale = false, const bool resize = false); #endif -// BBS -wxBitmap* get_extruder_color_icon(int extruder_id, bool as_default, bool thin_icon = false); std::vector get_extruder_color_icons(bool thin_icon = false); -bool is_volume_selected(); namespace Slic3r { namespace GUI { From 3911344495ad022dbcbb7daae03820ac569ee4fe Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 23 Aug 2022 22:37:57 +0800 Subject: [PATCH 041/137] FIX: fix modifier extruder not correct issue Signed-off-by: yifan.wu Change-Id: I90e639ec1bb27efb8b10f4609d3c5fcb9eebdde8 --- src/slic3r/GUI/GUI_ObjectList.cpp | 10 ++++++++-- src/slic3r/GUI/ObjectDataViewModel.cpp | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 1bb9ca0052..bf7e8bd4ec 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1842,7 +1842,10 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo new_volume->name = boost::filesystem::path(input_file).filename().string(); // set a default extruder value, since user can't add it manually // BBS - new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); + int extruder_id = 0; + if (model_object.config.has("extruder")) + extruder_id = model_object.config.opt_int("extruder"); + new_volume->config.set_key_value("extruder", new ConfigOptionInt(extruder_id)); // update source data new_volume->source.input_file = input_file; new_volume->source.object_idx = obj_idx; @@ -1945,7 +1948,10 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode new_volume->name = into_u8(name); // set a default extruder value, since user can't add it manually // BBS - new_volume->config.set_key_value("extruder", new ConfigOptionInt(1)); + int extruder_id = 0; + if (model_object.config.has("extruder")) + extruder_id = model_object.config.opt_int("extruder"); + new_volume->config.set_key_value("extruder", new ConfigOptionInt(extruder_id)); new_volume->source.is_from_builtin_objects = true; select_item([this, obj_idx, new_volume]() { diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 73e2847898..5300f5238e 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -1378,7 +1378,7 @@ void ObjectDataViewModel::UpdateVolumesExtruderBitmap(wxDataViewItem obj_item, b return; ObjectDataViewModelNode* obj_node = static_cast(obj_item.GetID()); for (auto child : obj_node->GetChildren()) - if (child->GetVolumeType() == ModelVolumeType::MODEL_PART) + if (child->GetVolumeType() == ModelVolumeType::MODEL_PART || child->GetVolumeType() == ModelVolumeType::PARAMETER_MODIFIER) child->UpdateExtruderAndColorIcon(use_obj_extruder ? obj_node->GetExtruder() : ""); } From 5a2b0e845ee62d43938378b251c7c7107601e484 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Tue, 23 Aug 2022 15:28:59 +0800 Subject: [PATCH 042/137] ENH: rendering: refine the rendering logic of GLVolume 1. set the unprintable volume to black even if it is mmu painted 2. add the bounding check logic when the object is partly inside of current plate Change-Id: I69ce25eb85a71398ed8fb1d275136c5d943796d6 --- resources/shaders/gouraud.fs | 17 +++++++++++++++++ src/slic3r/GUI/3DScene.cpp | 23 +++++++++++++++++------ src/slic3r/GUI/3DScene.hpp | 1 + src/slic3r/GUI/GLCanvas3D.cpp | 12 ++++++------ 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/resources/shaders/gouraud.fs b/resources/shaders/gouraud.fs index d5f7442d44..3aa2b02942 100644 --- a/resources/shaders/gouraud.fs +++ b/resources/shaders/gouraud.fs @@ -64,6 +64,23 @@ void main() alpha = 1.0; } + // if the fragment is outside the print volume -> use darker color + vec3 pv_check_min = ZERO; + vec3 pv_check_max = ZERO; + if (print_volume.type == 0) { + // rectangle + pv_check_min = world_pos.xyz - vec3(print_volume.xy_data.x, print_volume.xy_data.y, print_volume.z_data.x); + pv_check_max = world_pos.xyz - vec3(print_volume.xy_data.z, print_volume.xy_data.w, print_volume.z_data.y); + color = (any(lessThan(pv_check_min, ZERO)) || any(greaterThan(pv_check_max, ZERO))) ? mix(color, ZERO, 0.3333) : color; + } + else if (print_volume.type == 1) { + // circle + float delta_radius = print_volume.xy_data.z - distance(world_pos.xy, print_volume.xy_data.xy); + pv_check_min = vec3(delta_radius, 0.0, world_pos.z - print_volume.z_data.x); + pv_check_max = vec3(0.0, 0.0, world_pos.z - print_volume.z_data.y); + color = (any(lessThan(pv_check_min, ZERO)) || any(greaterThan(pv_check_max, ZERO))) ? mix(color, ZERO, 0.3333) : color; + } + //BBS: add outline_color if (is_outline) gl_FragColor = uniform_color; diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index e5d9cc2467..20af61a7d9 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -434,6 +434,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) , zoom_to_volumes(true) , shader_outside_printer_detection_enabled(false) , is_outside(false) + , partly_inside(false) , hover(HS_None) , is_modifier(false) , is_wipe_tower(false) @@ -679,7 +680,7 @@ void GLVolume::render(bool with_outline) const bool color_volume = false; ModelObjectPtrs& model_objects = GUI::wxGetApp().model().objects; do { - if (object_idx() >= model_objects.size()) + if ((!printable) || object_idx() >= model_objects.size()) break; ModelObject* mo = model_objects[object_idx()]; @@ -907,7 +908,7 @@ void GLVolume::simple_render(GLShaderProgram* shader, ModelObjectPtrs& model_obj ModelObject* model_object = nullptr; ModelVolume* model_volume = nullptr; do { - if (object_idx() >= model_objects.size()) + if ((!printable) || object_idx() >= model_objects.size()) break; model_object = model_objects[object_idx()]; @@ -1290,9 +1291,16 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab //shader->set_uniform("print_volume.xy_data", m_render_volume.data); //shader->set_uniform("print_volume.z_data", m_render_volume.zs); - /*shader->set_uniform("print_volume.type", static_cast(m_print_volume.type)); - shader->set_uniform("print_volume.xy_data", m_print_volume.data); - shader->set_uniform("print_volume.z_data", m_print_volume.zs);*/ + if (volume.first->partly_inside) { + //only partly inside volume need to be painted with boundary check + shader->set_uniform("print_volume.type", static_cast(m_print_volume.type)); + shader->set_uniform("print_volume.xy_data", m_print_volume.data); + shader->set_uniform("print_volume.z_data", m_print_volume.zs); + } + else { + //use -1 ad a invalid type + shader->set_uniform("print_volume.type", -1); + } shader->set_uniform("volume_world_matrix", volume.first->world_matrix()); shader->set_uniform("slope.actived", m_slope.active && !volume.first->is_modifier && !volume.first->is_wipe_tower); shader->set_uniform("slope.volume_world_normal_matrix", static_cast(volume.first->world_matrix().matrix().block(0, 0, 3, 3).inverse().transpose().cast())); @@ -1405,6 +1413,7 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo int64_t comp_id = ((int64_t)volume->composite_id.object_id << 32) | ((int64_t)volume->composite_id.instance_id); volume->is_outside = state != BuildVolume::ObjectState::Inside; + volume->partly_inside = (state == BuildVolume::ObjectState::Colliding); if (volume->printable) { if (overall_state == ModelInstancePVS_Inside && volume->is_outside) { overall_state = ModelInstancePVS_Fully_Outside; @@ -1459,8 +1468,10 @@ void GLVolumeCollection::reset_outside_state() { for (GLVolume* volume : this->volumes) { - if (volume != nullptr) + if (volume != nullptr) { volume->is_outside = false; + volume->partly_inside = false; + } } } diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index 2eaf09ed83..b1ad7671de 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -371,6 +371,7 @@ public: bool shader_outside_printer_detection_enabled : 1; // Wheter or not this volume is outside print volume. bool is_outside : 1; + bool partly_inside : 1; // Wheter or not this volume has been generated from a modifier bool is_modifier : 1; // Wheter or not this volume has been generated from the wipe tower diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e9a54f7da7..c6db973d66 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2153,7 +2153,7 @@ void GLCanvas3D::bind_event_handlers() m_canvas->Bind(wxEVT_PAINT, &GLCanvas3D::on_paint, this); m_canvas->Bind(wxEVT_SET_FOCUS, &GLCanvas3D::on_set_focus, this); m_event_handlers_bound = true; - + m_canvas->Bind(wxEVT_GESTURE_PAN, &GLCanvas3D::on_gesture, this); m_canvas->Bind(wxEVT_GESTURE_ZOOM, &GLCanvas3D::on_gesture, this); m_canvas->Bind(wxEVT_GESTURE_ROTATE, &GLCanvas3D::on_gesture, this); @@ -2190,7 +2190,7 @@ void GLCanvas3D::unbind_event_handlers() m_canvas->Unbind(wxEVT_PAINT, &GLCanvas3D::on_paint, this); m_canvas->Unbind(wxEVT_SET_FOCUS, &GLCanvas3D::on_set_focus, this); m_event_handlers_bound = false; - + m_canvas->Unbind(wxEVT_GESTURE_PAN, &GLCanvas3D::on_gesture, this); m_canvas->Unbind(wxEVT_GESTURE_ZOOM, &GLCanvas3D::on_gesture, this); m_canvas->Unbind(wxEVT_GESTURE_ROTATE, &GLCanvas3D::on_gesture, this); @@ -5670,13 +5670,13 @@ void GLCanvas3D::_render_objects(GLVolumeCollection::ERenderType type, bool with switch (build_volume.type()) { case BuildVolume::Type::Rectangle: { const BoundingBox3Base bed_bb = build_volume.bounding_volume().inflated(BuildVolume::SceneEpsilon); - m_volumes.set_print_volume({ 0, // circle + m_volumes.set_print_volume({ 0, // Rectangle { float(bed_bb.min.x()), float(bed_bb.min.y()), float(bed_bb.max.x()), float(bed_bb.max.y()) }, { 0.0f, float(build_volume.printable_height()) } }); break; } case BuildVolume::Type::Circle: { - m_volumes.set_print_volume({ 1, // rectangle + m_volumes.set_print_volume({ 1, // Circle { unscaled(build_volume.circle().center.x()), unscaled(build_volume.circle().center.y()), unscaled(build_volume.circle().radius + BuildVolume::SceneEpsilon), 0.0f }, { 0.0f, float(build_volume.printable_height() + BuildVolume::SceneEpsilon) } }); break; @@ -6627,10 +6627,10 @@ void GLCanvas3D::_render_paint_toolbar() const float gray = 0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]; if (gray < 80){ - ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), item_text.c_str()); + ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), item_text.c_str()); } else{ ImGui::TextColored(ImVec4(0.0f, 0.0f, 0.0f, 1.0f), item_text.c_str()); - } + } } ImGui::AlignTextToFramePadding(); imgui.end(); From aff7afc8dee521dcdf70ed395e203a821117b043 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 19 Aug 2022 14:49:52 +0800 Subject: [PATCH 043/137] FIX:change checkbox to wxcheckbox in objecttable page Change-Id: I31ab4255a92d0c32e3d7252b08d0535ab71ab9d4 --- src/slic3r/GUI/GUI_ObjectTable.cpp | 57 ++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 908474a649..580e06d2ab 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -644,7 +644,58 @@ void GridCellSupportRenderer::Draw(wxGrid& grid, wxRendererNative::Get().DrawCheckBox( &grid, dc, text_rect, flags ); }*/ - wxGridCellBoolRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); + + //wxGridCellBoolRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); + + ObjectGridTable * table = dynamic_cast(grid.GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + ConfigOptionBool & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); + + auto height = grid.GetRowSize(row); + auto width = grid.GetColSize(col); + + wxGridCellRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); + if (cur_option.value) { + + auto check_on = create_scaled_bitmap("check_on", nullptr, 18); + dc.SetPen(*wxTRANSPARENT_PEN); + + auto offsetx = 0; + auto offsety = 0; + + #ifdef __WXOSX_MAC__ + offsetx = (width - 18) / 2; + offsety = (height - 18) / 2; + #else + offsetx = (width - check_on.GetSize().x) / 2; + offsety = (height - check_on.GetSize().y) / 2; + #endif // __WXOSX_MAC__ + + dc.DrawBitmap(check_on, rect.x + offsetx, rect.y + offsety); + //dc.SetBrush(wxBrush(wxColour(0x00, 0xAE, 0x42))); + //dc.DrawBitmap(check_on, (width - check_on.GetSize().x) / 2, (height - check_on.GetSize().y) / 2); + } else { + auto check_off = create_scaled_bitmap("check_off_focused", nullptr, 18); + dc.SetPen(*wxTRANSPARENT_PEN); + + auto offsetx = 0; + auto offsety = 0; + + #ifdef __WXOSX_MAC__ + offsetx = (width - 18) / 2; + offsety = (height - 18) / 2; + #else + offsetx = (width - check_off.GetSize().x) / 2; + offsety = (height - check_off.GetSize().y) / 2; + #endif // __WXOSX_MAC__ + + + + dc.DrawBitmap(check_off, rect.x + offsetx, rect.y + offsety); + //dc.SetBrush(wxBrush(wxColour(0x00, 0xAE, 0x42))); + //dc.DrawBitmap(check_off, (width - check_off.GetSize().x) / 2, (height - check_off.GetSize().y) / 2); + } } wxSize GridCellSupportRenderer::GetBestSize(wxGrid& grid, @@ -2108,7 +2159,7 @@ void ObjectGridTable::update_row_properties() grid_table->SetCellEditor(row, col, new GridCellSupportEditor()); //grid_table->SetCellEditor(row, col, new wxGridCellBoolEditor()); //grid_table->SetCellRenderer(row, col, new GridCellSupportRenderer()); - grid_table->SetCellRenderer(row, col, new wxGridCellBoolRenderer()); + grid_table->SetCellRenderer(row, col, new GridCellSupportRenderer()); break; case coInt: grid_table->SetCellEditor(row, col, new GridCellTextEditor()); @@ -2808,7 +2859,7 @@ void ObjectTablePanel::load_data() m_object_grid->SetCellEditor(row, col, new GridCellSupportEditor()); //m_object_grid->SetCellEditor(row, col, new wxGridCellBoolEditor()); //m_object_grid->SetCellRenderer(row, col, new GridCellSupportRenderer()); - m_object_grid->SetCellRenderer(row, col, new wxGridCellBoolRenderer()); + m_object_grid->SetCellRenderer(row, col, new GridCellSupportRenderer()); break; case coInt: m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); From cf1ed35011f0d01ba592d50f7a17e49c92aa4e79 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 23 Aug 2022 14:43:21 +0800 Subject: [PATCH 044/137] FIX: auto play live video Change-Id: I32b14814bd0010fe47340709caed9ac7fa3edfd7 --- src/slic3r/GUI/MediaPlayCtrl.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 6e37217d1a..2d7c2088ef 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -27,7 +27,12 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w Bind(wxEVT_RIGHT_UP, [this](auto & e) { wxClipboard & c = *wxTheClipboard; if (c.Open()) { c.SetData(new wxTextDataObject(m_url)); c.Close(); } }); wxBoxSizer * sizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(m_button_play, 0, wxEXPAND | wxALL, 0); + sizer->Add(m_button_play, 0, wxEXPAND | wxALL, 0) +#if BBL_RELEASE_TO_PUBLIC + ->Show(false); +#else + ; +#endif sizer->AddStretchSpacer(1); sizer->Add(m_label_status, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(25)); SetSizer(sizer); @@ -59,8 +64,11 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj) m_failed_retry = 0; if (m_last_state != MEDIASTATE_IDLE) Stop(); - //Play(); +#if BBL_RELEASE_TO_PUBLIC + Play(); +#else SetStatus(""); +#endif } void MediaPlayCtrl::Play() @@ -117,7 +125,9 @@ void MediaPlayCtrl::Stop() m_last_state = MEDIASTATE_IDLE; SetStatus(_L("Stopped.")); ++m_failed_retry; - //m_next_retry = wxDateTime::Now() + wxTimeSpan::Seconds(5 * m_failed_retry); +#if BBL_RELEASE_TO_PUBLIC + m_next_retry = wxDateTime::Now() + wxTimeSpan::Seconds(5 * m_failed_retry); +#endif } void MediaPlayCtrl::TogglePlay() From ea4651e70e37ff6ceb6ce268b473a2cfad840a30 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Mon, 22 Aug 2022 14:53:29 +0800 Subject: [PATCH 045/137] NEW:add Gizmo text menu Change-Id: Ie5a5793e4d852188af60b40dfd6a9072727cf3d0 --- resources/images/text_B.svg | 3 + resources/images/text_B_hover.svg | 4 + resources/images/text_B_press.svg | 4 + resources/images/text_T.svg | 4 + resources/images/text_T_hover.svg | 5 + resources/images/text_T_press.svg | 5 + src/imgui/imgui.h | 1 + src/imgui/imgui_internal.h | 1 + src/imgui/imgui_widgets.cpp | 48 ++++++++ src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 135 ++++++++++++++++------ src/slic3r/GUI/Gizmos/GLGizmoText.hpp | 2 + src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 31 +++++ src/slic3r/GUI/Gizmos/GLGizmosManager.hpp | 6 + 13 files changed, 215 insertions(+), 34 deletions(-) create mode 100644 resources/images/text_B.svg create mode 100644 resources/images/text_B_hover.svg create mode 100644 resources/images/text_B_press.svg create mode 100644 resources/images/text_T.svg create mode 100644 resources/images/text_T_hover.svg create mode 100644 resources/images/text_T_press.svg diff --git a/resources/images/text_B.svg b/resources/images/text_B.svg new file mode 100644 index 0000000000..c792b4be4d --- /dev/null +++ b/resources/images/text_B.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/text_B_hover.svg b/resources/images/text_B_hover.svg new file mode 100644 index 0000000000..2242afa388 --- /dev/null +++ b/resources/images/text_B_hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/text_B_press.svg b/resources/images/text_B_press.svg new file mode 100644 index 0000000000..5333b0ef6f --- /dev/null +++ b/resources/images/text_B_press.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/text_T.svg b/resources/images/text_T.svg new file mode 100644 index 0000000000..fa5cb783b3 --- /dev/null +++ b/resources/images/text_T.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/text_T_hover.svg b/resources/images/text_T_hover.svg new file mode 100644 index 0000000000..2a7880cee0 --- /dev/null +++ b/resources/images/text_T_hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/images/text_T_press.svg b/resources/images/text_T_press.svg new file mode 100644 index 0000000000..9d1da57e2b --- /dev/null +++ b/resources/images/text_T_press.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/imgui/imgui.h b/src/imgui/imgui.h index 4b3c13ac60..4aa9dac3e9 100644 --- a/src/imgui/imgui.h +++ b/src/imgui/imgui.h @@ -491,6 +491,7 @@ namespace ImGui IMGUI_API bool ImageButton2(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0, 0, 0, 0), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImVec2& margin = ImVec2(0, 0)); // <0 frame_padding uses default frame padding settings. 0 for no padding IMGUI_API bool ImageTextButton(const ImVec2& button_size, const char* text, ImTextureID user_texture_id, const ImVec2& image_size, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0, 0, 0, 0), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImVec2& margin = ImVec2(0, 0)); IMGUI_API bool ImageButton3(ImTextureID user_texture_id,ImTextureID user_texture_id_hover, const ImVec2& size, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0, 0, 0, 0), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImVec2& margin = ImVec2(0, 0)); // <0 frame_padding uses default frame padding settings. 0 for no padding + IMGUI_API bool BBLImageButton(ImTextureID user_texture_id,ImTextureID user_texture_id_hover,ImTextureID user_texture_id_press, const ImVec2& size, bool &value, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0, 0, 0, 0), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImVec2& margin = ImVec2(0, 0)); // <0 frame_padding uses default frame padding settings. 0 for no padding IMGUI_API bool Checkbox(const char* label, bool* v); IMGUI_API bool BBLCheckbox(const char* label, bool* v); IMGUI_API bool CheckboxFlags(const char* label, int* flags, int flags_value); diff --git a/src/imgui/imgui_internal.h b/src/imgui/imgui_internal.h index c49ec09635..018654d8a0 100644 --- a/src/imgui/imgui_internal.h +++ b/src/imgui/imgui_internal.h @@ -2554,6 +2554,7 @@ namespace ImGui IMGUI_API bool ImageButtonEx(ImGuiID id, ImTextureID texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col); IMGUI_API bool ImageButtonEx2(ImGuiID id, ImTextureID texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col, const ImVec2& margin); IMGUI_API bool ImageButtonEx3(ImGuiID id, ImTextureID texture_id,ImTextureID texture_id_hover, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col, const ImVec2& margin); + IMGUI_API bool BBLImageButtonEx(ImGuiID id, ImTextureID texture_id,ImTextureID texture_id_hover,ImTextureID texture_id_press, const ImVec2& size, bool &value, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col, const ImVec2& margin); IMGUI_API ImRect GetWindowScrollbarRect(ImGuiWindow* window, ImGuiAxis axis); IMGUI_API ImGuiID GetWindowScrollbarID(ImGuiWindow* window, ImGuiAxis axis); IMGUI_API ImGuiID GetWindowResizeCornerID(ImGuiWindow* window, int n); // 0..3: corners diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index f729d652f0..46f3472819 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -1205,6 +1205,40 @@ bool ImGui::ImageButtonEx3(ImGuiID id,ImTextureID texture_id,ImTextureID tex return pressed; } +bool ImGui::BBLImageButtonEx(ImGuiID id,ImTextureID texture_id,ImTextureID texture_id_hover, ImTextureID texture_id_press, const ImVec2 &size, bool &value,const ImVec2 &uv0,const ImVec2 &uv1,const ImVec2 &padding,const ImVec4 &bg_col,const ImVec4 &tint_col,const ImVec2 &margin) +{ + ImGuiContext &g = *GImGui; + ImGuiWindow * window = GetCurrentWindow(); + if (window->SkipItems) return false; + + const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + size + padding * 2 + margin * 2); + ItemSize(bb); + if (!ItemAdd(bb, id)) return false; + + bool hovered, held; + bool pressed = ButtonBehavior(bb, id, &hovered, &held); + if (pressed) value = !value; + + // Render + const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button); + RenderNavHighlight(bb, id); + + const float border_size = g.Style.FrameBorderSize; + if (border_size > 0.0f) { + window->DrawList->AddRect(bb.Min + ImVec2(1, 1), bb.Max + ImVec2(1, 1), col, g.Style.FrameRounding, 0, border_size); + window->DrawList->AddRect(bb.Min, bb.Max, col, g.Style.FrameRounding, 0, border_size); + } + + if (bg_col.w > 0.0f) window->DrawList->AddRectFilled(bb.Min + padding, bb.Max - padding, GetColorU32(bg_col)); + + window->DrawList->AddImage(texture_id, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, GetColorU32(tint_col)); + + if (hovered)window->DrawList->AddImage(texture_id_hover, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, GetColorU32(tint_col)); + + if (value)window->DrawList->AddImage(texture_id_press, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, GetColorU32(tint_col)); + + return pressed; +} bool ImGui::ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, int frame_padding, const ImVec4& bg_col, const ImVec4& tint_col) { @@ -1256,6 +1290,20 @@ bool ImGui::ImageButton3(ImTextureID user_texture_id,ImTextureID user_texture_id return ImageButtonEx3(id, user_texture_id, user_texture_id_hover, size, uv0, uv1, padding, bg_col, tint_col, margin); } +bool ImGui::BBLImageButton(ImTextureID user_texture_id,ImTextureID user_texture_id_hover, ImTextureID user_texture_id_press, const ImVec2 &size, bool &value, const ImVec2 &uv0, const ImVec2 &uv1, int frame_padding, const ImVec4 &bg_col, const ImVec4 &tint_col, const ImVec2 &margin) +{ + ImGuiContext &g = *GImGui; + ImGuiWindow * window = g.CurrentWindow; + if (window->SkipItems) return false; + + // Default to using texture ID as ID. User can still push string/integer prefixes. + PushID((void *) (intptr_t) user_texture_id); + const ImGuiID id = window->GetID("#image"); + PopID(); + + const ImVec2 padding = (frame_padding >= 0) ? ImVec2((float) frame_padding, (float) frame_padding) : g.Style.FramePadding; + return BBLImageButtonEx(id, user_texture_id, user_texture_id_hover, user_texture_id_press, size,value, uv0, uv1, padding, bg_col, tint_col, margin); +} bool ImGui::ImageTextButton(const ImVec2& button_size, const char* text, ImTextureID user_texture_id, const ImVec2& image_size, const ImVec2& uv0, const ImVec2& uv1, int frame_padding, const ImVec4& bg_col, const ImVec4& tint_col, const ImVec2& margin) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 8ce8931cdc..0e3909e5c7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -63,24 +63,59 @@ void GLGizmoText::on_render_for_picking() // TODO: } +void GLGizmoText::push_combo_style() +{ + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0f); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); + ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BG); + ImGui::PushStyleColor(ImGuiCol_BorderActive, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.00f, 0.68f, 0.26f, 0.0f)); + ImGui::PushStyleColor(ImGuiCol_HeaderActive, ImVec4(0.00f, 0.68f, 0.26f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_Header, ImVec4(0.00f, 0.68f, 0.26f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImGuiWrapper::COL_WINDOW_BG); + ImGui::PushStyleColor(ImGuiCol_Button, { 1.00f, 1.00f, 1.00f, 0.0f }); +} + +void GLGizmoText::pop_combo_style() +{ + ImGui::PopStyleVar(2); + ImGui::PopStyleColor(7); +} + // BBS void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) { + const float win_h = ImGui::GetWindowHeight(); + y = std::min(y, bottom_limit - win_h); + GizmoImguiSetNextWIndowPos(x, y, ImGuiCond_Always, 0.0f, 0.0f); + static float last_y = 0.0f; static float last_h = 0.0f; - float space_size = m_imgui->get_style_scaling() * 8; - float font_cap = m_imgui->calc_text_size("Font ").x; - float size_cap = m_imgui->calc_text_size("Size ").x; - float thickness_cap = m_imgui->calc_text_size("Thickness ").x; - float caption_size = std::max(std::max(font_cap, size_cap), thickness_cap) + 2 * space_size; + ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {4.0,5.0}); + GizmoImguiBegin("Text", ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); - m_imgui->begin(_L("Text"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + float space_size = m_imgui->get_style_scaling() * 8; + float font_cap = m_imgui->calc_text_size(_L("Font")).x; + float size_cap = m_imgui->calc_text_size(_L("Size")).x; + float thickness_cap = m_imgui->calc_text_size(_L("Thickness")).x; + float input_cap = m_imgui->calc_text_size(_L("Input text")).x; + float caption_size = std::max(std::max(font_cap, size_cap), std::max(thickness_cap, input_cap)) + space_size + ImGui::GetStyle().WindowPadding.x; + + float input_text_size = m_imgui->scaled(12.0f); + float button_size = m_imgui->scaled(1.4f); + float input_size = input_text_size - button_size * 2 - ImGui::GetStyle().ItemSpacing.x * 4; + + ImTextureID normal_B = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_B); + ImTextureID press_B_hover = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_B_HOVER); + ImTextureID press_B_press = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_B_PRESS); + + ImTextureID normal_T = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_T); + ImTextureID press_T_hover = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_T_HOVER); + ImTextureID press_T_press = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_T_PRESS); // adjust window position to avoid overlap the view toolbar - const float win_h = ImGui::GetWindowHeight(); - y = std::min(y, bottom_limit - win_h); - ImGui::SetWindowPos(ImVec2(x, y), ImGuiCond_Always); if (last_h != win_h || last_y != y) { // ask canvas for another frame to render the window in the correct position m_imgui->set_requires_extra_frame(); @@ -96,32 +131,61 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) for (int i = 0; i < m_avail_font_names.size(); i++) cstr_font_names[i] = m_avail_font_names[i].c_str(); + m_imgui->text(_L("Font")); + ImGui::SameLine(caption_size); + ImGui::PushItemWidth(input_text_size + ImGui::GetFrameHeight() * 2); + push_combo_style(); + if (ImGui::BBLBeginCombo("##Font", cstr_font_names[m_curr_font_idx], 0)) { + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 0.0f); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(4.0f, 0.0f)); + for (int i = 0; i < m_avail_font_names.size(); i++) { + const bool is_selected = (m_curr_font_idx == i); + if (ImGui::BBLSelectable(cstr_font_names[i], is_selected)) { + m_curr_font_idx = i; + } + if (is_selected) { + ImGui::SetItemDefaultFocus(); + } + } + ImGui::PopStyleVar(2); + ImGui::EndCombo(); + } + + ImGui::AlignTextToFramePadding(); + pop_combo_style(); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 0.0f)); + m_imgui->text(_L("Size")); + ImGui::SameLine(caption_size); + ImGui::PushItemWidth(input_size); + ImGui::InputFloat("###font_size", &m_font_size, 0.0f, 0.0f, "%.2f"); + if (m_font_size < 3.0f)m_font_size = 3.0f; + ImGui::PopStyleVar(1); + ImGui::SameLine(); + + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::BBLImageButton(normal_B,press_B_hover,press_B_press,{button_size,button_size},m_bold); + ImGui::SameLine(); + ImGui::BBLImageButton(normal_T,press_T_hover,press_T_press,{button_size,button_size},m_italic); + ImGui::PopStyleVar(); + + ImGui::AlignTextToFramePadding(); + m_imgui->text(_L("Thickness")); + ImGui::SameLine(caption_size); + ImGui::PushItemWidth(input_text_size); + ImGui::InputFloat("###text_thickness", &m_thickness,0.0f, 0.0f, "%.2f"); + if (m_thickness < 0.1f)m_thickness = 0.1f; + + ImGui::AlignTextToFramePadding(); + m_imgui->text(_L("Input text")); + ImGui::SameLine(caption_size); + ImGui::PushItemWidth(input_text_size); ImGui::InputText("", m_text, sizeof(m_text)); - - ImGui::PushItemWidth(caption_size); - ImGui::Text("Font "); - ImGui::SameLine(); - ImGui::PushItemWidth(150); - ImGui::Combo("##Font", &m_curr_font_idx, cstr_font_names, m_avail_font_names.size()); - - ImGui::PushItemWidth(caption_size); - ImGui::Text("Size "); - ImGui::SameLine(); - ImGui::PushItemWidth(150); - ImGui::InputFloat("###font_size", &m_font_size); - - ImGui::PushItemWidth(caption_size); - ImGui::Text("Thickness "); - ImGui::SameLine(); - ImGui::PushItemWidth(150); - ImGui::InputFloat("###text_thickness", &m_thickness); - - ImGui::Checkbox("Bold", &m_bold); - ImGui::SameLine(); - ImGui::Checkbox("Italic", &m_italic); - + ImGui::Separator(); - + m_imgui->disabled_begin(m_text[0] == '\0' || m_text[0] == ' '); + float offset = caption_size + input_text_size - m_imgui->calc_text_size(_L("Add")).x - space_size; + ImGui::Dummy({0.0, 0.0}); + ImGui::SameLine(offset); bool add_clicked = m_imgui->button(_L("Add")); if (add_clicked) { TriangleMesh mesh; @@ -129,8 +193,11 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) ObjectList* obj_list = wxGetApp().obj_list(); obj_list->load_mesh_part(mesh, "text_shape"); } + m_imgui->disabled_end(); - m_imgui->end(); + GizmoImguiEnd(); + ImGui::PopStyleVar(); + ImGuiWrapper::pop_toolbar_style(); } } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp index dd73c74a22..a711933e86 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp @@ -32,6 +32,8 @@ protected: virtual bool on_is_activable() const override; virtual void on_render() override; virtual void on_render_for_picking() override; + void push_combo_style(); + void pop_combo_style(); virtual void on_set_state() override; virtual CommonGizmosDataID on_get_requirements() const override; virtual void on_render_input_window(float x, float y, float bottom_limit); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 194a033d68..b8b3ddef99 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -196,6 +196,37 @@ bool GLGizmosManager::init_icon_textures() else return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_B.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_B, texture_id)); + else + return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_B_hover.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_B_HOVER, texture_id)); + else + return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_B_press.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_B_PRESS, texture_id)); + else + return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_T.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_T, texture_id)); + else + return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_T_hover.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_T_HOVER, texture_id)); + else + return false; + + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_T_press.svg", 20, 20, texture_id)) + icon_list.insert(std::make_pair((int)IC_TEXT_T_PRESS, texture_id)); + else + return false; + return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index 3b03784fa6..c1338fdf38 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -151,6 +151,12 @@ public: IC_TOOLBAR_RESET_HOVER, IC_TOOLBAR_TOOLTIP, IC_TOOLBAR_TOOLTIP_HOVER, + IC_TEXT_B, + IC_TEXT_B_HOVER, + IC_TEXT_B_PRESS, + IC_TEXT_T, + IC_TEXT_T_HOVER, + IC_TEXT_T_PRESS, IC_NAME_COUNT, }; From 4f4223a2b435d2741a9d30ecc3387948f5cef85c Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 24 Aug 2022 11:57:52 +0800 Subject: [PATCH 046/137] FIX:fixed Multiple AMS display error Change-Id: I94f67080b086d60cf16aa50fdb46a58da9e8e12f --- src/slic3r/GUI/Widgets/AMSControl.cpp | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 52e6d08050..aea9c13de2 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1773,28 +1773,28 @@ void AMSControl::UpdateAms(std::vector info, bool keep_selection) // update item m_ams_info = info; + + if (info.size() > 1) { + m_simplebook_amsitems->Show(); + m_amswin->Layout(); + m_amswin->Fit(); + SetSize(m_amswin->GetSize()); + SetMinSize(m_amswin->GetSize()); + } else { + m_simplebook_amsitems->Hide(); + m_amswin->Layout(); + m_amswin->Fit(); + SetSize(m_amswin->GetSize()); + SetMinSize(m_amswin->GetSize()); + } + for (auto i = 0; i < m_ams_item_list.GetCount(); i++) { AmsItems *item = m_ams_item_list[i]; if (i < info.size() && info.size() > 1) { item->amsItem->Update(m_ams_info[i]); item->amsItem->Open(); - - if (!m_simplebook_amsitems->IsShown()) { - m_simplebook_amsitems->Show(); - m_amswin->Layout(); - m_amswin->Fit(); - SetSize(m_amswin->GetSize()); - SetMinSize(m_amswin->GetSize()); - } } else { item->amsItem->Close(); - if (m_simplebook_amsitems->IsShown()) { - m_simplebook_amsitems->Hide(); - m_amswin->Layout(); - m_amswin->Fit(); - SetSize(m_amswin->GetSize()); - SetMinSize(m_amswin->GetSize()); - } } } From acb05dcf19297ef33cc6cc451431be92c8ee4d13 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 23 Aug 2022 18:25:02 +0800 Subject: [PATCH 047/137] FIX: enhance interaction of timelapse Change-Id: Iac13a485d0f5a458a435137619caddce39ad61fb --- src/libslic3r/PrintConfig.cpp | 10 ++++---- src/slic3r/GUI/Tab.cpp | 44 ++++++++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f0bc8d79a4..25d6b671d2 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1983,10 +1983,12 @@ void PrintConfigDef::init_fff_params() def = this->add("timelapse_no_toolhead", coBool); def->label = L("Timelapse"); - def->tooltip = L("Record timelapse video of printing without showing toolhead. In this mode " - "the toolhead docks near the excess chute at each layer change, and then " - "a snapshot is taken with the chamber camera. When printing finishes a timelapse " - "video is composed of all the snapshots."); + def->tooltip = L("If enabled, a timelapse video will be generated for each print. " + "After each layer is printed, the toolhead will move to the excess chute, " + "and then a snapshot is taken with the chamber camera. " + "All of these snapshots are composed into a timelapse video when printing completes. " + "Since the melt filament may leak from the nozzle during the process of taking a snapshot, " + "prime tower is required for nozzle priming."); def->mode = comSimple; def->set_default_value(new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 5920bc4a35..95cd3af6ba 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1371,12 +1371,50 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } - if (opt_key == "enable_prime_tower" || opt_key == "single_extruder_multi_material" || opt_key == "extruders_count" ) + if (opt_key == "single_extruder_multi_material" || opt_key == "extruders_count" ) update_wiping_button_visibility(); + if (opt_key == "enable_prime_tower") { + bool timelapse_enabled = m_config->option("timelapse_no_toolhead")->value; + if (!boost::any_cast(value) && timelapse_enabled) { + MessageDialog dlg(wxGetApp().plater(), _L("Prime tower is required by timeplase. Are you sure you want to disable both of them?"), + _L("Warning"), wxICON_WARNING | wxYES | wxNO); + if (dlg.ShowModal() == wxID_YES) { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("timelapse_no_toolhead", new ConfigOptionBool(false)); + m_config_manipulation.apply(m_config, &new_conf); + wxGetApp().plater()->update(); + } + else { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("enable_prime_tower", new ConfigOptionBool(true)); + m_config_manipulation.apply(m_config, &new_conf); + } + } + update_wiping_button_visibility(); + } + // reload scene to update timelapse wipe tower - if (opt_key == "timelapse_no_toolhead") - wxGetApp().plater()->update(); + if (opt_key == "timelapse_no_toolhead") { + bool wipe_tower_enabled = m_config->option("enable_prime_tower")->value; + if (!wipe_tower_enabled && boost::any_cast(value)) { + MessageDialog dlg(wxGetApp().plater(), _L("Prime tower is required by timelapse. Do you want to enable both of them?"), + _L("Warning"), wxICON_WARNING | wxYES | wxNO); + if (dlg.ShowModal() == wxID_YES) { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("enable_prime_tower", new ConfigOptionBool(true)); + m_config_manipulation.apply(m_config, &new_conf); + wxGetApp().plater()->update(); + } + else { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("timelapse_no_toolhead", new ConfigOptionBool(false)); + m_config_manipulation.apply(m_config, &new_conf); + } + } else { + wxGetApp().plater()->update(); + } + } // BBS #if 0 From 0ab13a6abb3a863aa677568097a7769474184843 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 24 Aug 2022 15:06:25 +0800 Subject: [PATCH 048/137] ENH: Add Textured PEI Plate Change-Id: I08178e86a8ccb23844cca00bc9d265df7507f910 (cherry picked from commit 8f101963ecab1352e2721ead83928b327d6c0dbd) --- .../BBL/filament/Bambu Support W @base.json | 6 +++++ .../BBL/filament/fdm_filament_abs.json | 6 +++++ .../BBL/filament/fdm_filament_asa.json | 6 +++++ .../BBL/filament/fdm_filament_common.json | 6 +++++ .../BBL/filament/fdm_filament_pa.json | 6 +++++ .../BBL/filament/fdm_filament_pc.json | 6 +++++ .../BBL/filament/fdm_filament_pet.json | 6 +++++ .../BBL/filament/fdm_filament_pla.json | 6 +++++ .../BBL/filament/fdm_filament_pva.json | 6 +++++ .../BBL/filament/fdm_filament_tpu.json | 6 +++++ src/libslic3r/GCode.cpp | 3 +++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 2 ++ src/libslic3r/PrintConfig.cpp | 27 ++++++++++++++++--- src/libslic3r/PrintConfig.hpp | 11 ++++++++ src/slic3r/GUI/Tab.cpp | 8 ++++++ 16 files changed, 109 insertions(+), 4 deletions(-) diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index 6dce96695c..8a5f3fbbc5 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -20,12 +20,18 @@ "hot_plate_temp": [ "40" ], + "textured_plate_temp": [ + "40" + ], "cool_plate_temp_initial_layer": [ "40" ], "hot_plate_temp_initial_layer": [ "40" ], + "textured_plate_temp_initial_layer": [ + "40" + ], "filament_cost": [ "29.99" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index 1c601318d9..a760f31ea7 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "90" ], + "textured_plate_temp" : [ + "90" + ], "cool_plate_temp_initial_layer" : [ "90" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "90" ], + "textured_plate_temp_initial_layer" : [ + "90" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index 3eeac3e3a4..6fe3caf560 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "90" ], + "textured_plate_temp" : [ + "90" + ], "cool_plate_temp_initial_layer" : [ "90" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "90" ], + "textured_plate_temp_initial_layer" : [ + "90" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index f8dc0a70ca..208d6ac175 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -12,6 +12,9 @@ "hot_plate_temp" : [ "60" ], + "textured_plate_temp" : [ + "60" + ], "cool_plate_temp_initial_layer" : [ "60" ], @@ -21,6 +24,9 @@ "hot_plate_temp_initial_layer" : [ "60" ], + "textured_plate_temp_initial_layer" : [ + "60" + ], "overhang_fan_threshold": [ "95%" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pa.json b/resources/profiles/BBL/filament/fdm_filament_pa.json index 67c8ff050f..ce1b3d653c 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pa.json +++ b/resources/profiles/BBL/filament/fdm_filament_pa.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "100" ], + "textured_plate_temp" : [ + "100" + ], "cool_plate_temp_initial_layer" : [ "0" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "100" ], + "textured_plate_temp_initial_layer" : [ + "100" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pc.json b/resources/profiles/BBL/filament/fdm_filament_pc.json index 9174d53530..dd46925585 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pc.json +++ b/resources/profiles/BBL/filament/fdm_filament_pc.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "110" ], + "textured_plate_temp" : [ + "110" + ], "cool_plate_temp_initial_layer" : [ "0" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "110" ], + "textured_plate_temp_initial_layer" : [ + "110" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pet.json b/resources/profiles/BBL/filament/fdm_filament_pet.json index b7f725968a..e32da82499 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pet.json +++ b/resources/profiles/BBL/filament/fdm_filament_pet.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "80" ], + "textured_plate_temp" : [ + "80" + ], "cool_plate_temp_initial_layer" : [ "60" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "80" ], + "textured_plate_temp_initial_layer" : [ + "80" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index a93a17cb9c..2337f68bbb 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -28,6 +28,9 @@ "hot_plate_temp" : [ "45" ], + "textured_plate_temp" : [ + "45" + ], "cool_plate_temp_initial_layer" : [ "35" ], @@ -37,6 +40,9 @@ "hot_plate_temp_initial_layer" : [ "45" ], + "textured_plate_temp_initial_layer" : [ + "45" + ], "nozzle_temperature_initial_layer": [ "220" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pva.json b/resources/profiles/BBL/filament/fdm_filament_pva.json index d8bb1b18c7..9556fbd3f3 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pva.json +++ b/resources/profiles/BBL/filament/fdm_filament_pva.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "45" ], + "textured_plate_temp" : [ + "45" + ], "cool_plate_temp_initial_layer" : [ "35" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "45" ], + "textured_plate_temp_initial_layer" : [ + "45" + ], "fan_cooling_layer_time": [ "100" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_tpu.json b/resources/profiles/BBL/filament/fdm_filament_tpu.json index 39597c7a56..19444ec0a7 100644 --- a/resources/profiles/BBL/filament/fdm_filament_tpu.json +++ b/resources/profiles/BBL/filament/fdm_filament_tpu.json @@ -13,6 +13,9 @@ "hot_plate_temp" : [ "35" ], + "textured_plate_temp" : [ + "35" + ], "cool_plate_temp_initial_layer" : [ "30" ], @@ -22,6 +25,9 @@ "hot_plate_temp_initial_layer" : [ "35" ], + "textured_plate_temp_initial_layer" : [ + "35" + ], "fan_cooling_layer_time": [ "100" ], diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 21ffc94d82..bf96a3d64a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1262,6 +1262,7 @@ enum BambuBedType { bbtCoolPlate = 1, bbtEngineeringPlate = 2, bbtHighTemperaturePlate = 3, + bbtTexturedPEIPlate = 4, }; static BambuBedType to_bambu_bed_type(BedType type) @@ -1273,6 +1274,8 @@ static BambuBedType to_bambu_bed_type(BedType type) bambu_bed_type = bbtEngineeringPlate; else if (type == btPEI) bambu_bed_type = bbtHighTemperaturePlate; + else if (type == btPTE) + bambu_bed_type = bbtTexturedPEIPlate; return bambu_bed_type; } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a1c981535d..c71f4b7710 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -691,7 +691,7 @@ static std::vector s_Preset_filament_options { "filament_flow_ratio", "filament_density", "filament_cost", "filament_minimal_purge_on_wipe_tower", "nozzle_temperature", "nozzle_temperature_initial_layer", // BBS - "cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer", + "cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer", // "bed_type", //BBS:temperature_vitrification "temperature_vitrification", "reduce_fan_stop_start_freq", "slow_down_for_layer_cooling", "fan_min_speed", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 9737f7742f..e56223216c 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -96,6 +96,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer", + "textured_plate_temp_initial_layer", "gcode_add_line_number", "layer_change_gcode", "fan_min_speed", @@ -173,6 +174,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "cool_plate_temp" || opt_key == "eng_plate_temp" || opt_key == "hot_plate_temp" + || opt_key == "textured_plate_temp" || opt_key == "enable_prime_tower" || opt_key == "prime_tower_width" || opt_key == "prime_tower_brim_width" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 25d6b671d2..e2c6e46773 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -213,7 +213,8 @@ static const t_config_enum_values s_keys_map_OverhangFanThreshold = { static const t_config_enum_values s_keys_map_BedType = { { "Cool Plate", btPC }, { "Engineering Plate", btEP }, - { "High Temp Plate", btPEI } + { "High Temp Plate", btPEI }, + { "Textured PEI Plate", btPTE } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(BedType) @@ -367,6 +368,16 @@ void PrintConfigDef::init_fff_params() def->max = 120; def->set_default_value(new ConfigOptionInts{ 45 }); + def = this->add("textured_plate_temp", coInts); + def->label = L("Other layers"); + def->tooltip = L("Bed temperature for layers except the initial one. " + "Value 0 means the filament does not support to print on the Textured PEI Plate"); + def->sidetext = L("°C"); + def->full_label = L("Bed temperature"); + def->min = 0; + def->max = 120; + def->set_default_value(new ConfigOptionInts{45}); + def = this->add("cool_plate_temp_initial_layer", coInts); def->label = L("Initial layer"); def->full_label = L("Initial layer bed temperature"); @@ -397,6 +408,15 @@ void PrintConfigDef::init_fff_params() def->max = 120; def->set_default_value(new ConfigOptionInts{ 45 }); + def = this->add("textured_plate_temp_initial_layer", coInts); + def->label = L("Initial layer"); + def->full_label = L("Initial layer bed temperature"); + def->tooltip = L("Bed temperature of the initial layer. " + "Value 0 means the filament does not support to print on the Textured PEI Plate"); + def->sidetext = L("°C"); + def->max = 0; + def->max = 120; + def->set_default_value(new ConfigOptionInts{45}); def = this->add("curr_bed_type", coEnums); def->label = L("Bed type"); @@ -406,9 +426,11 @@ void PrintConfigDef::init_fff_params() def->enum_values.emplace_back("Cool Plate"); def->enum_values.emplace_back("Engineering Plate"); def->enum_values.emplace_back("High Temp Plate"); + def->enum_values.emplace_back("Textured PEI Plate"); def->enum_labels.emplace_back(L("Cool Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); def->enum_labels.emplace_back(L("High Temp Plate")); + def->enum_labels.emplace_back(L("Textured PEI Plate")); def->set_default_value(new ConfigOptionEnum(btPC)); def = this->add("before_layer_change_gcode", coString); @@ -2283,8 +2305,7 @@ void PrintConfigDef::init_fff_params() def = this->add("independent_support_layer_height", coBool); def->label = L("Independent support layer height"); def->category = L("Support"); - def->tooltip = L("Support layer uses layer height independent with object layer. This is to support custom support gap," - "but may cause extra filament switches if support is specified as different extruder with object"); + def->tooltip = L("Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index b2963e57c2..bef719e9ab 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -152,6 +152,7 @@ enum BedType { btPC = 0, btEP, btPEI, + btPTE, btCount }; @@ -177,6 +178,8 @@ static std::string bed_type_to_gcode_string(const BedType type) case btPEI: type_str = "high_temp_plate"; break; + case btPTE: + type_str = "frosted_plate"; default: type_str = "unknown"; break; @@ -196,6 +199,9 @@ static std::string get_bed_temp_key(const BedType type) if (type == btPEI) return "hot_plate_temp"; + if (type == btPTE) + return "textured_plate_temp"; + return ""; } @@ -210,6 +216,9 @@ static std::string get_bed_temp_1st_layer_key(const BedType type) if (type == btPEI) return "hot_plate_temp_initial_layer"; + if (type == btPTE) + return "textured_plate_temp_initial_layer"; + return ""; } @@ -774,9 +783,11 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInts, cool_plate_temp)) ((ConfigOptionInts, eng_plate_temp)) ((ConfigOptionInts, hot_plate_temp)) // hot is short for high temperature + ((ConfigOptionInts, textured_plate_temp)) ((ConfigOptionInts, cool_plate_temp_initial_layer)) ((ConfigOptionInts, eng_plate_temp_initial_layer)) ((ConfigOptionInts, hot_plate_temp_initial_layer)) // hot is short for high temperature + ((ConfigOptionInts, textured_plate_temp_initial_layer)) ((ConfigOptionBools, enable_overhang_bridge_fan)) ((ConfigOptionInts, overhang_fan_speed)) ((ConfigOptionEnumsGeneric, overhang_fan_threshold)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 95cd3af6ba..f4081b1aab 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2468,6 +2468,11 @@ void TabFilament::build() line.append_option(optgroup->get_option("hot_plate_temp")); optgroup->append_line(line); + line = {L("Textured PEI Plate"), L("Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to print on the Textured PEI Plate")}; + line.append_option(optgroup->get_option("textured_plate_temp_initial_layer")); + line.append_option(optgroup->get_option("textured_plate_temp")); + optgroup->append_line(line); + optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value) { DynamicPrintConfig& filament_config = wxGetApp().preset_bundle->filaments.get_edited_preset().config; @@ -2482,6 +2487,9 @@ void TabFilament::build() else if (opt_key == "hot_plate_temp" || opt_key == "hot_plate_temp_initial_layer") { m_config_manipulation.check_bed_temperature_difference(BedType::btPEI, &filament_config); } + else if (opt_key == "textured_plate_temp" || opt_key == "textured_plate_temp_initial_layer") { + m_config_manipulation.check_bed_temperature_difference(BedType::btPTE, &filament_config); + } else if (opt_key == "nozzle_temperature") { m_config_manipulation.check_nozzle_temperature_range(&filament_config); } From 6631f9eadab2c48b0908f12dfd6f8e2a99482644 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 23 Aug 2022 15:26:28 +0800 Subject: [PATCH 049/137] FIX: Color information lost when importing BBS 3mf file Change-Id: Iebfdead470e1951e145a5745460c531c9a1b2a27 (cherry picked from commit 4c98437bb90c057dfadf1b8f9d07f2d287ff06d0) --- src/libslic3r/Format/bbs_3mf.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 0c119c13cc..789895a707 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -3450,7 +3450,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } // recreate custom supports, seam and mmu segmentation from previously loaded attribute - if (m_load_config) { + { volume->supported_facets.reserve(triangles_count); volume->seam_facets.reserve(triangles_count); volume->mmu_segmentation_facets.reserve(triangles_count); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index ef7ffc1fb7..815e6a06c8 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2668,8 +2668,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_3mf %3%, file_version %4% \n") % plate_data.size() % project_presets.size() % (en_3mf_file_type == En3mfType::From_BBS) % file_version.to_string(); - // add extruder for prusa model if the number of existing extruders is not enough - if (en_3mf_file_type == En3mfType::From_Prusa) { + // 1. add extruder for prusa model if the number of existing extruders is not enough + // 2. add extruder for BBS model if only import geometry + if (en_3mf_file_type == En3mfType::From_Prusa || (en_3mf_file_type == En3mfType::From_BBS && load_model && !load_config)) { std::set extruderIds; for (ModelObject *o : model.objects) { if (o->config.option("extruder")) extruderIds.insert(o->config.extruder()); @@ -2749,10 +2750,27 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } } else if (!load_config) { + // reset config except color for (ModelObject *model_object : model.objects) { + bool has_extruder = model_object->config.has("extruder"); + int extruder_id = -1; + // save the extruder information before reset + if (has_extruder) { extruder_id = model_object->config.extruder(); } + model_object->config.reset(); + + // restore the extruder after reset + if (has_extruder) { model_object->config.set("extruder", extruder_id); } + // Is there any modifier or advanced config data? - for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset(); + for (ModelVolume *model_volume : model_object->volumes) { + has_extruder = model_volume->config.has("extruder"); + if (has_extruder) { extruder_id = model_volume->config.extruder(); } + + model_volume->config.reset(); + + if (has_extruder) { model_volume->config.set("extruder", extruder_id); } + } } } From 29d195c18e9de74bd9072e0e7eb4e1f692d6022a Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 24 Aug 2022 17:07:45 +0800 Subject: [PATCH 050/137] ENH: refine the boundary check logic take object as unit instead of volume Change-Id: Ie8220b183349aac86193021f6a41a5a836231dce --- src/slic3r/GUI/3DScene.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 20af61a7d9..8f48579a45 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1386,6 +1386,7 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo const std::vector& exclude_areas = curr_plate->get_exclude_areas(); for (GLVolume* volume : this->volumes) + { if (! volume->is_modifier && (volume->shader_outside_printer_detection_enabled || (! volume->is_wipe_tower && volume->composite_id.volume_id >= 0))) { BuildVolume::ObjectState state; const BoundingBoxf3& bb = volume_bbox(*volume); @@ -1413,7 +1414,7 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo int64_t comp_id = ((int64_t)volume->composite_id.object_id << 32) | ((int64_t)volume->composite_id.instance_id); volume->is_outside = state != BuildVolume::ObjectState::Inside; - volume->partly_inside = (state == BuildVolume::ObjectState::Colliding); + //volume->partly_inside = (state == BuildVolume::ObjectState::Colliding); if (volume->printable) { if (overall_state == ModelInstancePVS_Inside && volume->is_outside) { overall_state = ModelInstancePVS_Fully_Outside; @@ -1457,6 +1458,23 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo BOOST_LOG_TRIVIAL(debug) << "instance includes " << volume->name << " is partially outside of bed"; } } + } + + for (GLVolume* volume : this->volumes) + { + if (! volume->is_modifier && (volume->shader_outside_printer_detection_enabled || (! volume->is_wipe_tower && volume->composite_id.volume_id >= 0))) + { + int64_t comp_id = ((int64_t)volume->composite_id.object_id << 32) | ((int64_t)volume->composite_id.instance_id); + if (model_state.find(comp_id) != model_state.end()) + { + if (model_state[comp_id] == ModelInstancePVS_Partly_Outside) { + volume->partly_inside = true; + } + else + volume->partly_inside = false; + } + } + } if (out_state != nullptr) *out_state = overall_state; From 34a9dc91d19787c7642b64fff032361ee4e84e09 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 24 Aug 2022 18:25:20 +0800 Subject: [PATCH 051/137] FIX: modify for language translation Change-Id: I4a4123acef77fa992884cdf3420ac38bc13d8f7b --- bbl/i18n/BambuStudio.pot | 48 ++++++++++++++++++---- bbl/i18n/de/BambuStudio_de.po | 57 ++++++++++++++++++-------- bbl/i18n/en/BambuStudio_en.po | 52 +++++++++++++++++++----- bbl/i18n/es/BambuStudio_es.po | 57 ++++++++++++++++++-------- bbl/i18n/fr/BambuStudio_fr.po | 57 ++++++++++++++++++-------- bbl/i18n/hu/BambuStudio_hu.po | 57 ++++++++++++++++++-------- bbl/i18n/nl/BambuStudio_nl.po | 57 ++++++++++++++++++-------- bbl/i18n/sv/BambuStudio_sv.po | 60 ++++++++++++++++++++-------- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 57 ++++++++++++++++++++------ resources/i18n/de/BambuStudio.mo | Bin 162948 -> 161955 bytes resources/i18n/en/BambuStudio.mo | Bin 149123 -> 148742 bytes resources/i18n/es/BambuStudio.mo | Bin 163697 -> 162703 bytes resources/i18n/fr/BambuStudio.mo | Bin 163993 -> 162971 bytes resources/i18n/hu/BambuStudio.mo | Bin 165442 -> 164420 bytes resources/i18n/nl/BambuStudio.mo | Bin 161602 -> 160597 bytes resources/i18n/sv/BambuStudio.mo | Bin 152766 -> 151823 bytes resources/i18n/zh_cn/BambuStudio.mo | Bin 148456 -> 149425 bytes 17 files changed, 375 insertions(+), 127 deletions(-) diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index cc8e6a1a71..4f25df7e17 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2724,6 +2724,12 @@ msgstr "" msgid "Newer 3mf version" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3383,6 +3389,15 @@ msgstr "" msgid "Delete this preset" msgstr "" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3510,6 +3525,14 @@ msgid "" "filament does not support to print on the High Temp Plate" msgstr "" +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "" @@ -4464,6 +4487,11 @@ msgid "" "filament does not support to print on the High Temp Plate" msgstr "" +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "" @@ -4485,6 +4513,11 @@ msgid "" "support to print on the High Temp Plate" msgstr "" +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "" @@ -5494,10 +5527,12 @@ msgid "" msgstr "" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" msgid "Temperature variation" @@ -5647,8 +5682,7 @@ msgstr "" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" msgid "Threshold angle" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index f48bfebd37..54dd1931cf 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2897,6 +2897,12 @@ msgstr "Sie sollten Ihre Software aktualisieren.\n" msgid "Newer 3mf version" msgstr "Neuere 3mf-Version" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3600,6 +3606,15 @@ msgstr "Speichere aktuelle %s" msgid "Delete this preset" msgstr "Lösche diese Voreinstellung" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3748,6 +3763,14 @@ msgstr "" "ist. Ein Wert von 0 bedeutet, dass das Filament das Drucken auf der " "Hochtemperaturdruckplatte nicht unterstützt." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Volumetrische Geschwindigkeitsbegrenzung" @@ -4799,6 +4822,11 @@ msgstr "" "von 0 bedeutet, dass das Filament das Drucken auf der " "Hochtemperaturdruckplatte nicht unterstützt." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Erste Schicht" @@ -4828,6 +4856,11 @@ msgstr "" "dass das Filament das Drucken auf der Hochtemperaturdruckplatte nicht " "unterstützt." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Vom Drucker unterstützte Druckbettypen" @@ -6018,15 +6051,13 @@ msgstr "" "endgültig erzeugte Modell hat keine Naht" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Record timelapse video of printing without showing the toolhead. In this " -"mode the toolhead docks near the excess chute at each layer change, and then " -"a snapshot is taken with the chamber camera. When printing finishes, a " -"timelapse video is created from all the snapshots." msgid "Temperature variation" msgstr "Temperaturvariation" @@ -6193,13 +6224,8 @@ msgstr "Unabhängige Support-Schichthöhe" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"Die Support-Schicht verwendet eine von der Objektschicht unabhängige " -"Schichthöhe. Dies dient der Unterstützung benutzerdefinierter Supportlücken, " -"kann aber zusätzliche Filamentwechsel verursachen, wenn die Supportschicht " -"von einem anderen Filament gedruckt wird" msgid "Threshold angle" msgstr "Schwellenwinkel" @@ -6629,7 +6655,6 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgid "Translation" #~ msgstr "Übersetzung" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index 7cdecca8e0..3761c8459c 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2854,6 +2854,12 @@ msgstr "You'd better upgrade your software.\n" msgid "Newer 3mf version" msgstr "Newer 3mf version" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3533,6 +3539,15 @@ msgstr "Save current %s" msgid "Delete this preset" msgstr "Delete this preset" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3676,6 +3691,14 @@ msgstr "" "value of 0 means the filament does not support printing on the High Temp " "Plate." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Volumetric speed limitation" @@ -4695,6 +4718,11 @@ msgstr "" "This is the bed temperature for layers except for the initial one. A value " "of 0 means the filament does not support printing on the High Temp Plate." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "First layer" @@ -4722,6 +4750,11 @@ msgstr "" "This is the bed temperature of the initial layer. A value of 0 means the " "filament does not support printing on the High Temp Plate." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Bed types supported by the printer" @@ -5886,10 +5919,12 @@ msgstr "" "The final generated model has no seam." msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" msgid "Temperature variation" @@ -6054,12 +6089,8 @@ msgstr "Independent support layer height" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"The support layer uses layer height independent of object layers. This is to " -"support custom support gaps, but may cause extra filament switches if " -"support is specified as a different extruder from the object." msgid "Threshold angle" msgstr "Threshold angle" @@ -6473,7 +6504,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Translation" #~ msgstr "Translation" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index 057f2ab2f3..b83e1fbf8d 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2896,6 +2896,12 @@ msgstr "Será mejor que actualices tu software.\n" msgid "Newer 3mf version" msgstr "Nueva versión 3mf" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3597,6 +3603,15 @@ msgstr "Guardar %s actuales" msgid "Delete this preset" msgstr "Borra este ajuste" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3745,6 +3760,14 @@ msgstr "" "instalada. Un valor de 0 significa que el filamento no admite la impresión " "en la placa de alta temperatura." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Limitación de la velocidad volumétrica" @@ -4787,6 +4810,11 @@ msgstr "" "valor de 0 significa que el filamento no admite la impresión en la placa de " "alta temperatura." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Capa inicial" @@ -4815,6 +4843,11 @@ msgstr "" "significa que el filamento no admite la impresión en la placa de alta " "temperatura." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Tipos de cama que admite la impresora" @@ -6007,15 +6040,13 @@ msgstr "" "sólidas. El modelo final generado no tiene costura" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Record timelapse video of printing without showing the toolhead. In this " -"mode the toolhead docks near the excess chute at each layer change, and then " -"a snapshot is taken with the chamber camera. When printing finishes, a " -"timelapse video is created from all the snapshots." msgid "Temperature variation" msgstr "Variación de temperatura" @@ -6181,13 +6212,8 @@ msgstr "Altura de la capa de soporte independiente" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"La capa de soporte utiliza la altura de la capa independientemente de la " -"capa del objeto. Esto es para soportar la brecha de soporte personalizada, " -"pero puede causar cambios de filamento adicionales si el soporte se " -"especifica como un extrusor diferente con el objeto" msgid "Threshold angle" msgstr "Ángulo de umbral" @@ -6613,7 +6639,6 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ msgid "Translation" #~ msgstr "Translación" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index bedfeeacee..bcdc0eed37 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2859,6 +2859,12 @@ msgstr "Vous feriez mieux de mettre à jour votre logiciel.\n" msgid "Newer 3mf version" msgstr "Nouvelle version 3mf" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3557,6 +3563,15 @@ msgstr "Enregistrer l'état actuel %s" msgid "Delete this preset" msgstr "Supprimer ce préréglage" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3699,6 +3714,14 @@ msgstr "" "value of 0 means the filament does not support printing on the High Temp " "Plate." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Limitation de vitesse volumétrique" @@ -4748,6 +4771,11 @@ msgstr "" "This is the bed temperature for layers except for the first one. A value of " "0 means the filament does not support printing on the High Temp Plate." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Couche initiale" @@ -4775,6 +4803,11 @@ msgstr "" "This is the bed temperature of the first layer. A value of 0 means the " "filament does not support printing on the High Temp Plate." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Types de lit pris en charge par l'imprimante" @@ -5975,15 +6008,13 @@ msgstr "" "solides. Le modèle généré final n'a pas de couture" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Record timelapse video of printing without showing the toolhead. In this " -"mode the toolhead docks near the excess chute at each layer change, and then " -"a snapshot is taken with the chamber camera. When printing finishes, a " -"timelapse video is created from all the snapshots." msgid "Temperature variation" msgstr "Variation de température" @@ -6150,13 +6181,8 @@ msgstr "Hauteur de la couche de support indépendante" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"La couche de support utilise une hauteur de couche indépendante de la couche " -"d'objet. Il s'agit de prendre en charge l'écart de support personnalisé, " -"mais cela peut entraîner des commutateurs de filament supplémentaires si le " -"support est spécifié comme extrudeuse différente avec l'objet" msgid "Threshold angle" msgstr "Angle de seuil" @@ -6582,7 +6608,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Translation" #~ msgstr "Traduction" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index d6e3fd6a25..5b6bd7f026 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2891,6 +2891,12 @@ msgstr "You'd better upgrade your software.\n" msgid "Newer 3mf version" msgstr "Newer 3mf version" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3576,6 +3582,15 @@ msgstr "Jelenlegi %s mentése" msgid "Delete this preset" msgstr "Ezen beállítás törlése" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3721,6 +3736,14 @@ msgstr "" "jelenti, hogy a filament nem támogatja a High Temp Plate-re történő " "nyomtatást" +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Volumetrikus sebességhatár" @@ -4761,6 +4784,11 @@ msgstr "" "Az asztal hőmérséklete a kezdeti réteg kivételével. A 0 érték azt jelenti, " "hogy a szál nem támogatja a High Temp Plate-re történő nyomtatást" +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Kezdőréteg" @@ -4788,6 +4816,11 @@ msgstr "" "A kezdőréteg asztalhőmérséklete. A 0 érték azt jelenti, hogy a filament nem " "támogatja a High Temp Plate-re történő nyomtatást" +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Nyomtató által támogatott asztaltípusok" @@ -5977,16 +6010,13 @@ msgstr "" "varratok" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Timelapse videófelvétel készítése a nyomtatásról a nyomtatófej megjelenítése " -"nélkül. Ebben az üzemmódban a nyomtatófej minden rétegváltásnál kiáll a " -"felesleges anyagot kidobó nyílás közelében, majd a kamerával " -"pillanatfelvétel készül. A nyomtatás befejezésekor egy timelapse videó áll " -"össze az összes pillanatfelvételből." msgid "Temperature variation" msgstr "Temperature variation" @@ -6151,12 +6181,8 @@ msgstr "Független támasz rétegmagassága" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"The support layer uses layer height independent of object layers. This is to " -"support custom support gaps, but may cause extra filament switches if " -"support is specified as a different filament from the object." msgid "Threshold angle" msgstr "Dőlésszög küszöbértéke" @@ -6573,7 +6599,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Translation" #~ msgstr "Translation" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index 2827f77988..c786eed8f1 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2896,6 +2896,12 @@ msgstr "U dient de software te upgraden.\n" msgid "Newer 3mf version" msgstr "Nieuwere versie 3mf" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3596,6 +3602,15 @@ msgstr "Bewaar huidige %s" msgid "Delete this preset" msgstr "Verwijder deze voorinstelling" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3743,6 +3758,14 @@ msgstr "" "Een waarde van 0 betekent dat het filament printen op de High Temp Plate " "niet ondersteunt." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Volumetrische snelheidsbeperking" @@ -4791,6 +4814,11 @@ msgstr "" "Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " "0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Eerste laag" @@ -4818,6 +4846,11 @@ msgstr "" "Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " "filament printen op de High Temp Plate niet ondersteunt." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Printbedden ondersteund door de printer" @@ -6019,15 +6052,13 @@ msgstr "" "met solide onderlagen. Het uiteindelijke gegenereerde model heeft geen naad." msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Record timelapse video of printing without showing the toolhead. In this " -"mode the toolhead docks near the excess chute at each layer change, and then " -"a snapshot is taken with the chamber camera. When printing finishes, a " -"timelapse video is created from all the snapshots." msgid "Temperature variation" msgstr "Temperatuur variatie" @@ -6197,13 +6228,8 @@ msgstr "Onafhankelijke support laaghoogte" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"De ondersteuningslaag (support layer) gebruikt een laaghoogte onafhankelijk " -"van objectlagen. Dit is ter ondersteuning van aangepaste " -"ondersteuningsgaten, maar kan extra filamentwisselingen veroorzaken indien " -"ondersteuning is gespecificeerd als een ander filament dan het object." msgid "Threshold angle" msgstr "Drempel hoek" @@ -6631,7 +6657,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Translation" #~ msgstr "Vertaling" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index 1d065b80e9..4115078d69 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2856,6 +2856,12 @@ msgstr "Uppdatera mjukvaran.\n" msgid "Newer 3mf version" msgstr "Nyare 3mf version" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3532,6 +3538,15 @@ msgstr "Spara nuvarande %s" msgid "Delete this preset" msgstr "Radera denna förinställning" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3680,6 +3695,14 @@ msgstr "" "Detta är byggplattans temperatur när High Temp Plate är installerad. Värdet " "0 betyder att filamentet inte stöder utskrift på High Temp Plate." +msgid "Textured PEI Plate" +msgstr "" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Volumetric speed limitation" msgstr "Volumetrisk hastighets begränsning" @@ -4696,6 +4719,11 @@ msgstr "" "Detta är byggplattans temperatur för lager förutom det första. Värdet 0 " "betyder att filamentet inte stöder utskrift på High Temp Plate." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" + msgid "Initial layer" msgstr "Första lager" @@ -4723,6 +4751,11 @@ msgstr "" "Detta är byggplattans temperatur för första lager. Värdet 0 betyder att " "filamentet inte stöder utskrift på High Temp Plate." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" + msgid "Bed types supported by the printer" msgstr "Byggplattans typ stöds av skrivaren" @@ -5889,15 +5922,13 @@ msgstr "" "solida bottenlager. Den slutgiltligt genererade modellen har ingen söm" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"Record timelapse video of printing without showing the toolhead. In this " -"mode the toolhead docks near the excess chute at each layer change, and then " -"a snapshot is taken with the chamber camera. When printing finishes, a " -"timelapse video is created from all the snapshots." msgid "Temperature variation" msgstr "Temperatur variation" @@ -6039,8 +6070,8 @@ msgid "" "interface is Concentric" msgstr "" "Linje mönster för support gränssnittsytan .Standardmönstret för olösligt " -"(material) support gränssnittet är Räta medan standardmönstret för " -"lösligt(material) stödgränssnittet är koncentriskt" +"(material) support gränssnittet är Räta medan standardmönstret för lösligt" +"(material) stödgränssnittet är koncentriskt" msgid "Base pattern spacing" msgstr "Basens mönster mellanrum" @@ -6062,12 +6093,8 @@ msgstr "Oberoende support lagerhöjd" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"Support lager använder lagerhöjd oberoende av objekt lager. Detta för att " -"stöda custom support mellanrum, detta kan orsaka extra filament byten om " -"support (materialet) är vald som en annan extruder än objektets" msgid "Threshold angle" msgstr "Gräns vinkel" @@ -6480,7 +6507,6 @@ msgstr "Support: föröka grenar vid lager %d" #~ msgid "Translation" #~ msgstr "Översättning" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index 4328109f7c..fc640a8a3c 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-19 14:51+0800\n" +"POT-Creation-Date: 2022-08-24 18:21+0800\n" "PO-Revision-Date: 2022-08-07 21:57+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -2800,6 +2800,12 @@ msgstr "建议升级您的软件版本。\n" msgid "Newer 3mf version" msgstr "较新的3mf版本" +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software.\n" +msgstr "" + msgid "The 3mf is not compatible, load geometry data only!" msgstr "" @@ -3470,6 +3476,15 @@ msgstr "保存当前 %s" msgid "Delete this preset" msgstr "删除此预设" +msgid "" +"Prime tower is required by timeplase. Are you sure you want to disable both " +"of them?" +msgstr "延时摄影需要使用擦拭塔,是否同时禁用?" + +msgid "" +"Prime tower is required by timelapse. Do you want to enable both of them?" +msgstr "延时摄影需要使用擦拭塔,是否同时启用?" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" @@ -3602,6 +3617,14 @@ msgid "" "filament does not support to print on the High Temp Plate" msgstr "安装高温打印热床时的热床温度。0值表示这个耗材丝不支持高温打印热床" +msgid "Textured PEI Plate" +msgstr "纹理PEI热床" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "安装纹理PEI热床时的热床温度。0值表示这个耗材丝不支持纹理PEI热床" + msgid "Volumetric speed limitation" msgstr "体积速度限制" @@ -4574,6 +4597,11 @@ msgid "" "filament does not support to print on the High Temp Plate" msgstr "非首层热床温度。0值表示这个耗材丝不支持高温打印热床" +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "非首层热床温度。0值表示这个耗材丝不支持低温打印热床" + msgid "Initial layer" msgstr "首层" @@ -4595,6 +4623,11 @@ msgid "" "support to print on the High Temp Plate" msgstr "首层热床温度。0值表示这个耗材丝不支持高温打印热床" +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "首层热床温度。0值表示这个耗材丝不支持纹理PEI热床" + msgid "Bed types supported by the printer" msgstr "打印机所支持的热床类型" @@ -5659,13 +5692,17 @@ msgstr "" "印。最后生成的打印件没有接缝。" msgid "" -"Record timelapse video of printing without showing toolhead. In this mode " -"the toolhead docks near the excess chute at each layer change, and then a " -"snapshot is taken with the chamber camera. When printing finishes a " -"timelapse video is composed of all the snapshots." +"If enabled, a timelapse video will be generated for each print. After each " +"layer is printed, the toolhead will move to the excess chute, and then a " +"snapshot is taken with the chamber camera. All of these snapshots are " +"composed into a timelapse video when printing completes. Since the melt " +"filament may leak from the nozzle during the process of taking a snapshot, " +"prime tower is required for nozzle priming." msgstr "" -"录制打印的延时摄影视频,但不显示工具头。在该模式下,工具头会在换层时停靠在吐" -"料槽附近,然后用内置相机拍摄快照。打印完成后,把所有快照组成延时摄影视频。" +"如果启用延时摄影,将在每次打印时生成延时摄影视频。打印完每层后,工具头将移动" +"到吐料槽,然后用内置相机拍摄快照。打印完成后,所有这些快照会组合成一个延时视" +"频。由于在拍摄快照的过程中熔丝可能会从喷嘴中泄漏,因此需要使用擦拭塔进行喷嘴" +"擦拭。" msgid "Temperature variation" msgstr "软化温度" @@ -5818,11 +5855,8 @@ msgstr "支撑独立层高" msgid "" "Support layer uses layer height independent with object layer. This is to " -"support custom support gap,but may cause extra filament switches if support " -"is specified as different extruder with object" +"support customizing z-gap and save print time." msgstr "" -"支撑层使用独立于对象层的层高。这是为了支持自定义间隙,但是会在支撑和对象使用" -"不同耗材丝的时候造成额外的耗材丝切换次数。" msgid "Threshold angle" msgstr "阈值角度" @@ -6211,7 +6245,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ msgid "Translation" #~ msgstr "翻译" -#, c-format, boost-format #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index 85d5fd6ceb8a0a64ee44f85f20f3fd8d82f9b724..5f038197db5d9da439e3e7bfeb3014a092e0a2f2 100644 GIT binary patch delta 33237 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,^J*%{!oGs4Hp)Vo@C)j_U9%)aL!F z6X#zeylo#O?`$?p4pe~>s0!<0I5t8Z%MlofpJHvihn+FFi_7R^4;aqEmau0v1_Oh(na z2vyGtRQYwNrQTzopYssVX1Io0qYtP80o`1_;}V35*F;rNAJss6)Mo65YIuZox^;Lb z;S_9!>d1Ahhfh!gDifu8*w*z4=v+2M%|LV1l0>0KHW{^B=VL9ri0WvLp5}P~YKe-V zI$RtzfO4qQRT(v-^-!!?h*F|9 zSuWH}xnlBZl-gKLL%$%EULLI`R}Xpckk&WU@Y-|HcF=_c31zr(jXy7f_qX z>1$rGxl!>D)F!KqdK0!ry?XnjKFx+<5PpuDneR|bxCgZqKcMnoMlIEyzMOvrezh5& zqGsTOHF-ZXbs112&4ZfSK-3!NL#=5r>OD{!m9I0_z^*tNzr-F`AlBvkXJeDmP5hFF zKqP_Js44m+&P;7b^u0Q8mEJYE_OS}#i!XB6pr=mLW z4XT}esDWKUX3*pOLO>aR!vdH#!TbPG0@dRVI0^^gr}zvtf&q!{!TE1WU`cjDcq=!_Y$ZMHbr%?yNAG9 z0-xeHSY)ir*@V|{5l$KBaxP-XJ_364oki{L`>2BdT60Y|>19xB))ZA?U({Zh zh81xop20g<4L8m(BmM(5Q*W>ZX86nutQ%&ceJ4%<9F3ZKFRsINsGhc-X{J6Bm2WK8 z#yO}F|Abn)Cs-6S&oWC|4LcC8gA;H$w#Jap&9~oC==<}(^8{4U�+;jm0sm*Zg2n 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 Tdx}2V!tp(}Zw~i+QU8AdGqg<+ diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index 96cb31d2206b552573d43de17995ee97e68a600c..d28171d4d9eb5707bfbdfe031bc0dad55d06d5ed 100644 GIT binary patch delta 30574 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 O7AD?>_Atf3^8XLt)Ze!N diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index d6b87497466bffc5d40483963c121e36a9b83ddc..6b644d1339ee9ff956b971248154e641d82a6fb7 100644 GIT binary patch delta 33266 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 At^fc4 diff --git a/resources/i18n/fr/BambuStudio.mo b/resources/i18n/fr/BambuStudio.mo index 2eab11cc0aaf80e137b0eee1c675a3e519f4260d..515f3caf6b2eceee9e2e8f7ed9dd87b15aefd2cd 100644 GIT binary patch delta 33213 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 C|2TsH diff --git a/resources/i18n/hu/BambuStudio.mo b/resources/i18n/hu/BambuStudio.mo index 502e58149b4963d75ec55b764ba724fd192a08ad..4e8e13aa33f0f40fa4d88ff108b722a207ccb4dc 100644 GIT binary patch delta 33834 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 delta 34874 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 diff --git a/resources/i18n/nl/BambuStudio.mo b/resources/i18n/nl/BambuStudio.mo index 415ed188a7d4f15303279c3a4d17cbfa99dac90a..106fecdc4fd9332468eb932a3c41184eec324b8f 100644 GIT binary patch delta 33169 zcmYk_2Yij!BtFvTp#DTEa<8}`98I2D6%A*!J}F$*3S;?umaN%s~7YssYzf<=(N+ zAE7_-zcCZ0V#Q^|;CYO{=CB9}DX=!GfQB~S3e}Jfm=n8T4xEJfaV@GLXR$Tj!d6&j zzG=W>RKC@y4xG0BWc__U7mv zqI#Nkq2tuR+?X4?p`OpcXk3PM@q(LxUIN>mLq-_V=;KKSsN`-`6r>KdNyh*-OCB6Wm|2+LCiz^42I)N8xLG!Mx-37L9I}$ zyEAI8dtg=^glga{RKu2{*2V^#z7Go%{}I2@{(nnAt8vp(voH6fhW;m1#(z)+hJ9%& zDu$DZmqVqWz(Bl$!T16-GU*1;Uw|D6b^0pn4NWj>C?1E>Pa zeC0U(uq8&|1)Pc>a1u^hZhD$wg<0J>Q6p3o)$?+wMO+UxA`MX^mWY0C0^JCx0YgwN zoPz4nVjP0Ia1<6=X&Ux5j!=A+d zI>ui^6-z)Bwnnvh2x^f`MGf6z%!w;di}f&S=&xV^-bD@RTl+l2db4Ztp~@*^ViK@GHXsp)QJ0TG9wV_CZLuT#nM;}wMa&zdN9Mf40RA~#aVb9Q)A=J=0t3Vs&Et* z!a1l8d~cs$Ms@HNY9!Nap-yyXB+!mPHH^d!)@!H+B-v^j+}7RE$WMRQPd zx(ZX`M%2jdz@GRcs=^Z6_@KhBSVa4OIe}6nT*e6W`R}!f$GTr? zt+(-gn4b74RE0NC1>8kV#RK%iXIK&cMIE_i_n016M0KE!jdwvU(t&#z|4;&M60|SZ zp;~$hHAh!ab9M*SuqW6B-=jvR{a#Z+cg#wB2x?Kz!5BP`0hr=D`*DnFa0^uV?c6rd z1J!`RsKvAd191~-Bz{26?a!#8e}>wwsrQ+Nl*9tWE1>dsLoMEs)~T48_(D|Aw_4r1 zZHB|B9-YNJconsX-l2v*?S8)hVK8bDZbnt`C#pxz0aI`aR0GmuL(GFJcQ9%sMqy1{ zXwu!zeF6nZc!Js{fd?I@K2|{QcEn@ESE7cv(;<^@6qY8w7B!UjPz`;G>gj(t75xvJ zhJA$^!S$#`x*t<%|DPkEihf2du7{{Oe}>`s4g)dI5wqyZp%z&cRL>`%rffQ@oG(%N zH)9$65x>Bs-M*@o4r-}&aK`7-z(dl0WlcR%4CRL}MtHz(IoRD<54dYbzO z)03jss;CAu!DQGGH5J`$y4$ADK#jy)bZd^+6VQ+y!2Ea_ljD2TbJvgNn@|>1dI>Ct zWibMWqbgo+pYKNPqJx+MPoNg}1+0R9qDHLb3C3Rq);MA2wl1p2olyn$L+$G^s2D2Mh*Q_R5>Y5nsX&1Dm@(aUKP}0Y;uzER||WQpn?XWDw>U2Br8z` z?X(_3U*e}QC0;=_^cJdNPf_oEKwnII%A{wthM~$Yi5kH;HvzR|5*ESbSP3s<2xd8L zhCT+16K{f=lIa+VD^Wc~>2mdD65=1A_2YS<*y?pcUx*ml&2x%b(Glc*#3GHUTW z#?<%{bsl^`^*H3L8If?*^I|q$0oAiw=!Y#)BheMLwuYmg&%uef3iDCF6LHRLj|9}J z+=c4VNmRu*Q3W~YO+gtkoM;$!#roJE51>Y-$OY5G>ZtSt)VBTs)8T3B4R1R0|Ac^s z(I-RKZhFJ(+_#9~Ro@U!gzouTecdX46li z^8JEI@E)oozoW|k%f?guY(BKIU^mk9{LJ`|BrwxHNc)Q!i6Cn@szEWR3d>uopcYdc zYJ{3$R-Awj@T<@98z$dZs5Q0?3*cUiz~9^i(hx|0(+ph>oJ+hkR>SjH9kbjr@z&UY z_!_K|c`z3)85|Z69Lzo{Y6OTd--EP#} zoWbOOvM>c4asfe#ZW!0ifT|xRL^^(@=e1)T!w1UUerjRM>XgsMp3`>ia-nr!M~bC z(*)Jij;OgGgnH3!ord#>FG3Ym=)M_&Di}??KB@!bQ18!0b#SRo--jC6(~48SbDMx# z`rKyl{ms0X4V5t$YN(5$j^I)@y%OpOZiLz`iKvElLXALw)W}S*>5EZ|Z=FrQgl-M- z0|MGUuTbZ}Tl5b7@227msMVVVRd5I@e-WEr3f0rfm=tT-^m?drnxjUf1BT)NEQw$K z&iHH2uaU48pJQ&E_rO%R2UWoLsJT6BeT3R>$^I~(5jin0@k*%lPN+E_h3e3J)LL0> z)Ayl9>f#@azj}0=grfKoi(}r0CPQ=7i=D6(j>HtW$9fpmvlFPH{s~p_Q&h)%9+`3i zQEMs`)xeUd{0VLX%Gd$b(-Ej4oP@qO9d(i|K&^$fs0#O@3OI>s&@I&azhg3diR$6s z)+CS3hf#V=LV9`hMR#QasR+cQ4>m;=*aB7I7pNf|h-%0<)T;NO3RsWH@f&Q5dr=hx zJ~1Pk6V<`OxC3jT7W)UJoQzJuQ`4hJYZ*^MR)4n!y*nv#taY(sIJYm@tvrJ ze*x9SH>lak`pTTfQK;Fe^@^S5N1#3lD!8q6uyq#d`Fd0Xzr|FzAGOYY#FTggv*B;3 ziaw$`;Q!i;T@KXxjkNJ-OijGPYj#>L0<~?1p7udMoJYDF(_rR5%_Qcw*0m0|Zb0p@ zYpA(+irP^r{xS^7?FcXf!7+iqb2Hsbk8E7mM+J9xED3VcTi``V+_ZNvIcQVi{av$ z@e;eD>%IBB=#Kux=b|cJj~bDks5P_SdJ;p3U$f8uK~2#o^rwEu_g}NPa$q~+HBk-P zg8K5Z6N}*`8&C1U{6L%!>yTa>LvRVI1N%`8IA`NGZ2TFjBkxfoocce;Up>f4Kto*w zOJF6;ghMbGXQ1+JMfLD|)apHjdGRu;!EaF&d_pxK{YR6Y1GRngqS6akV?HweYDpEF zu?cFCv_|!$3#!0js55gKszJL@4Y`VH$Sq8Z4^VUe2DNCDd@=`66siODY`i_HK@&f@ z%?r~>2qIw#s^_~=tNIM8#TQWxxs4<71!}5#IxZ)@i|2Tp_^NqfL;W+VXOB@M^cvN(PgoWGQG#$qVWMRy+p`w3`>3#K(0V^L>( zWz2%jY4_Kd}wqcG;##*SU8-n`0pJn4aQT3fh zjkx;~0S)bAR7EeXpHK}*o7tQXIZ-1Jj!KV4jaWrgf%Wb4W~jB1i0a{R)R8_PwJ2Ah z-rIq>wf~P1Py_xzWqgJe@h!$+=`3bD^+gTo5>$m-Q4QXO8o6VrwQv@F@H%QLe?gUd z2Q>wcQB(E_(`o;w2`~?`qlPRR)x#R7A!>>`ntP+R*L2j}FF|d?b*LU+Mh*3IREIKV zHQOvJs=^AW-4Ku3UA-{9_WyVSYT0~Li#MSv`WjWxK~#^Ap$a;U>d{X&ejiofOPiiN zn;EGLs1D>sEzUBijx|M{q@B@SiokFJ@>~1hr8Q}wX;4;Fk8_~rFdS7-EUMsIs1fLd zp*RM;XFO`n?7$?r4|O0NLcM<{ko~V7y&yq7{(zdpR6!;~CR7D^(L02wMHP=)?VV5s z&a=;VVLjsCqZ;a;-83X0>ivSK5skH0%+CH-fz?S+ixN={>4QplqZZvF8{dpt3qPQG zdLOk2Q|EAbzlsH-rm728$KI%s*n`S<1hvL4pr-l{H-T^hPf;z)lG9Y2-C6>bu^y^` zMyRQ1kILU0HDUv?1dg)t-Kcy=P*Z!>##02FDe*^bLw67X^*quhl)=`-<55Gl8P(#w zsMUS}wfH`u3P=%R*9dCFa-h;hsx+ z>d^tzl>CLQ&?mQ9?QN|CQ4O7j8j(dd{uL$=-;8R|NBj!Y8#O|+Q4L#$ zYUma8e*gbOKrQtTH**tUH6k&nDQkkNunlS?dZ8*Dh4DDYrr)*cuWUR? z0kbwT6=47C#a1L}oApG^*=W?RxQrT+|4>656=6oI25M2ZLw(KGasEU_ic|3p`+W%1H z6fI~*rXq$APe663FKX(RqCTWHxe4fnt*HIFAJwuGsDtJgRD=FO4Y^+-^EEp&jwId# zm*P`gfs+fH51EK)mouAqJl4TGSQiTxae4oG*hmZ^?oLtEd^HL~ZM&YR7dK-?ELY4N zsiROmxQJSe|Dr}Fthmej*TFiV_WK>wDi15+a%#Hxyhm;8r!g*PIHoFTMrtC`aJO@S zfQGVpDYFfSU|!-|P~UVeq0WI6rOgi_<*)(;w@2FGtcf+>`+q58@>MPCa)yzAI9A2C z*bK{+Giz%hD*Z9m*8VSC-sSySZUk!a+{N0Mf?5`1L)7Q`3*;M%<6qHCQ3(tsUIXK> zH|qWGumRpfoh!vFnV+n>phj#X>O}kli)jD1sO)k=a0VveHdK#YRm?Y^l30OwB9_CI z_zm8}COEgMNq>r3K;@f?{27Hd`(5Y`u z(DbNsvY@tosGEQ)E{>J39LC~kR8J0Ia{LkX@p=wb!9yE=gV~9vYha8-edmiq{os;_ zYT!^*Jrhvn&O|lLy@-H@ZUgF!--8L3YTWR`fzeJF%8Lz8j&ar!{V49Tch`H+Knfm3Z|eI+Zt3$_o4T@8>)a5O-*__YcAB$ zS`@XK6Hp`81GSq5qNa2->ivoK`Am!^z7X9yfKCy(jWwH@qcXg?d2uXiC?})ld>Lwl zR-r~Km|-i zRq!QhF@BAz_>lF2^`7-LDqoVe=KYMQA|2GI! zCL!Pp)6y2G46RXf)&o^wKU5EfqPCYCHKbEeNAP0Q?%0j$z;Vot=TPUtD^x>Lwl@vU zj+wRn3K396RZ%^vg<52-Pz7~BEy|v#p&W-A;)$pVr=l9N2>F@9*?^siU+7>)tW-zS zfoiCZ#$!vIjqVr%&k3}`{GCkC$DxMKgS&Aa-og0JW_v|-aXD>>k481*9%|@+$BOtC zJ7MXrW}B`=ZS!AIyDDQhQ%__!_P>TCmITdhUDP6Li5h{ys24_|z9TNS>3dNQZbZ6VYg7eNhq4C>^Hx6eCbY2sZ_ zU%gi2Z2W-raYhfb$nIfd;>miN5o(FrMQu?H>Vx@kq?>?xx*GMNvl&(K9vq10a4=Tw zWj@yrqIz--)$@C(gXb0M!zy`iGZpDkJ`9M&dM##=WSKc!Df`{``-?C=!PEH3j~M zI@5jonK`azZD?(W8p7VFFRdf69qz|G7~J2imCC3QX@|<+9gE=*8{dlQ)r5Tn)T1-l z1^+;0Oc-EVIssMD0&IxaP>V8Rpc$#E*qeAu)Rde>P30{ce}wAsI~z|m$aE|aQ&PVZ zMj#%eu_n4vAET#GYa{t!Gc{?gxlpUW7^=cbsG+Wp8tNf7z7}&4KZ`2o1*&2HpgNpn z2veXT%Sk|sr4nkjH@5adEs{y7hAqcC_{6549%?GSk2s^d0Z={@tVH*6I^X z1D<0j&p)8PSmd2()XVb5vM&PMe_FvK|W*=uq zJt&GLu@-)h<1iYlPc=Oqg4!)(Q6HxZP(yperawY8{6Ew=k#3sHS&!kUe3vj7?_yT% ze`mV+o}Ud>a03j(PN-cm3pJFxQQPnU>a!u`4ATHN)+T-wRYCfhX4m9IbtnoWuqqb8 zJ~n+dy0y*r6VTiqMGe^rT!!~iNAZ|h<^(*1Rf&H@Raj-V8L8P=p7<%Oj;ZG8SF0RI zsPkp3^%BMt{~I-BRXpr}&0$@SnS!3E#Wo)I;B?dwSDR~oIW+|}mnTpo@*8T+JVy2W zKh*h=dY;+F0oE{7{!*yLS{`+N#Lct&xg7~=NPpA_cu-TY6}8&0qgMA_R6)4NxP{*-bz#>4)msGz{mv*LqY-FD*1L-bBsi zOH}@pi_A%v3$@y-SzDk+us3QO4o005^Dr;&Ky~0J%#H5b1atzr7MsNpfF+36MD=(y zYK_dW&cnvUm!cZY)nkhZ>m?s0PhPjm#Pxhu@*{mH*O|ABTbZ{BKD> zt9B5U#Y3oq{==%6WtnMtOVqyZY#oYG#HXPe{2i)6XHi4`5;a0;zcTUsSb=yIR71vN zN$vlc1hm*rpoZ)fs=!aE#h7uqc_9k5Xkt)PQwg;=>!L=aDeAzPjGBT~cmTh{VK{h& z8JWLO?o8un4>19@JdsU1e5(0c!_rO8Rot(7(eMm~yq5 zy0;ig+;@%nu|68rfq`r6_y4gZXy_K;J^T*U)1_<8>R*TI**?@1Tt$u4AE*wzK@Igs zEP`3qncWnJI@mg(4y3NAMfd}1J6>AnHh~8uXfEGlEeu=l^8Pc8{@9B6BTU7%tiHi~ z2dux*q_4vPJWsZX-}Ul*7^-L6Hk)$xqfXG2TTH{NqK@If1=jJTU1X|Z#7es2P+Y;gqoW1=>7CV?f>OA{Qy=ZeiVyivTbIn+_3~yaZOaq z6Hwc*HAZ4b)ChP`L;ngjHA%iU6{JN?MFi>`DTUgubx|E?YaN7IOEWMSw;)sMcFq#W zN5UVdg8a6dBQyxLXv(8r?1bvk1XKf7p{8srs$n-#Bl+Au_xZ-;^Rs3}t(82eMH-3T zKmU&LeAMkTOswX2*Lq7v+;0lbu$5;-t>@bU~5f&i69mDY^YVMQoG=Gd& z8A}rHiz;suw$lDTNT4BR-(}8$KByioM)i0zs%Ixr4ZUUKZ%_^K{nkujan$NAgBr0K zs2+DhjaYB{e3*?-MDM?}n?pcDzYaBryHJbhwDm47BmM?saPDsNr(kDL`Rna54eW?v z#D}8NS6TO>PT2D}3j_9=KfGGMm;JAy3jNNsFahTgZ;4ujuTdlM9@U^U`%F)Bq2@3Q z)zcW%E@_PV4%oul4Rx*z!w_7C8p%Vb#d&!j`(La6F$tRMe^3odx!+_gg6dH4guO-;i{~Da60SSgd-O-!Jg~XjFaUj+oyI%ytvd9L+;L zScW?DH=*Y22h^NjL^bdcY9GHx?_7UxMy3WnB)t_D!fHp&lnz8KwsEL>7NDkPIclWb z-x5%TKVUArhuU^Yj+yib)X`fFL$EDsN=Bm^e$;L` zg3KCE*??qI@Qk^u5C=eGDkH*e;2D@PK zQzrfub|aqhwE1Orf7Fy*Mqlm!2Lx2{OH>QfoiSghV^LowhoOe@E7W3lmY>av`e0>rjjB5UTvEsQj2%KPt;TtzGy10fLe@oQ9W#mD!)A*#-XT@j=f|$*!&XvzZeOFNl?qTpoVlm z>ciz2YOY?RdXVh0`EHmS)v#Dp!&;y(4nS4xM(u{Fs6{v%b;8caytvw?pHxQe^K+=4 z{EQlbM>hQ~TU>_`i(@+KNMjb@QQFC@3b-;YUFiii8DYz7Bs4JmHur4ZJGt{o= zftu2hsPa6hHMRy*Y5#8_pcd{y6?DXU4s}x9KuwX~4O2lz)DUM!9}GnmSO8T~5!6Uk zM>U|aP49$yZ#b%<6VW}Cz-$64Ak9tF!c3@rpC6B6O;nH5-ZHB`2GzqR)^1j})q@)1 zb*L#kX#K_dH){7}yv_a(B~awH`KuDmQFA#1HHW8>MdG|dop>R4jFqhItrJiqxgNFJ z!|obOT5DLFqNcjDb?jZYNmynR_F{c9TtWQ|7<$iG!P?B)7klu0Dr&L5Lv625s3A}O zs~OP%)YJxJ6o#Qr#>N3M2GH4Q=#6=j4H>SpMXxV!l=bl6V>82r~*2p7T+M$>K$&M&pVp`9rLUFVRn{CibBzD9+jhb#iq;t@3fG3Kn8HT#9Po z4bqCTW*p(+}WY48H7LAOx5;~(_?`G4BSre*%99tELRak!0_LQO?= ztc{Iv9Iiqwy09n4LZ}a`5~%m%@E|s`=~OcMdMPZ9M^Pj9?m7Ek6=!~7<}??o zrv*?$RtocDHB^N?Q27U-hHx}$=ojKFJdSEmyI>jYJJp4_nyy0MvG!ggTh!*z}FK zmiPgjj_v>E&yaO$zb5d6g!*sI2$XwgDrkTj+7_sSx}!#B9BO1{qef%_>ifZ3)Epnh zf_M+LHqyU0JuQnG>1wF*>ZA9+wAqz_3hay8?}JezF%4DWGSpCQ!YJH{%Ks~>z=v2K z|3a;$V*i@om~_W{#808heTf>`q#w*LsVZS9eQFIL&=$9$zOAPJ&%BTybr6+CHKZA8 z@pMG(@1CfJjYQ4$MAYJ&gUY`NHAQ<+4LFVQcn3o;>LcT?6RM5^xCn=1wom56Xg;c^ z-=Zqsk2Ua^P50yLhep8P8jQP%N8o$Bj~DT_%g5WGuYG*H< z;1)cF%GWoQNgsl0&{Wh2yXO;71#4`EZK#$W!G?GT+heiRrlLitIp2fo`7u;aF538S zsHu5{+6}>JOoN-CwsRZQ_Unx-R_338J`7f%T7CevTF;{@x^JJqu<5D&OhbavkLTr3 z9jI+>jGBVBsD=%+PDY*mOHpg!l2?|!Z(1Mkug@!BG!Ocq=57@h!tYSq>M?5QlcY0K zlN!~)C{#tIthG@MXoG6l0MwAXZTb{c`OEcO+itf_ID&uM8K}Aa0af8y?11-CQx})P?4D()p?`wvzz5XSCC$jce^x>U0y;>tp?;vqjVd@F zYKS9IA2y{?i>48($L&#zbP#HU7NK|Xp*|CiS#P7J^ew8PY5dJd=k{m+t49q<(D(lS zs0M9Ejlf=1MGsI%={sw1CR1Ql)T(cW+8sSnJ?n=$xJIGMn}C{%8K{w1h-%P=OzeLR z?E(AX25NOaMJ>vtnax2Ff||3+s0x~6P3(mA@EcS^lVmX?kp)#@A=G(N3RP|#DqkY1 z{QhnN8roSHikna^zl@rapHT(49jUg75_l(lJvo* zA@Qh#r6HEXHdr5*VI00fO;K!!kN2Nw)JGl7XD~m$N4I*KE0A&P-|Hl&u%+= zQEOmtxZBM2ArjQ{bExfh8`blN=$%U}Nj!N0AMZ~>XUhs^K$G2hRdj zMPFe)T!VV=G=|`PHvz5cq!Fek`EeBSniztoQO}>E8k9ED96Z6O^sX3;({LDWMvY)t zl#f#pJ7YL*MD30%=-sxcZRt){&{UKcwJ55h_HB0?pNKlCwxSNGQ>YhTqedn}A+u<6 zq7IrOsQfih+qylfyd$^(Z=xF1zp(d1%Iz#8P=ka&Q5nlbn<;66A;dePUYLkFShk}+ zq)wqeoX(=Q)eY3a^#`h)cc{6}RK!e0II2O>I1XpvO6`CDqCVa~Q1}+}@}OxkALk~H zz=7DjxQ~;F7jY66En!ArKQ<(O1GW7M$C&Sgy-?fmJ$AtOl4f!5z)0f%qIOYODIaGc z^*bF1bit2Gz|N&v11|nbMywgyF=c$b{{V45R^oZuvOdlgOu+1zznnS1DxRo1C=siYz7us~ zzQ=ahw5r+v`>;0gKX4@$t7b;@I_hW452!^LQr$GPbanQB8xp#cP#n*oK308d_;`O* zipP4yr(!LX|h$F~P^%fk&7?dR%=U@81Vn zg1-`fg@Fw9l?FcEzbEjbp^x_;D0FDVxj_0}HvzTeP-C;5N;WYENmbMk*F>$__2`Sq znwsb7teH@|ARFoc3&r#l9D`bHHJX`iIRImcPerBwXw%()5lBixs^(@Jr9&MwL8uR< zNE@$-Nr<20hdPz_jO-GEt%??!FI3#bF<395lUEzF|Lh;)d5|3N_ewiGI3EgNr# zYCwO~5jzLfutlg3t&OOob}u%<@39VMZE4awq0WWgmZw*>UL-n^@i_fM(EpoZ)@YKZ?vjm#%h zPyD)>k@3fj!~;=ZTBA@?R}ppAw?-}EG4}Z!RJm(Wg0Mx%y$HhSmIx)*gW+_v#YsD`BNX&MrQ+FeCZ6(^uRoI0TQ-~TTp zprKiYYRFpaMpT7cQFFc>)xd9U{DAd)oBkuJ;&Z5P!8cIlX6|J=lml-NFNzwubiG+4 zjR}MjP>)8UDp-Xs+=$xen^9Bp1L`388yjGXK4zP>Ks9hB>iIg<9PdG`_9OQBS=2~f zLLEf6`mq01@lz5s#2NaU47o6ZcqD2HnxY!g-#P~b`VBP#?@$#a?`L|R z88wm-sQd+OdXawV%nLP0P>)l1?sdtN`4$Vk7t#Bqe7-VzvULs3FqkLXC}|YQ^U2}w zN$Bcd{3V_5&OLz?^-mWc^xofn*5r*)ljO`|aKpJj@~pFGQP)^kAgBHu~wD#Y)R;zu|&_j7Jt@!a!l-r|%|guA;f z>jrt65*i%$f<)**DA7l z|30~iI(aDZK6h?Pxu;^da@Z0~j3q_j2hv_)a`KhIZN#(j-V4IpJ@MUxUE!V{-Sb43 zvhUud&Z)Mwvnh8U;qkm%i|{L2x`BM}2tW25>E0yaA94>P$6utJtCcbqS82zt5+evgQWE1))nt5+bbyFI9|I+N^h!r zf%CX0^HiUeLELL-+)thny@FjeJzw?;c0VM4cb?bBOt#8i@Ew~cj=G2O&Uf6uk~W3=5ov45J0H1xoL-)?y@TR^C%S-ab1^sf zWU^MEN?o%}R;RKpb~b6R3HRqNO_w(C{9nS+Hh)pin%<#RBWz=SqtuV&SV&HNxbSt} z`9%B@ab4lObr0=)7J`rBbo9A#T@gAOveFC~XhNA0p6D85aIO>IY{R0heZGoP9@`c-rmcK-Ie+qexNTP@(#rqed#iYFrsqhX;HYNQ zmWsOyDJi&f5-w;<{rti-(gssvA&+0*U{?)KRNsK8FDUT@HAazlHP2^L(*e{qhPTgVmZSV4nX=8%H<^cT3)l;`tE5b-0HTPN7fmr#zU(OI_{IbfTiF+`8_2y7UXmHHsX% zy7JmjCdhx7kw1K)h>JXX>RHn-IA1m1NkU2#xpW<;yp`Og3AZLKk~cDV9`y@qb%vbp zd2+Dx&QBK#9~U*6nH{4h=;K9)KYFe~x@zoMz7iYKwZf5M;SNYB%W zlysCf)#OQM(n@lFzDC-1rlBNV-}5YzyDsnXiZh>Zasp>5vf@};DPj98rbRcdJO=`*Nkwr->*SBX5SOYYB?ujjy^*lfS?B=&QXbqi^&JQ)T@ z_%-0&(%b>O>+6XdT&rvd&-PJvdDQg}7Nx$wNvlCz-#T*=ZegD*&m|j<_goyDC-Y1j zyTFswU#=MR&;0jD#5MFG)ds!g~8{=%a# zG1hZ$NN{|6+k}M}PU-^gYJ{^=)me(WV+wLc@OD4$2|NoSPZmn;Lp%$&t}fhbJ@G>$ zN_}HXJiyzt$T^&xQG}OK;#!=@bAEJm2J-AM&-8;!H1Q0c?L+gp{~|@#O>*j5VDSF$ zA)a+4y(1;$!V;8lLv0~kk9LIHcaKwA1bMFURuTN0TfZ9neEm(nW1l0|cckt2@t&BB zHxUnoPPU!fNda9+Yh&YADXfXYRK$;a-Ydp4eOPd=`sC8}D^GOg<<0MH+Hp!u;yF94 zdggbeZlVl-?kc4I#+}p?K0MS_%9AiWsO)jx$j!4F4BcaU1ss(vOmMi~A_? z+PH;${Cw-o_G}m)>niN|eRycTFxnVM-gK1JkUXuahu;o*uW6*~YVC<05#Z|Xi5n5& z+mp0Vp11If7!jH+#P-$)>ya~zr{7b;7|($bh1_L{RisQ^87Th;!tu7u{)97e^D7Rg zfz6|QhlsDFgjeL(HQm+RVxGRE&Vsk6wj0vmZ=jSO;K^Z2;~ddwil zA<|Nko4<|cbg*ydpr*}qsTWS=P9&Yb4(ya6oRaVf+uh-WD{#AP{7alfnVm?Bv}yV+ z&0y}vp4sj~t^uAS?f`c-o;T$Vq)ovXY+JvCcZL$z^&R2q)afGLhUacuUKnY*4v}`> zrX3;Ab;4g_RqFqm=Pug%mb4?}yi+JY?!u`0f5?@Dr9P*ceoR_36viW}^e2)^lk*+J4 zx_c9j=PtzkttZFmfU>Db{e0ymT$8sZ+7iB{*(Z27z?RUC=ls^znQ6M?^!4-^9TeS+ zI$Cq*vc**A?G}{M1QWRna%ZK4G~{{Cn^QaoMh7*TL26s>4BXxeM-upsT)%UVrLI}z zu1i?gDXYS@2xt8Ko)Wm~k;WI+F-2YcmuAM~aqaeuA5+M;uI*h1&w(*T!`uJgJI`(S zD(^L*o@nB`QNMuk_hcKJ$FHKT@keati5nY~ZKO@oOgcG*tuBR$`oTqQle6N2*< z;Msa^UH?)>Io>_bt;@qZn|M~v6F(s)elDSCQb*Vpq_(*(;0n@La*yL#FXBac^8)$r z(1JO(<}x;aBJrM{ixd1^%RIkN$dhoGeEeCWbCSCgWz@#9_8p?m7@lwDUQg?Ov1KeH z{jD7><#|JTUj?{&c$!TNZnTsX{XSDydBTs#J=DIvS2g}$4TDIp!+p+VcV6N;;_2y) zpY5%iclgRUF;BK!gu3x`JWmeNR{bVT*D#Ooq&$Adc*_5IuRNYolY%S$NM2pLFqU^> zX-OJfYO`Ii{g_HT3;9Oa{JTk?On9ef(WKzG0<Gy%3ube!~Ltb6^sBtIvO^<7`e}>^a*~ydqxQjQ>dh$&Ub)E9WPY!T5CvB8{OK<+o z-IY8uaSndIRuk??iN~ltKjG@Uvy5;rn_)a@E&s2aIXoN7y`Edwaqj-q_4yh=`jDi2 z;XBQX2k2U?eVB(F+j!_}3;U1fUweF~)bdSAs1{EzdsQ3IbJdLxZ zFDCr?>cg{9l6Oymy*-QT?8G5HCC- zQo)lr)juvbuhb+SSZDR0Pi z7=N}o8}Mc;O8P}_<3MGy*9Y>%Qc|cI$#Y##i09{>%sl&#@H5h4c<%8;PYcS`h+KPY z$!kd6K+b#QT0+Z?JH!o-J=``;ap3YRQgc=!2^u5Z@v ao}JdGLCAvIk*<^rct2rx!@@q#tNjl{m(Xee delta 34162 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 Az5oCK diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index 6e326ac8484bdfff7bc7c31d030adc285586ce85..34e6445ba50562e530eda7f71b0f89384320c195 100644 GIT binary patch delta 38958 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 WhX1heG5@=$?#k~>5!e4zj{gJC&oI3J delta 38483 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 STqmLbq{v~ Date: Wed, 24 Aug 2022 09:26:52 +0800 Subject: [PATCH 052/137] FIX: hide the "Don't show again" checkbox of ProjectDropDialog Change-Id: I83ed917cab71e10eda6a14a4f78ebc56ee894600 (cherry picked from commit 64179562b116f5b16fc223d5d307e5c2f795e6c1) --- src/slic3r/GUI/Plater.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 815e6a06c8..bfd38201d7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7045,12 +7045,13 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, 10); wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer *m_sizer_left = new wxBoxSizer(wxHORIZONTAL); + // hide the "Don't show again" checkbox + //wxBoxSizer *m_sizer_left = new wxBoxSizer(wxHORIZONTAL); - auto dont_show_again = create_item_checkbox(_L("Don't show again"), this, _L("Don't show again"), "show_drop_project_dialog"); - m_sizer_left->Add(dont_show_again, 0, wxALL, 5); + //auto dont_show_again = create_item_checkbox(_L("Don't show again"), this, _L("Don't show again"), "show_drop_project_dialog"); + //m_sizer_left->Add(dont_show_again, 0, wxALL, 5); - m_sizer_bottom->Add(m_sizer_left, 0, wxEXPAND, 5); + //m_sizer_bottom->Add(m_sizer_left, 0, wxEXPAND, 5); m_sizer_bottom->Add(0, 0, 1, wxEXPAND, 5); From ffb1f706d89a3f348c1171e485412aac6e279a1c Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 23 Aug 2022 18:47:41 +0800 Subject: [PATCH 053/137] NEW:update the new print progress layout Change-Id: I4390c9ef5de3d050178bebe5d1dc60213a400280 --- resources/images/print_control_pause.svg | 4 + .../images/print_control_pause_disable.svg | 4 + .../images/print_control_pause_hover.svg | 4 + resources/images/print_control_resume.svg | 3 + .../images/print_control_resume_disable.svg | 3 + .../images/print_control_resume_hover.svg | 10 + resources/images/print_control_stop.svg | 3 + .../images/print_control_stop_disable.svg | 3 + resources/images/print_control_stop_hover.svg | 3 + resources/images/print_info_time.svg | 4 + resources/images/print_info_weight.svg | 13 + src/slic3r/GUI/StatusPanel.cpp | 301 +++++++++++++----- src/slic3r/GUI/StatusPanel.hpp | 12 +- src/slic3r/GUI/Widgets/Label.cpp | 1 + src/slic3r/GUI/Widgets/Label.hpp | 1 + 15 files changed, 279 insertions(+), 90 deletions(-) create mode 100644 resources/images/print_control_pause.svg create mode 100644 resources/images/print_control_pause_disable.svg create mode 100644 resources/images/print_control_pause_hover.svg create mode 100644 resources/images/print_control_resume.svg create mode 100644 resources/images/print_control_resume_disable.svg create mode 100644 resources/images/print_control_resume_hover.svg create mode 100644 resources/images/print_control_stop.svg create mode 100644 resources/images/print_control_stop_disable.svg create mode 100644 resources/images/print_control_stop_hover.svg create mode 100644 resources/images/print_info_time.svg create mode 100644 resources/images/print_info_weight.svg diff --git a/resources/images/print_control_pause.svg b/resources/images/print_control_pause.svg new file mode 100644 index 0000000000..7625ec8020 --- /dev/null +++ b/resources/images/print_control_pause.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/print_control_pause_disable.svg b/resources/images/print_control_pause_disable.svg new file mode 100644 index 0000000000..2e1d511765 --- /dev/null +++ b/resources/images/print_control_pause_disable.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/print_control_pause_hover.svg b/resources/images/print_control_pause_hover.svg new file mode 100644 index 0000000000..27be647ccb --- /dev/null +++ b/resources/images/print_control_pause_hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/print_control_resume.svg b/resources/images/print_control_resume.svg new file mode 100644 index 0000000000..292da3d3b3 --- /dev/null +++ b/resources/images/print_control_resume.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/print_control_resume_disable.svg b/resources/images/print_control_resume_disable.svg new file mode 100644 index 0000000000..fb1ad8adb2 --- /dev/null +++ b/resources/images/print_control_resume_disable.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/print_control_resume_hover.svg b/resources/images/print_control_resume_hover.svg new file mode 100644 index 0000000000..bd25d224d8 --- /dev/null +++ b/resources/images/print_control_resume_hover.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/images/print_control_stop.svg b/resources/images/print_control_stop.svg new file mode 100644 index 0000000000..8fd730fc63 --- /dev/null +++ b/resources/images/print_control_stop.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/print_control_stop_disable.svg b/resources/images/print_control_stop_disable.svg new file mode 100644 index 0000000000..3d2a99afaf --- /dev/null +++ b/resources/images/print_control_stop_disable.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/print_control_stop_hover.svg b/resources/images/print_control_stop_hover.svg new file mode 100644 index 0000000000..b75770370c --- /dev/null +++ b/resources/images/print_control_stop_hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/print_info_time.svg b/resources/images/print_info_time.svg new file mode 100644 index 0000000000..63af49a7fc --- /dev/null +++ b/resources/images/print_info_time.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/images/print_info_weight.svg b/resources/images/print_info_weight.svg new file mode 100644 index 0000000000..e4deb77c39 --- /dev/null +++ b/resources/images/print_info_weight.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 711d2d1629..eb06f7973d 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -60,7 +60,7 @@ static wxColour TEXT_LIGHT_FONT_COL = wxColour(107, 107, 107); #define NORMAL_SPACING FromDIP(5) #define PAGE_SPACING FromDIP(10) #define PAGE_MIN_WIDTH FromDIP(574) -#define PROGRESSBAR_HEIGHT FromDIP(14) +#define PROGRESSBAR_HEIGHT FromDIP(8) #define SWITCH_BUTTON_SIZE (wxSize(FromDIP(40), -1)) #define TASK_THUMBNAIL_SIZE (wxSize(FromDIP(120), FromDIP(120))) @@ -170,6 +170,8 @@ void StatusBasePanel::init_bitmaps() m_bitmap_fan_off = ScalableBitmap(this, "monitor_fan_off", 24); m_bitmap_speed = ScalableBitmap(this, "monitor_speed", 24); m_bitmap_speed_active = ScalableBitmap(this, "monitor_speed_active", 24); + m_bitmap_use_time = ScalableBitmap(this, "print_info_time", 16); + m_bitmap_use_weight = ScalableBitmap(this, "print_info_weight", 16); m_thumbnail_placeholder = ScalableBitmap(this, "monitor_placeholder", 120); m_thumbnail_sdcard = ScalableBitmap(this, "monitor_sdcard_thumbnail", 120); //m_bitmap_camera = create_scaled_bitmap("monitor_camera", nullptr, 18); @@ -272,6 +274,8 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) m_staticText_printing->SetForegroundColour(PAGE_TITLE_FONT_COL); bSizer_printing_title->Add(m_staticText_printing, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, PAGE_TITLE_LEFT_MARGIN); + bSizer_printing_title->Add(0, 0, 1, wxEXPAND, 0); + m_panel_printing_title->SetSizer(bSizer_printing_title); m_panel_printing_title->Layout(); bSizer_printing_title->Fit(m_panel_printing_title); @@ -292,93 +296,135 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) wxBoxSizer *bSizer_task_name = new wxBoxSizer(wxVERTICAL); - bSizer_task_name->Add(0, 0, 1, wxEXPAND, FromDIP(5)); + wxBoxSizer *bSizer_task_name_hor = new wxBoxSizer(wxHORIZONTAL); + wxPanel* task_name_panel = new wxPanel(parent); - m_staticText_subtask_value = new wxStaticText(parent, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END); + m_staticText_subtask_value = new wxStaticText(task_name_panel, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END); m_staticText_subtask_value->Wrap(-1); - m_staticText_subtask_value->SetFont(wxFont(13, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxT("HarmonyOS Sans SC"))); + #ifdef __WXOSX_MAC__ + m_staticText_subtask_value->SetFont(::Label::Body_13); + #else + m_staticText_subtask_value->SetFont(wxFont(13, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); + #endif m_staticText_subtask_value->SetForegroundColour(wxColour(44, 44, 46)); - m_printing_stage_value = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END); - m_printing_stage_value->Wrap(-1); - m_printing_stage_value->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); - m_printing_stage_value->SetForegroundColour(STAGE_TEXT_COL); + m_bitmap_static_use_time = new wxStaticBitmap(task_name_panel, wxID_ANY, m_bitmap_use_time.bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16))); - bSizer_task_name->Add(m_staticText_subtask_value, 1, wxALL | wxEXPAND, 0); - bSizer_task_name->Add(m_printing_stage_value, 1, wxALL | wxEXPAND, 0); - bSizer_subtask_info->Add(bSizer_task_name, 1, wxEXPAND, FromDIP(5)); + m_staticText_consumption_of_time = new wxStaticText(task_name_panel, wxID_ANY, "0m", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_consumption_of_time->SetFont(::Label::Body_12); + m_staticText_consumption_of_time->SetForegroundColour(wxColour(0x68, 0x68, 0x68)); + m_staticText_consumption_of_time->Wrap(-1); + + + m_bitmap_static_use_weight = new wxStaticBitmap(task_name_panel, wxID_ANY, m_bitmap_use_weight.bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16))); + + + m_staticText_consumption_of_weight = new wxStaticText(task_name_panel, wxID_ANY, "0g", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_consumption_of_weight->SetFont(::Label::Body_12); + m_staticText_consumption_of_weight->SetForegroundColour(wxColour(0x68, 0x68, 0x68)); + m_staticText_consumption_of_weight->Wrap(-1); + + bSizer_task_name_hor->Add(m_staticText_subtask_value, 1, wxALL | wxEXPAND, 0); + bSizer_task_name_hor->Add(0, 0, 1, wxEXPAND, 0); + bSizer_task_name_hor->Add(m_bitmap_static_use_time, 0, wxALIGN_CENTER_VERTICAL, 0); + bSizer_task_name_hor->Add(m_staticText_consumption_of_time, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, FromDIP(3)); + bSizer_task_name_hor->Add(0, 0, 0, wxLEFT, FromDIP(20)); + bSizer_task_name_hor->Add(m_bitmap_static_use_weight, 0, wxALIGN_CENTER_VERTICAL, 0); + bSizer_task_name_hor->Add(m_staticText_consumption_of_weight, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(3)); + bSizer_task_name_hor->Add(0, 0, 0, wxRIGHT, FromDIP(10)); + + + task_name_panel->SetSizer(bSizer_task_name_hor); + task_name_panel->Layout(); + task_name_panel->Fit(); + + bSizer_task_name->Add(task_name_panel, 0, wxEXPAND, FromDIP(5)); + /* wxFlexGridSizer *fgSizer_task = new wxFlexGridSizer(2, 2, 0, 0); fgSizer_task->AddGrowableCol(0); fgSizer_task->SetFlexibleDirection(wxVERTICAL); fgSizer_task->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);*/ + m_printing_stage_value = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END); + m_printing_stage_value->Wrap(-1); + #ifdef __WXOSX_MAC__ + m_printing_stage_value->SetFont(::Label::Body_11); + #else + m_printing_stage_value->SetFont(wxFont(11, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); + #endif + + m_printing_stage_value->SetForegroundColour(STAGE_TEXT_COL); + + auto m_panel_progress = new wxPanel(parent, wxID_ANY); m_panel_progress->SetBackgroundColour(*wxWHITE); auto m_sizer_progressbar = new wxBoxSizer(wxHORIZONTAL); m_gauge_progress = new ProgressBar(m_panel_progress, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize); m_gauge_progress->SetValue(0); m_gauge_progress->SetHeight(PROGRESSBAR_HEIGHT); - //m_gauge_progress->SetMinSize(wxSize(FromDIP(238), 16)); - m_gauge_progress->SetMaxSize(wxSize(FromDIP(600), 16)); - - - //fgSizer_task->Add(m_gauge_progress, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 0); - + m_gauge_progress->SetMaxSize(wxSize(FromDIP(600), -1)); m_panel_progress->SetSizer(m_sizer_progressbar); m_panel_progress->Layout(); - //m_panel_progress->SetMinSize(wxSize(FromDIP(574), -1)); - //m_panel_progress->SetMaxSize(wxSize(FromDIP(600), -1)); - - m_sizer_progressbar->Add(m_gauge_progress, 1, wxALIGN_CENTER_VERTICAL, 0); - //fgSizer_task->Add(m_panel_progress, 0, wxALIGN_CENTER_VERTICAL | wxEXPAND, 0); + m_panel_progress->SetSize(wxSize(-1, FromDIP(24))); + m_panel_progress->SetMaxSize(wxSize(-1, FromDIP(24))); wxBoxSizer *bSizer_task_btn = new wxBoxSizer(wxHORIZONTAL); bSizer_task_btn->Add(FromDIP(10), 0, 0); - m_button_report = new Button(m_panel_progress, _L("Report")); - StateColor report_bg(std::pair(wxColour(255, 255, 255), StateColor::Disabled), std::pair(wxColour(206, 206, 206), StateColor::Pressed), - std::pair(wxColour(238, 238, 238), StateColor::Hovered), std::pair(wxColour(255, 255, 255), StateColor::Enabled), - std::pair(wxColour(255, 255, 255), StateColor::Normal)); - m_button_report->SetBackgroundColor(report_bg); - m_button_report->SetMinSize(TASK_BUTTON_SIZE2); - StateColor report_bd(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); - m_button_report->SetBorderColor(report_bd); - StateColor report_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); - m_button_report->SetTextColor(report_text); - m_button_report->SetFont(Label::Body_10); - m_button_report->Hide(); - m_sizer_progressbar->Add(m_button_report, 0, wxALL, FromDIP(5)); + /* m_button_report = new Button(m_panel_progress, _L("Report")); + StateColor report_bg(std::pair(wxColour(255, 255, 255), StateColor::Disabled), std::pair(wxColour(206, 206, 206), StateColor::Pressed), + std::pair(wxColour(238, 238, 238), StateColor::Hovered), std::pair(wxColour(255, 255, 255), StateColor::Enabled), + std::pair(wxColour(255, 255, 255), StateColor::Normal)); + m_button_report->SetBackgroundColor(report_bg); + m_button_report->SetMinSize(TASK_BUTTON_SIZE2); + StateColor report_bd(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); + m_button_report->SetBorderColor(report_bd); + StateColor report_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); + m_button_report->SetTextColor(report_text); + m_button_report->SetFont(Label::Body_10); + m_button_report->Hide(); + m_sizer_progressbar->Add(m_button_report, 0, wxALL, FromDIP(5));*/ - m_button_pause_resume = new Button(m_panel_progress, _L("Pause")); + m_button_pause_resume = new ScalableButton(m_panel_progress, wxID_ANY, "print_control_pause", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,true); - StateColor pause_resume_bg(std::pair(wxColour(255, 255, 255), StateColor::Disabled), std::pair(wxColour(27, 136, 68), StateColor::Pressed), - std::pair(wxColour(61, 203, 115), StateColor::Hovered), std::pair(wxColour(0, 174, 66), StateColor::Enabled), - std::pair(wxColour(0, 174, 66), StateColor::Normal)); - m_button_pause_resume->SetBackgroundColor(pause_resume_bg); - StateColor pause_resume_bd(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(0, 174, 66), StateColor::Enabled)); - m_button_pause_resume->SetBorderColor(pause_resume_bd); - StateColor pause_resume_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(255, 255, 255), StateColor::Enabled)); - m_button_pause_resume->SetTextColor(pause_resume_text); - m_button_pause_resume->SetFont(Label::Body_10); - m_button_pause_resume->SetMinSize(TASK_BUTTON_SIZE2); - //bSizer_task_btn->Add(m_button_pause_resume, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); + m_button_pause_resume->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { + if (m_button_pause_resume->GetToolTipText() == _L("Pause")) { + m_button_pause_resume->SetBitmap_("print_control_pause_hover"); + } + + if (m_button_pause_resume->GetToolTipText() == _L("Resume")) { + m_button_pause_resume->SetBitmap_("print_control_resume_hover"); + } + }); + + m_button_pause_resume->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { + auto buf = m_button_pause_resume->GetClientData(); + if (m_button_pause_resume->GetToolTipText() == _L("Pause")) { + m_button_pause_resume->SetBitmap_("print_control_pause"); + } + + if (m_button_pause_resume->GetToolTipText() == _L("Resume")) { + m_button_pause_resume->SetBitmap_("print_control_resume"); + } + }); + + m_button_abort = new ScalableButton(m_panel_progress, wxID_ANY, "print_control_stop", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); + m_button_abort->SetToolTip(_L("Abort")); + + m_button_abort->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { + m_button_abort->SetBitmap_("print_control_stop_hover"); + }); + + m_button_abort->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { + m_button_abort->SetBitmap_("print_control_stop"); } + ); + + m_sizer_progressbar->Add(m_gauge_progress, 1, wxALIGN_CENTER_VERTICAL, 0); + m_sizer_progressbar->Add(0, 0, 0, wxEXPAND|wxLEFT, FromDIP(18)); m_sizer_progressbar->Add(m_button_pause_resume, 0, wxALL, FromDIP(5)); - - m_button_abort = new Button(m_panel_progress, _L("Stop")); - - StateColor abort_bg(std::pair(wxColour(255, 255, 255), StateColor::Disabled), std::pair(wxColour(206, 206, 206), StateColor::Pressed), - std::pair(wxColour(238, 238, 238), StateColor::Hovered), std::pair(wxColour(255, 255, 255), StateColor::Enabled), - std::pair(wxColour(255, 255, 255), StateColor::Normal)); - m_button_abort->SetBackgroundColor(abort_bg); - StateColor abort_bd(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); - m_button_abort->SetBorderColor(abort_bd); - StateColor abort_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); - m_button_abort->SetTextColor(abort_text); - m_button_abort->SetFont(Label::Body_10); - m_button_abort->SetMinSize(TASK_BUTTON_SIZE2); - //bSizer_task_btn->Add(m_button_abort, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); + m_sizer_progressbar->Add(0, 0, 0, wxEXPAND|wxLEFT, FromDIP(18)); m_sizer_progressbar->Add(m_button_abort, 0, wxALL, FromDIP(5)); //fgSizer_task->Add(bSizer_task_btn, 0, wxEXPAND, 0); @@ -391,14 +437,35 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) penel_text->SetBackgroundColour(*wxWHITE); penel_bottons->SetBackgroundColour(*wxWHITE); - m_staticText_progress_percent = new wxStaticText(penel_text, wxID_ANY, _L("0%"), wxDefaultPosition, wxDefaultSize, 0); - m_staticText_progress_percent->Wrap(-1); - m_staticText_progress_percent->SetFont(::Label::Head_13); + wxBoxSizer *sizer_percent = new wxBoxSizer(wxVERTICAL); + sizer_percent->Add(0, 0, 1, wxEXPAND, 0); + + wxBoxSizer *sizer_percent_icon = new wxBoxSizer(wxVERTICAL); + sizer_percent_icon->Add(0, 0, 1, wxEXPAND, 0); + + + m_staticText_progress_percent = new wxStaticText(penel_text, wxID_ANY, L("0"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_percent->SetFont(::Label::Head_18); + m_staticText_progress_percent->SetMaxSize(wxSize(-1, FromDIP(20))); m_staticText_progress_percent->SetForegroundColour(wxColour(0, 174, 66)); + + m_staticText_progress_percent_icon = new wxStaticText(penel_text, wxID_ANY, L("%"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_percent_icon->SetFont(::Label::Body_11); + m_staticText_progress_percent_icon->SetMaxSize(wxSize(-1, FromDIP(13))); + m_staticText_progress_percent_icon->SetForegroundColour(wxColour(0, 174, 66)); + + sizer_percent->Add(m_staticText_progress_percent, 0, 0, 0); + + #ifdef __WXOSX_MAC__ + sizer_percent_icon->Add(m_staticText_progress_percent_icon, 0, wxBOTTOM, FromDIP(2)); + #else + sizer_percent_icon->Add(m_staticText_progress_percent_icon, 0, 0, 0); + #endif + - m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, L("N/A"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_progress_left->Wrap(-1); - m_staticText_progress_left->SetFont(wxFont(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); + m_staticText_progress_left->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); m_staticText_progress_left->SetForegroundColour(wxColour(146, 146, 146)); //fgSizer_task->Add(bSizer_buttons, 0, wxEXPAND, 0); @@ -410,7 +477,9 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) panel_button_block->SetSize(wxSize(TASK_BUTTON_SIZE.x * 2 + FromDIP(5) * 2, -1)); panel_button_block->SetBackgroundColour(*wxWHITE); - bSizer_text->Add(m_staticText_progress_percent, 0, wxALIGN_CENTER | wxALL, 0); + //bSizer_text->Add(m_staticText_progress_percent, 0, wxALL, 0); + bSizer_text->Add(sizer_percent, 0, wxEXPAND, 0); + bSizer_text->Add(sizer_percent_icon, 0, wxEXPAND, 0); bSizer_text->Add(0, 0, 1, wxEXPAND, 0); bSizer_text->Add(m_staticText_progress_left, 0, wxALIGN_CENTER | wxALL, 0); @@ -424,8 +493,11 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) penel_bottons->SetSizer(bSizer_buttons); penel_bottons->Layout(); - bSizer_subtask_info->Add(m_panel_progress, 0, wxEXPAND, FromDIP(5)); - bSizer_subtask_info->Add(penel_bottons, 0, wxEXPAND, FromDIP(5)); + bSizer_subtask_info->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14)); + bSizer_subtask_info->Add(bSizer_task_name, 0, wxEXPAND|wxRIGHT, FromDIP(18)); + bSizer_subtask_info->Add(m_printing_stage_value, 0, wxEXPAND | wxTOP, FromDIP(5)); + bSizer_subtask_info->Add(penel_bottons, 0, wxEXPAND | wxTOP, FromDIP(10)); + bSizer_subtask_info->Add(m_panel_progress, 0, wxEXPAND|wxRIGHT, FromDIP(25)); m_printing_sizer->Add(bSizer_subtask_info, 1, wxALL | wxEXPAND, 0); @@ -448,10 +520,18 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) m_error_text = new wxStaticText2(m_panel_error_txt); m_error_text->SetForegroundColour(PAGE_TITLE_FONT_COL); text_sizer->Add(m_error_text, 1, wxEXPAND|wxLEFT, FromDIP(17)); + m_button_clean = new Button(m_panel_error_txt, _L("Clean")); - m_button_clean->SetBackgroundColor(abort_bg); - m_button_clean->SetBorderColor(abort_bd); - m_button_clean->SetTextColor(abort_text); + StateColor clean_bg(std::pair(wxColour(255, 255, 255), StateColor::Disabled), std::pair(wxColour(206, 206, 206), StateColor::Pressed), + std::pair(wxColour(238, 238, 238), StateColor::Hovered), std::pair(wxColour(255, 255, 255), StateColor::Enabled), + std::pair(wxColour(255, 255, 255), StateColor::Normal)); + StateColor clean_bd(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); + StateColor clean_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); + + + m_button_clean->SetBackgroundColor(clean_bg); + m_button_clean->SetBorderColor(clean_bd); + m_button_clean->SetTextColor(clean_text); m_button_clean->SetFont(Label::Body_10); m_button_clean->SetMinSize(TASK_BUTTON_SIZE2); @@ -955,9 +1035,9 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co init_scaled_buttons(); - m_buttons.push_back(m_button_report); - m_buttons.push_back(m_button_pause_resume); - m_buttons.push_back(m_button_abort); + //m_buttons.push_back(m_button_report); + //m_buttons.push_back(m_button_pause_resume); + //m_buttons.push_back(m_button_abort); m_buttons.push_back(m_button_unload); m_buttons.push_back(m_button_clean); m_buttons.push_back(m_bpButton_z_10); @@ -975,7 +1055,10 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co /* set default enable state */ m_button_pause_resume->Enable(false); + m_button_pause_resume->SetBitmap_("print_control_resume_disable"); + m_button_abort->Enable(false); + m_button_abort->SetBitmap_("print_control_stop_disable"); Bind(wxEVT_WEBREQUEST_STATE, &StatusPanel::on_webrequest_state, this); @@ -1056,12 +1139,12 @@ StatusPanel::~StatusPanel() void StatusPanel::init_scaled_buttons() { - m_button_report->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); - m_button_report->SetCornerRadius(FromDIP(12)); - m_button_pause_resume->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); - m_button_pause_resume->SetCornerRadius(FromDIP(12)); - m_button_abort->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); - m_button_abort->SetCornerRadius(FromDIP(12)); + // m_button_report->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); + // m_button_report->SetCornerRadius(FromDIP(12)); + //m_button_pause_resume->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); + //m_button_pause_resume->SetCornerRadius(FromDIP(12)); + //m_button_abort->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); + //m_button_abort->SetCornerRadius(FromDIP(12)); m_button_clean->SetMinSize(wxSize(FromDIP(48), FromDIP(24))); m_button_clean->SetCornerRadius(FromDIP(12)); m_button_unload->SetMinSize(wxSize(-1, FromDIP(24))); @@ -1639,6 +1722,27 @@ void StatusPanel::update_left_time(int mc_left_time) m_staticText_progress_left->SetLabelText(left_time_text); } +void StatusPanel::update_basic_print_data(bool def) +{ + if (def) { + auto aprint_stats = wxGetApp().plater()->get_partplate_list().get_current_fff_print().print_statistics(); + wxString time; + PartPlate *plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); + if (plate) { + if (plate->get_slice_result()) { time = wxString::Format("%s", get_bbl_monitor_time_dhm(plate->get_slice_result()->print_statistics.modes[0].time)); } + } + + char weight[64]; + ::sprintf(weight, " %.2f g", aprint_stats.total_weight); + + m_staticText_consumption_of_time->SetLabelText(time); + m_staticText_consumption_of_weight->SetLabelText(weight); + } else { + m_staticText_consumption_of_time->SetLabelText("0m"); + m_staticText_consumption_of_weight->SetLabelText("0g"); + } +} + void StatusPanel::update_subtask(MachineObject *obj) { if (!obj) return; @@ -1648,28 +1752,41 @@ void StatusPanel::update_subtask(MachineObject *obj) } else if (obj->is_in_printing() || obj->print_status == "FINISH") { if (obj->is_in_prepare()) { m_button_abort->Enable(false); + m_button_abort->SetBitmap_("print_control_stop_disable"); + m_button_pause_resume->Enable(false); - m_button_pause_resume->SetLabel(_L("Pause")); + m_button_pause_resume->SetBitmap_("print_control_pause_disable"); + wxString prepare_text = wxString::Format(_L("Downloading...")); if (obj->gcode_file_prepare_percent >= 0 && obj->gcode_file_prepare_percent <= 100) prepare_text += wxString::Format("(%d%%)", obj->gcode_file_prepare_percent); m_printing_stage_value->SetLabelText(prepare_text); m_gauge_progress->SetValue(0); m_staticText_progress_percent->SetLabelText(NA_STR); + m_staticText_progress_percent_icon->SetLabelText(wxEmptyString); m_staticText_progress_left->SetLabel(NA_STR); m_staticText_progress_left->SetLabelText(NA_STR); wxString subtask_text = wxString::Format("%s", GUI::from_u8(obj->subtask_name)); m_staticText_subtask_value->SetLabelText(subtask_text); + update_basic_print_data(true); } else { - if (obj->can_resume()) - m_button_pause_resume->SetLabel(_L("Resume")); - else - m_button_pause_resume->SetLabel(_L("Pause")); + if (obj->can_resume()) { + m_button_pause_resume->SetBitmap_("print_control_resume"); + if (m_button_pause_resume->GetToolTipText() != _L("Resume")) { m_button_pause_resume->SetToolTip(_L("Resume")); } + } else { + m_button_pause_resume->SetBitmap_("print_control_pause"); + if (m_button_pause_resume->GetToolTipText() != _L("Pause")) { m_button_pause_resume->SetToolTip(_L("Pause")); } + } + + if (obj->print_status == "FINISH") { m_button_abort->Enable(false); + m_button_abort->SetBitmap_("print_control_stop_disable"); m_button_pause_resume->Enable(false); + m_button_pause_resume->SetBitmap_("print_control_resume_disable"); } else { m_button_abort->Enable(true); + m_button_abort->SetBitmap_("print_control_stop"); m_button_pause_resume->Enable(true); } // update printing stage @@ -1677,14 +1794,17 @@ void StatusPanel::update_subtask(MachineObject *obj) update_left_time(obj->mc_left_time); if (obj->subtask_) { m_gauge_progress->SetValue(obj->subtask_->task_progress); - m_staticText_progress_percent->SetLabelText(wxString::Format("%d%%", obj->subtask_->task_progress)); + m_staticText_progress_percent->SetLabelText(wxString::Format("%d", obj->subtask_->task_progress)); + m_staticText_progress_percent_icon->SetLabelText("%"); } else { m_gauge_progress->SetValue(0); m_staticText_progress_percent->SetLabelText(NA_STR); + m_staticText_progress_percent_icon->SetLabelText(wxEmptyString); } } wxString subtask_text = wxString::Format("%s", GUI::from_u8(obj->subtask_name)); m_staticText_subtask_value->SetLabelText(subtask_text); + update_basic_print_data(true); //update thumbnail if (obj->is_sdcard_printing()) { update_sdcard_subtask(obj); @@ -1744,13 +1864,18 @@ void StatusPanel::update_sdcard_subtask(MachineObject *obj) void StatusPanel::reset_printing_values() { m_button_pause_resume->Enable(false); - m_button_pause_resume->SetLabel(_L("Pause")); + m_button_pause_resume->SetBitmap_("print_control_pause_disable"); + m_button_abort->Enable(false); + m_button_abort->SetBitmap_("print_control_stop_disable"); + m_gauge_progress->SetValue(0); m_staticText_subtask_value->SetLabelText(NA_STR); + update_basic_print_data(false); m_printing_stage_value->SetLabelText(""); m_staticText_progress_left->SetLabelText(NA_STR); m_staticText_progress_percent->SetLabelText(NA_STR); + m_staticText_progress_percent_icon->SetLabelText(wxEmptyString); m_bitmap_thumbnail->SetBitmap(m_thumbnail_placeholder.bmp()); m_start_loading_thumbnail = false; m_load_sdcard_thumbnail = false; diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 202902d9fb..4d95d1c9a4 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -78,6 +78,8 @@ protected: ScalableBitmap m_bitmap_lamp_off; ScalableBitmap m_bitmap_fan_on; ScalableBitmap m_bitmap_fan_off; + ScalableBitmap m_bitmap_use_time; + ScalableBitmap m_bitmap_use_weight; wxBitmap m_bitmap_extruder; CameraRecordingStatus m_state_recording{CameraRecordingStatus::RECORDING_NONE}; @@ -97,6 +99,8 @@ protected: wxPanel * m_panel_printing_title; wxPanel * m_panel_control_title; + wxStaticText* m_staticText_consumption_of_time; + wxStaticText * m_staticText_consumption_of_weight; wxStaticText * m_staticText_monitoring; wxStaticText * m_staticText_timelapse; SwitchButton * m_bmToggleBtn_timelapse; @@ -105,6 +109,8 @@ protected: wxStaticBitmap *m_bitmap_recording_img; wxStaticBitmap *m_bitmap_sdcard_on_img; wxStaticBitmap *m_bitmap_sdcard_off_img; + wxStaticBitmap *m_bitmap_static_use_time; + wxStaticBitmap *m_bitmap_static_use_weight; wxMediaCtrl2 * m_media_ctrl; @@ -116,10 +122,11 @@ protected: wxStaticText * m_printing_stage_value; ProgressBar* m_gauge_progress; wxStaticText * m_staticText_progress_percent; + wxStaticText * m_staticText_progress_percent_icon; wxStaticText * m_staticText_progress_left; Button * m_button_report; - Button * m_button_pause_resume; - Button * m_button_abort; + ScalableButton *m_button_pause_resume; + ScalableButton *m_button_abort; Button * m_button_clean; wxStaticText * m_text_tasklist_caption; @@ -320,6 +327,7 @@ protected: void update(MachineObject* obj); void show_printing_status(bool ctrl_area = true, bool temp_area = true); void update_left_time(int mc_left_time); + void update_basic_print_data(bool def = false); void update_subtask(MachineObject *obj); void update_cloud_subtask(MachineObject *obj); void update_sdcard_subtask(MachineObject *obj); diff --git a/src/slic3r/GUI/Widgets/Label.cpp b/src/slic3r/GUI/Widgets/Label.cpp index 93ec8c2a9d..709332af62 100644 --- a/src/slic3r/GUI/Widgets/Label.cpp +++ b/src/slic3r/GUI/Widgets/Label.cpp @@ -34,6 +34,7 @@ wxFont Label::Body_15 = Label::sysFont(15, false); wxFont Label::Body_14 = Label::sysFont(14, false); wxFont Label::Body_13 = Label::sysFont(13, false); wxFont Label::Body_12 = Label::sysFont(12, false); +wxFont Label::Body_11 = Label::sysFont(11, false); wxFont Label::Body_10 = Label::sysFont(10, false); wxFont Label::Body_9 = Label::sysFont(9, false); diff --git a/src/slic3r/GUI/Widgets/Label.hpp b/src/slic3r/GUI/Widgets/Label.hpp index d82451ee85..0a3ada8256 100644 --- a/src/slic3r/GUI/Widgets/Label.hpp +++ b/src/slic3r/GUI/Widgets/Label.hpp @@ -27,6 +27,7 @@ public: static wxFont Body_13; static wxFont Body_12; static wxFont Body_10; + static wxFont Body_11; static wxFont Body_9; static wxFont sysFont(int size, bool bold = false); From 089881705360338fbee36cb638527433e74c8713 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 24 Aug 2022 17:38:22 +0800 Subject: [PATCH 054/137] ENH: rotate: refine the behavior of assemble rotation use the logic of rotate_local_with_target Change-Id: I181372b6784c5d025bc3748377f6130f15a80d85 --- src/slic3r/GUI/GLCanvas3D.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index c6db973d66..e1f13aee50 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3333,8 +3333,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else rotate_target = volumes_bounding_box().center(); //BBS do not limit rotate in assemble view - //camera.rotate_local_with_target(Vec3d(rot.y(), rot.x(), 0.), rotate_target); - camera.rotate_on_sphere_with_target(rot.x(), rot.y(), true, rotate_target); + camera.rotate_local_with_target(Vec3d(rot.y(), rot.x(), 0.), rotate_target); + //camera.rotate_on_sphere_with_target(rot.x(), rot.y(), false, rotate_target); } else { #ifdef SUPPORT_FEEE_CAMERA From df6fb3eeb496f4595400a725bbb832dfc2188ce8 Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Wed, 24 Aug 2022 20:06:37 +0800 Subject: [PATCH 055/137] ENH: remove current filament logic in context menu Signed-off-by: yifan.wu Change-Id: Ie7933eeccb8ee4f3390c8e5999b32bb45319c89f (cherry picked from commit 1426178dd40e95d8d7313335a0ecf264bfeeb7b9) --- src/slic3r/GUI/GUI_Factories.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 9935afc1ef..38c54f5c31 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1321,7 +1321,9 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) for (int i = 1; i <= filaments_cnt; i++) { - bool is_active_extruder = i == initial_extruder; + // BBS + //bool is_active_extruder = i == initial_extruder; + bool is_active_extruder = false; int icon_idx = i == 0 ? 0 : i - 1; const wxString& item_name = wxString::Format(_L("Filament %d"), i) + From 5aaa785655d7ef0cd93346805b58cda75a822ace Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 25 Aug 2022 10:48:34 +0800 Subject: [PATCH 056/137] FIX: Slicing process crashes when enable timelapse Change-Id: Idc3068b73809ee28fe685266fcd2355555e9f02a --- src/libslic3r/GCode.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index bf96a3d64a..d15198a5d8 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -554,6 +554,9 @@ bool GCode::gcode_label_objects = false; { std::string gcode; + assert(m_layer_idx >= 0); + if (m_layer_idx >= (int) m_tool_changes.size()) return gcode; + // Calculate where the wipe tower layer will be printed. -1 means that print z will not change, // resulting in a wipe tower with sparse layers. double wipe_tower_z = -1; @@ -571,16 +574,12 @@ bool GCode::gcode_label_objects = false; m_is_first_print = false; } - assert(m_layer_idx >= 0); if (gcodegen.writer().need_toolchange(extruder_id) || finish_layer) { - if (m_layer_idx < (int)m_tool_changes.size()) { - if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) - throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); + if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); - if (!ignore_sparse) { - gcode += append_tcr(gcodegen, m_tool_changes[m_layer_idx][m_tool_change_idx++], extruder_id, wipe_tower_z); - m_last_wipe_tower_print_z = wipe_tower_z; - } + if (!ignore_sparse) { + gcode += append_tcr(gcodegen, m_tool_changes[m_layer_idx][m_tool_change_idx++], extruder_id, wipe_tower_z); + m_last_wipe_tower_print_z = wipe_tower_z; } } From 7bb227df2cf3e3d1d1a2dcdbb88e495ed6ec55d5 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Wed, 24 Aug 2022 16:36:53 +0800 Subject: [PATCH 057/137] FIX:fix Gizmo Text displays the location layout Change-Id: I0696725660d3640486750259f7643d1809989db0 --- src/slic3r/GUI/GUI_ObjectList.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index bf7e8bd4ec..944a8b8ecc 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2076,6 +2076,9 @@ void ObjectList::load_mesh_part(const TriangleMesh& mesh, const wxString& name, apply_object_instance_transfrom_to_all_volumes(mo); ModelVolume* mv = mo->add_volume(mesh); + Vec3d instance_bbox = mo->mesh().bounding_box().size(); + Vec3d offset = mv->get_offset() + Vec3d(0, 0, instance_bbox[2] / 2); + mv->set_offset(offset); mv->name = name.ToStdString(); std::vector volumes; From 277391f6baad18c6988d00853bbb8c416e44bfbc Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Thu, 25 Aug 2022 15:24:07 +0800 Subject: [PATCH 058/137] ENH:add GizmoText menu translation Change-Id: I3315f9a719ff353bb72c93d436009f0c327e2a6d --- bbl/i18n/BambuStudio.pot | 29 +++++++++++------ bbl/i18n/de/BambuStudio_de.po | 44 +++++++++++++++++-------- bbl/i18n/en/BambuStudio_en.po | 44 +++++++++++++++++-------- bbl/i18n/es/BambuStudio_es.po | 44 +++++++++++++++++-------- bbl/i18n/fr/BambuStudio_fr.po | 44 +++++++++++++++++-------- bbl/i18n/hu/BambuStudio_hu.po | 44 +++++++++++++++++-------- bbl/i18n/list.txt | 2 ++ bbl/i18n/nl/BambuStudio_nl.po | 44 +++++++++++++++++-------- bbl/i18n/sv/BambuStudio_sv.po | 48 +++++++++++++++++++--------- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 47 +++++++++++++++++---------- resources/i18n/de/BambuStudio.mo | Bin 161955 -> 161835 bytes resources/i18n/en/BambuStudio.mo | Bin 148742 -> 148623 bytes resources/i18n/es/BambuStudio.mo | Bin 162703 -> 162580 bytes resources/i18n/fr/BambuStudio.mo | Bin 162971 -> 162848 bytes resources/i18n/hu/BambuStudio.mo | Bin 164420 -> 164300 bytes resources/i18n/nl/BambuStudio.mo | Bin 160597 -> 160413 bytes resources/i18n/sv/BambuStudio.mo | Bin 151823 -> 151667 bytes resources/i18n/zh_cn/BambuStudio.mo | Bin 149425 -> 149482 bytes 18 files changed, 271 insertions(+), 119 deletions(-) diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index 4f25df7e17..00c82f5bee 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -366,6 +366,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "" + msgid "Notice" msgstr "" @@ -1921,9 +1936,6 @@ msgstr "" msgid "Avoid extrusion calibration region" msgstr "" -msgid "Add" -msgstr "" - msgid "Add plate" msgstr "" @@ -2363,13 +2375,13 @@ msgstr "" msgid "Printing Progress" msgstr "" -msgid "Report" +msgid "Resume" msgstr "" -msgid "Stop" +msgid "Abort" msgstr "" -msgid "0%" +msgid "0" msgstr "" msgid "Clean" @@ -2408,9 +2420,6 @@ msgstr "" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "" - msgid "Silent" msgstr "" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index 54dd1931cf..c706fb0f62 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -365,6 +365,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Hinzufügen" + msgid "Notice" msgstr "Hinweis" @@ -2079,9 +2094,6 @@ msgstr "Erlaube mehrere Materialien auf einer Druckplatte" msgid "Avoid extrusion calibration region" msgstr "Vermeiden Sie den Bereich der Extrusionskalibrierung" -msgid "Add" -msgstr "Hinzufügen" - msgid "Add plate" msgstr "Druckplatte hinzufügen" @@ -2526,14 +2538,14 @@ msgstr "" msgid "Printing Progress" msgstr "Druckprozess" -msgid "Report" -msgstr "Bericht" +msgid "Resume" +msgstr "Fortsetzen" -msgid "Stop" -msgstr "Stop" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2571,9 +2583,6 @@ msgstr "Druckliste" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Fortsetzen" - msgid "Silent" msgstr "Leise" @@ -6646,6 +6655,15 @@ msgstr "Support: Löcher in Schicht %d repairieren" msgid "Support: propagate branches at layer %d" msgstr "Support: Verbreiten von Zweigen auf Ebene %d" +#~ msgid "Report" +#~ msgstr "Bericht" + +#~ msgid "Stop" +#~ msgstr "Stop" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Zeitraffer-Wischturm" diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index 3761c8459c..2a3990c010 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -366,6 +366,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Add" + msgid "Notice" msgstr "Notice" @@ -2040,9 +2055,6 @@ msgstr "Allow multiple materials on same plate" msgid "Avoid extrusion calibration region" msgstr "Avoid extrusion calibration region" -msgid "Add" -msgstr "Add" - msgid "Add plate" msgstr "Add Plate" @@ -2487,14 +2499,14 @@ msgstr "" msgid "Printing Progress" msgstr "Printing progress" -msgid "Report" -msgstr "Report" +msgid "Resume" +msgstr "Resume" -msgid "Stop" -msgstr "Stop" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2532,9 +2544,6 @@ msgstr "Printing list" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Resume" - msgid "Silent" msgstr "Silent" @@ -6495,6 +6504,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Report" +#~ msgstr "Report" + +#~ msgid "Stop" +#~ msgstr "Stop" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse Wipe Tower" diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index b83e1fbf8d..b0e1d8c2f3 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -366,6 +366,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Añadir" + msgid "Notice" msgstr "Date cuenta" @@ -2077,9 +2092,6 @@ msgstr "Permitir varios materiales en la misma placa" msgid "Avoid extrusion calibration region" msgstr "Evitar la zona de calibración del extrusor" -msgid "Add" -msgstr "Añadir" - msgid "Add plate" msgstr "Añadir placa" @@ -2524,14 +2536,14 @@ msgstr "" msgid "Printing Progress" msgstr "Progreso de impresión" -msgid "Report" -msgstr "Informe" +msgid "Resume" +msgstr "Reanudar" -msgid "Stop" -msgstr "Detener" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2569,9 +2581,6 @@ msgstr "Imprimiendo Lista" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Reanudar" - msgid "Silent" msgstr "Silencio" @@ -6630,6 +6639,15 @@ msgstr "Soporte: arreglar huecos en la capa %d" msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" +#~ msgid "Report" +#~ msgstr "Informe" + +#~ msgid "Stop" +#~ msgstr "Detener" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse Torre de limpieza" diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index bcdc0eed37..eda3a705e0 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -365,6 +365,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Ajouter" + msgid "Notice" msgstr "Remarque" @@ -2045,9 +2060,6 @@ msgstr "Autoriser plusieurs matériaux sur la même plaque" msgid "Avoid extrusion calibration region" msgstr "Éviter la région d'étalonnage de l'extrusion" -msgid "Add" -msgstr "Ajouter" - msgid "Add plate" msgstr "Ajouter une assiette" @@ -2493,14 +2505,14 @@ msgstr "" msgid "Printing Progress" msgstr "Progression de l'impression" -msgid "Report" -msgstr "Signaler" +msgid "Resume" +msgstr "Résumer" -msgid "Stop" -msgstr "Arrêt" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2538,9 +2550,6 @@ msgstr "Liste d'impression" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Résumer" - msgid "Silent" msgstr "Silencieux" @@ -6599,6 +6608,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Report" +#~ msgstr "Signaler" + +#~ msgid "Stop" +#~ msgstr "Arrêt" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse Wipe Tower" diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index 5b6bd7f026..7958f9088e 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -365,6 +365,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Hozzáadás" + msgid "Notice" msgstr "Megjegyzés" @@ -2068,9 +2083,6 @@ msgstr "Többféle anyag használata egy tálcán" msgid "Avoid extrusion calibration region" msgstr "Extrudáláskalibráció környékének elkerülése" -msgid "Add" -msgstr "Hozzáadás" - msgid "Add plate" msgstr "Tálca hozzáadása" @@ -2524,14 +2536,14 @@ msgstr "" msgid "Printing Progress" msgstr "Nyomtatás folyamata" -msgid "Report" -msgstr "Report" +msgid "Resume" +msgstr "Folytatás" -msgid "Stop" -msgstr "Állj" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2569,9 +2581,6 @@ msgstr "Nyomtatási lista" msgid "Downloading..." msgstr "Letöltés..." -msgid "Resume" -msgstr "Folytatás" - msgid "Silent" msgstr "Csendes" @@ -6590,6 +6599,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Report" +#~ msgstr "Report" + +#~ msgid "Stop" +#~ msgstr "Állj" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse törlő torony" diff --git a/bbl/i18n/list.txt b/bbl/i18n/list.txt index 57ceea33b3..83324e6307 100644 --- a/bbl/i18n/list.txt +++ b/bbl/i18n/list.txt @@ -12,6 +12,8 @@ src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp src/slic3r/GUI/Gizmos/GLGizmoFaceDetector.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp +src/slic3r/GUI/Gizmos/GLGizmoText.cpp +src/slic3r/GUI/Gizmos/GLGizmoText.hpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_Init.cpp diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index c786eed8f1..bf3db009bb 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -365,6 +365,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Toevoegen" + msgid "Notice" msgstr "Let op" @@ -2069,9 +2084,6 @@ msgstr "Sta verschillende materiaalsoorten op hetzelfde printbed toe" msgid "Avoid extrusion calibration region" msgstr "Vermijd het extrusie kalibratie gebied" -msgid "Add" -msgstr "Toevoegen" - msgid "Add plate" msgstr "Printbed toevoegen" @@ -2516,14 +2528,14 @@ msgstr "" msgid "Printing Progress" msgstr "Print voortgang" -msgid "Report" -msgstr "Rapport" +msgid "Resume" +msgstr "Hervatten" -msgid "Stop" -msgstr "Stop" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2561,9 +2573,6 @@ msgstr "Print lijst" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Hervatten" - msgid "Silent" msgstr "Stille" @@ -6648,6 +6657,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Report" +#~ msgstr "Rapport" + +#~ msgid "Stop" +#~ msgstr "Stop" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse Wipe Tower" diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index 4115078d69..ae0662f618 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -364,6 +364,21 @@ msgstr "" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "" + +msgid "Font" +msgstr "" + +msgid "Thickness" +msgstr "" + +msgid "Input text" +msgstr "" + +msgid "Add" +msgstr "Lägg till" + msgid "Notice" msgstr "Iakttag" @@ -2043,9 +2058,6 @@ msgstr "Tillåt multipla material på samma byggplatta" msgid "Avoid extrusion calibration region" msgstr "Undvik kalibrerings området" -msgid "Add" -msgstr "Lägg till" - msgid "Add plate" msgstr "Lägg till byggplata" @@ -2490,14 +2502,14 @@ msgstr "" msgid "Printing Progress" msgstr "Utskriftsförlopp" -msgid "Report" -msgstr "Rapportera" +msgid "Resume" +msgstr "Återuppta" -msgid "Stop" -msgstr "Stopp" +msgid "Abort" +msgstr "" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "" @@ -2535,9 +2547,6 @@ msgstr "Utskrifts Lista" msgid "Downloading..." msgstr "" -msgid "Resume" -msgstr "Återuppta" - msgid "Silent" msgstr "Tyst" @@ -6070,8 +6079,8 @@ msgid "" "interface is Concentric" msgstr "" "Linje mönster för support gränssnittsytan .Standardmönstret för olösligt " -"(material) support gränssnittet är Räta medan standardmönstret för lösligt" -"(material) stödgränssnittet är koncentriskt" +"(material) support gränssnittet är Räta medan standardmönstret för " +"lösligt(material) stödgränssnittet är koncentriskt" msgid "Base pattern spacing" msgstr "Basens mönster mellanrum" @@ -6498,6 +6507,15 @@ msgstr "Support: åtgärda hål vid lager %d" msgid "Support: propagate branches at layer %d" msgstr "Support: föröka grenar vid lager %d" +#~ msgid "Report" +#~ msgstr "Rapportera" + +#~ msgid "Stop" +#~ msgstr "Stopp" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "Timelapse Wipe Tower" diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index fc640a8a3c..cdab56fa2a 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-24 18:21+0800\n" +"POT-Creation-Date: 2022-08-25 15:20+0800\n" "PO-Revision-Date: 2022-08-07 21:57+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -366,6 +366,21 @@ msgstr "推出Z缝绘制" msgid "Paint-on seam editing" msgstr "" +msgid "Text shape" +msgstr "文本形状" + +msgid "Font" +msgstr "字体" + +msgid "Thickness" +msgstr "厚度" + +msgid "Input text" +msgstr "输入文本" + +msgid "Add" +msgstr "添加" + msgid "Notice" msgstr "通知" @@ -1988,9 +2003,6 @@ msgstr "允许同一盘中包含多种材料" msgid "Avoid extrusion calibration region" msgstr "避开挤出标定区域" -msgid "Add" -msgstr "添加" - msgid "Add plate" msgstr "添加新盘" @@ -2441,14 +2453,14 @@ msgstr "录像" msgid "Printing Progress" msgstr "打印进度" -msgid "Report" -msgstr "报告" +msgid "Resume" +msgstr "继续" -msgid "Stop" -msgstr "停止" +msgid "Abort" +msgstr "终止" -msgid "0%" -msgstr "0%" +msgid "0" +msgstr "" msgid "Clean" msgstr "清除" @@ -2486,9 +2498,6 @@ msgstr "项目切片" msgid "Downloading..." msgstr "下载中..." -msgid "Resume" -msgstr "继续" - msgid "Silent" msgstr "静音" @@ -6236,6 +6245,15 @@ msgstr "支撑:正在修补层%d的空洞" msgid "Support: propagate branches at layer %d" msgstr "支撑:正在生长层%d的树枝" +#~ msgid "Report" +#~ msgstr "报告" + +#~ msgid "Stop" +#~ msgstr "停止" + +#~ msgid "0%" +#~ msgstr "0%" + #~ msgid "Timelapse Wipe Tower" #~ msgstr "延时摄影擦料塔" @@ -7409,9 +7427,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ msgid "Unable to get printer status" #~ msgstr "无法获取打印机状态" -#~ msgid "Abort" -#~ msgstr "终止" - #~ msgid "Tip: Click the button to edit your filament" #~ msgstr "提示:点击此按钮以编辑耗材丝" diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index 5f038197db5d9da439e3e7bfeb3014a092e0a2f2..b602b08a03b6e6324a5e0837257c410c5cc66888 100644 GIT binary patch delta 36409 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 Y)@$Qhvm!KBJgb%7 delta 36529 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 E0Q==xWdHyG diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index d28171d4d9eb5707bfbdfe031bc0dad55d06d5ed..04d7b1f0f1b4d7aac3738c4eb7c87af132ad2dc2 100644 GIT binary patch delta 36246 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 OQL1zNZ4`K0`2PSAzkL}1 delta 36364 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 diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index 6b644d1339ee9ff956b971248154e641d82a6fb7..98687b277efc15b9153173ebb9bd5e6548c73d16 100644 GIT binary patch delta 36409 zcmZAA1$-4p!|(A;LU0eRAwUQgf#85-On=4#2oL z1VeBvR>Hkl2xCogoFELx)Yu*4<9JMqb5I@KhAHp>s>4??F-D=vy~bFy@5GzxI0;Gc zK{f1$svtLdV*zV1R70g~Ji=NBHPS|?k+#Da*a6jnu9yr*+5Gt!Onf2Mq{$Z2eXx3Do5nq@jL8&z%zY5*s#SFI0F z&%d6<{A=_5B%vk-&NdAW!xY4qp!UEn)EXba06dNA=zCN}-%ulsH^*_xV@CADcBuUE z7=rV$8lFSVRC?E3^I$eq!6H}%E1`Nm7qt{Ctea6C*@v33lc;i+Y&;5!6Muq5(0`uU zBP~$nC!>~p4r)nVD+#FK?Ka^!W+r|av*RZl&otl6Oc_*%TA_A%SJX&)VJaMg>fmft z$Cje@$R?Y91hxCm;})I&p9Hikw=6K{@+fM}|3Ve~4^?5%Leo$Y980_mD*Xbc!P}S- z|3yuGir-8J3nA||r#Nb$Wl$Zhjp=p%yAV(ZCZIOWLL7p}P!*P1nT}q??!+rBXIXGB4#VIToFLqa+6#qNGXI*Yk_6OXYgCUT zQJZ8M#>6F<0au}R`3cn2-^P^q1U02UZGNg%=Je!3)liBa4u>9r)>T$)Br!D zX3}T9zA|0@X;BH(H=M2Gi>N_amSwnSpw69%^b=V|?6hJ!11Ophg;HeT0dKzr>{Y z9o4}^Tg?kC7iJ}19#wA_jEe&>hR**;0_kxaR=`!Lk-W3%3AQ;-CgM4t4JpWGSzcPWMB&5Kxs3lm8>exmbKZ1#gUqV&z z09C;g)Ka{{1o#2N(Q}u1<(5V*VR_Vy*0%9(s7*R}7xSNuz$g-QE;nEtyo8#G+o&~r zjOy4sY>yth&CGN}HP91NVI*o(&cyOWvEOuE-}qy!cxUJi5MDAaSCQ5`&Hy@c8`QK%VkeXxNawm{5%ra~Xo z_kgsh%~S%1VlC8CT*C?Y1hpx9?KchWMUC(zs(}lrj@-an_yV=3!Vb7+#^sbJP?3aY zsEoB3h+9#|<^k5g*ayuLG{j@XJD{dK=#V{LSeSSh)YPs)(xlcI^n%gR@X;y#%${Hlg;wcFc~4F%7;zZNivG%%+Qv8hKUJ64pl5(;8L27Z%0I z*b>iTS=x7kkFsMuc++7y;sY37H9UfyG3jwWS}_vU!N@<%n`}I)Lx)f!eU2K)H*10u zrUMyK9SuY+MW{_Lhc0E*A)w9G2({MTP*XM%{c%3V#3MHU6lNqIWz+w|;>5jAnpb#f z)X2M`o^xRw9EGuP3i{!klgxi<0((i&lsTu&1Bp>VaLT zJ#fUP-$5)67^Xs$3=1$Q#*s2Mi=W(8kwb7TS0A67b;s-@}^3 zA6z!Sa>;*%0>p=7CR~M@q0`8#!g*uk+ph960`Xg@C7FHAjBqh(>6W89ycV^$cG&oN zbZLY)2_(b!7>cp4o1PcLgv2Z1Hf(^oFwqTDVNpyc!O$wWbqn`czc8-_Z+K zqXx1b)!}_Me&HtbAD@IM5<21w9D;Rkne=O@HT>K97S*Ajs0L%*Hpa(9#FLqpL@0yR<*;tNvl#TmGnLX1PE0TT~ zH6!u=GJC-n(-O~)DXG5TH?g_O~V03ms5;@FBvsZ74^gnI2!f93e?mdK<(o5sD^K% zHraC<|Bf1Af(NFaEU1weM3t+BX|N5dLqjpX&i`xznu=wZ8+T&?e1h6E8UHp72BOx! z1Zs)OS!>};;>}U@d_v7Y{D2N5ne@1*S9E&RX~~Z2Xb@@!ilSz?s!eZ!E^WT9He()YiZ`Ivem80) zhiv+JRKqt>yEh6|@l#a!uQuI-Ew2v8LzVYIl~0AL-w!p=+>e?6Yy^stP!LM4~Dfhg#d2*3GEnb`CS+W6XkapPKX_)S8z^4X6ofuXK9K{3~NP37V?8 zs1dEeytoVV;Y*wE_sl#PgoQ{ii?J}$ItDeeDX6JljH-VdYG9{P?L0tj;@2($>bdjW zJdheyFgI$XWl&QXfpM@lYEw2v?S(F=28W^=oQmqua*T`X(HnQ68a`k>gMq|dHwbtU zi1orW5D()LPmZ4Gi>fd)s==J7DJ+iaNM+QnZ;0w(H;jn`uo(_T)&BrBvyV{&{ES;^ z-%0$^?Dk`*ivB{4=z}%JD-%y<&4OCHP-`V?3u}MWo|%FmTzW6pR5n z{}BZAK!583>p|-S>_)!#Yct|L){)j3)}^RpyTy9W`qb+6#{8U+0TWTKnbi63W)mW< zQ?NGai&1O$FKSA^qo&yFt%)ZHvNl%_&e9E>_0VVDsc+4vyTshEQr@P2e@%I^`- zyZR%lA)j|)HHns16Q6?U@m%O*k22<5EnG>rn0dff~SVOo)%(G5^}# zA8f)Gj7L27d-IJa87ea<-zb?oT} z=3hPX{AkW&d{ocVqtg9RQyh%yNGK-8LYNFIVgYQ5IwiBQ1TMk^_!p|=o3qkGDP}CaML-n*BX2qeXDPDm)Qk*5?U@nQspzZo|C=pv5Vb}p&<8J}HrFF;fl0rc4)sQzmO&Vb^KASA`V)VJ zRWaEQGXpJA0~mqoz$_bIsyOXC+X-kSM^ICI8P$QusHy&n`7!Q)X48dZM&fl)<@%sT zI1aUWr(qVHkD9?lsQOQ!I&j0LKSKA<|1WLEJL^wWN89e=`3XK`O_?osbLlLaBy&pf;w(mZ;lMvpH!o9vBq~12%VjE_MS>b!YYXf~HEb-CaH8W03lb;;5DXU;^9ENpq6RKS7SRU?IdV17SxbhLu zS~o@Ys0V5U15qOzkLvME)Ko7)jcf~QhW4OFb^^=bZPbiqifuYl9CbWeEn2~s9j79rSDFP~33A14%?2aQ)Q~WQg0k1?J?oYFLn1XmFRC+<19)@X% z*Fi05cl;Yi;4o~*kx++UU?%*AE>(~|i8)qTQSlt8O_&E$Vjxcs5K$ zydbK>)oprx)bkxsGuH?8{upla7olcm6Ka4*eeC%^Z43N`smXX_3&c%kPDK*b18Gnr z$%LAb5E~Ce9lHn&!jabPsAKrZ>XY0oT{!CFzMjh_3_?xybad~2R0Er>hfob)K)o0K zLXG^nO@D{lL!K#2M}1KFX;6E@4>ho2sORgVmdw?HfFA6HdMA%Wbzl{$;06rG-B zp^j1Blx8X$p=PEls>6Ly?~#$HJunG9aSmz;=cDRfjGPjevzCC?>JVy#=S+rk7q!dZ z+4MN6%nYSQyMS6mb3$5=c%$Flr{s zqRww!RF6BM8tRU!$b}m5NK{1=P$QaaZMNwrP@C>g)Dk~JZOR|${{Ejjjd_J; zN4^p{#jJg8`ey5KREKV&MjVCiV~3i#@2HC7r!_MWfEsZr)RJ^W?TKFKg@e$gH&G-3 zRj?Q}qD`m~??t=uI;i|U7=go49le6;$YY!TIvwX< zQ~I3*>6zYC7#r0gKU7EZ*z_>eR5q~j&ZxaG8a2{os7-hltKx0cQsv0t;r^{z2&x19 zQRRkZ;QVWoO(j87y9%@8dQ^w5qmIp8>nBvXBpFQwDNsw16;(b2HDd)(U)jQKydSFE zFw_!HvhkBH0$P(RsLgi=HS$+B{sWs3Pv~o=v@@#115mqtDr)oXM?HTM-FpPp@hF@A z8OsxolgY#Vk6CJT6)*&9FN0&Zv$a#6>#)7YXDdp<5OYry(xHy!Zw6#UgiB5BFa#g`<13qCR{U zqmF4Re=`%gQ5DxmjjRLaz>$~_H=*{zW9uvIr}O`Tz#1|-XEQxc6=0?=0|t>^5VgD8 zVIa;zb@(`{!FQ<5rwa-wSD@HD}88e_h*Ylw-)mjViyu#&@FLA5o~|`ZX8lUp@89ZPqdr zwYe&wHdS3~XDmv5xQ!pe;l!_@8g3Bi;r_9^KWeRaqw0B$T7nS7 zKAqZX3BXK_izSMt{`e)+pxZ#L+!0vCEV#QX9a=EB)r5HScqD+c^073 zkK#N`9Bw|(*P_0tTtF?+JJe>1QPRWxuV-?hp6`P-aUtq`@)pA|Ybi5hZLp`#|55^a z1EwtP;rL=jR1Z6%M!X*b@B@Zn`ZDH))C9K>Ux?ZZ5oJyKD%382f>+V2oQM8i+qsE{ zaA|oDXDPO-KwRfPHVae&PhoM4Q^}0HJSsjDFW?pY2bWbg9h_dp!zn`i5vrj~Rn3}z zLhbr))y!u>B$gsR615bkP#;o>A~^s0ut-h76EmPbOfsQfJh@N}=R@rU@9O55=0Ht( z2~>Jpn?3|yd&cCMWx-IY?)o_d&=6ohVz2noNj$a6> zqH?G=Wj!13ggUl^ZTeW$D|R7jkE}t>$UgMOv#5Ihtik!$x&NC4HT)J!;#btv7OQDS z(jQ|IAC7wSjYBoC%*HpP-V<gj%GZ2Y-b&f`T6`O_HRIAbb%0(^B57g2nsbh|zKb9jt0JS7Xj4tO20Tq0V zs`wkKqPTU0O0Q9yIYE6hW7$!sDGzE%ilLq_W%Dax zh|Yg40&)~aVax{RRrv_@V2Ori1Z7Zb-T*a2O;Iz@8P(wds18p-ZQkEeZ^9^>?%l}j zm6WLR!RS8!WeEh4PziM|2V!${VQIXNP0+uwhx;ESjl?X(-=kh!shXHqYCY7Rn2CDz zu0oCYJF4R`nwk#BK@BWLQ_jCORXP&X^UT(Ks2-L>9k<4)^V%2Hz!+4;^HCKoMLoY7 zwbpxW{zcSYxPe-t@2K)=nwit$+stJW!bwmCjckjaNc7&;-?y&Ztc`1l8a?)OW{q zs0OcFqfkrv$odTRihqTw{|&0V>!VHhZuMwkGGe06eFDsaDQtQX)QC#rIIM>1$So{~ zFHr*uZE5N$hdP#3Q8N&MT9Q`Cz+BE40@|&!u@qiL^)zKGGx9X3HOr3baS&<*`BBHK z2x>~pqF%vuP^Y6OY5+sg567Y22kTKCIfhAf?rsp!W_y8Z$fLCxQ7qIZOO2{16RKPe zR0qRQQ(OwwU^!GrYU2-VjWw`k8#9m{r~w?uDtH#F>D;GjYrf-kz%b(LP#+erP*e8> zBk&vQ7*=j))_g7M*j__*BxZXv^>MK<@$^_7>!D_L4d%svP3?TD>#6?Vl0oy?1BFlHit1Z(3%)XWs_Y&u#THQ=gP78`fw z{A)KaBSCJ)40r&0;$0k$)w`GxTt$5tJxA^G52%mdSY6GG_@ZVc0JX^qqGql#>P6PX zruRc_#tAM0nt`R(&8P|vqAI?CTC1n%k1@J=IKG$@HRYA9wXIE1Q`;7^Vkgw8n1=e) z+=%W^Thz}7u5Sc-5a`w2^z;elBK`$c(7%VVh&9668gr9B06X9+8~5pHIv9@HBP~z^ z>VUy2kLvhZWMD358v#wtMeK&pF$f#>GU?+njQDcYZhnk99R+)vJyIGqQ;o1Q_C~Go z->4;ehni~dK4u{4P)ien33dL<5YR5Ih1wJiQOD(X48_N&k)-WwUcs4Bry~?KvKpv0 zZh@Jx7iPyfHhu)PryisBn0G%jfTWm2=RX61EEtS>!PG`geMiiQk*FD3jFoW@{(-Uj zn~|SKEyWYeiOC0;A4tMc4bMew+FiH?kD%J=JdpFR28I*RnlD9Fa1k{l-%(TOHOO=% z1*#+YZ9D=s@@`lLhv6VRi8_X52AeN3ZLvJ@!}uG<9b$f1T|I>JuPMyTF;q|UqDHQ- z<+3emHxELs;ZRh$IjA+j_<}5#2XGZe`n-5%)@y?eC03- zjwLX8xQ88geKd|XB#+jMP zfGVF8RjwrZV?)%^3`6a?l_u_TP7qKxv&873b+@C+IX=Ersus;4GqES zI1}|=c!JtH@2#;Xn$Q3AxRCTP)G>_0%sT%s2&ke&lg#h;{82Me8@0AwF#u zK@WC7?S&zzO|lq6@DOSjzeBCvSJZnU)@<{_ijR$m7eswp&O|@lj9R)YsP6+m&=+gY zF`KcMUL<-o&Lu&+bt!5u?8AZ{oLf}G@#mQlBtw(b!$<3Wi!^pJ*ds2X$_V>EZ522Re zJn9%eN6pwz9FD1eGc&aSsn6xCBA~V2gW9#XupDMxWZnmzQM+|KY6h;Lrur7D!N-^# zKcMzdhQ+47Jg5%WKn<`Js$+vN5a(cQo&OUA>XLBLW&|uTzXzy`YM=*dcSoW+IvwNU zR@6)!K<(}mHhu$j%811pr$Sm z8)G?}z8rmtZ^UMJ5!I29<>rl97`1nLpz;@@I`|*H!bB^~()>VIHWHGqG%t$6sF969 zP33g!O4O(0UR1}bt};_v54D@Sp=N3_YRwm-_Rtp8huUt;kJnJACBbTwAGDhDUyX$P zB&gz1s0yZ7m!me{9@Gr{g-fv58m3NhtnR_{Yt2Z^Ulz3_ z)lhHBE~xy0s693r^)Q7}#)Cd!9HF00m$V;OtZirgL0jTE|ppMfH z)Dk{Ijqo*UM$>FF4F#c&Z8_9{Y8qWm69O7pdsGj5pn5zK)$m-@1DkAoug(7xHIm1u zz3?4%JZo+@o2@4{Aif5*$-Q@&&w|`oi+CM$fBvr}ptZVydXstYG(SiLpq6A72H-=~ zaZIqweBJg(#cNqRTSsAb(ifrj$SKswFQ7l(M$MGxZqjxB;}g(YrBVWBMNM4@>dRtT z)G?}!T7n)ne=2S!z5+wB-X0HU08T_LQS80uxg3~>csbOJ4M1OVewjLr{BWHI~J*sE+#_ zH=8&sz9n7=b7RgwOn!Y-$2z(QsG-TIDVmL%+6|Z<527Bti(12YC(JG{j`|%>6V#f{ zMNR!i)D#~?ZL%xYDAW=?MU{Jvs^9gKfI5)=q5v`Bv&=S)EvLBcg6J0dr@}WlB40m8V)aK53$t-aJYgNps^WU0) z&i_d3G<3f}P{-&Lsw0n3Gv)QC`GS%jwKoc)-Vbds2#2FOv=vqFP1KA%M!i2iqGmYR zW&87gC;?^ELN(aa#wVj@WCLmmj-W>J1hprAqB@rNig^JAVoBmHQ8TjwwFh>gX5<`d ziLRoK^`k4C|NR6$lb~a?cXFJ8I)k z(EX~tZaNenwW%|pPJ`cd&cBXbb`sR1Fl1LcHBlp|hsy7OnzErbeF=sW--?=nkEkj3 zxnXvIbz#4+;NMY0rlt#^TEf)cONOVJe%Jo4#I26^xaj1%?q8?m~n$k^}7ms62 z{DNAVDmOix%h(zVVxe2+`5vg}hhh*;Ma{VDFab^3L)05C&TVsi@}bgOpn5tQwdPCF z7q_7{-Bp|Z4pq+Uj`_Nt5z7#7hnmR^sLgxGrr$zl#O3(jH6zY}TGPC!k(9GGMPK55 zQ5~3rnt|1*H9vsb?KjaMf1+N|{!ymhJg5#7K`mhw)RJ|^OgjJLZNhrggJ)0=T(>?$ zjr1Gp!Bl^lk>yA2l|iW8JruQsW6=|5pq6qrx|a_1-q?g1;3@Q>edj&_HT)5^<{tOV zuhC+ocI!w~2gagaL@V$bUP6t0)qQh(&!cAWmDS^c*}TcExvZtE4bY|C-Q6aP!ED4A zVKAOReM)^sy;9TtZT3h73?<$heQ}NTjP<28!9(+VzChF_US-{B{o^6$Ul~_P(5Ki# z>sM>yM<(4LOOam`HNr^i4C^ZEK5Rq&Mbu0dcx+Bran$iHjarhrsF`i{*kz`)6$#oL zlTlN;5p_JS+VsyDKs?nG^G`CuQ8N>Xnwe#&iZ7uCbPIJFo>{%0ns_GECN75RU{x0Z zZMNE|4zxw>h0&-6rlU5?PMdxK)xd4k=6i1QU!yiztY_vkAtibfFN69FsDyuGJ=BsH zeQv%_xN6$KDC=(POVo%nzA&4sJo*!Fi<+THsE%$!E!`p18}1sagZEHV{2DdV_o&_f z74=!;^V0nzL6+E_nL^TxSm3c5RYAu6M$E+mg!7`|s>WAv!6x7n} zKz)V#8%yF_EQO)}s2$EJ9ksV<^A@Br1(k5~y~yf(jJ zj6jwD2el`@qFz{DZ_Es&!db*aFpbXtNdo!tZ>*1L-kPcIh1x9hQERpi)$mc&2(F<< zn&zF^J7K69X@=@}OVo^XK$Rb6h>ewCUpk_AiNAp}VEJnQGN6x>#!So>^1ec*^;2IXi;D61C zJENvL619mYqdK$-wIsVyp9N=7Z_3B0_k`Cc^G`QYqGqBxYEQIBwKwY%=U;1dk_7ee zlFhh{N>A|FbRY$46JiG3Xb=-xSa1y#dzEPX@xH7bc zpHT%fd@&W}My+`v)CeOm7+auTOw&;f?ZCWv0o5_DujZ8;7d0a}tz}UiYL0rYE&8J? zlE9w?R$?C<@C`jUCg_FjewYV3{bwo|iQ0tYQE#~4P*c6f=AXCuS5PB%EzCnGAdh-9=OMn_l3e*gRphgmAEsNT`l~K?2LoLa0Y>qRq zBL0h`G2Fw`{gcxv^war|;pyrArjiY{={ln-T!UTk8v0@xFHiT9w80|82ctICZglS* z)QsFlb>tK3#pW5q(|sxup#~I$8fZbxtn*)yfTpAi>I=pWER9#NFQ)ePbpI9YRMe|8 zModrlT4zR8lmp9SQJX#zbu1@X7vN6f>o5gN+A5Z(bBp-E*q)9{71W7ide#nG5butf zx+|z%pFggr`!5NMeOotj#KGc*KL%mQcp+;C2bzVDS8=Qts@C*84y`-jm zf9pupb5l|EE=MihdejUbM=g!(DFIE@d(@i6@iA+Y8TF#bk6MCisB+CwySOiEWRa+b zW}`OmTGULOvR+1Y;4bR+Ox)$9OXlg6Bq0yx!QPk`SK0U-8&8zn9HUYgLVios zrkjb`a0{y8Td0N}qB`~!)zO40%nW5k_flapo&O>Pv>PK(BWsCT(@vWSJLvrtR2 z1vQliP&0H5Rqi!vq)AhnB}{|OhzD55VjbeoQ8OK$iant7-;jVh&>YpXUZ}Mhf}S`Q zRq+JWxt@U;aT)4Z9Yc-yDr$4Su=xp6n;FQBDj$wIJiPI-&2z!1nJS2y*$A6nAN48NJT2#674{)P zYc(2G!F*KuLDZ(Yi24lp$L7aLXVx?~s-n_Z3F~83T#j0@52)u8r#DL)h^jXqYNpDj z=lp9b+L55C8G`w6C5GW$)RJV#U`7yt+8ZILas^Q%?1JjZC{%s(QKx1zYG#h2UO;zj z{x?(ylDIOOH(y>P&TxD!?3UDT`gADoX>{LLHe z8I~X(H=7wiMbr${Kuv8Etbs$Z3SL2V%rC&x{STG$q5J3mr3AF5J5eLOjM{YfQ5|@J zZSgy5OKbkD{4FG6540j=d3 z)bV?a#W8MfPxrrku7G+W4M%OZNw^7T;&Ch+Xl5XOkZCv>s$+RkAIq&U6lb7b?Wa(u z=0_0cUu%~<*o-(E>Rlaz8hLq}ULSS5TB6GLLrwiS)QjshYEO8Fm=0z{&7i-H2U`nZ z4$_OG_FVfAm)VWoNl*i$Q4KG^{x1gh zbgYhRP)qzB*I~;1_WU0s5JAEdEQ$pSn1a1gBb$P`aWU%EdLH$vPG8V`IEA3fg`#$U zY19%$pf*_xR0ktbQ$7zhv%ljQo&R)&Jl%hbwH#NIQMa&p6?+u%bpO+<9HyaPtaHSIX0wNPcmwglF+6rYdb_><*SC{t2~&#mku8-VVcw zFTfCt!d}#yxGdiVT?9s!Ge2k~uHfnZIo*Y`D0md>V}pw3JKr{JNIY#Nvt)g-F7cB% z0DUW)(=ZS!x+`fE4MM~2a?68 zkvziLm@UHmByU? z*Yb28Vk>-x6>59B{})j6*70;s63<)L)A@|wQ62wS&#Zmf`ewJ!Ky~ynUdMn2o=yQ~ z+G%KxXTe5h3FkC&v36uUBte_zXJfN_XEZS{k`<__T#v0VUQ_d8>4y5O7=WsGIO^3s z67?ZA9re@mV$>UNSu^vQaRbW}|AP9sFX?J-M%)i|eCDH$&q~xW+l`s<9O`59HL79n z7UsQ?5Ouurp+4oRpQT0y70GYguee`%V)A+BEx6 zYjO&;b`MZ*KBt|T(w3;D*knD1TB;kUj=n~{iapw!jwC_7^Zl_1hNIpWgHbbg6}o!*Q=v9xJ=DkPaMX+}Mvd?wYSZ0D?Tvfr zh4H(2x_{%D81>;Z3`gK4?1Oc>n}MD~yiv)cwTFCddL`86t%2jQDJIkTe?g!EI{i$~ zE21iDg=}j6I{@<;(HVn@PeGmY!&m|@VL43F-;}S9TI+_WfptZ7s5h!!7pfzp(Ea)QnupCwKY1Aw87Usf7s3}Z3z${fDYK<$S-e@gQ4Glmw9Eo}}&OkM^81v(L)J#4^ z&G3@}oPRy=f&{I}Pt=HG(ao+ZVK3!HU)5EB>n<&JCH%LEy8le7;c-o-m8Lvj)|OS8 zA8WUQIKOCj`tj^$%0z1Y=aArI9~`HWTxGc5@<3)(~j2LWa>Igfh{KJq$k{m!p(@+pv(lyT%qDKn4ZdK;5Zyk{wTurxfgNo z=b1b_tE(*erFmu<@f4&#A-t749d}vs-T(KW^dT{jI~9daQYiZRk8mj>Td6dytx$PY zc=!X>rc)JuDgTW!nVbhx$4=9eXQS1o-=}q?^3WE zh2G#S?y=;>p`x_hD{1HkWf~Fwojdxl$Wot`lEp!=jnZU(RzcZKHLlmoLW7d-4a9uB#+z#Z6Fux}2pvIK_@2I=u`P zWaGZT!`ZPR`SH0+Q#LlYFX2GjVDvK+N#pB-6GQ`tY-4}nk>~55Oi^*pLk zIf)O6wB*6ln45~1Q)oKr2W;UHR6LY$3pGmm@n0H$L{cL1S8&&!et)>n^f$v}xN=e3 zTWagftt%8OQbN~ugOi$gYig@XZDUBA#$A-~AdE>~d@Mq%>$oRy|HB1^N@N$~}m19PXE-PoRblRIaNX4VB~8^*4D@7>{x> zNQ+_1cr&0#@^p2et{W!k93s6J-|L)9WWM5o4Llf^JD6M7b#5;^E9J@eCOtP5=sH2= z%eV^>ZbDih<&sj*9$ZAZPS}Gx8_(sY%sKo{`J=W|s$&^xjGqb!Y$9Vb;q-)Wa`)ol z-NcXJSmMK}ye6h0{_7P&JUlA`x{BITDYQjB^@@FZViL|`L_jCVA`E``L zgSkjAMVSG_R}j~4D@UP^7wvZ>L)Uf^^HWK3dZlXx=^rSR-{!X`Zwz;L?xLjSpwjA; z{b=(q^UOW+LWuK&hWkHxR6X6Pw+HonA?+RN8cNz4;=MKg_av4kqH78j=n5d7jyngH zEhjAw?!}y>wKYYYGPbOujks5n_m;F-s4Jt*e{JJWsbi82uQEj({dYaiO$ttCBt5w2 z(3#&T^e<@#xI=9vDyM5KdHhQiX91Pz@*@8%;mtfZ6cb^7Ze4AtuLNbg6MsgYezZAD zID)hzwv1~igDlTpA2CnJ#BE1*?(Jp9gg%!Y{a)f>TJ}V0${r<|nq+po~9v4f6L;E;bD$ z#R9~yQ)esUPw)n5k<|4cW!n<|^=e@DKVR%gP;oGoj=_Dl&`|3(%GDt66nS&-AF#5VlBh`sKi%!6tl<9`a$&0=okT#n7$})hD(TV8FL@)MJumtM*g!w4+ znKb>do|xO0a6_A~GJo1|HOeLYKLb$yZ5sQNTi0Y;_9Ec~)N_e@_W$Z~IVq_moXoVC zh{}djAPJVEf*AOmyA59>zaevDK}T=x-5}26uv-#zf8U}n2LLHk0Q^PGO1{=JMk3U zy4rECAg?{oeI=ZOGU>Sa2Zhdf?q9D@)VqbUx(*VaM*d*x3nJ`VOa-e5jHW;b!hOj+ ztkF?8FYzQa*nqTLr2Tp=v|N{_l^kq#fWnUG)ghq|&i=hPF{hN794 zOW2e0?oU0QDG<|!Jb17U3BUc)pen6J1-c&EMzT`rQJZ#xXJQa9hZ)F^;@LWc|L+yU zKCARc(F>J((2mECfE)%BR%>G zC2*Pi5tQ#_^Jm)fbKOJ!lh_t=yO5ima6?*1h?%J6PoAD_OBbcg5L#PLJU6#5<#c%> zU$C73o6L+_~&XTH3O;Nb{z$Zp7#FkUoxz;%3ry733akpJ`{)uHgpmr{qQP+%!G3gg|X7 z+F}dep%X8;v)U0~w;tx9wv;Jk%T3~$gFG9X3i+4(PHV!tGV<(tp5d<@oQd4cNxwyY zal&y3pR)B0B3vkpKfG+hZ#afZ+maS&(~?kOKkhmzOj=_qilm|v(>J?(TuKaX%rBu|#R*->kIOR&(#`6(A$vsZb z*#?&o52E}}p5IEjzJ!>X+IZ24P+@6%96cf~9sm3AXsg*%9QC*?l#*ayN1DC@rT29B%N?UjXaWirRu zN_Wx7N%H#ekggWwHzsW=x2~R)TWW&tKfnJHu1{y0aA&e<6)4-7y6a<0?qF_LD)oj! zZ>VrQ32m?wX{)1q$iou}PbRMgw-2{2PaJ}Kc=i$Za5^@PXR8s`b=sr~jv=3jM}`rjX~ z?I^D@y4sY7xSf9>RB<%)wbIP>GP%4Z^ z*&()E7oHzax~|itw;{h0VSmy(@l0%NN_uMQx=LOJ@-7m8Kwd8N(}UND=<1DrJTRZi zCsFtw@nJFCA2Q_LbeG}K@mL9Rmr_z6;NJ*0!x`MQXeI)`Qo}9M@A6Da$_?aB&U4Y% zal)@jD^J;O7>j#8<#lZ(t%hBP?!+4r)-*YlcxXA9%N5~@OS~ly{zFAuRo`%{I z-bK2uNj$uha9jJJA8DTm7vP>p*|gjZC?AKL|L?wL{nELZw((MwA5DSSw$M&@8OFbl z1eZ;0YVAScYZRD|y7m)J&3%oI47F)%O_tM&^dj7sd3LXDtQdJ6DSMi-jY*G7esAJ` z6Hde3j82~#2iC>gU!h`u}sr{Dok?kTphHB?;imokCGQ;-*qpD9-mb5PGJZe2e} z3!|Zn+`6Xo>{{}Q+x#o!>vFx}L0yR{c*=&G5?^W?R$g8189W$_Lu{D@w&F{;g!JFJ zN0HZ!cwQR2NcsEJG0k?mxGmqDco*(hrUNc#F%RA0{*4FzBe5^{Htue}bbz{@d88ep zOn%bOaJM0?Di*U1sLU|(*Kx0*>}}iNZ=`=E9)0~wdJh}v?EVMnijeq#LbJKs)0vvw zcd2|K>1k}?aKbOhABehk(@^LyjrSuxg8RJ5cHZDB;)$s%0k zbe*)l*?~pKEJmgAae;mCPutjd;wh+Ph%LXH^l^l@b3d__NAn;$fH~-J0A}J>G5o3 zKgi$2t*Z>_$+_0@rPB56Yy*@#OtO9W4n@ z;SSR;YLoL&LNZ3tt2Go%XDj@hg1WX***nZcneUWs!~LDI=P)&8y~)o{UKnMnlD3uS zCJ=9dH7GaG*0+zml$7a1+AH#&^4uBCe?AiW^1ur+!%){c(sa$?&P)Xrd7u$#1-X;( zU_Ro%litskSJ@6U@PV|X_Sq$r`}GPT?+s;i4Y6hN=odA*K9YF|Z`+L86l_f8w@6Qn zeN@O^|52tGm1pDGC*iMP3Thwo`5Z@!CA=+G87B zNyb_-9`L|I!tt;K4gVzkh%#BZW0HS{csASU0P@ptXCW>6+CZ7;YcPR*l+8w&bM~29 z(U~|?KjdEJfmdXnwUy+i;hDrwqpnq?cO~r4y@$Iu@x62=BNnw~))HS#Juiq?=h;Lw zSekfw$^;YdPd(qsi^YAH^wfGTZq|^jzSCb%F28lf#1CFu7f#JNVkiIir79-dnIVVA hfg(G-+jz|O-npow$B;EU`LCw>r`@?C#PeB&{|8!hJplj! delta 36520 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 NRNKep^p02le*hbcPXzz~ delta 36502 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 ICoK2>0OemZ6?w8(ee`}uPg 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 VfPgjIe@h*hCi(W~MFZ=V`hVk7s8|31 delta 37365 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 X($?$z!mTmmy85TwIySTGXzBk49im8a delta 36515 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 Nb=s0Yj!(WK{|~Y@UdjLf diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index 34e6445ba50562e530eda7f71b0f89384320c195..79bb0cd54f964bd633e171e330da048203865aec 100644 GIT binary patch delta 37965 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 Date: Tue, 16 Aug 2022 14:07:39 +0800 Subject: [PATCH 059/137] NEW:Change flush icon Change-Id: I46240870a04c1cbb4a4e7f1cd842eb3aa19f567b --- src/slic3r/GUI/Plater.cpp | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index bfd38201d7..99243c6175 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -293,7 +293,7 @@ struct Sidebar::priv wxStaticLine* m_staticline2; wxPanel* m_panel_project_title; ScalableButton* m_filament_icon = nullptr; - ScalableButton * m_flushing_volume_btn = nullptr; + Button * m_flushing_volume_btn = nullptr; // BBS printer config StaticBox* m_panel_printer_title = nullptr; @@ -556,11 +556,34 @@ Sidebar::Sidebar(Plater *parent) spliter_2->SetLineColour("#CECECE"); scrolled_sizer->Add(spliter_2, 0, wxEXPAND); + bSizer39->AddStretchSpacer(1); + // BBS // add wiping dialog - p->m_flushing_volume_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "flush_volumes"); - p->m_flushing_volume_btn->SetToolTip(_L("Flushing volumes")); //wiping_dialog_button->SetFont(wxGetApp().normal_font()); + p->m_flushing_volume_btn = new Button(p->m_panel_filament_title, _L("Flushing volumes")); + p->m_flushing_volume_btn->SetFont(Label::Body_10); + p->m_flushing_volume_btn->SetPaddingSize(wxSize(FromDIP(8),FromDIP(3))); + p->m_flushing_volume_btn->SetCornerRadius(FromDIP(8)); + + StateColor flush_bg_col(std::pair(wxColour(219, 253, 231), StateColor::Pressed), + std::pair(wxColour(238, 238, 238), StateColor::Hovered), + std::pair(wxColour(238, 238, 238), StateColor::Normal)); + + StateColor flush_fg_col(std::pair(wxColour(107, 107, 107), StateColor::Pressed), + std::pair(wxColour(107, 107, 107), StateColor::Hovered), + std::pair(wxColour(107, 107, 107), StateColor::Normal)); + + StateColor flush_bd_col(std::pair(wxColour(0, 174, 66), StateColor::Pressed), + std::pair(wxColour(0, 174, 66), StateColor::Hovered), + std::pair(wxColour(172, 172, 172), StateColor::Normal)); + + p->m_flushing_volume_btn->SetBackgroundColor(flush_bg_col); + p->m_flushing_volume_btn->SetBorderColor(flush_bd_col); + p->m_flushing_volume_btn->SetTextColor(flush_fg_col); + p->m_flushing_volume_btn->SetFocus(); + p->m_flushing_volume_btn->SetId(wxID_RESET); + p->m_flushing_volume_btn->Rescale(); p->m_flushing_volume_btn->Bind(wxEVT_BUTTON, ([parent](wxCommandEvent &e) { @@ -590,10 +613,9 @@ Sidebar::Sidebar(Plater *parent) wxPostEvent(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent)); } })); - bSizer39->Add(p->m_flushing_volume_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, em); + bSizer39->Add(p->m_flushing_volume_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(5)); bSizer39->Hide(p->m_flushing_volume_btn); - - bSizer39->AddStretchSpacer(1); + bSizer39->Add(FromDIP(10), 0, 0, 0, 0 ); ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e){ @@ -953,7 +975,7 @@ void Sidebar::msw_rescale() p->m_bpButton_add_filament->msw_rescale(); p->m_bpButton_del_filament->msw_rescale(); p->m_bpButton_set_filament->msw_rescale(); - p->m_flushing_volume_btn->msw_rescale(); + p->m_flushing_volume_btn->Rescale(); //BBS m_bed_type_list->Rescale(); m_bed_type_list->SetMinSize({-1, 3 * wxGetApp().em_unit()}); From 16bbcf6f9731624544eb72bbddc445b239bb7b9f Mon Sep 17 00:00:00 2001 From: "tao.jin" Date: Thu, 18 Aug 2022 12:46:32 +0800 Subject: [PATCH 060/137] NEW:change menu_add_part.svg Change-Id: I5305777efc27d6c0f3761aad68b633ee29ed6e5c --- resources/images/menu_add_part.svg | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/resources/images/menu_add_part.svg b/resources/images/menu_add_part.svg index dd82ff96cc..38b3d44081 100644 --- a/resources/images/menu_add_part.svg +++ b/resources/images/menu_add_part.svg @@ -1,12 +1,5 @@ - - + - - - - - - From 36ca76c2a476019c0e47cad7c1c89bbb5ceaae79 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Wed, 24 Aug 2022 20:14:23 +0800 Subject: [PATCH 061/137] ENH: Auxiliary GUI Change-Id: Iaefd8bb6a2a560f4f2ec8235b21231763d8562fe --- resources/images/placeholder_excel.svg | 28 +--- resources/images/placeholder_pdf.svg | 24 +-- resources/images/placeholder_txt.svg | 30 ++-- src/slic3r/GUI/Auxiliary.cpp | 224 +++++++++++++++++++------ src/slic3r/GUI/Auxiliary.hpp | 16 +- 5 files changed, 215 insertions(+), 107 deletions(-) diff --git a/resources/images/placeholder_excel.svg b/resources/images/placeholder_excel.svg index bbee00a8ba..15b84b4b90 100644 --- a/resources/images/placeholder_excel.svg +++ b/resources/images/placeholder_excel.svg @@ -1,19 +1,9 @@ - - - Layer 1 - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/resources/images/placeholder_pdf.svg b/resources/images/placeholder_pdf.svg index 683ff95642..158444c430 100644 --- a/resources/images/placeholder_pdf.svg +++ b/resources/images/placeholder_pdf.svg @@ -1,15 +1,9 @@ - - - Layer 1 - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/resources/images/placeholder_txt.svg b/resources/images/placeholder_txt.svg index 7c47a9cadc..dcad481d9d 100644 --- a/resources/images/placeholder_txt.svg +++ b/resources/images/placeholder_txt.svg @@ -1,17 +1,13 @@ - - - Layer 1 - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 8115f1d724..c369661fbf 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -17,6 +17,8 @@ #include #include #include +#include +#include #include #include "wxExtensions.hpp" @@ -44,18 +46,17 @@ const std::vector license_list = { AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, AuxiliaryFolderType type, wxWindowID id, const wxPoint &pos, const wxSize &size, long style) { - wxPanel::Create(parent, id, pos, wxSize(FromDIP(300), FromDIP(340)), style); - SetBackgroundColour(AUFILE_GREY300); - wxBoxSizer *sizer_body = new wxBoxSizer(wxVERTICAL); - - SetSize(wxSize(FromDIP(300), FromDIP(340))); - SetMinSize(wxSize(FromDIP(300), FromDIP(340))); - SetMaxSize(wxSize(FromDIP(300), FromDIP(340))); - m_type = type; m_file_path = file_path; m_file_name = file_name; + wxSize panel_size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_PANEL_SIZE : AUFILE_PANEL_SIZE; + wxPanel::Create(parent, id, pos, panel_size, style); + SetBackgroundColour(AUFILE_GREY300); + wxBoxSizer *sizer_body = new wxBoxSizer(wxVERTICAL); + + SetSize(panel_size); + if (m_type == MODEL_PICTURE) { if (m_file_path.empty()) { return; } auto image = new wxImage(encode_path(m_file_path.string().c_str())); @@ -64,19 +65,25 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia auto size = wxSize(0, 0); float proportion = float(image->GetSize().x) / float(image->GetSize().y); if (proportion >= 1) { - size.x = FromDIP(300); - size.y = FromDIP(300) / proportion; + size.x = AUFILE_PICTURES_SIZE.x; + size.y = AUFILE_PICTURES_SIZE.x / proportion; } else { - size.y = FromDIP(300); - size.x = FromDIP(300) * proportion; + size.y = AUFILE_PICTURES_SIZE.y; + size.x = AUFILE_PICTURES_SIZE.y * proportion; } image->Rescale(size.x, size.y); m_file_bitmap = wxBitmap(*image); } else { +<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 300); m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 300); m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 300); +======= + m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); + m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); + m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); +>>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) if (m_type == OTHERS) {m_file_bitmap = m_bitmap_txt;} if (m_type == BILL_OF_MATERIALS) { @@ -90,6 +97,7 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia if (m_type == ASSEMBLY_GUIDE) {m_file_bitmap = m_bitmap_pdf;} } + m_add_file = _L("Add File"); cover_text_left = _L("Set as cover"); cover_text_right = _L("Rename"); cover_text_cover = _L("Cover"); @@ -98,15 +106,15 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia m_file_edit_mask = ScalableBitmap(this, "auxiliary_edit_mask", 43); m_file_delete = ScalableBitmap(this, "auxiliary_delete", 28); - auto m_text_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(300), FromDIP(40)), wxTAB_TRAVERSAL); + auto m_text_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(panel_size.x, AUFILE_TEXT_HEIGHT), wxTAB_TRAVERSAL); m_text_panel->SetBackgroundColour(AUFILE_GREY300); wxBoxSizer *m_text_sizer = new wxBoxSizer(wxVERTICAL); - m_text_name = new wxStaticText(m_text_panel, wxID_ANY, m_file_name, wxDefaultPosition, wxSize(FromDIP(300), FromDIP(20)), 0); - m_text_name->Wrap(FromDIP(290)); + m_text_name = new wxStaticText(m_text_panel, wxID_ANY, m_file_name, wxDefaultPosition, wxSize(panel_size.x, -1), wxST_ELLIPSIZE_END); + m_text_name->Wrap(panel_size.x - FromDIP(10)); m_text_name->SetFont(::Label::Body_14); - m_input_name = new ::TextInput(m_text_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(300), FromDIP(35)), wxTE_PROCESS_ENTER); + m_input_name = new ::TextInput(m_text_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(panel_size.x, FromDIP(35)), wxTE_PROCESS_ENTER); m_input_name->GetTextCtrl()->SetFont(::Label::Body_13); m_input_name->SetFont(::Label::Body_14); m_input_name->Hide(); @@ -117,7 +125,7 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia m_text_panel->SetSizer(m_text_sizer); m_text_panel->Layout(); - sizer_body->Add(0, 0, 0, wxTOP, FromDIP(300)); + sizer_body->Add(0, 0, 0, wxTOP, panel_size.y - AUFILE_TEXT_HEIGHT); sizer_body->Add(m_text_panel, 0, wxALIGN_CENTER, 0); SetSizer(sizer_body); @@ -149,12 +157,26 @@ void AuFile::exit_rename_mode() void AuFile::OnPaint(wxPaintEvent &event) { - //wxPaintDC dc(this); - //render(dc); - wxBufferedPaintDC dc(this); - PrepareDC(dc); + wxPaintDC dc(this); +#ifdef __WXMSW__ + wxSize size = GetSize(); + wxMemoryDC memdc; + wxBitmap bmp(size.x, size.y); + memdc.SelectObject(bmp); + memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 }); + + { + wxGCDC dc2(memdc); + PaintBackground(dc2); + PaintForeground(dc2); + } + + memdc.SelectObject(wxNullBitmap); + dc.DrawBitmap(bmp, 0, 0); +#else PaintBackground(dc); PaintForeground(dc); +#endif } void AuFile::PaintBackground(wxDC &dc) @@ -169,20 +191,68 @@ void AuFile::PaintBackground(wxDC &dc) dc.DrawRectangle(windowRect); +<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) wxSize size = wxSize(FromDIP(300), FromDIP(300)); dc.SetPen(AUFILE_GREY200); dc.SetBrush(AUFILE_GREY200); dc.DrawRectangle(0,0,size.x,size.y); dc.DrawBitmap(m_file_bitmap, (size.x - m_file_bitmap.GetSize().x) / 2, (size.y - m_file_bitmap.GetSize().y) / 2); +======= + wxSize size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_SIZE : AUFILE_SIZE; + + if (m_type == AddFileButton) + { + auto pen_width = FromDIP(2); + dc.SetPen(wxPen(AUFILE_GREY500, pen_width)); + dc.SetBrush(AUFILE_GREY200); + dc.DrawRoundedRectangle(pen_width / 2, pen_width / 2, size.x - pen_width / 2, size.y - pen_width / 2, AUFILE_ROUNDING); + + auto line_length = FromDIP(50); + dc.DrawLine(wxPoint((size.x - line_length) / 2, size.y / 2), wxPoint((size.x + line_length) / 2, size.y / 2)); + dc.DrawLine(wxPoint(size.x / 2, (size.y - line_length) / 2), wxPoint(size.x / 2, (size.y + line_length) / 2)); + + dc.SetFont(Label::Body_16); + auto sizet = dc.GetTextExtent(m_add_file); + auto pos = wxPoint(0, 0); + pos.x = (size.x - sizet.x) / 2; + pos.y = (size.y - 40); // to modify + dc.SetTextForeground(AUFILE_GREY500); + dc.DrawText(m_add_file, pos); + } + else { + dc.SetPen(AUFILE_GREY200); + dc.SetBrush(AUFILE_GREY200); + dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); + dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); + } +>>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) } void AuFile::OnEraseBackground(wxEraseEvent &evt) {} void AuFile::PaintForeground(wxDC &dc) { - wxSize size = wxSize(FromDIP(300), FromDIP(300)); + wxSize size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_SIZE : AUFILE_SIZE; if (m_hover) { + if (m_type == AddFileButton) { + auto pen_width = FromDIP(2); + dc.SetPen(wxPen(AUFILE_BRAND, pen_width)); + dc.SetBrush(AUFILE_BRAND_TRANSPARENT); + dc.DrawRoundedRectangle(pen_width / 2, pen_width / 2, size.x - pen_width / 2, size.y - pen_width / 2, AUFILE_ROUNDING); + + auto line_length = FromDIP(50); + dc.DrawLine(wxPoint((size.x - line_length) / 2, size.y / 2), wxPoint((size.x + line_length) / 2, size.y / 2)); + dc.DrawLine(wxPoint(size.x / 2, (size.y - line_length) / 2), wxPoint(size.x / 2, (size.y + line_length) / 2)); + + auto sizet = dc.GetTextExtent(m_add_file); + auto pos = wxPoint(0, 0); + pos.x = (size.x - sizet.x) / 2; + pos.y = (size.y - 40); // to modify + dc.SetTextForeground(AUFILE_BRAND); + dc.DrawText(m_add_file, pos); + return; + } dc.DrawBitmap(m_file_edit_mask.bmp(), 0, size.y - m_file_edit_mask.GetBmpSize().y); dc.SetFont(Label::Body_14); dc.SetTextForeground(*wxWHITE); @@ -246,7 +316,7 @@ void AuFile::on_mouse_leave(wxMouseEvent &evt) void AuFile::on_input_enter(wxCommandEvent &evt) { - auto new_file_name = into_u8(m_input_name->GetTextCtrl()->GetValue()); + auto new_file_name = m_input_name->GetTextCtrl()->GetValue(); auto m_valid_type = Valid; wxString info_line; @@ -271,8 +341,8 @@ void AuFile::on_input_enter(wxCommandEvent &evt) auto new_fullname = new_file_name + m_file_path.extension().string(); - auto new_fullname_path = dir.string() + "/" + new_fullname; - fs::path new_dir_path(new_fullname_path.c_str()); + wxString new_fullname_path = dir.wstring() + "/" + new_fullname; + fs::path new_dir_path(new_fullname_path); if (fs::exists(new_dir_path)) existing = true; @@ -314,7 +384,7 @@ void AuFile::on_input_enter(wxCommandEvent &evt) // post event auto event = wxCommandEvent(EVT_AUXILIARY_UPDATE_RENAME); - event.SetString(wxString::Format("%s|%s|%s", s_default_folders[m_type], m_file_path.string(), new_dir_path.string())); + event.SetString(wxString::Format("%s|%s|%s", s_default_folders[m_type], m_file_path.wstring(), new_dir_path.wstring())); event.SetEventObject(m_parent); wxPostEvent(m_parent, event); @@ -328,12 +398,19 @@ void AuFile::on_input_enter(wxCommandEvent &evt) void AuFile::on_dclick(wxMouseEvent &evt) { - wxLaunchDefaultApplication(m_file_path.wstring(), 0); + if (m_type == AddFileButton) + return; + else + wxLaunchDefaultApplication(m_file_path.wstring(), 0); } void AuFile::on_mouse_left_up(wxMouseEvent &evt) { - wxSize size = wxSize(FromDIP(300), FromDIP(300)); + if (m_type == AddFileButton) { + return; + } + + wxSize size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_SIZE : AUFILE_SIZE; auto pos = evt.GetPosition(); // set cover @@ -343,21 +420,29 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) auto cover_right = mask_size.x / 2; auto cover_bottom = size.y; - if (pos.x > cover_left && pos.x < cover_right && pos.y > cover_top && pos.y < cover_bottom) { on_set_cover(); } + if (pos.x > cover_left && pos.x < cover_right && pos.y > cover_top && pos.y < cover_bottom) { + if(m_type == MODEL_PICTURE) + on_set_cover(); + else + on_set_rename(); + return; + } // rename auto rename_left = mask_size.x / 2; auto rename_top = size.y - mask_size.y; auto rename_right = mask_size.x; auto rename_bottom = size.y; - if (pos.x > rename_left && pos.x < rename_right && pos.y > rename_top && pos.y < rename_bottom) { on_set_rename(); } + if (pos.x > rename_left && pos.x < rename_right && pos.y > rename_top && pos.y < rename_bottom) { on_set_rename(); return; } // close auto close_left = size.x - m_file_delete.GetBmpSize().x - FromDIP(15); auto close_top = FromDIP(15); auto close_right = size.x - FromDIP(15); auto close_bottom = m_file_delete.GetBmpSize().y + FromDIP(15); - if (pos.x > close_left && pos.x < close_right && pos.y > close_top && pos.y < close_bottom) { on_set_delete(); } + if (pos.x > close_left && pos.x < close_right && pos.y > close_top && pos.y < close_bottom) { on_set_delete(); return; } + + exit_rename_mode(); } void AuFile::on_set_cover() @@ -430,7 +515,7 @@ void AuFile::on_set_delete() if (is_fine) { auto evt = wxCommandEvent(EVT_AUXILIARY_UPDATE_DELETE); - evt.SetString(wxString::Format("%s|%s", s_default_folders[m_type], m_file_path.string())); + evt.SetString(wxString::Format("%s|%s", s_default_folders[m_type], m_file_path.wstring())); evt.SetEventObject(m_parent); wxPostEvent(m_parent, evt); } @@ -471,9 +556,15 @@ void AuFile::msw_rescale() image->Rescale(size.x, size.y); m_file_bitmap = wxBitmap(*image); } else { +<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 300); m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 300); m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 300); +======= + m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); + m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); + m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); +>>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) if (m_type == OTHERS) { m_file_bitmap = m_bitmap_txt; } if (m_type == BILL_OF_MATERIALS) { m_file_bitmap = m_bitmap_excel; } @@ -505,7 +596,8 @@ AuFolderPanel::AuFolderPanel(wxWindow *parent, AuxiliaryFolderType type, wxWindo m_button_add->SetMinSize(wxSize(-1, FromDIP(24))); m_button_add->SetCornerRadius(FromDIP(12)); m_button_add->SetFont(Label::Body_14); - // m_button_add->Bind(wxEVT_LEFT_UP, &AuxiliaryPanel::on_add, this); + + m_big_button_add = new AuFile(m_scrolledWindow, fs::path(), "", AddFileButton, -1); /*m_button_del = new Button(m_scrolledWindow, _L("Delete"), "auxiliary_delete_file", 12, 12); m_button_del->SetBackgroundColor(btn_bg_white); @@ -516,12 +608,18 @@ AuFolderPanel::AuFolderPanel(wxWindow *parent, AuxiliaryFolderType type, wxWindo // m_button_del->Bind(wxEVT_LEFT_UP, &AuxiliaryPanel::on_delete, this); sizer_top->Add(0, 0, 0, wxLEFT, FromDIP(10)); - sizer_top->Add(m_button_add, 0, wxALL, 0); + m_gsizer_content = new wxWrapSizer(wxHORIZONTAL, wxWRAPSIZER_DEFAULT_FLAGS); + if (m_type == MODEL_PICTURE) { + sizer_top->Add(m_button_add, 0, wxALL, 0); + m_big_button_add->Hide(); + } + else { + m_gsizer_content->Add(m_big_button_add, 0, wxALL, FromDIP(8)); + m_button_add->Hide(); + } // sizer_top->Add(m_button_del, 0, wxALL, 0); - - m_gsizer_content = new wxGridSizer(0, 3, FromDIP(18), FromDIP(18)); sizer_body->Add(sizer_top, 0, wxEXPAND | wxTOP, FromDIP(35)); - sizer_body->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(30)); + sizer_body->AddSpacer(FromDIP(14)); sizer_body->Add(m_gsizer_content, 0, 0, 0); m_scrolledWindow->SetSizer(sizer_body); m_scrolledWindow->Layout(); @@ -530,18 +628,25 @@ AuFolderPanel::AuFolderPanel(wxWindow *parent, AuxiliaryFolderType type, wxWindo this->SetSizer(sizer_main); this->Layout(); - m_button_add->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AuFolderPanel::on_add), NULL, this); - // m_button_del->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AuFolderPanel::on_delete), NULL, this); + m_big_button_add->Bind(wxEVT_LEFT_DOWN, [this](auto& e) + { + auto evt = wxCommandEvent(EVT_AUXILIARY_IMPORT); + evt.SetString(s_default_folders[m_type]); + evt.SetEventObject(m_parent); + wxPostEvent(m_parent, evt); + }); + m_button_add->Bind(wxEVT_BUTTON, &AuFolderPanel::on_add, this); } void AuFolderPanel::clear() { for (auto i = 0; i < m_aufiles_list.GetCount(); i++) { AuFiles *aufile = m_aufiles_list[i]; - if (aufile->file != NULL) { aufile->file->Destroy(); } + if (aufile->file) { aufile->file->Destroy(); } } m_aufiles_list.clear(); - m_gsizer_content->Layout(); + Layout(); + Refresh(); } void AuFolderPanel::update(std::vector paths) @@ -552,7 +657,7 @@ void AuFolderPanel::update(std::vector paths) auto name = encode_path(temp_name.c_str()); auto aufile = new AuFile(m_scrolledWindow, paths[i], name, m_type, wxID_ANY); - m_gsizer_content->Add(aufile, 0, 0, 0); + m_gsizer_content->Add(aufile, 0, wxALL, FromDIP(8)); auto af = new AuFiles; af->path = paths[i].string(); af->file = aufile; @@ -571,7 +676,7 @@ void AuFolderPanel::msw_rescale() } } -void AuFolderPanel::on_add(wxCommandEvent &event) +void AuFolderPanel::on_add(wxCommandEvent& event) { auto evt = wxCommandEvent(EVT_AUXILIARY_IMPORT); evt.SetString(s_default_folders[m_type]); @@ -583,8 +688,6 @@ void AuFolderPanel::on_delete(wxCommandEvent &event) { clear(); } AuFolderPanel::~AuFolderPanel() { - m_button_add->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AuFolderPanel::on_add), NULL, this); - // m_button_del->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AuFolderPanel::on_delete), NULL, this); } void AuFolderPanel::update_cover() @@ -618,12 +721,19 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p // delete event Bind(EVT_AUXILIARY_UPDATE_DELETE, [this](wxCommandEvent &e) { auto info_str = e.GetString(); - auto parems = std::vector{}; - Split(info_str.ToStdString(), "|", parems); + + wxArrayString parems; + wxStringTokenizer tokenizer(info_str, "|"); + while (tokenizer.HasMoreTokens()) { + wxString token = tokenizer.GetNextToken(); + parems.Add(token); + } + + auto model = parems[0]; auto name = parems[1]; - auto iter = m_paths_list.find(model); + auto iter = m_paths_list.find(model.ToStdString()); if (iter != m_paths_list.end()) { auto list = iter->second; for (auto i = 0; i < list.size(); i++) { @@ -633,7 +743,7 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p } } - m_paths_list[model] = list; + m_paths_list[model.ToStdString()] = list; update_all_panel(); update_all_cover(); } @@ -643,14 +753,18 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p Bind(EVT_AUXILIARY_UPDATE_RENAME, [this](wxCommandEvent &e) { auto info_str = e.GetString(); - auto parems = std::vector{}; - Split(info_str.ToStdString(), "|", parems); + wxArrayString parems; + wxStringTokenizer tokenizer(info_str, "|"); + while (tokenizer.HasMoreTokens()) { + wxString token = tokenizer.GetNextToken(); + parems.Add(token); + } auto model = parems[0]; auto old_name = parems[1]; auto new_name = parems[2]; - auto iter = m_paths_list.find(model); + auto iter = m_paths_list.find(model.ToStdString()); if (iter != m_paths_list.end()) { auto list = iter->second; for (auto i = 0; i < list.size(); i++) { @@ -660,7 +774,7 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p } } - m_paths_list[model] = list; + m_paths_list[model.ToStdString()] = list; } }); } @@ -944,6 +1058,7 @@ void AuxiliaryPanel::update_all_panel() { std::map>::iterator mit; + Freeze(); m_pictures_panel->clear(); m_bill_of_materials_panel->clear(); m_assembly_panel->clear(); @@ -955,6 +1070,7 @@ void AuxiliaryPanel::update_all_panel() if (mit->first == "Assembly Guide") { m_assembly_panel->update(mit->second); } if (mit->first == "Others") { m_others_panel->update(mit->second); } } + Thaw(); } void AuxiliaryPanel::update_all_cover() @@ -978,7 +1094,7 @@ void AuxiliaryPanel::update_all_cover() wxBoxSizer *m_sizer_body = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sizer_designer = new wxBoxSizer(wxHORIZONTAL); - auto m_text_designer = new wxStaticText(this, wxID_ANY, _L("Designer"), wxDefaultPosition, wxSize(120, -1), 0); + auto m_text_designer = new wxStaticText(this, wxID_ANY, _L("Author"), wxDefaultPosition, wxSize(120, -1), 0); m_text_designer->Wrap(-1); m_sizer_designer->Add(m_text_designer, 0, wxALIGN_CENTER, 0); diff --git a/src/slic3r/GUI/Auxiliary.hpp b/src/slic3r/GUI/Auxiliary.hpp index fd61637e44..f2cc491c38 100644 --- a/src/slic3r/GUI/Auxiliary.hpp +++ b/src/slic3r/GUI/Auxiliary.hpp @@ -48,8 +48,17 @@ #include "Widgets/SideTools.hpp" #define AUFILE_GREY700 wxColour(107, 107, 107) +#define AUFILE_GREY500 wxColour(158, 158, 158) #define AUFILE_GREY300 wxColour(238, 238, 238) #define AUFILE_GREY200 wxColour(248, 248, 248) +#define AUFILE_BRAND wxColour(0, 174, 66) +#define AUFILE_BRAND_TRANSPARENT wxColour(215, 232, 222) +#define AUFILE_PICTURES_SIZE wxSize(FromDIP(300), FromDIP(300)) +#define AUFILE_PICTURES_PANEL_SIZE wxSize(FromDIP(300), FromDIP(340)) +#define AUFILE_SIZE wxSize(FromDIP(168), FromDIP(168)) +#define AUFILE_PANEL_SIZE wxSize(FromDIP(168), FromDIP(208)) +#define AUFILE_TEXT_HEIGHT FromDIP(40) +#define AUFILE_ROUNDING FromDIP(5) enum AuxiliaryFolderType { MODEL_PICTURE, @@ -58,6 +67,7 @@ enum AuxiliaryFolderType { OTHERS, THUMBNAILS, DESIGNER, + AddFileButton, }; const static std::array s_default_folders = {("Model Pictures"), ("Bill of Materials"), ("Assembly Guide"), ("Others"), (".thumbnails")}; @@ -76,6 +86,7 @@ public: wxStaticText* m_text_name {nullptr}; ::TextInput* m_input_name {nullptr}; fs::path m_file_path; + wxString m_add_file; wxString m_file_name; wxString cover_text_left; wxString cover_text_right; @@ -144,12 +155,13 @@ public: public: AuxiliaryFolderType m_type; wxScrolledWindow * m_scrolledWindow{nullptr}; - wxGridSizer * m_gsizer_content{nullptr}; + wxWrapSizer * m_gsizer_content{nullptr}; Button * m_button_add{nullptr}; Button * m_button_del{nullptr}; + AuFile * m_big_button_add{ nullptr }; AuFilesHash m_aufiles_list; - void on_add(wxCommandEvent &event); + void on_add(wxCommandEvent& event); void on_delete(wxCommandEvent &event); }; From a85dc1ef677fbbfdca4a011f2713241ca05e1603 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 25 Aug 2022 13:05:47 +0800 Subject: [PATCH 062/137] FIX: Crash when undo multiple times Change-Id: Ie2e06d294e7e31ce050e8f63308e45c076130af6 (cherry picked from commit ca4b9db007f7e839da768424484c098988cbc3f0) --- src/slic3r/GUI/Plater.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 99243c6175..2e5253bec7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6259,8 +6259,7 @@ void Plater::priv::undo() // BBS: undo-redo until modify record while (--it_current != snapshots.begin() && !snapshot_modifies_project(*it_current)); if (it_current == snapshots.begin()) return; - while (--it_current != snapshots.begin() && !snapshot_modifies_project(*it_current)); - this->undo_redo_to(++it_current); + this->undo_redo_to(it_current); } void Plater::priv::redo() @@ -6269,8 +6268,10 @@ void Plater::priv::redo() auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), UndoRedo::Snapshot(this->undo_redo_stack().active_snapshot_time())); // BBS: undo-redo until modify record while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)); - if (it_current != snapshots.end()) - this->undo_redo_to(it_current); + if (it_current != snapshots.end()) { + while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)); + this->undo_redo_to(--it_current); + } } void Plater::priv::undo_redo_to(size_t time_to_load) @@ -6407,6 +6408,9 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator } if (need_update) { + // update print to current plate (preview->m_process) + this->partplate_list.update_slice_context_to_current_plate(this->background_process); + this->preview->update_gcode_result(this->partplate_list.get_current_slice_result()); this->update(); } } From fef0a4944c2f6d046aecb850149648ffaec65d20 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Thu, 25 Aug 2022 15:27:49 +0800 Subject: [PATCH 063/137] FIX: fix the position not correct issue after copy Change-Id: Id7505230f8a46785310b8c49d19705b2de5164af --- src/slic3r/GUI/Selection.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index dea1648344..964a9a03eb 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -2624,9 +2624,11 @@ void Selection::paste_objects_from_clipboard() PartPlate* plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); bool in_current = plate->intersects(bbox); - auto start_point = in_current?src_object->instances.front()->get_offset():plate->get_build_volume().center(); + auto start_offset = in_current?src_object->instances.front()->get_offset():plate->get_build_volume().center(); + auto start_point = in_current?bbox.center():plate->get_build_volume().center(); + auto point_offset = start_offset - start_point; auto empty_cell = wxGetApp().plater()->canvas3D()->get_nearest_empty_cell({start_point(0), start_point(1)}); - Vec3d displacement = { empty_cell.x(),empty_cell.y(),start_point(2) }; + Vec3d displacement = { empty_cell.x() + point_offset.x(), empty_cell.y() + point_offset.y(), start_point(2) }; for (ModelInstance* inst : dst_object->instances) inst->set_offset(displacement); From 5cd7873a3c4224929959ee53db82351f8d37bbf6 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Wed, 24 Aug 2022 20:14:23 +0800 Subject: [PATCH 064/137] FIX: Auxiliary conflict Change-Id: I3026445e215b689aed325133caa386cb2f48bfdc --- src/slic3r/GUI/Auxiliary.cpp | 40 +++++++++--------------------------- 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index c369661fbf..ffec3279b1 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -75,15 +75,9 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia image->Rescale(size.x, size.y); m_file_bitmap = wxBitmap(*image); } else { -<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) - m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 300); - m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 300); - m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 300); -======= - m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); - m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); - m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); ->>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) + m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 168); + m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 168); + m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 168); if (m_type == OTHERS) {m_file_bitmap = m_bitmap_txt;} if (m_type == BILL_OF_MATERIALS) { @@ -191,13 +185,6 @@ void AuFile::PaintBackground(wxDC &dc) dc.DrawRectangle(windowRect); -<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) - wxSize size = wxSize(FromDIP(300), FromDIP(300)); - dc.SetPen(AUFILE_GREY200); - dc.SetBrush(AUFILE_GREY200); - dc.DrawRectangle(0,0,size.x,size.y); - dc.DrawBitmap(m_file_bitmap, (size.x - m_file_bitmap.GetSize().x) / 2, (size.y - m_file_bitmap.GetSize().y) / 2); -======= wxSize size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_SIZE : AUFILE_SIZE; if (m_type == AddFileButton) @@ -223,9 +210,8 @@ void AuFile::PaintBackground(wxDC &dc) dc.SetPen(AUFILE_GREY200); dc.SetBrush(AUFILE_GREY200); dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); - dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); + dc.DrawBitmap(m_file_bitmap, (size.x - m_file_bitmap.GetSize().x) / 2, (size.y - m_file_bitmap.GetSize().y) / 2); } ->>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) } void AuFile::OnEraseBackground(wxEraseEvent &evt) {} @@ -556,15 +542,9 @@ void AuFile::msw_rescale() image->Rescale(size.x, size.y); m_file_bitmap = wxBitmap(*image); } else { -<<<<<<< HEAD (40727c FIX: Slicing process crashes when enable timelapse) - m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 300); - m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 300); - m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 300); -======= - m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); - m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); - m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); ->>>>>>> CHANGE (3c1599 ENH: Auxiliary GUI) + m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 168); + m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 168); + m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 168); if (m_type == OTHERS) { m_file_bitmap = m_bitmap_txt; } if (m_type == BILL_OF_MATERIALS) { m_file_bitmap = m_bitmap_excel; } @@ -737,7 +717,7 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p if (iter != m_paths_list.end()) { auto list = iter->second; for (auto i = 0; i < list.size(); i++) { - if (list[i] == name) { + if (list[i].wstring() == name) { list.erase(std::begin(list) + i); break; } @@ -768,8 +748,8 @@ AuxiliaryPanel::AuxiliaryPanel(wxWindow *parent, wxWindowID id, const wxPoint &p if (iter != m_paths_list.end()) { auto list = iter->second; for (auto i = 0; i < list.size(); i++) { - if (list[i] == old_name) { - list[i] = new_name; + if (list[i].wstring() == old_name) { + list[i] = fs::path(new_name.c_str()); break; } } From 05dddcfd3c965e9243e62d275e164d980473461b Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Tue, 23 Aug 2022 18:26:42 +0800 Subject: [PATCH 065/137] ENH:Optimized the overall Gizmo layout and Print Error font style Change-Id: Icc26fdcec667dfd7018132d39af0bb450e4caff5 --- src/imgui/imgui_widgets.cpp | 4 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 19 ++++--- .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 53 ++++++++++++------- src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp | 21 +++++--- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 22 ++++---- src/slic3r/GUI/Gizmos/GLGizmoText.hpp | 2 +- src/slic3r/GUI/StatusPanel.cpp | 2 +- 7 files changed, 76 insertions(+), 47 deletions(-) diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index 46f3472819..fc09d6063f 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -6294,9 +6294,9 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl RenderFrameBorder(bb.Min, bb.Max, rounding); else #ifdef __APPLE__ - window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), rounding,NULL,2.0f); // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,4.0f);; // Color button are often in need of some sort of border #else - window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImGuiCol_FrameBg), rounding); // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,3.0f); // Color button are often in need of some sort of border #endif } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 07aa30f9d1..35ff22d6b6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -252,15 +252,22 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); - if (m_current_tool == tool_icons[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - } ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + if (m_current_tool == tool_icons[i]) { + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); + } bool btn_clicked = ImGui::Button(into_u8(btn_name).c_str()); + if (m_current_tool == tool_icons[i]) + { + ImGui::PopStyleColor(4); + ImGui::PopStyleVar(2); + } ImGui::PopStyleVar(1); - if (m_current_tool == tool_icons[i])ImGui::PopStyleColor(3); if (btn_clicked && m_current_tool != tool_icons[i]) { m_current_tool = tool_icons[i]; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 918faaf47f..af6fbaeb45 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -328,16 +328,16 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott // BBS ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); - ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(8.0f, 16.0f)); GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: - const float clipping_slider_left = m_imgui->calc_text_size(m_desc.at("clipping_of_view")).x + m_imgui->scaled(1.f); - const float cursor_slider_left = m_imgui->calc_text_size(m_desc.at("cursor_size")).x + m_imgui->scaled(1.f); + float space_size = m_imgui->get_style_scaling() * 8; + const float clipping_slider_left = m_imgui->calc_text_size(m_desc.at("clipping_of_view")).x + m_imgui->scaled(1.5f); + const float cursor_slider_left = m_imgui->calc_text_size(m_desc.at("cursor_size")).x + m_imgui->scaled(1.5f); const float smart_fill_slider_left = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); const float edge_detect_slider_left = m_imgui->calc_text_size(m_desc.at("edge_detection")).x + m_imgui->scaled(1.f); - const float gap_area_slider_left = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f); - const float height_range_slider_left = m_imgui->calc_text_size(m_desc.at("height_range")).x + m_imgui->scaled(1.5f); + const float gap_area_slider_left = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f) + space_size; + const float height_range_slider_left = m_imgui->calc_text_size(m_desc.at("height_range")).x + m_imgui->scaled(2.f); const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.f); const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.f); @@ -358,7 +358,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott const float height_max_width = std::max(clipping_slider_left,height_range_slider_left); const float sliders_left_width = std::max(smart_fill_slider_left, std::max(cursor_slider_left, std::max(edge_detect_slider_left, std::max(gap_area_slider_left, std::max(height_range_slider_left, - clipping_slider_left))))); + clipping_slider_left))))) + space_size; const float slider_icon_width = m_imgui->get_slider_icon_size().x; float window_width = minimal_slider_width + sliders_left_width + slider_icon_width; const int max_filament_items_per_line = 8; @@ -391,7 +391,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott std::string item_text = std::to_string(extruder_idx + 1); const ImVec2 label_size = ImGui::CalcTextSize(item_text.c_str(), NULL, true); - const ImVec2 button_size(max_label_size.x + m_imgui->scaled(0.5f), 0.f); + const ImVec2 button_size(max_label_size.x + m_imgui->scaled(0.6f),max_label_size.y + m_imgui->scaled(0.55f)); float button_offset = start_pos_x; if (extruder_idx % max_filament_items_per_line != 0) { @@ -403,13 +403,19 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGuiColorEditFlags flags = ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip; if (m_selected_extruder_idx != extruder_idx) flags |= ImGuiColorEditFlags_NoBorder; #ifdef __APPLE__ - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.4f, 0.4f, 0.4f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0); bool color_picked = ImGui::ColorButton(color_label.c_str(), color_vec, flags, button_size); - ImGui::PopStyleVar(1); + ImGui::PopStyleVar(2); ImGui::PopStyleColor(1); #else + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 2.0); bool color_picked = ImGui::ColorButton(color_label.c_str(), color_vec, flags, button_size); + ImGui::PopStyleVar(2); + ImGui::PopStyleColor(1); #endif color_button_high = ImGui::GetCursorPos().y - color_button - 2.0; if (color_picked) { m_selected_extruder_idx = extruder_idx; } @@ -419,12 +425,14 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott // draw filament id float gray = 0.299 * extruder_color[0] + 0.587 * extruder_color[1] + 0.114 * extruder_color[2]; ImGui::SameLine(button_offset + (button_size.x - label_size.x) / 2.f); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, {10.0,15.0}); if (gray * 255.f < 80.f) ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), item_text.c_str()); else ImGui::TextColored(ImVec4(0.0f, 0.0f, 0.0f, 1.0f), item_text.c_str()); - } + ImGui::PopStyleVar(); + } //ImGui::NewLine(); ImGui::Dummy(ImVec2(0.0f, ImGui::GetFontSize() * 0.1)); @@ -433,20 +441,26 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott std::array tool_icons = { ImGui::CircleButtonIcon,ImGui::SphereButtonIcon, ImGui::TriangleButtonIcon, ImGui::HeightRangeIcon, ImGui::FillButtonIcon, ImGui::GapFillIcon }; std::array tool_tips = { _L("Circle"), _L("Sphere"), _L("Triangle"), _L("Height Range"), _L("Fill"), _L("Gap Fill") }; for (int i = 0; i < tool_icons.size(); i++) { - std::string str_label = std::string("##"); + std::string str_label = std::string(""); std::wstring btn_name = tool_icons[i] + boost::nowide::widen(str_label); - if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(0.5f)); - - if (m_current_tool == tool_icons[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - } + if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.5f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + if (m_current_tool == tool_icons[i]) { + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); + } bool btn_clicked = ImGui::Button(into_u8(btn_name).c_str()); + if (m_current_tool == tool_icons[i]) + { + ImGui::PopStyleColor(4); + ImGui::PopStyleVar(2); + } ImGui::PopStyleVar(1); - if (m_current_tool == tool_icons[i]) ImGui::PopStyleColor(3); if (btn_clicked && m_current_tool != tool_icons[i]) { m_current_tool = tool_icons[i]; @@ -639,7 +653,6 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott GizmoImguiEnd(); // BBS - ImGui::PopStyleVar(1); ImGuiWrapper::pop_toolbar_style(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 870406c1f9..5e2c280864 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -222,17 +222,22 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) std::wstring btn_name = tool_icons[i] + boost::nowide::widen(str_label); if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); - - if (m_current_tool == tool_icons[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.81f, 0.81f, 0.81f, 1.0f)); - } ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + if (m_current_tool == tool_icons[i]) { + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); + } bool btn_clicked = ImGui::Button(into_u8(btn_name).c_str()); + if (m_current_tool == tool_icons[i]) + { + ImGui::PopStyleColor(4); + ImGui::PopStyleVar(2); + } ImGui::PopStyleVar(1); - if (m_current_tool == tool_icons[i])ImGui::PopStyleColor(3); - if (btn_clicked && m_current_tool != tool_icons[i]) { m_current_tool = tool_icons[i]; for (auto& triangle_selector : m_triangle_selectors) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 0e3909e5c7..206e7fa0e0 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -15,6 +15,11 @@ #include +#ifndef IMGUI_DEFINE_MATH_OPERATORS +#define IMGUI_DEFINE_MATH_OPERATORS +#endif +#include + namespace Slic3r { namespace GUI { @@ -63,10 +68,10 @@ void GLGizmoText::on_render_for_picking() // TODO: } -void GLGizmoText::push_combo_style() +void GLGizmoText::push_combo_style(const float scale) { - ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0f); - ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0f * scale); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f * scale); ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BG); ImGui::PushStyleColor(ImGuiCol_BorderActive, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.00f, 0.68f, 0.26f, 0.0f)); @@ -92,8 +97,9 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) static float last_y = 0.0f; static float last_h = 0.0f; - ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {4.0,5.0}); + const float currt_scale = m_parent.get_scale(); + ImGuiWrapper::push_toolbar_style(currt_scale); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(4.0,5.0) * currt_scale); GizmoImguiBegin("Text", ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); float space_size = m_imgui->get_style_scaling() * 8; @@ -134,10 +140,10 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(_L("Font")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(input_text_size + ImGui::GetFrameHeight() * 2); - push_combo_style(); + push_combo_style(currt_scale); if (ImGui::BBLBeginCombo("##Font", cstr_font_names[m_curr_font_idx], 0)) { ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 0.0f); - ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(4.0f, 0.0f)); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(4.0f, 0.0f) * currt_scale); for (int i = 0; i < m_avail_font_names.size(); i++) { const bool is_selected = (m_curr_font_idx == i); if (ImGui::BBLSelectable(cstr_font_names[i], is_selected)) { @@ -153,13 +159,11 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) ImGui::AlignTextToFramePadding(); pop_combo_style(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 0.0f)); m_imgui->text(_L("Size")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(input_size); ImGui::InputFloat("###font_size", &m_font_size, 0.0f, 0.0f, "%.2f"); if (m_font_size < 3.0f)m_font_size = 3.0f; - ImGui::PopStyleVar(1); ImGui::SameLine(); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp index a711933e86..121263741b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp @@ -32,7 +32,7 @@ protected: virtual bool on_is_activable() const override; virtual void on_render() override; virtual void on_render_for_picking() override; - void push_combo_style(); + void push_combo_style(const float scale); void pop_combo_style(); virtual void on_set_state() override; virtual CommonGizmosDataID on_get_requirements() const override; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index eb06f7973d..a68229c114 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -518,7 +518,7 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) wxBoxSizer *text_sizer = new wxBoxSizer(wxHORIZONTAL); m_error_text = new wxStaticText2(m_panel_error_txt); - m_error_text->SetForegroundColour(PAGE_TITLE_FONT_COL); + m_error_text->SetForegroundColour(wxColour(255, 0, 0)); text_sizer->Add(m_error_text, 1, wxEXPAND|wxLEFT, FromDIP(17)); m_button_clean = new Button(m_panel_error_txt, _L("Clean")); From 03f62ed9aed485205ab89b03c95df97474c6e9b0 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Fri, 26 Aug 2022 09:25:22 +0800 Subject: [PATCH 066/137] FIX:fix GizmoText failed to change font Change-Id: I2b6ea7effead4d4667b4a797392396784be9180d --- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 206e7fa0e0..7d8e386131 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -148,6 +148,7 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) const bool is_selected = (m_curr_font_idx == i); if (ImGui::BBLSelectable(cstr_font_names[i], is_selected)) { m_curr_font_idx = i; + m_font_name = cstr_font_names[m_curr_font_idx]; } if (is_selected) { ImGui::SetItemDefaultFocus(); From 121dccc59c9f5ef9f483ae46e3c1d8430f24d4f6 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 15 Aug 2022 19:15:51 +0800 Subject: [PATCH 067/137] ENH:close dialog by pressing esc key Change-Id: Ib883e7119699e06f63c61dd083ad761ba58bc19c --- resources/web/guide/23/index.html | 18 ++++++++++++++++++ resources/web/guide/24/index.html | 13 +++++++++++++ resources/web/guide/js/common.js | 21 +++++++++++++++++++++ src/slic3r/GUI/GUI_Utils.hpp | 13 +++++++++++++ src/slic3r/GUI/WebGuideDialog.cpp | 18 ++++++++++++++++-- src/slic3r/GUI/WebGuideDialog.hpp | 2 +- src/slic3r/GUI/WipeTowerDialog.cpp | 10 ++++++++++ 7 files changed, 92 insertions(+), 3 deletions(-) diff --git a/resources/web/guide/23/index.html b/resources/web/guide/23/index.html index cffa328c14..fcafcff7b1 100644 --- a/resources/web/guide/23/index.html +++ b/resources/web/guide/23/index.html @@ -146,4 +146,22 @@ + diff --git a/resources/web/guide/24/index.html b/resources/web/guide/24/index.html index 6349a09957..6f77f8e09b 100644 --- a/resources/web/guide/24/index.html +++ b/resources/web/guide/24/index.html @@ -99,4 +99,17 @@ + diff --git a/resources/web/guide/js/common.js b/resources/web/guide/js/common.js index e69de29bb2..b0aafeaf37 100644 --- a/resources/web/guide/js/common.js +++ b/resources/web/guide/js/common.js @@ -0,0 +1,21 @@ +function ClosePage() { + var tSend = {}; + tSend['sequence_id'] = Math.round(new Date() / 1000); + tSend['command'] = "close_page"; + SendWXMessage(JSON.stringify(tSend)); +} + +document.onkeydown = function (event) { + var e = event || window.event || arguments.callee.caller.arguments[0]; + + if (window.event) { + try { e.keyCode = 0; } catch (e) { } + e.returnValue = false; + } +}; + +window.addEventListener('wheel', function (event) { + if (event.ctrlKey === true || event.metaKey) { + event.preventDefault(); + } +}, { passive: false }); diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index a3e239d1cc..6daa308c28 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -189,6 +189,19 @@ public: event.Skip(); on_sys_color_changed(); }); + + if (std::is_same::value) { + this->Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& e) { + if (e.GetKeyCode() == WXK_ESCAPE) { + //if (this->IsModal()) + // this->EndModal(wxID_CANCEL); + //else + this->Close(); + } + else + e.Skip(); + }); + } } virtual ~DPIAware() {} diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 655c33f978..f544bb61ad 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -77,7 +77,18 @@ GuideFrame::GuideFrame(GUI_App *pGUI, long style) //int screenwidth = wxSystemSettings::GetMetric(wxSYS_SCREEN_X, NULL); //int MaxY = (screenheight - pSize.y) > 0 ? (screenheight - pSize.y) / 2 : 0; //MoveWindow(this->m_hWnd, (screenwidth - pSize.x) / 2, MaxY, pSize.x, pSize.y, TRUE); - +#ifdef __WXMSW__ + this->Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& e) { + if ((m_page == BBL_FILAMENT_ONLY || m_page == BBL_MODELS_ONLY) && e.GetKeyCode() == WXK_ESCAPE) { + if (this->IsModal()) + this->EndModal(wxID_CANCEL); + else + this->Close(); + } + else + e.Skip(); + }); +#endif // Connect the webview events Bind(wxEVT_WEBVIEW_NAVIGATING, &GuideFrame::OnNavigationRequest, this, m_browser->GetId()); Bind(wxEVT_WEBVIEW_NAVIGATED, &GuideFrame::OnNavigationComplete, this, m_browser->GetId()); @@ -121,6 +132,7 @@ void GuideFrame::load_url(wxString &url) wxString GuideFrame::SetStartPage(GuidePage startpage, bool load) { + m_page = startpage; BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(" enter, load=%1%, start_page=%2%")%load%int(startpage); //wxLogMessage("GUIDE: webpage_1 %s", (boost::filesystem::path(resources_dir()) / "web\\guide\\1\\index.html").make_preferred().string().c_str() ); wxString TargetUrl = from_u8( (boost::filesystem::path(resources_dir()) / "web/guide/1/index.html").make_preferred().string() ); @@ -274,7 +286,9 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) json j = json::parse(strInput); wxString strCmd = j["command"]; - + if (strCmd == "close_page") { + this->EndModal(wxID_CANCEL); + } if (strCmd == "user_clause") { wxString strAction = j["data"]["action"]; diff --git a/src/slic3r/GUI/WebGuideDialog.hpp b/src/slic3r/GUI/WebGuideDialog.hpp index 83d7799dbf..de7727663c 100644 --- a/src/slic3r/GUI/WebGuideDialog.hpp +++ b/src/slic3r/GUI/WebGuideDialog.hpp @@ -47,7 +47,7 @@ public: BBL_FILAMENTS, BBL_FILAMENT_ONLY, BBL_MODELS_ONLY - }; + }m_page; //Web Function void load_url(wxString &url); diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 4a7b7d5a80..b7f65e4c1a 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -172,6 +172,16 @@ WipingDialog::WipingDialog(wxWindow* parent, const std::vector& matrix, c this->FindWindowById(wxID_RESET, this)->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { m_panel_wiping->calc_flushing_volumes(); }); } this->Bind(wxEVT_CLOSE_WINDOW, [this](wxCloseEvent& e) { EndModal(wxCANCEL); }); + this->Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& e) { + if (e.GetKeyCode() == WXK_ESCAPE) { + if (this->IsModal()) + this->EndModal(wxID_CANCEL); + else + this->Close(); + } + else + e.Skip(); + }); } void WipingPanel::create_panels(wxWindow* parent, const int num) { From a3fbcf296392674bff1a05dead583bc307fbdc10 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 26 Aug 2022 14:14:33 +0800 Subject: [PATCH 068/137] FIX:add multilingual translation Change-Id: I2227bd55a48c7ce136f97893bd797a161459007e --- bbl/i18n/BambuStudio.pot | 18 ++++++++----- bbl/i18n/de/BambuStudio_de.po | 31 +++++++++++++-------- bbl/i18n/en/BambuStudio_en.po | 33 ++++++++++++++--------- bbl/i18n/es/BambuStudio_es.po | 31 +++++++++++++-------- bbl/i18n/fr/BambuStudio_fr.po | 31 +++++++++++++-------- bbl/i18n/hu/BambuStudio_hu.po | 31 +++++++++++++-------- bbl/i18n/nl/BambuStudio_nl.po | 31 +++++++++++++-------- bbl/i18n/sv/BambuStudio_sv.po | 31 +++++++++++++-------- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 34 ++++++++++++++++-------- resources/i18n/de/BambuStudio.mo | Bin 161835 -> 161791 bytes resources/i18n/en/BambuStudio.mo | Bin 148623 -> 148579 bytes resources/i18n/es/BambuStudio.mo | Bin 162580 -> 162532 bytes resources/i18n/fr/BambuStudio.mo | Bin 162848 -> 162738 bytes resources/i18n/hu/BambuStudio.mo | Bin 164300 -> 164253 bytes resources/i18n/nl/BambuStudio.mo | Bin 160413 -> 160368 bytes resources/i18n/sv/BambuStudio.mo | Bin 151667 -> 151624 bytes resources/i18n/zh_cn/BambuStudio.mo | Bin 149482 -> 149534 bytes src/slic3r/GUI/GCodeViewer.cpp | 2 +- src/slic3r/GUI/GUI_ObjectTable.cpp | 20 +++++++------- src/slic3r/GUI/SavePresetDialog.cpp | 4 +-- src/slic3r/GUI/StatusPanel.cpp | 2 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 4 +-- 22 files changed, 192 insertions(+), 111 deletions(-) diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index 00c82f5bee..38a3bfa51a 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1789,9 +1789,6 @@ msgstr "" msgid "Display" msgstr "" -msgid "Line type" -msgstr "" - msgid "Layer Height (mm)" msgstr "" @@ -2378,7 +2375,7 @@ msgstr "" msgid "Resume" msgstr "" -msgid "Abort" +msgid "Stop" msgstr "" msgid "0" @@ -3748,6 +3745,15 @@ msgstr "" msgid "Capabilities" msgstr "" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "" @@ -3773,7 +3779,7 @@ msgstr "" msgid "Choose files" msgstr "" -msgid "Designer" +msgid "Author" msgstr "" msgid "Model Name" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index c706fb0f62..a383eceaa3 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1947,9 +1947,6 @@ msgstr "Zeit" msgid "Display" msgstr "Anzeigen" -msgid "Line type" -msgstr "Linientyp" - msgid "Layer Height (mm)" msgstr "Schichthöhe (mm)" @@ -2541,8 +2538,8 @@ msgstr "Druckprozess" msgid "Resume" msgstr "Fortsetzen" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Stop" msgid "0" msgstr "" @@ -4013,6 +4010,15 @@ msgstr "Allgemein" msgid "Capabilities" msgstr "Fähigkeiten" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Als Abdeckung einstellen" @@ -4038,8 +4044,8 @@ msgstr "Montageanleitung" msgid "Choose files" msgstr "Dateien auswählen" -msgid "Designer" -msgstr "Designer" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Modellname" @@ -6655,12 +6661,15 @@ msgstr "Support: Löcher in Schicht %d repairieren" msgid "Support: propagate branches at layer %d" msgstr "Support: Verbreiten von Zweigen auf Ebene %d" +#~ msgid "Line type" +#~ msgstr "Linientyp" + +#~ msgid "Designer" +#~ msgstr "Designer" + #~ msgid "Report" #~ msgstr "Bericht" -#~ msgid "Stop" -#~ msgstr "Stop" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index 2a3990c010..8e779334bf 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1046,7 +1046,7 @@ msgid "Multicolor Print" msgstr "Multicolor Print" msgid "Line Type" -msgstr "Line type" +msgstr "Line Type" msgid "No printer" msgstr "No printer" @@ -1908,9 +1908,6 @@ msgstr "Time" msgid "Display" msgstr "Display" -msgid "Line type" -msgstr "Line type" - msgid "Layer Height (mm)" msgstr "Layer height (mm)" @@ -2502,8 +2499,8 @@ msgstr "Printing progress" msgid "Resume" msgstr "Resume" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Stop" msgid "0" msgstr "" @@ -3930,6 +3927,15 @@ msgstr "General" msgid "Capabilities" msgstr "Capabilities" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Set as cover" @@ -3955,8 +3961,8 @@ msgstr "Assembly Guide" msgid "Choose files" msgstr "Choose files" -msgid "Designer" -msgstr "Designer" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Model Name" @@ -6504,12 +6510,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Line type" +#~ msgstr "Line type" + +#~ msgid "Designer" +#~ msgstr "Designer" + #~ msgid "Report" #~ msgstr "Report" -#~ msgid "Stop" -#~ msgstr "Stop" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index b0e1d8c2f3..465f60c147 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1945,9 +1945,6 @@ msgstr "Tiempo" msgid "Display" msgstr "Pantalla" -msgid "Line type" -msgstr "Tipo de línea" - msgid "Layer Height (mm)" msgstr "Altura de la capa (mm)" @@ -2539,8 +2536,8 @@ msgstr "Progreso de impresión" msgid "Resume" msgstr "Reanudar" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Detener" msgid "0" msgstr "" @@ -4004,6 +4001,15 @@ msgstr "General" msgid "Capabilities" msgstr "Capacidades" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Ajustar como cubierta" @@ -4029,8 +4035,8 @@ msgstr "Guía de montaje" msgid "Choose files" msgstr "Elija los archivos" -msgid "Designer" -msgstr "Diseñador" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Nombre del modelo" @@ -6639,12 +6645,15 @@ msgstr "Soporte: arreglar huecos en la capa %d" msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" +#~ msgid "Line type" +#~ msgstr "Tipo de línea" + +#~ msgid "Designer" +#~ msgstr "Diseñador" + #~ msgid "Report" #~ msgstr "Informe" -#~ msgid "Stop" -#~ msgstr "Detener" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index eda3a705e0..9ae9e70d71 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1913,9 +1913,6 @@ msgstr "Durée" msgid "Display" msgstr "Afficher" -msgid "Line type" -msgstr "Type de ligne" - msgid "Layer Height (mm)" msgstr "Hauteur de couche (mm)" @@ -2508,8 +2505,8 @@ msgstr "Progression de l'impression" msgid "Resume" msgstr "Résumer" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Arrêt" msgid "0" msgstr "" @@ -3960,6 +3957,15 @@ msgstr "Général" msgid "Capabilities" msgstr "Fonctionnalités" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Définir comme couverture" @@ -3985,8 +3991,8 @@ msgstr "Guide d'assemblage" msgid "Choose files" msgstr "Choisir des fichiers" -msgid "Designer" -msgstr "Designer" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Nom du modèle" @@ -6608,12 +6614,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Line type" +#~ msgstr "Type de ligne" + +#~ msgid "Designer" +#~ msgstr "Designer" + #~ msgid "Report" #~ msgstr "Signaler" -#~ msgid "Stop" -#~ msgstr "Arrêt" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index 7958f9088e..15bb112e25 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1936,9 +1936,6 @@ msgstr "Idő" msgid "Display" msgstr "Megjelenítés" -msgid "Line type" -msgstr "Vonal típusa" - msgid "Layer Height (mm)" msgstr "Rétegmagasság (mm)" @@ -2539,8 +2536,8 @@ msgstr "Nyomtatás folyamata" msgid "Resume" msgstr "Folytatás" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Állj" msgid "0" msgstr "" @@ -3980,6 +3977,15 @@ msgstr "Általános" msgid "Capabilities" msgstr "Képességek" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Beállítás borítóként" @@ -4005,8 +4011,8 @@ msgstr "Összeszerelési útmutató" msgid "Choose files" msgstr "Fájlok kiválasztása" -msgid "Designer" -msgstr "Tervező" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Model Name" @@ -6599,12 +6605,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Line type" +#~ msgstr "Vonal típusa" + +#~ msgid "Designer" +#~ msgstr "Tervező" + #~ msgid "Report" #~ msgstr "Report" -#~ msgid "Stop" -#~ msgstr "Állj" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index bf3db009bb..c6c46fb8d2 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1937,9 +1937,6 @@ msgstr "Tijd" msgid "Display" msgstr "Tonen" -msgid "Line type" -msgstr "Lijn-type" - msgid "Layer Height (mm)" msgstr "Laaghoogte (mm)" @@ -2531,8 +2528,8 @@ msgstr "Print voortgang" msgid "Resume" msgstr "Hervatten" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Stop" msgid "0" msgstr "" @@ -4006,6 +4003,15 @@ msgstr "Algemeen" msgid "Capabilities" msgstr "Mogelijkheden" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Instellen als dekking" @@ -4031,8 +4037,8 @@ msgstr "Montagehandleiding" msgid "Choose files" msgstr "Kies bestanden" -msgid "Designer" -msgstr "Ontwerper" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Model naam" @@ -6657,12 +6663,15 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Line type" +#~ msgstr "Lijn-type" + +#~ msgid "Designer" +#~ msgstr "Ontwerper" + #~ msgid "Report" #~ msgstr "Rapport" -#~ msgid "Stop" -#~ msgstr "Stop" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index ae0662f618..789316fad4 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1911,9 +1911,6 @@ msgstr "Tid" msgid "Display" msgstr "Visa" -msgid "Line type" -msgstr "Linje typ" - msgid "Layer Height (mm)" msgstr "Lagerhöjd (mm)" @@ -2505,8 +2502,8 @@ msgstr "Utskriftsförlopp" msgid "Resume" msgstr "Återuppta" -msgid "Abort" -msgstr "" +msgid "Stop" +msgstr "Stopp" msgid "0" msgstr "" @@ -3941,6 +3938,15 @@ msgstr "Allmän" msgid "Capabilities" msgstr "Förmågor" +msgid "Show all presets (including incompatible)" +msgstr "" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "Ställ in som skydd" @@ -3966,8 +3972,8 @@ msgstr "Monterings Guide" msgid "Choose files" msgstr "Välj filer" -msgid "Designer" -msgstr "Designer" +msgid "Author" +msgstr "" msgid "Model Name" msgstr "Modell Namn" @@ -6507,12 +6513,15 @@ msgstr "Support: åtgärda hål vid lager %d" msgid "Support: propagate branches at layer %d" msgstr "Support: föröka grenar vid lager %d" +#~ msgid "Line type" +#~ msgstr "Linje typ" + +#~ msgid "Designer" +#~ msgstr "Designer" + #~ msgid "Report" #~ msgstr "Rapportera" -#~ msgid "Stop" -#~ msgstr "Stopp" - #~ msgid "0%" #~ msgstr "0%" diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index cdab56fa2a..e428a3bda2 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-25 15:20+0800\n" +"POT-Creation-Date: 2022-08-26 14:09+0800\n" "PO-Revision-Date: 2022-08-07 21:57+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -1855,9 +1855,6 @@ msgstr "时间" msgid "Display" msgstr "显示" -msgid "Line type" -msgstr "走线类型" - msgid "Layer Height (mm)" msgstr "层高(mm)" @@ -2456,8 +2453,8 @@ msgstr "打印进度" msgid "Resume" msgstr "继续" -msgid "Abort" -msgstr "终止" +msgid "Stop" +msgstr "停止" msgid "0" msgstr "" @@ -3847,6 +3844,15 @@ msgstr "常规" msgid "Capabilities" msgstr "能力" +msgid "Show all presets (including incompatible)" +msgstr "显示所有预设(包括不兼容的)" + +msgid "Compare Presets" +msgstr "" + +msgid "Add File" +msgstr "" + msgid "Set as cover" msgstr "设置为封面" @@ -3872,8 +3878,8 @@ msgstr "组装指南" msgid "Choose files" msgstr "选择文件" -msgid "Designer" -msgstr "设计师" +msgid "Author" +msgstr "作者" msgid "Model Name" msgstr "模型名字" @@ -6245,12 +6251,18 @@ msgstr "支撑:正在修补层%d的空洞" msgid "Support: propagate branches at layer %d" msgstr "支撑:正在生长层%d的树枝" +#~ msgid "Line type" +#~ msgstr "走线类型" + +#~ msgid "Abort" +#~ msgstr "终止" + +#~ msgid "Designer" +#~ msgstr "设计师" + #~ msgid "Report" #~ msgstr "报告" -#~ msgid "Stop" -#~ msgstr "停止" - #~ msgid "0%" #~ msgstr "0%" diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index b602b08a03b6e6324a5e0837257c410c5cc66888..b2335228b5b5e9d926ea403f2cd40ca04b1c21ae 100644 GIT binary patch delta 36142 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 diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index 04d7b1f0f1b4d7aac3738c4eb7c87af132ad2dc2..ce4c9a1feaad3eacc305309e9169704f9a62980c 100644 GIT binary patch delta 35817 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 VCmryLQ)&kJX}4~Q;eDgf{{bTLdEx*7 delta 35875 zcmZwQ1#}h11Ml%o(BKdtH~~UP2m}aDA-KD{TXA>D;sk;=6nFRH?oOe_-P_{s6biiW z@6PZ)ym#K7v;B?bd+?~&HPR4bdCLNUOIFaKW zrwWcmAH0NQJ9n@IKEjHaeS+f@#NJpE*I;~nj$Zi5rvHbfiHA>goFK<>o#6yRNmz|B z@EXR$TbKtQVP#A^$#Du}d(4FkF*TmW1o#Bg;z!g#lTUV>l$ZfE;QW{b!%^j`V;uT- zIuS@jLN8Ru!%+=Pz*solIv3T^VjEv?-HMv&Zq!VVV@&)VHGtEY9Piuw&zPI|7pzVH zPUsZJsfoi;OLqa&V9H-iJP&GRdZ7l;4-?`@%z?k4X1LGhA4fmp7qJdL!}?e%+N{7V z)C5hkOB{*=MkXi5uiGJgzE4;CdQakO?q-nN<0&40C`aj7q$82(3f~^Opfg_ z84gB0x=B-6|2PCzlAs1QpyE4G138Ep@F=Fodl-l@*s>Z(c5H@4uqn<&4d4T+oYyon z&>(AmYbgvRzxp)Rzczsg64cQ-Oo^{h&pz&S^K27g5b-pq0hUG$pfYNPjj;lD!_2td z=3mD=#GhbwOh3bv?}Dm7%q38jz!cO{-$pI{Q|kxR=JK9tRwxmwoS%&cU^wxd_!D+U z?THmO|03!U-$FgYXQ+-p+qfHlmg8h0AvFeLF&l4>T9GK!fL5V)^%m3;@5EGi7&X9~ z=-Df%J@MYA$DM6xHy25=4ob^iY*5J5t`d8Wa!*o*i|48ipCX#^`` zBwj?#wAli)t2?1qXeestQK-#37gcT{Y9i}Uk6=4$07o$~{X3Tlq`?O`0KFH|7!F1a z>!O}oT#dJvz4z0qqa?-J~bqwrtU>2jBum5N05w;ElI_$UEw zk}DV+A7BQ2j@sP`mzzhD3H^xYL@jAqRDLtmsp*MoXRM9Sz*xk8L$$jF^=NlvOgz3^ z&!4~_BxngQqn_DcsEV&q6+WUW#9U!!;)AM}47HT$Q1x=6$`?buXey!x+yql#Z`91k zS(mP0{Z(N<32NvRYDPCvGkk@qG2Tk^tOKltQ4Ll@m2ZPu$^ICGZ>SFcz+8A6HG#xyOuj#Ars1fS zY>0WWIkv)R%z^HE8_2TO44?)kAfp9p09`N`M`CVVhwA7y>Y2X8xcC9J63#lu=?ckF z9ge{KxDCVb85TzW-#n+wbs7;UK*DIuhkI=NH6|w>yxx2<3CE(u8>41412w~WmTNI`MJgs7iaP(#31}vTHkpjtn2C4~EQiskmAHo5bT2Rt z#@cL_JRvGS6F$WPsQfHj%!EQPDe*#>3@f4fYl^N$)}MeJfvPys7MNz;fEw{B)C?Y@ zX8HovaQv-i*Qduo;^oi>yP(SVLoNAWtb)TaC7#~O`s>-%xY^ar( zg6d!Mf3-euGPA6q|Q3gR($nH5N5&4MbI1Jzz(%z|!70@^%naTpH7 zB={eW$Ar7hCY*(8;4W&0&rwVK4mFUkSO=5tF&(r+txQ*}grjZxSqvq96*(oY6L+uU z)FL4iwHJorVVsOw^1A!Xaq5aih)+c=?P=6Nuc2oA1f$SvzZuvB)QV0+ZPHb!db?5m z9K)D8|Cb2poL)!0=^kJjOnSgwVco=Hty;09_5UQalRQXw06t`e&e2wL>-a$Un zz4$(W<%usiWWEbN#4hyj6k@vHa2aZZ%Z`{g*9O#p?xSX!$iaJ(n zFb-}-?e@J`2JfO)EbzE#uK?=N7CX-RYsU3RP=hT|=e#>=#u2EBlTb68kEwAZs@y5m z(qBWh^A7c5aZZ?YKUBRi)MhM;8emgYJ8e&}{_4mjL7QYUs-Z>Jwdg~9JI2L>sDYkD z4eT1K-edH^|7?2f-%Wl>RQrLb6)cDvNM8)Yi7tUs1P-7-#yn}3J}c%YUKaI824Oaw zjGEDQtcEACIHoyeUdfG61M7=g;?byq%}1@+N*mvXS}FGc0d1Zu7$0w;UJQ>>Gfwn} zSrI=}er6jFMa`@*Cd5jpm1uz4TpdyQLvajF!K|42PjfnoBb(B778B5nwxK%y9o5it zR71{ba|%*oN1`RLH?BsljQ<%k!~Cf9;usS*V`AK4Jz>+YqE_SeeKlixN!UZ+JZ-BQ%E-HxjGJF3I$s1~d|{g&j_RNSYDH>eHf)WBFbcIt4&ySsagX)SOkl)))9^A> z1M5-Gc9-=s>bSkZESTVdd9~(7rPoD0^RB1~jYRF0Uu^nH)Jp9`t<)*Zi?<%I{yHwn z9-0CbP!;Q9VeE`?aG7--YGzweOMMj8@io-UUZOgR`^fC66sQ3PqRJOXm8*@KXeXC| zmas4S;2_kSY!qtKOht9L9M!-!)PPQ+8aR)!@D{4$f2^-iA4Xp>2IhQh+RuZk_Y-=f zTaJJltcdEcCTa=Wpa#+twd;qW4^G3_xBy$=a#RO#pO~dhfSO?j+=K;CyZte$omfxJ zgwhyWIoWMO5o;yXBWPspVU4uTN9~!d7=l+(dm`2|^J)&pjKu3<5cZ8;nJTTT8gZZV z%@RXUQ=4O5ZQW@-fg17^>lmj9kY1S?? zYAu6pJTGbui=fsn91~+b)G=s>n$mC^UxWd~_o62DH)?HTzcTOSw5VrP81*bmykeWH z;c6tvcGd`6U>a(GOE4a;LhZIK7#B}qYCMPP=qYLfUa!qc#z*bqG&Y_Q;}Z|XOjyLV z1)A85miQ|fT`&R0cw-)35^FJQN9%OdIXjGcG}ln)>K$reiQbw41z{56VW@$Zw&`va z0$SpFsF5~86>N^lu{##TQK;jv2aDqo)Dp&eXJ+J!nt4XlqY1{OSQd4j>Z5jJBh({| zKnChM6A5G`VL57v|3JNAu3#`GdvDTBtFL2`k3qX!8FhplaVn5)xcyNfeUPUz(@0LEQqB@?}Yxi4%P8#REO75Gk=7d z$Y<2YUjBcLbxp!}h%Yc3Hu_{X;c!&P(@-n22(@Qc zS+}7-@xwO%9_kT2Ltp%WZVm$RKbzlu7D6rMY}8knMVJrw+xR;SB<}m4`5CJS`V$|E zn!qa50CwB>2^+tTn#e=c3jd25K!PujB|)2{3Th_xQ4MxLy(m7K;eRMf#TRD2Dp-QB1T&)WRksP^4^1kw?Bjp;FQ z3@^{;V@}LLya{U4j77~j8rAR|)Jm+eZbm(--Kb4@237tBYC!ie1fQT*+%Kk=R@`+m z5GX-HFc!p)*c2CGR&-*S83dy8e?o1_UYHYCV12xVnrUckFVCyIH0n__Mm_6Mr~%DD zO<*DV==^UWpb_svE%hZ9yO3QsN*@)8Z)kGuN$hPL8$hk zupUNZF?@`%=-&zQF%?3sMQ|eNVVinwqdQ>qIczHH$ zLe%Cgfcdd3hT$Naz7AbI`#l7->#w02cxns0N3BS#gk~lwQ8NidJxSB7 zLs9Kb#EiHARc}A4+;Pl?R}*@Rlg+DRG`n-(u7EU>efTqn_<^ z{2RRzdwKqV?;dLDf98l}!v3gsXQ58lA{$?x#5KF|Hxm5F*os=RKT&()CicTes9oGL zshL@OR6_$$D;9z3AQIK_WXymIuomt^?VV)F%qeStYQL{*1H(~EGZEGBd>dbasfceu zb?~Q6zl3Vw0cw-JLA^&DU(-%H)XL;U9k&vwM^)bDH^J1z-7dDk7}W8YXyemSGnt24 zk##n{2es?}z+C8^+!%&Bj;*YdQIBpf>U001jsJ^U=_DyUE9yEy1k^#OwHT`7DyUa- z6V%Mx+w^Xzm2y!tn{4x^qxQsn)Xa9G>R&)@#@ncRuTZaI@01z<=PxS(6%4_WSO5!R ze+hLLQz;941=Iv+pKz#Hjo&xm-;w&prz_& zGe)D9Xd3Exu0tKGlc;BY6+`eIYQ{-ZnI+DF+N3ow8`eX07=bzkQK(b37PS(G(ACH; z5YUJpp*nhwYUn@IjJ;EvhI~*nN@?SnPz{FK^fIWGs*ajKE7YbOh??;<)SGk}7RH^a zIsXd0wHcvlOo39U0o6mzxH0M(wnsHI06m|Ys1;a>n(=7MeL>Yv zpVmw$XIjp`W?X~>o#P6q0<};bw6X;wP@5_Wwab^H8a!|F-(U^mPC7Htny7)aMm>Vg zs1+Sxby4k&Qa}TkZxhy{mhhO3UqkJIx2PE=O>Z_|VXQ{H0_qV>$MQH2)$x7QCVhe0 zTVGKtnj(YwR7`^!kXwd;MpDVz230Tu)xZeUBlrbXVIFFwmS6!~XXE!!1P|y zpV2&ulBi8r5w*gNOx$%k5@<%kAkDi zS*V7OqGom(v*T;bkLd%=UZ`ztg#AfxiL3A$YQUqi+0Be@E)td!(5}9Sp%^2`j5rL{ zVRO`8=#FZ@weeA?XE_zM>6W05=~~nZ?L!Uh6l$Q}!RC19L~YuV!JL0ptU!XSiRz#c zY9(5rp4CuPN0F!j%|Lau6071ao9>g{q^Cj8BS7tmVm3Y+b-Jdb9@VPst~n0>k)V|b z3^7Yv54E{^pf+O^>hpXN`r`o%#J^CF!Y7A`2cX^?l~KpFJ!+tnP;c6WsJ*onwWkid zHgFA#lJL^TbLRB&{P0;C)$uVbj`vYZ8W?ICYJyssj_8jAF&Jl~9@!DphtdU9$CpvZ z^d4$p?kfU%!NkaAM&yrL@&Z^N!!ZJ<;T%kn+sj#q8&MxBb@F&QQ?M^q!?yc?Jc%1IURkpj_Mp;Jlry`$4qhbQ9Zz7n@?OqFxQA@rC zm43md|BGrcQBBibMz}!uI$Rx~mBI5V()A z@g?fb_W{*G(%L4T0n-sLWUY((j@J|Q1Ijqm02iY=`VH0YcGSQQqE_x4YJiuKH>c~| zvI)-e^5p*rwGf6R?)peAam>!Uhoj+w9rm})LhZFb(eu|_{~=JAg!iZhayKv|FJ!HRdbKt|?dE}~6`O`SPV-TZWEHCZdYiu; z^AJCPn&=z6g}oY@H)X9xoPSkZ)5y$VBWk3_P)l?QwF1{rBYuEd+ApZxo4B!=VP#Z$ zPt;x+i7G!A)!rt|h1*fb@*%dwr;R!PWe8MjV!nh%V;ADDF#uaMHE*s_s8{L{)SmEe zW}bNp)QmfzI_iNMa9`BKMxgf8SkwR~TNj}QxY;G3 zL_O;uRDLncf@M*Ur~|6wG3bvIYyO|rCIEfm_HPj}1g6c3%OY`M1 zHLAlh*2<`7S<6}v)nOx42Tf7sTiJLAYge1z3*%~A4kQpj!4WoN1!_jW;W*rl8c6w8 z=6p9q&1fO2gUzU8xeK)ddr*($ENWu!P@6SoYx5yh0yWT)m`KNB3;{i}X{ZM0pk}Zb zb-Y%fmUI*96?_PFI_{v3;d9K4A5iauG;Pd4@}LG<7PZ+Lp!(^Gnow_awTVU(P(u?@ z1*fA%xE8g<>oFr!+>BL-UubJySee?HdLdYX^n6$m`(Q!bhb8d?>a(G6d$UqyQR(H| zbN)*c7)yfQSbtzBzDISO^=GpJ!I+15KCF!GP%o^FsB`@kb&Aq;FpsVPY7do0y;+;1 z-h3TU6CH`#YZE%SrrCd7XxPe-_`_`wZJ@VSdzgc5-G&7Bl+7o`L zN0}P+XfmLVZ+@F!$t4g%LKUoo{jmf7fn~5@Co}TFs3n_@TA8b;0o=4c#vH^ypk^4* z+2rR$eM}d@URVqDwf-n-1>6i>%nWm(W?mSz2P&XCYKB^gR;UiUpf=w?)TWHI=`&E9 zYAI>}+fXaF-{$|0Ivtl$EARx_ob3Ou=Gpn8D(18nKs}P;sDYHn3|JZUtUF>LjzrC5 zHP*u2*c20YGXv;?D%TG+fqB-|9_fEO0d1}$*b+aWI%?S6jJQAQ*^fu<;$JWb=b;98 z47C!cQ8T=a74Qw}SQhPJ@|&aj>4w#DA$orPe`O2A>S;cNQlLiK8@2Sqtm9Dwn2uVh z#i(*?Yc;?<_ zK&4Q-x+>}!*Ft^lHbD)r4{Bh;PU(arGA9D;BqLzLSs^AS& zg9-bZj#A@P;#pAX+fnEGu=O@-$v>e6n7*HRqh>};G#GUn3ZvenHT!Y?HGr-pXp^`Y zfy+=c&f4G0>4Rl41b1Nxe1M%WXn>jNRMf6shjNV*l9qbC-Y$ zenyQj;XpH^^f-xlA)JQCQ8RBo$jkGm*Kctj@d1O)fC~@t^871J+i?Wx;SuJ;>mbe` zUX_W?#`~zfFnp+4DL0CMmT(8 z6sSj;5mhfYs(cC5r(hM-fSaRUaQ)Ep{eJ=heORnORXB`l=nQH`cTqEZhkEfO8ezYJ zS&N|>tc5E7GioIVV*pOX#kdKxVf~S21zb$V`^Ongpa{-HZITP98QitLLM^G+C@;^y z@{|fS(3Pm~d|OZ*p2q@s&&Jb@Hu<5bM_dK9lI<}sc0sohfrSKe;D6TOF=hbuPy=d* z8bB}1j^j|ra|>#v?xUXR2h`^Jidu;{k>>QIMRhm@^WzZ=!_SeNe|?UJjy1>YXVeU) zVm>@+|B2efS6u=* z3EaY(m|%jLNi)>59e|l|I#$9Rs25GliDuKKMtun7LM?egRDNZAgDq@+ok?aQO;CHK z18TtTAOc#tiKvmSv~ETa6oarD24X+d@tlV$zXG-5 zYq5dO|0V+3TnVPwB}R=b3{{~lszN2y($_$JdeujLBWjC!#V$uZvel>wZMX6Bs7-kX zwaFi$J|j~8qJeS#3KP)GOQW7qHPo|igk7)$Y9%hCI=GE`A3Vk47%SRr-m<6{Ob^t@ z@L1GW}X-IEX$#mx)EyR{ZRv1imh=i7R02#ntByc z18idLfO;|YMXkVi>#sI{9=clM)daHOder8*faCEI>Y4VP=H*0VB-X-o)6EKXL(MP( z)xjwA>?N#2d?jkYUr{R)dxoi>0hQik2IpT(IDiB#*$!LaBkB=Uo@svX*9f)bxo4T< zR1r%P?}l31O{f>qUet_F;~cz)8rbmJW<{e=6Pk~zw_!HtUmfixK`U_*wFk~%Fy27T zDE1t)2{WNKT{hIrJD|>gcT_t=(H|$F2DlzO;9D$*&F1o`ym*9If%tZJp7}oRHQ#)p zXoxW=a0E5N6AR3n?gHi_o^+v^X-U*fYFXQ$2GAFET1KJvQj|@fXVcfB_SPoUqjrxG z(30K2eE1qQvuuk@fl$myyfiAkHR@4y#1LGG>iD9~{|9y6pP-)cJJd>k!Lpcbv01S$ zNPDg`gn*vyNYsqyqMqdn)H&Z_f>rwD_;QK%WuLA?i- zqn7p{YQ=7$%DqF)JoZ`>PmY>ERvWK_0mR#44376WtWA8PyUzSd)aurC47TwIOb+ElLV+2PBK(}YSaL-qn=&3O)rfqR|jKYW7I^NqfSRx8y|-HbexQx zaW0P1=YPB{HUqU1bFHgU1KNS=@PPFw>R6q`9C#fyu((^joO_rKb=YA<;2G@CO%YIA18 z{1}dU=DkrXIo8H!q3ch=Zv?c2XK)@~MlD_6UFO-2MOB=Q>TnHeMfRiK6Gu>|;;hYo zhB~fZyG=WO*6gUgQ4FmA*d1Z|EfsHI(l+H|{79UntgxMJgvQ8WCE8c?!5 zW&nYxa-~rDbx;H8gnIVFP%AMJbK>GXod1FZ&XS-_3#N_(~<%;(6p!(2tut)5u08Owdoq$^f9Ovc4rgNvtMRii#kS|Q5|nb?cP18hL54j zU$yCXPy>F9D*xK1e?WEMb-=7h0?bD|9ahAe$P3MNW)s*&!U4>ULk^k_*P$BNj@n#@ zthdqgxsUpAN`A<^ISZlEo1&h1U(|rcqxQlSo4x|IQhPDE&i_dQc}ci~Ixfi%n*xf@-6Z=l|AuTdSvJ7V^fA8LR>sPZMz^Z8$wfM(hSHRArL zB_D#?lw(kPVH&E#m8b@Gpl7e3>R&{C2HZh)eBb&8Ly0>_&7;kQYCkV}{xcWF2zZlF z0o7n-REM=u188UMgWB~YQ4P#Q?S;kI7FVJ6PLgA0uOvsUL?CX$aMWghjcO<1an8SH zl=--sS(vqywHE3Tw6YGcPPQ&by+8J%cK2P>o=AAYyqfc%K7^WK5JsTNFSq`F!Ziuc zY(kRXy*&R#p}eS>Z?NvSp0?gX&E%Oi?nx8RVhzVCii!?HEiU8D}$%z_pZBz%1P%F^MruRo3U)QFOvbw(z&`9Q^8rX>1Bs)+eKa6Vd66VGS zm<>~1Hv=hw8b}4yIj@P@Y%NeL+7&b7Y}5qy+W0wSK(6zSfGT`O9T%S)X69K@ySfN! zCdE+$se;;!O|d!NRXRUXmAvWY93x)qmRZR(x6O>RqgFOIYDG(+`m5{7cX^c(PzN1Q zU&H&NUXjtLW48e{lRKzQlkkq2u^*~of7CI|Z7qbFX$jP(tbE|#QAEPFk z{BJX$Oz8RZzw87wvm&Swmq9Ic4b;q9qGyFrGwX|GaU5#J&Y%YJ3_D`xe~c4Q?R`W& z%9!^|dp@WSy`=Xz|78etCP7QH0aam}^$<=Zei|=hv-{@XgevgB4Cp$l-b1W`&#^rg ze`qGO9D|5&KyA)zs8{wQ)XL_3ZFV|*2F<5ScrIrY>GxW+T{dxaLL0Srey5_gWt|0!zaKBC?uv0j>XGND!`3^l>Bs7F=Blh65YNkCr^dfEcx zQRg+<#^<1BvKX}@n{50b>e!t_?f$s0jKwf7@tzol%TSN*DrUi#HlF-7D^34S2mvi= zX;cRltqo8ew@1An`l099+4OO!m70Z`*=n1=5w$0Fq8{Z%RQ+eD&G->jFWwu@zuwJh z31|S}sDfp%Bv!|QI0bc#PN0_ZHLAl{Z_UytK&@CR)E>x$-WY;1_Y@1maha}2>xs2K;oGfP|&HKDec4LhOgMPnvh zfI3wN-*Nu66jw;l$R43a{1tV6W4t#FB}L8H57kfx)Qm!Gya1}f(l)&zYNgtsCeRPH zDJP*Owi@*&-Q^O{50|H{J|9d*X={DdfI6XO+#U4{2csIAh-!EqdY(CI#urhK;rZGPN;&8s*C zYM|{<1L=>dKMeI~CK_F5DgiY(3pIevHhvIw-f!6WJJcRX{K?EP2kNxc!TQ)5^@w(1 zc|3^fINoPd&KI?}GNV?sFb3=A|8N2t(a)%XbhSpJ3NAu*v>f#awxY@(M6J|uEP&@w z<$V4#UOF*o0{OnT#cwk@#|qz*nff(fzA=Aw{7kuopdl|L?HPIE7leZ&(7$e>0CH65A1~L=E&B&c`RHm5TE6_WbRcgI?aQr^8ThZ_k&+zF3_CGf|uC z5%xpB7~Y<9I|+*t-+=m1d5*!DFs8TXPsa+P>a|DhggY0RKo8LKPRFXmgp$$|^o)CHkT^%`()fIDk4n*HKIV8vQY8Ja5lWLSd-#4Q;$P z>b)@=v*9+>fN!Ht(MwFI@BjZ1(58wP-{_Be#szG=7mgx67S(a$1m2!M^)FVrp(3|b&IR2>eSunoNe;xu_s$!@YOm)a7E9&Qk1&O`&-}rU*Vr}e_#BAmR7)d;7QZukws7JL6i_yR1lg!)m-+U>L zdK5RYG3NI5_WakO#-ldj5!A}O#&MV{x#?&pYIi3}L5E)az7X|nFQ@c2|D_YuN_F!y z17C?+$#SW@9arB}+7if)Gf^EK#!!5PWzavhx98u4YK!^kU|AY-ey^uB11z7;+w-qx z4aI7d|AY;&VtNx_g!6ib^9f3q-Tts~Z`v-OW{zWyEIFET%`lI6cP%n_O zHoc}zZ;RR^eNpX1qTZl$ZT@1^x!;VM@Ifr4^M8_no@JsiGm}cFS8^THo3Ak@z&cB;RoPnC*4%AZbLv?V>=3holE9Wz(arOHuFoZK&OR5w&8kP{-*L>XF1MWa`I9<@=&0k`DFCuYphTj7y*) zfjxyyMZY5E3qpF-NK2qrs4Qv|)ID^vn&EMq{sOgEynZs})1cbRjd}y- zM;%MIKY^A62BV(sEo_bfMZG=0Y8{CI#9yOU#;=&S=fB-n6E%?Ks29#2)QTkzHy!z* zXV;@vBoMWya-asD*XTNB38cJbdsZZ9+A$1NE#=+Wb4Hz3>qA z>6W0lDIbFV#PisAEmZvmm`o3&BLVHkA*hbWTjyHWS@)sJok2Bl8?~gbP&0dvdPHAP zry^bna~w0EUb&&D3FWbt!I;_%^=(2ER0rKq1BpOwvPq~8SED|r_nJ2vn^$Lzg zHM|}*fxVa+kD=ZNk5L2hDq{wk0{w{xq57#LI3T_{@^`F*LAJqEixfP@n?vYlI3FB-av zIkn983c=R4^IdjuC5RuVk@wV_X!BJ3AM*KX;?yC%7~zkozf0Pd_DYi9n>2lCo?kT!ZOQ*KE8&{K^jtC5qwfpQ<{Bs&%Jlitb>s3vx?4ezJiPRi)V zIbFYUFC@PfY3(WF#a+mjeMfp}(%m!sV*w3*zXs4q9NYL{o8E}bV4L>6TtDjR(*K0) zAjT%YJ$1idL+NOZjf^0@8*P1~&S27(l2?ZEyZI^K$wojcR-86j@SByFv?7;brt}~vvKlZ>QrcW@WFE!_ z*qe;nG*;I(vVeF9;b_uAxiisuZ?(de$`0TX`EMu}oBZ_L^KJUir2Tm1BQlmgl2b<4 zp6K*l{M@%TrWAcZgiybLcRbwe$g!l`nqMw zy=UvTA?Fg!b|80x?Pd=(bX6y>Bzc30$0IzHw0^jWvd!=@>8rUz3I9X6)8vogen~hj zeO%_gOI+74w0(@bxQ;b~b;IH-+$4m7{~t*o2&>cmg!#1M>oxC8!AAci#AK`NvJq_@arqh-5THNt%0}ZLS%hpwcoe8HS zuenX@j)^G${n|>K^J(wO8RVHh7CV@%1er0U58U(2@$9X(TD( zIHbj*z;e>Un6WNz!n(4PK7w+(29dXb^z(`n?n!t#!6nq!RR(WxXXWlsyXQ%3rF2{W ztcJ*+MtZJFG!Q`Jrzlv7w1uR4<2)*7A#WW{vt_FgKSq9L(gLYdka$w^_Hp+ioRERM zw*x*MUA32A!rhd-&8^Efx<@Zx_YnEslx>K+>2n0_=&C?CDJ6BfGuSkxH>T`-1-Ne5 zw)K0WB$Ta3-dNI_b0?-w2I9K-QtP?iGOo^~Ewm#jp&$9Skyw!mHBmnV9K`rkXv2Mg zctP$1RH#e*8s)~?#sX=mo9#fY@1S01^4C+g434wqLI{r{+=DXu;;O3&@zS0_Fue#0 z=!!)HgSg+45ya@z+6GK66-fJ?vi&Ht2It%Sk)-z|`~o+Veu?m1+IUUHE|k^9kBCk_ z(y~$}BWW*epB1#cshLH05(e8uRj5lrU0n?S`)6a)3)0Xpc$kK|+ZE`K{4tQ{ic5Go z`4#XEDf>x(ioI<6dzD5wnA`n88u#_ zl2D&N3Ut;G*KgJO5}&B&ud5pk45s2p3M?VK$2ORfctRS=LS7f{5GviE{6Nwt5Z5mf zbj2b3<8_J1W$OJ-xt4U8&gR!6zKd{T+9^%g(|;ohe81|GQHRbuardP_HsU7;k0V^3 zTURdPXKBROHu`}2b4cq$hm~wwhwbbOQKu_;uecAAH;_9AZM-D@SRbC{NT^NWawIe% zyomezHHh#W@;cK|0m9|TSVy_lG&;<7uCk-ZOKm&k4>z5h+>0r92@Cu#NmlQy+fl{1|yn zX>cm}!^ta8yg7BRQzjCV5N|;n)v>1Sqmdmz7t(YM^Zbn~0=aC$@gF*fv>h*`awe7G z4*emYs1rp;6}dZdKd^a~Z6_nhe?z-@$oqy}xogwrYwmrvOb7iaKZN_T?JSybJu3ce zM_ht%Oe&7XmXuk>U5z^xjp`~+9>3ypCQ|+_{_gqd;Ah+XT2si$ORKt;QuC?}E8c_n z7;64O`6Yz^q_w=<-G3-^&4$0IC+_c88rz3s^8=`_tDL@Cu*IB4WYn^W$|yodNg4J& z+sJjBmjKg~_A3nzrOYDg9Uy*_I%6;jQ&O+o_YR5wO1Z4ux>6#)*>TQMwj*_u@oOY! zDH+E}7((WMbTAV0bBB{Yjr5kPX|KgpDn$4&jl9L>Sf8>VDVLl$I0Y!9YcK;T!yTLW zXk~ECv=gaIouLXxzZ#U*4W`uhD}WX!Q933ibSOC35D(wo@O$g_Qd;<-;s{_ zqa3F!_f6Y)EW#OVxrq$mv6|!RM<*}2bC7q2`c(*@;!aCg*Ked(rHy8!<<&DNMCB=T zFqe#DByJ>}fUtg>scSP~U5jX-9Th|E0K9Cv^4@Sar|yqe9ol_nJ55Z+2=e1mrwD1q zxf9UNom3u5IB`Kpl63O(wU!|y9{)hN@!uctGh5Mln$Q%kZG?J{ytNeMqh@{*vSWbzQPeeNQY;`~qF_M}?k$n|ZO#XhXW^7s|wUkpC06 zuF?Nb{kF8<&i1~THddK@*Qrio7An*taSHN>B2GaH7qShhv61=*S5qprBmetVmU1bH zOr~s2*60@b|B^qB@D}niaeu!G)6Y@vv9?|He^VP+S4Zvx6wboEod)jPPQFsA25E_~ z8jV(>fzP&4f9hNz{wob`;Lb^WF7gLq|GRopZ#eNjw$5T~Ks+-gHc~dwr2#+gqa;+N z@D7~8{ha$5@zdO+==dyUzF!?}2mQ$_PBm$Y4;@;v{8wqi+q{zIcK@rpE}>w#Tz{lP+SW~Xa0gDZ-qh_|-` z9ZS3uWfRyk3kjDYttvLOZ4h}xg(J8tQ+^hC>ui2@;@7xquH+xOKGDGx?k6;OA8XKQ zf5O|T(1`Fm(yrP@dy@8^`waPe8EikiLcBTQY|;5gWOQRtT31|KL*aLn(6!z=fV{t` zF@xIGxWADXi=OI{_8ajscm#Fb!)WrpUrDK(hIUHX{3UVs-$kaD&Xo zwp0GB)^k1LpT3m&kNYzfBXAqe$JAJX`%lUiGsT@2r0ZH~&58O$qi?huW(TpG_!I`Y zJyv}cHP>1SMA*&`)2ObU+_kxD(m^g7YGP+r88482l(av%169`6^`euo=#?Wgx_;#3 zq@^HgHz2Gl58ME6lG>`|G^zbelB{Bf!ir_f_otC z<|geiWn&U9NV(nIonm;tTXDQ;$e+6vg}z^hXy7erx@r^NPsN0Im7BVr>!ZH8rpQ69 zi^PATd0lC#)hBxGC_ncQp{0}`PtL#8zi8XrK-v`2-V^_c#v*LLem38X54nFP+@A(_6Mji} zn5`T}y_1A9C~ngZQgZoI_{>_Pfyxw!Z8>`Z^Gxi`Ss*DGIZUclY)fv z(O5T9E+*9APtuqm=#IMujUm$-zVO^teC3%~u_Y?PP>iu|qA<{Iuk~lSu1JxIE?7 z)7A`qsQ0GO67Jt<^a~l+sZfB-kra+g`k#b*;0f-X^(oihIs|3cnBw((7*>H12( zp9wlKX=4@P)Rg^=vU9oja(}<((7%(B%vdCzWdIw{2Pe`f?Rc(U1jdq<$yVG&I5%~E zA>M>?)yO} z$spq2ugjz#qg*fvNol+n`Bk}ffQk8OV zDCZU-a|`zAx_L!rZ#nl9z{j0O4t#dYihApBEatSBLgp+xDE^gN!z-rFwi_uA^^DH%Qf{?%>G4|&BevyI|! Gi~b+oQi|*V diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index 98687b277efc15b9153173ebb9bd5e6548c73d16..576e7295d986d47731a4fab2d85463d206392a52 100644 GIT binary patch delta 36145 zcmZA91z1(tqle)Qc7WZYSO}tGfQkurVRyHV-L1zMyT$Hq9b3nau^qd+W9)9d-|wu& zy*_t8cmLm2d-dAq0M4EAG0uYzaa^|&N1y6&&5Y?dY4Jg@<6MvJIBWh;s^g>_=QtHH z6~@6|vQ!yT9(qmOr-a4d}Ra3Ff%Xq!G3OAtSW{*L2v5>IfPoFo*&XxJ9x zVn@u4eXs(q#!&o(L700Yox-LVANye%9Es}a5=@TkP#r#m3Go!F+-;0S`_4B4-Xuhu zWExJ4s=xoxCL+E8)q#VknLBCoFJThm_c1Ac!o(P#9jB#B zKb859MIe*}RS=Gfmq&G^8m7Zq=z~4b4*@2DlI5xz9X{G}sP~|3}2C&_F$a)U- z{OxJXzc$}15~^dm>88Q1n4I_|)E-!YTH|%-k2_Euy^pHs8ET~8uq-B+!Lnc-RDM6q zjbpGf?ncd&museZFa@e$AVy#zRL@7DmSUQ9A*v&5P&2k2Rc^nHpTeTVFJmE0KFjQp zYN+xq)RK=xEvaid0X4kTCTzh>#1CQsKDO~hv(3zepgL3owaXi$M$!UPVn0kizZgX;?1{#9uXesp3`ENu(9q5nRG~;j}Zbns@cfR9v!|E7_M{o?j!;$D( zU`85yq1olhP&1SbHS!SDW-f!8kqW38tAk!H0?i1h1D#Pl9E=*#BftOKJ`pV|VUSUp8T2wuGZM-<@G}T4b+js@@uZmicpv}}3 zH8s6ZQ#cqkBV$ny&Ow!5get!dW8)^&bGuM8c^LKFWmNgcs29&WREJ}(G%vh#E17?d zJeUMo8TCM0R7E{eBOZYo;cQHWn^AAHQ`Y;KjQD3%dGA$bCNrWx@nB@toQ9|wcUGGj z$mAlRo@K*=SOm36dZR`#%sLhILRyLwaTmtJh&ATTSQoW)y)Xzzp$71`%|DJB;1kqL zMqA6Wpeqi6W(100c3fcn7uA8U7$4)VGaX2Q0mO4+F06xUXcTHqXJKqyh?8(S`f(20ZHo~~r7NhI@_aNYdeX$(QK#k;{P5*%zh^N`?IHj=&Y9{_fZMvBl z3;)6-xDAuy34D%sQ2GCEF$21YiHP4rmwNo3fEtXo)$}Z*H3#a!0;v2jYkgFQd!mlv z6x2v(qAK2k+Vw}!4_{*(OtH5fc*Mk81E7 zs)Ea?rMQV+_yEK4E$WpUyxokr0BQiGY`h6-lXlq7{AVT5lLVd1d8nT5N3GEb)S6vF zb?hGgfp1VVQ~z(%Kyyq7zS7*pU+EQHB-m=0G%)nC_T11(S;=!Du#lQA_e zLe0c()Y_gwP5lGRj-ESBM}n{@@%)$#d!n9Oh}y)Pt@|+<@l&W7a6PaYFHj@;ikZ-J zm)S&qIGA`L)DrB*v3Lr#8SC#h4J<+}#b2n3x1u_*7i-`-RQ*}^m>CJe@;d)z2qaJuQIO04)_IsVe3PtgRKvnH&|CxhnAy8dKTU1+4>&UftW{3 zN0XtJA`L1%r%f+{E^Vq31oXnFjheFd=!ZivCa$#k>oGm?LpJ>(7A5{112OQZX`nXh zxmFklJ76sAg&EO>C2`SF=3l%0F$sF$6KZXLqLw7ZF;ihi)cMYh8gVhyb5&3yYl5k; z8>-wm)YQ*L)w31#e%Wu+ub`fLcZ~Jd`HXqo^e`Q&B0p3^VW_FCigB^IwIjwM-Unmj zP}J0pMRja8>bcdZa=UH%5$k1C{f}J)G=-m09m#*fd^%Oe;>3rbFCIco{UZ#)m?zDW z6~?T@tD;8K2P@%NEQZ%H4W{|mbSyt=hRdKj=4wK~i$GhO&>J;XLr}YXCdR}0sQ1EZ z)QC@GT)blQ@7wq*)X2V~7sfkfW+D}8Zv~?A!*PVpe>DO+@7GYr!#QovXA9JbdZQX1 zgPPL6P!;XR0KANC(c_Hyw%Z=HneU=T_|c|2XU(zhfeA?O>z4H&Z8K(}9+;2X11oL% zK}<;eC~Cx4QJd=lYHEL>W-QG)Q!Wo`GnSQ-c3G@lWNP;swYX3x~X^2Ar5X5<}e zFT}cSHfKUiPCPq?U>qMor;G9ECSfQ`hQ_S=&CS2gjfqoP(N? z^{5%!fdR zA2q`FsCwevGb2xrDpv?oV+5*0ZBR2k5R=lrGloD85*A>7JcZgcG4GoOlcCn$5A|S9 zYayIUyew*Dw@@?i4s)Z&12cfUsOL+d23WzSx5dP?@AS0^<4`@FYvbEd4<1D=!5NH> z_fc#7#HPPNy`rN(G^ZsYs-wwKGmr^2Ga)v;9BT8`LigwYU;>)rsi?JIfEvkio4y6r z@IKV;J%p}?!`7m6Db1@^9 zd~6#8+V^Jcya`u}zQv#H@7|)IbWM_DDIK-UKy6J)bcD8p%)+^5Rs~ zF*#-n{6ak#|Ec*QH50}n-q6|-wMjdmrg#8qlTAVmXgR8(y{OH564mjWsPZ3O1XM8Y ze`cf^QB#)#<6s`tW-N@_0~JsWHbPa<5!Im~7#Bxl44jH;c(!!~>O*J?M#BfF`dv>5 z#3k?+J@E&sLg$%jFg9um)1W#MfZFW^P!&XAOstJfuo0?(y{MTzh#KHU+=MSsn|$GO zcRem=7Xgjvto5$-jn(6YS%O4Xe`_&oE!1A=fPpv>wI_CAcD#e>(d(u8p)?1od@Z+; zmr^EobtZa`s5e%BWo%~cVjYC)_XO)I>mlnM3@85^Ccq-EjS<#{)(%*c`~j$iI{%t8 zpb5N6f+qA1D*hj8BHy4U@B^x1uQ%o__@KrWYU6cLXP^gae6vsswHx(9K8LFJHG1JE zRJ}3Yat0Led20+o6^KCfus&*sG(~N>_81!nVJaMjYG^TP0NYVBc>uMQ&)WDUj7R(- zX23T#KZ)y|$w-NMp=QSTxC6CTW_^_seaiSRq>OnHAa zTQU)92}4jFErnV18Q6$`rua_`#R(XI$87pLOh)`Csv}81nGUB#t!V~SNBmI@1fx1w z5>;eH z@&y=*8&RKm&#m#kniOc-mMEg!Kfx=i?2{;tB6jQM+F2k&t=$qMup{RxQS}t=D5_wVB)=Od=2^$KaQ2~4fcBzNOke)N{O2R^m;`OQbU)3x&WkEo9W}z%sNLHM zbiO?KnSX7PXur%zyipbUqCe)w^jHto zk-n&o3_+dqF{rhlh1#?$P%of!r~!Pi@i>l$yF=Mg;4tRI z2bdj`ME7uSnlRLe%cCl;j+%+))^@0oc0+B-5vcN!s3n+#fw%}Y<)=_Hei6fT{_haT zPeO(m9`3(m)EZs$+8ApSABQUU5L4h+)KVml<>6lI!l({a zMh&12>NK>$csl=G323SZqDD3WHAT}=BU^%{a64+sexf>(CbozBcvi9QM9qL-9Me!9 zRDH#<2$o09$VgPV@sjqPSp>%8GQ5l-aXp+R=oQa&WFzXqy;ubgVMRQV2~c|_c_MxXp^@h#L2FV3dto`$lI0JT)hZT>DyMf_iz{}^>DTrX|HC)7xO zqGrT9sfqibc6$yC!e-XVn1lEM>uc1~rAy}F{t6m`iq}O=b!T+%epLPAjV@;{0X4h^ z^3hEdoOkt)n6xCowRFA8prmPui541y1?15Us-l&QPpr(E#YN_U;2Dr+m??BDW zX{GD@KO&$h`iOeLc&9YSDiF2ip%{pzP$TYwnQ$y>MC&mtZbdbC3v~*fp-z=oDl-$A zP#p_Kb+{b5bbc!lP(=+;BW{MO=nvG0dfND4RE6Vh`V!Qp`wKOI1E@`T4K?DAs5fZL z)E@3{M5(PcQ0e1SbN&@rM1p#>6*c0W=stF+imsw6eu|ob7-`IieNjtN7PV)pVl=Fa zdJ#25JwE_7pmC@H&q6KXiZq;m71&6E8aQAJ-a>7vXQ*8sBdw`0FRG&ISOuG)I=TVX zk%Kn>Bx**lT5qH3dx&c97pfx(Ts|hl2Q`)XZM-~cFSJ0d?O@a}PeNB&Rqjq~o)aILos$eO)_Xw)z zJ8k+!EKB?mcEg|yW{)h!JjC~)M*IfVp--q+@-Hl+^Y4?dRhZw#i(pmasP&4-pgD{yt=U=UoiKhP{$ z`aqXC7F|ftl*~p=@d?yaJwhELC%gH4Pl3Kf^PwNsMwK6E<1au~#SeS&CHoge;L+EzY7mLC#G`&$hnu?n8)mR%hp?&~~m&?PMgQIaFX3cFrWRBq^ z;?J-W4#?x-{zL9b97#NFUemFqSc>>z)VJaI!S3f=PI&_1B;3F%m@dSOpc85{&P2`3 zVeEs^@|iUqfZFAUvAhSL_xa7a9$mo0=}-C!)J$awH65>yn#s?oW0<0#2R}=4{wfgA zH=NF>H``Lof;TXXiaiUFk0lD5@B6)rm~!{AALUXPH6xpbb@d!p#eBs~`bexu{1i6B zG*qg+GY~84{4XUi3*VwX*T;pMZ!8;7Yjgp%nI2&|^e%2HsDsssyHF!Kk6{?Agqg9j z*p2uw)SK`N`eOEyrh^ga(un61@W)FShQF{VhL!TrzZh~{sJ)P7wr>2fCi9~L9NnsrjW&rmaxtpev?3B4+K=ue-{R(y%WE1Dkmi12X# z(~%>nhN4w6Ykn2A>#J2ZFOp_hf_Q7xCR>gAuzF+jzoAZnQ^kCyL_@uAysL2j)o=^t2cgCGvygj>E%%A9Z_$tp{NE%S|_7kKyy&1XDvpv4tW9r+deyp6dt@wXM&_a3pzBZ_+Kf8)hfocl$KrSc z3!y80bu*IssCRQq)SIt8s)6A)9*KHSthF9Tedl|ODe)JogDGp6hBBjOCls)1-T$;y$SQ zGu!l>m|Ew*C;?4PT~xtlsI~b6^k~VoqTXCz zQ6EAD8<{=P3$^B>Q6s*E>i8p6ho7Ma_8GOOexf=aqp>jss)GS80y=KRQ0KKSYSXnv zRXhMy(J)j6V^C{7*XD0T?S&nvCAx(w{~dkNvx$jkLOmaVs=p9wGrB4fP{R$a9jz|w zL{!0rs0!AjMtT4>vLmPwpF*9A>!{=S3iZnUg=)~VsWBPqd4CgkIXMWZfiP4@Dx)@8 z6I6r!QC}j*qZ<6%x(~IMN317M4W33da1K@evW?%e-nZ#bFt)bkD*~A*_}OOoG&3X0 zjH5}U}T))sbbWj_yEhwtrFW+(!-QDY~@D zz7bGG(OQ~<@lid@h??Ros0IU29m$VBunbniQmxELXP~BhIY!_*tc>3=94odq-!I0a zJ}XYQ=KO2wu9Hv&Z=#N2&NgPv$6*lh?Wm4CL5=7+7Q|mz6$}1hrgkjmC4L6AhoZMN z9rHzfSOuX5QU-NeYPNNmk#{4(z1eKR@u-e3sgY8Xdb;-3QJ<+_U2P=3DzWj7&S9#JD868 zqBdPFERDrb$8)$f64Mc1fZfowm%va0c{`dBY(st6oJ39aCDbeRDQZSMJDG;!qBdD- z)Xe2Xy~x6BdOg%;?1-ANVb)00j4nj#bvYXdXswQ;A3j1~^y+M;Jf}6kH4HU{E9H-o$TWSFF{=bo3ZzCw?8>{{|*@SMz|6HIKCn=Ad8$Y>T69`~&(D z&(zJ#NJ-R)Dq=2dfZ8kLPy?HWnwgE*8Bbym7U@p9&VL62VK@S{n~$Q7N9rDCllY;Q zpeT00+Nd=?gj%8tsHuL88u?Gu(j@6=%4J1u(tM~rQ3OlipXdrEaFl@7_6O<}9HW;x z9?4N73r4MRNz8<`FaZ17_!88nI*QtCk5L17k9yAOZQihnQ7@wWsE$VT=KQB8(2N94 z(GaYNbMP=eMU8xYAF~w4Fp&5s)DI+?`kIFOp*HO-T!l+e4OQ-Eevi-+wdTW6&u>J{ z$gO^ye@)>-TktcgBPsiv2lJptPz_6A3+#`pFau^CV7|$e!?MH|<2-zheQ?Y`GlMZ` zM>CWRHS%CPBY>q0}7qx~nQ8TdC<{!q)#BbsZ^c-Y<9G{KLh!+`b{&w^L z9}^!n#KZkh*}4q%a3&M~hSPEUpXR4xm)|fCXB`O#aXWS$Zq_hxggIUXFe~YeP#qeM znvq$kUA_jjC$^ww?kZ|?zC*oYJx7|E@OM(T4p18srHs5RMa-HFUZ`@J(GQEDmZk-2Q;)Lom8g17p=RVYY9_qL@OKBD|3CsevAGg3 z{aDlU+Nh2-!K&B`b*zq|Mt;%yAL{e}7tY0u<4i~Qp_b-fR6TDnC&nIcW+Fejw6;|V z_+uZ`R4>9xxB|Q5CoF^QCwRF3$=YVr(!4;Oo}Z{svqTfk$94ebC0+y7@JQ5B%(t#U z9nTFDIse*?M@R_6#*>T-P;aQasP{pZ$>#IED;6id7R%#njKD&XW~8G~=X@=e#cQZN zm1&BZ@@%NJFM~?2JB4GUUEhR+a7;DTe6O#M+NFP?X5J^IwO6DjJHKx^bw@5{Y$i4(i-~ zK)qNJ%rToS9cmNhvsOgSSTodsTBF_3!%(-TB1fn`n z1Pfqk)Kt4r6)r-3uCGTO!;`2PyNg5dD{7_&&NKCmMy>T6)TZ5qI!&?W^FGk|uS`I@ zwF7DfwxTN7g=+992H+*sCUO>-3X`ICb1-UzrBNMgggWPaQ3F|twQ-|OkGs(P9v~Fm zfB&mNK)bscs;50r4^Bm$^LaM@7wULzM_+u1TQTM$vqZabE%D1(3x_Q>_1-`Y=oMU|gO5<^)txN6d@8P&2X` zwN`O9ntUJBlK7$Ckfl)h)li$a73zJ^2i4&TsF5zmOt>F4z=t;e36tymr`cpG&VyRR zs;CFMp^niw)Ee$WjqosPO5dOwin-bB?sUkAoNU$*)WE_}9W00Ha0AqgcgDCn|08U| zWLsb*Y9zZ+$LKujSZ3Q|Hd}eDM|?15#T)34(YJcI|8v6}s1XlAE!8sA3+x7Vz+b2( z>9CFSuLpM$&{{vh9Qeb=1Gk&>lGcV8Kz>iu9$A1o*UQikH=<_hs!hL-TB=tz{v9=Q zvHv!&a-Y9B|2jt5NzmGsLltO)8*l&yW6%x{r!TfZEzxb%a~?a*UpCUAW~?guVr$fM zBXKV1YhfeuSMM{w4~V

J?f|A*Se-|-D5JY@Ea=V6nd3)QjWsE^@RsF8O>&FnDr!D+}|b2*y{Q6Ik}QM-8y>itmpU-S9C3>E*0&9LSv z^FG*)8kpB<^FqpinxSmy(pr}#poY4k-UB;PBfEfE@DZw9{4-{x`Ee`pVyNBy5w*tN zXN_4KgJ#A?H2nMU>#2Ip;+%h_P3)OQ?=L#$b$b!F;?H zM9s_q)E=0CTKgraJ+lUNu6N;XJdHX<<1U(+S&!NaM^GL3;v%5U;&sV<*d#_}gri=~ zHBmD%5ZxWM@ja+ha23^|`xp&BpiaXV)RH)tO@~sT+R270AB4(xg%i+})v+19F`W2l z)C`5)Y4?W>fxNn!dL(kUNg^?L+y>asHq->nyEFY7u#9Xsrg~kvt2hGtc>pS z-;RJU1^S~tROY%f__aA|Bqy*eKE_g*>xP-ao~TVb5|zFPwIokaBYlfn%5SIvB)DnJ zioV2)VM3k%CImF{E~vF0j#+Ra`r#4OtNA6W;;*PRjCRW`T{6^Cgr&qboj z&$n(s4fG(o^xz!=8o^K0CMkK_?CNr;wX2Gr*Z|dm#;7H0gL+@|MvZV1YQ!s14ev&+ z^)c*^XHc6o;*RM+)jOPjy;wSua0zFkM&9|ZIk(eL6>hN}L+#p|*7w$U_e^?5YpAsf zW~F><%!LzBA5QyFd*Z=8m)RtV?wfO71bxZqYK^pRwqC?Op%)&|zj)<3Zo1!th9@)yRyn2*f4j*nWB^r)%zN6lz<)UmFO zn$cdU(=pek??Zp$t~&&Z5{UEIOifwT)U-!cJQFq2MX1xT!TPWDDe8?G-$q+t8)}oCMtv6CMvdI-sd@J&!TZF0QF|i# zf988c8fzu%VC!boh##XqD-u4_>Eiqa5zrLXLiMyiYVAg%&htD}2Unn`cpGXdcA|Fw z0aS(8u`+%|eK?hWZa$7{qn=-9-HmGJB&O5(zd}GC8lO;8uGuZG8vpb^YN zjr1OB^Td8@X2c)W^FY*$7tKBl#3JuZ`9Dx29*mlaai~o@^&RJ5 zfn_9Q!fmKccO5mw&rlutf~7Ild-Go~G(k=6In;AEun0OI%w{c$xrw$%&A>b?jGs{h z4*6(ix~z+Urm!}uBb`ylXE16iBT?__b*MMt2@J*CsF_Ih$?S>Ts0JIMmS`fXgEMXV zVw-*u)qz{60lMB0(A54y9lw~LO-JIPrYtS0gZ`-F7mnH^Wl$eBwNQJZH|D`{s3qKo zD)$Ig&j-|+dwekiOo_Sl`Jat|-c0pT4GqM+I33lo6X=WQP&4w*>iyMpC;;_b5c*+R zJcpgICl>#P9-I=4hPi&2^1(m#Jm)WhfTpB6>J8TlHPu7h1^9u(=FdTm_%GC&pT*kv z0n1>-FSB>1qUu|UTFULHPtoJ3rMZY2$SrjL{r?LAO>JyWzw}1!-lV7p!%%yp0yf14 zSRVJ_2#n+5>Hcf@B-Biv#8UVQwdq1UO?_RlBk_6Yi(b(@9hcT5CxJp(3bm;QqkHq9 zW@Is{BYRPAw&SQ%aTztDPpFYP(LLQWlNdE4`B2|424YE^gT3%BcE!3eJYD8{dkjza zT0cWo^cKrv^q3|+0(C5FSXe zVnvJ}*JVarH?B$Of(6LfgF1GfP@6GnJWuxvrYveEnxU4Y1FFLVQENUCHFJwmQ@<9q zB>$mi)+@d#p9MAZ`CSD32~8nsv zz6rH-XHjp)7Z{V7iskL;EG6!pz_zoQKn4e#(SjpPezQ$|Z@);12R=Q&X4 zyCjar>Zo$JP{;8Bs=gnnDUXrJ)BPSuf*N3Ypg z7uE10R6}b}9Xo*P=q1#v^#!_@3iT?EmfVauC2C-Ss3i?X%~T=O-e`m_RnV7!rgAuH zisqpTZbOaq8fp#iVH139t(wBq{R@YUsHu*V((Hjus3{LXb*wOIX-cCfRz=lYBPHiw z=ehw2dZDyO9jmdZ5zj?!&P_J|B5DRc*m#^&=JW)h%2z|pOdBkSF4U`f2WskXp&Cw< z+SC1UohmiwUk%nKL0_%fU>2N;nu(pL3ND}?{EV6@Cyklfl&JI!sHqP?)mIeN(aNaj zo7?mes690U^%=0$Wec1|_51^>qWEb&-Cw~nU?t)mP;0geRlyb1ntntz_yaXl-acj~ za-rTUr7;9MVHhq&Ey*L)-f+Dppo+er3Oeb`2=k#jQVBJ+%~8ju4{Bz{pk6>rZ2m!1 z2d<*teBV&@6-aM7+!1>cA8X^$eBCqWaxxIm$O2F=kW#1)Rlv+x4RtDdp&FioYG^HL zCQhS1EnlEEZK@2O?q4z$Ms3Pg*bE1uMtmP@;d6BV_rE1Fnh{n;tw~GNnhwGM9Eo~x zBdQ}ityfST{eYUG@2D9|oXI?&74>Nugq5){>QszHou>I%T<3o+0rm7XYHi|XHdCDx zwYGk!2lJz*usrJ3yC1b#&!9fdKB6{Vi7aMmYNI;d6IITIs&6UkO}iCcvk4^gGjFgB zSd92N)C?rfYF;p@QB&)O)vz2!;2c!P{=*LV1J!|c{$@#CsFBV_4QwT<1Dmil{^QU2 z*P3Pz@YMf{GN%;g!W7xeNXudv@x7?c<^-Bkkskesw!>vO8MPNevzsq6wNXnMi8_Ak zuqd9xP)wA=ypSs7;QVV1Ymu-X8{#4K&S_@g0;=H~sE&O@eJp1W@^t@RumR>JJ_+?+ zID|SSH&G*gg*w(>P$N&6%cN&O?Ug_m0X-0gn)+&}H`ip;p7WTC@0hjK0{EcrfbKJPkF1W!M;ZV?OlB zYdTy5b$q8-*IQ4bmgos;2@(XG)07wU5O0Wd*yT(lpef#o+NIY}Gs4$a_Y5SqW=9>r z(x?tK$Ew&Dwbmzb4L(L~)+zZs-T$U^8|sA=JHIJc3N^4Mm_wicoeAg_I}bGzFVGV` z3Ydb?QJ<1YQ62L|ZMHn9C8~m&^0ug{?TRDuIc~rnp`Ol4%v#XAlF#Bg;$N{D?K>+A znKx4W!k+H`Y^FKt%@?bPr~5ac*-^)B5Kh5Us17$T>goP}$hr~r225Mbe0eR4+CzhJ z7Vg5fSUb$q{jY5f;3N;eafNgK^(uW{+|wC{-X+ZOnu7<4KS53Hnv$OGpMH;EfXbCJ zyS@O16K{{XaUFK2;yXARYnCxTaNH^D>HcxOayd`;?+GHYF6Fb8=lr)K@Mn2X_kSY! z466_?Q^C{yqty)TOZ+uzMC~eiy8kx347U@H9$_}uZp=#jF6tP@sbr3622_1jQ5{@_ zb?^cf#~hVi<|mWRmCZ=D;B+!RVIiDQ#jN!S96%D>L;9R)jXZM z*a^F0)#~Qe{10kVCaU4-JiuUlim6;RJ>CC*PNUWGbdHh`t+uE08Bd~meyEOF`{Z@a zZf}8_@~wCoKVyET`b<4@JYzR7OV|celfD_XXHGXXo3}+H^Sf#b#G!mJ62#>;>S>*`-z*H5tl`so_46y(+hRV zMqvh>|G5P8rrL}8w7Q6Taoj>3uNckDr(Jr~n=B{l_?18^aGGLz9BN&R`b;^9YUl>4 z+-uZ(BXM*4eFKx|{FfpSgN(YU9yUgOymmo-YaN6-eq&G{vsY0a^=n~fEC}`D3PrsM z8>2t=L%ouhSWlw{_7&Bk3@w>io&OR9)KFE_R5d_-thT}E*bmjgL8x6m993=|>bV^@ zehAgEv*>=4qL#vGWzzGZo-2kLXa#fy5@=`(j6&^!$*6*JYNldM`iRYcjOxHU z)Uo?%P2SpUuAHbnGZwWZGf_*o5u4$e)|`J$Y2G$wtp-`Apw?;ys;7HV@9eXvj@(7P zm_DM8X`(;O`yv80b4yW6u^m0|0_Ma^sLz@hZB6}|+q%ru6e1yvjFK3R!%$Ox1by*e zRD~~59gEw}oc9c zqeeIZwdq!)_QraQhBvSa-a&o%RO{?%{@-a~PvU-E%t+^=Ua^Oj*1iokCq5X} z;fF{&F6RXSyzwV~taLh_Z85{3}YOn`t*G@!D@jBE@{bRj@`eO1OeKA!J)8T@s z=c=Oy)&R6UU)zbp= zVINe(>rpeZ6}6OmtOt<&&sq`Cnjb^;@RW^Tv|h96w^8qhN2pEo+NP)JWjdG<$B-U` z>c~zkhi6a&O5NMkAB^m2r%-Rse?|gDNXUgvP{(5uYPT-LGI$sDKtLa})`6&z6+?BX z6sqHuQ8QHw_1 zQ43TvyYFN?L5IKQ%YdhzUf$_yfJI`PDjx!WcQc}0nK+#^WQfOXZR)LAUY6WZsx zCeVsM_fPU#NA_u(#+8}e1;jR!8_DfYEsu$NQ&V61k&}GA7yO7vUEj#pHI)45l-HGj zv{KwU8Rvd0TZ`xU>yGo5yt9;lNZgO`RC>`X8t;R+cHr(>_@CSM;W!jL%3YH9UDD$d zj?4XmTUSNyX|`-Ib>!x5XY0B~nc9T+Qf4xZU9sh&lfIS?k0EUs`D)*ZM?}{FTXAxn zKq3C(;=XtTyT8Nnhg0{PZaHzip!!m#mnp(;%sJn-aV2GM?S{3k6`ApC~1D=7Dc@KX$+Og~%mU*zqw;Ut8gaF4R}3?`h9JRSIAgmuj} zMm}!u<+?+;kF?tl-&5`s_fFzbS3KIUOWsaf-wfja*tQO0Z|c@+GwD@r{5DP}9vs8{nZ}9Yfmfze?jMz+8m}BVsY4RiX^PjR!~*USWW6Q6hwj`W zK8tt~n*IICYrA@xa-no9jQly&KGBwI%yYlUOF_Ie=@Env;y9JZEj-hTI`*4-T+R>z zSIN|Mf&v>&&`C?U2ZfsuuSS{ClsQM`$1p9GPsUL=l>9#l*XEwfy^CjZ^Q^8?lq3tx$Otc=$cmq*G;oEB}Qu z>nIy_@xkE!NK!l(W%Z-XZl3MRt*auPtL^^mA(GfO@XejYsHpfl1v^pbB~IZUMP3{# zO2fUBhAva40pW$*QCCJ=&jj+z+lI!Gxy7cd+!eyb@iEW4+7YNqAPKjwPCQtbTW|RP zY+4=Sd|h>3*|^H3AzYl!>6*sf!-j9!GUaHzKhNyszDwFD?kA)zqwG}Mv5xxNV_phm zUdhxKX0cxfU?==>x+n|l7mIkfMzr&0c(>!hWkm9|h(;*W_pBwmS18c|r+5QB4x z_!=7)jcxuCp8L->T9bPDs_VQXzdz}^!bvM?g6{uyE#krPb_7xBC8!_^_rE-x73-28 zm%9XIV{)e>oWnL4^~@O3_~PK?q=CJ*v0Hc`ssR2;ye#E(#iial`cJItlX#CvGafvO z*{OIjg(j1}%N8C=#V*24)hOxz{MPtGlDx@Z%3U*Z!_Xv=`-Vn$1yb89YHP=>D-V{V zgsv?HCnfQg)D}T)BT1XgU5Idhj6q&}45igo+@ralbGs-X)7C?_`-)FnQP)=Tw(Bc> z#@`Z$687Y-Pvto&(3@}scR#|hxu20fmKxepxvo|;REk^IJ@Rg0T*`Tp7TuPK#(-Sp z>H34Zu9%>+hxBfIrF71a`HTnF@?ae9AZ}gyjfsbymC~w^^z2li>oAos<_;y?khJWS zOGrK2aUSK`VrT9wJg1)@PT)7nAF!QL9g9fQv2q#^_=}7Ugwqhd%-xlT|0cc^qx(o@Z{8 z7et&NA>98hqUz~Fy`8D&6KPS`AktP6@1gO(A+v*jI-etriimn$K(nH$1{>H+|%gHTnc?4Z8vvb zTggDm=^9BM|0czmMP<4?$Ujc_FP?Lu7Y1|dYDs;?DBFqnWAgN~$8o|{NZV)2gbt$6 zODd^O<|FQ=Y5=3IL&U3-f0Boe*~GfUe?)HRnZ%Wxr%MwHqtqkr->+8WCFQBDG_Bt* z>US!-hEuLG@!mYA%L~8YUzD3b`WoA{aW>!ET8%P(+*Qc`n{u&Y@)LJr0wE+^q|)Xz z_z*9XHZZbbuS_ofxuMgR)EHF3zwmMYE`l1|S8UR1lNQ9&|B+IXCv(z;5xC2i8EoA| zxhmuxC2tzu=h=cbFN!s!HQ=5@zP;Rs%ZcRSsH+y4ZHZJQtr{H*BKI|6^&uqcRrGkmqH&&)DOrBRfups(xa}k zHXK2@`2RP8sBGsNjh*GzHQtszLpVP5oaUbPTV2VhBb>Zc`XutAvLO^mfMuw_6Q6LG zAY9gtx)7$}?nYX6wZPSc@OdgtL)o6T@_e|~WIJuB`y}>w1-U6xfp8dJBYz$iq>gf^E1Zf$c=ow{z6mxb zU)OXDpxg}ZQiN0S`x5703fwmNPJb%y$~}xsUkW9s!Op~!aqDWsy_CE*H1d^jHp-;s z=3fE2|3IQLQP&6R-9TAgy9rOCOh4+&L3lpTFT>$l|38TIB6F`sN8vog6VhNk(z22E z`!$<~?vt+Toz1&Jny%>v_y6u8uNCPn=|Bd|$1^v$lM}8?-2wL5!}`vijY5}rEH~=U zJuz$ps_6p-|8ZCOfB*BDwB0 z`y1&8NV~y(ka$I0M>&4|>r5n1mv`i({%Kr4NGU-3n=tCiLLi9#3@1J6I!$0YaSvM6 z@4$48C7zXXsi-jl={0Dj5oxt-U1MxZjYyBWf(e`@e<xgn&_rA!fA zWt+-Oej;1vbX)dc_p|KN$z*ilp3nU!6-Qkai0`IQQ*Qndw3E$_q#5bDYLFJ4$~qCB zO?&|Pg>gOUx(aZQu+OxyX%}%V_Y?AN^4vsyNmxLj1{JNhg|E?x|F|>R5nr_K=b@IA z$#2Vz|S<{5sw?~LVcLi$zmix7@Q_=v5qAK}nq{EvrCn1dsz zv=wRDZCWBK?9E-1wEUzsq$0gYibf80C2>8ZEBuprrx_{Tc~aMV!u*#G?tkR@hWwN~ zS(`gG;dGeZc7GPN^&zh7Z^Gkw#v$IA{DHQ0f2DElCGDO~+eev8gy-m|@RFK03V71! zCldFoa>6SKXFy%UDYJ-*+S>}!5iUl#aNBrZ!iTv>QGS(ea6a)Il>f!^8!6X=@Iw21 z5$fCSF30XULO~6@F9|mZ-?W7W6W&I67U|6icjLZ5dvZY$l!h>nuilZSLQCBFe_6Yb1& ziL5#}jjImLHssD=3OQwXx<0kk#-`jkxl^iH%Dm*sQN&wfd(xIib%kfg5FSTf6YfOZ z?h6MJ_?u@Ra1WselX$igVO_`E|BTy&o$@3mj(X6hRVJ+r4;AL2*WAmvt8wSz*2N$7 zoX>P59pU#Fb^TIZQ4tKbd9l!kHs0~vRvfLLIkOU|XGij!!lfwm-9E6Bcohmi<*r0W zbhWUaBTZKv?m~p?av!nJU8KI|Hvgi#)c^g@3p>aQbh3s{Q*IKrV=T%fCQ(-#U`r0Y6HdJFO^5Y9|m>2^F6 zlR#rKQc~G@GRu*9n)n^^vZJmGgmraCU&_y-^0Ab?MSM_n{R)GrbgsI~@JlwHDnjl; zN>-r67s8D(lDj&sR8|@_Tp|4?&m^NS3c4+l0J~4{ zE9Ix!@ZaQZAWv5Y%AV3zo02t?y!v&A+IfEk5RTh>9NW0PW&$6l-!N!^bztlY5oV1F^z=(y$C1e z0f&2nZEPhK=l`utPU6YP3&)R?D}Vvivz%MkH`0pI&?#qtBgjh&|aZR(h0J6+h8Z$i8S z_cPN0mouM-u5-`jf$t>t;NHmH>9-D0w=;vZy_5+d{Wy0k(ju_1Z9ruPlfRmK1!b?= z2IrCfnRwLop7gFZ(mv`Z%%2pv!#$Pz4?0s_oucyD6i#gm7bEHBM+um%(LSz=A()c*rK6u79Hkx>H zD(P>_ZzFvq;Z2c!My7WK&@De=t4U48y?~MhXeI~g>q)Q1)6Gar!yR?`keA8Uo`n{- za9^ifS1ix7Gi_c!%55f`MUsD#`eu^vNjY7a?OV(lY!i-b>}LtBZr=b2BGElawtnf5t_ zyO8Ii+)~QdR|1#oI{)*Fgj6`1%okMBobW{MqCAj<+l%yJbZRA)rM4B`qnxgdJo^@X zDf5-GEx5l@_5`M&Y&7yi$P1%PMbb9%+!*4`u&RDf(brbELl01>2M<3d^AQi8ARbJ- zCl5R$Tnu%sCQa82?hHI%p7Qlc%g>!a4H92SdM{gEW!q5yJJJ%_XXjHcYX2$Z((Dh4N65uJ`2a!>cyEI^`Nr`Bl;rU{4jY*LTVkqVlX71o^uDBkspD$;tap_yuYC z$)D^Z;!9*5_f0aBleme3eTmoL;lFKz%Sc~I`W?#8Ash#b((q5h_bHQ^J39HtiTl|` z`;ecCJ2Pof*BZ)1T>}WXc2d}nLMQD*HKKBH3J;#=f#>9%u$2VT@D$=lQP*K6rL%Ve?ZXeTX8s$?jZ7SEmcunay5pqAm-!v%R!qm)+exX86FAv%s$w>b zh5e9hCmcg?JXXR}SO}9$ahy=Big9oXdf|MVz7We0kHkR7ah(iP9Va&lRnP|qVQd_R z!8jhP;2tc3F{U|A9t_14*c0R8L`;QqQ61fe$#6fa!&fjNMxx5S#uz-`i8I}C;*;Qq zdT<6*1G&%_3t3B`9#qE0Yg+50M%olL(vBDn!%!XQj!AHg&0l~)#1~;5p6{F^Pzy86 zFjLnDQxe}{;}=mg;}>B%kR0O?&xAQKFKUD>Y<@>fPP{MH#mU$JAE0KS=u9)fD(GtD z^#~-zw&+;`^eh2t#N$y9oQ(-^nN8n@iHILUb>I?e=5E{k$LL4=9VWpT?6ky~8ntwJ zW-2eX8q;EXOoO8_3ob=<hMz+}Xip!UEn)Ee){Ks<%&=sQ$HUr{5CGuLq{Vmi!#9Z~rc zF&GzM4LpmQsWk39Q!y*5U@@$QRZu;jhgymi*3GDn>_yGk2~@d@HXey3i9f+&m}S1% zBdt;8r=pg8E^0~Ll?3$Q?Ka^UW+Z+Iv*AY@Prty-OgU7C+M;%OchpGwpg#^nb#M-< zV@pwcWRp!ljN1L@aEs3W4+7eiTNavgc?7lQcTolZLp7LZk$F%t98bI)D*ZgB#9NpS z|3yuGvR_OGiy-edrzC2iFyAeTCQ4N;))p2@b8_a>%a3cCF zcARlI6*W@-C1#grM$J%B)X2-BHgf}1xhAL?>xl7O0=)>R1L3G1PDhPs2@b@)7>)&h zGacKBLls}@I9qWWcEOIzOh>O^PvVu9vn;p=M_|wjP7rQI?S&#MnSV`HX##p+J5-Ou zQJZ82M#m+X7FVHm`Ek_L-@@eh1U02UY`*_0b9!>3+9_k>wNa<36RO?rtC)W^)Q<#h zrV*&A8H<|2>8Kf5h^n{_RelSq{C@QqF4>JNyec@Fw43e^+MW?)9?(&!Dj2so3Rt>fnzZb&O;60q|LvH8sI0? zO!}>NoP6k}AkdmXHOz^dtanfyh`qsdC?%=`Suq=y#31a5deA)7ny$f^xEVEbzhgH% zhk9U%jgC_QdtzRl|CI!akZ==oV3JMjYz)Et*x$z2p{D#VOpTwgI40d}MpPR$!iE?h zd)xF8IF|T0RC@_|>+oQw9H!FwA3#7;G80vCK5A-LV_e*BJ#6#OqedEOeS`^!zr@7& z4b{N}Tg?kCCuSyI5!G%tjE#dZn$G`d0%>ppR>D=Nk-W9(@wPcmdg3{-JXXUbI1{z$ zR$~l2fPQ!!li)3UiT|MT?`$^%dW4CHzeQI)j<&-*FgdDcd95W-6)W2On%2&!4v#?{ z!)2HXSECv}hT8SlFbg_6&GF2NDj$rR@q#;<|EdIvlaLI@qn2PXs$&~%{4gdYei7Bc z15^V~P)qR&5yUCe)00%J(fx!i!U@FHp^ZlTuf zF{)#4u@idjHZ#*1^?=^!kKw3IIS&irRZNcYf43jUs1CPAwcp9Lfj+1XD6Y-)8>Yl9 zsF^s6THAZ5seg|-G4USLky2Qacm>RkV^H-rqdIuhdJ(l}B2hEozPEwzwm|f~ra?c{ z_kdKW%~T49V_nozT*XQF1hpyq>@yGAgBsxp)C10=I&vNB;tSNC3fb?O8P};upfU+9 zQ5kD7H*Q58n+I4MV;(R|&;*YX4?|6Po`d#yVNv4UP*b}a)zNLJ5g)^ecnj6B4u>?O ztbY#z+O?xl6=$Q?dI@T?Z9?sV?U)S@VM=^~+Jw;$n@txNHS+4HC9H>PryZ(%A1sbj zu??QV@;u)OI>L_i;!TGYh!0|THSjQY#l*+>XvJ_;2gCm`Z?cJ~4jn{|^f_uEU#;3>De~L&3g{}MJ^^j6rl_^m<1PLbUbYHPhvXakv9E5EJ@t=gn5OR zMUA`%s-BCna16%4X_x`$o?!mV64*n6rp!5MDkMa$ZF1CzgHR0?L!I-=s1Y|r)$4>B z*+5KzlThVWpr(Ess-5$w_smV3{^lg}uZnR`nRA*B)x$!lhDxCx)Ce`TVHg{SSjS>4 z;xjNNE<|;7IjUpZQ1yKYHI!eG&7bTRjvwZnpRdR&E?p;O4K!uiL>w_V|91mZVQOETxG8R25o(k(}Icr9vg?XdB4 z=xT&F2qeLGm>*+aGd(YX@rhT#ZP*xdVuI_Y!Qz;hcm>p{X^a|qYfOZ_F*T0HwD=op z^BzJy_x^R}UsL#%gyfj)hG{T2s-aL+!?jT(X^eWIw6yshP%o|ls5PBr)2E}#{f0ic z8a0shs1EP7@$)yB|F|SXlF%7n;4o}()1+TTt>ItRH>eK%Ks_+VEn{3vKs*s@hSH-y zR>#NKAu4{`lHabg%#B+6 zQm7@WV6BU@h_^zu^AR-zaUYuB`J_Y*pem|6)mne^DGS9BWGX~~A_XdcuI6i3Z)b(`KAU2VSZHe)_&iZ`Ivem80) z2W|Q})PrxJc5fuA;istbUu?P;TV5TGgDUTbD({bKKLcu@xgInBSqYRNp)j^Xt@$sw z0(W2rZ1%)75RPhK0%~n%SvRAO+gZ$rk1-R*ernS5pw_%1YCz3Vd!@@$=3f~jNzhcy zLyc$!=EGfB0AJet49`r(JXnPE@)!fdt>aK5n}(X|#i;hTp$2ve^_&N&P5jy=pq@L= zO@$Pwg1Jy5Er*)Inivb~p*Cd;)L!U@df;%>1E-@pv>apOdi2Fzs0Z)2p2pn7-RlH= z2*h|{9uNm(6HkiX7=UUpBkF-UP*YeE)sd>GUEc)N!5$bL2VqMbj%xn_YGxm!2KWiL z@_Z-ZOS9XLq8hr38qs@ev{xpc#F`1UcKNMUtgWpBQF~?@=D@9}J#iOvqR-#vLnsIX z)wP-tC;d}-eh>D5q#hLUeQn0p&pO&V)4CLOK(|=WTAx~d{xLrhq{Rf3YiaFa4Yy9i zdgL$uhk4K{{Y!!-?;C0|ecqUOJk%s6K~0`Ns^K8iIS9dY*wn^{p!WY<)LiUC&FwwZ zOZfxpIeu@=Vy1k{IZ(raB*+kJLtCH+s)NH&yJHk;yG_NIxD-?1I@E*yKn>s)YL`4h zZR7Vg{u$#CkNM7gwMpUY)9CTAFRBb9Elo zv8SjGd4DhmFD|O%X;A5I76O{$AXG>4V?r!~Nw6{&!WO9WFb7NFuNV*SqB{Nx)!=8; z()j#q_I*0kc?w2t$NZ=zY>0H!bvhErOu}%~6t6_RVzyv5d}-5@eKaFYkLpMvREJBU z*0e0DBUMljXn^Wq2UNR#u?&XeC_IYMdA?KWlWCwPCMKf+s(~;ZiGytVf0&PWqR-|> zlX4h9d>rb*t5FZ!j*0LH7Qrj1&%Fd+jJZ)WQVpZ?e5WP>RcL_4v6GFjKrO{C48xO{ z74v^Jo3JVB!97qjG6c0}Mp>t00P$aJ{sGhy9Y;UBh^{u*BLb~4@i#LQeNo3{2vW12f?Q)Y>0JJ>WR11J`Z(Bh>MIY17|Yf1o-N_XqQ@2Gad7nC38W&> z26fyN*RGz48p%9VM^@l4+=*JMg8bl=(2IOLMtlvwNYPC8@G%bvN5#jW+MSJh;98r% z8`ZvhfIw;jXD|&u!`v7nnwRIrQxLUj+Mq_<71eM*)J%-APC<=yHfmF@L6zTu8u04jNxVL4O?%>BI0{E#M~;L#`~uVCS5*BpiOi|WjEZMRZNj{XT(enf?BFmHvcZBApVcdcVj0p z$08A`LQ2#~(xYZ1*v3Op$F3&k!O_<3sAKrZ>X+0kT`21FzM+i|!Q{jv(6jrI_FZSQ z2{;E)4?d6jyuOPX`E#587PX1IlbMeCq4HCr_CyBM$V#BKNrqZlYN-yQ z26)z{-@#-$|8H$ZEPpdaDNrw%VAQdyj#~4km;*baMm!TW#T!v0x`bKr2I_%cDaKjoBYyXs-f4y2a+XBZ>9lC)UaU^<<9jc*ksD|UFGBXf}8gUual5|Gx zi9YCqLr^cGa8&)pr~z$44R~KF&cD|1v@LK2^?*mVpjT?Msp6w{c_6C6`lyEbVND!~ z>gZ)uM;_b!*Qgo&X7x^E+KY+mPzINPdXm>>grKIfv5j{{?S-+ZkuF1R!ZTPMZ=sed zds;8g@5h2s9TRhSLeqi3nF5zw)@WBrIKm?)iTAQ@^YGNUR4qh_oS z>ML8QjSoPT8-ZHmDK>rrwIr8Oo9{Mi9BvGnYpy+ z<{_gn0qyRNm>XxKdVCD^z_+N)KV> zFOL~eZqyPrM144QK$QMh(AP~w(R*m_4xUpfIfb|U`;Guz>HurY7_26 z&CEj_i0KQOHC=$(-4C&{7hhrvnXg!@3VS(2NdE&hQ)P;njt@l5WU`{>_!YoR`uy)i zK;LYppw9mh%#2?!goXo(k&ms4oA3FvOPF$ACB2-%lq-xH**0vXdZ^7+x0Fd=fmMmW z#MW4ZMzwbqVpX00BLwDS!cg;hz83XOUy`jjGm5=&yNDrQD1R^j|BVHOGJ@iP96%c`0l zMpW~1iV=T=dQkf6X3amMc72Z;=CdFi%Mc%pT8fjX52*w-O@0dWCY~1cS&|<0zR6jW z^REXNAR!a_)-vZbJ8H^Hq0&3p^hu}>pCzaVtgvoEy_kMSou1REFCdptGj+}8ze7DZ zT5WSYf8>s>Elta*hQ#4vIaFHd(juqpxXHpb?*N{ zJ@^fl#xJOubxYJSBN>R%Nf?QG^G!fKV400?M!hFaTc4u7>-p9-Kd7WZb+91nL8VbM zR0Y+sdZ?Lehw5M$^5%4%9yVbjs={>Z0#t?NsGo$^U;rLLHSiEM)z486c#G-LyPg?H zCRBP38!v`xzqC!SiYayen-Wlu`=e$c9QEoPi~1@y8?~ucqvw^2TAJ^urAt)b9K$SF zf%qWQk{q^PMwNSvYWFLuo!AYSF`a*Z0_s^N)Q3rK)Um9DT7qz!KN)!sIdd>0&ckH5 z5A}e{s2O>Nf%pdXo=Dly%w#C4{qm^2)(Sm8|Mw?QgoN>^29BUcaN2qY_0#KX)NYQ~ z$jn$a)N#s-T9Oi|`ekf>6$~a`7d6l^7>Usvn>Xd7#+-juEY-w}pd4z=8>6PE1!@Mm zqIx_C)v;-)-TNDAgpoGgx2f4H$x-ElQ0>Uc(L0aOPoxCC_E znxW2Xf7AoUp&DL*YG^5{fz_zB-edDGp!ULb)DnF|l~38yoR$DoJQP*G0;>H+sLkkh zA)p5jwobAxvTi^XJb-H89BQQZP$PSUTB4VzQ}G#f?BcaDuiP}K2L@R4q3V}6ao4Fr zKo4k+>PT1ACL4x&;C$4V$91R&Ub9A`*7A|{8R{MX3iW`0P~|_^_&2LpYm*)wV`^K* zBan%L$!tb3)QC#s1gwGT$W5$(FHs}P-^Mgl0d*{^qh_EcYDwCn1~v}0S?6FGyoBm# z^0wsbSfnJNHOhwSaURqN3ZjlzG1QcnN4c^r(W_Q9TSnO>r6211q39QV+jlJFJau+MAK?Kn>s+R>Lz` z15tbG1Loq$^ z!&na=qGqOOSJTmws7+TL%VRUtW?p99jA@DQ$KL4PAuy6at!`!nS5O~D&rzG_J?i5( zMt3tK0jL=XL~XLdsF|yZdXY7^=>t%kaT00K{Pbb)EABv{p|s3r6eVGCvj9pNtVg~9{b0c~_Zc#rUe8pbar>E)Y6U<5cGbYjb&(h0OC}yo` zZHKuiI0(aVm5uxLHXRH_?UB}~5rtup%A-2I7B#SKsF}HdJ@7f^!6to3*ZH4FAOx4A zcJpJ@@hIHaY?895C1{FWu`g)Xjar&uRJn4fO0VGD%ON*H>2=#uc zhgzb}133Tb2!xZMDO!wG@pt?KV+=GSKZjb1Czu114l+NGgrXii54CA`;Tk-QdQjKF z=JyCAQER>wRsRBNM!pT^{A&t*hM0oMP#q~~<26wu=z-;M1P;LysAE`esQD(-0V@(e zguh_yVdjU`)uJJ~!MUh4+=*KI(>DJhYAV0tTnq>| zKaTIl6~vniH-Bd2J;KX*LVP8T$EhQ|oEey6l$SFH*Wp5R%Z~PPHW0XvyKveVvxb$% zn&VX;vywgp)uCmm8QF!}<)=`4;u31+KB6{VqH$&q1)yfCBelMM^p!V$D654j@rCAQRVa7csW!DtD!zc>!Ui@3RQowC!O;* znSiE#t}U<;HRUH!J%3=+qfIa~lNMDz2dZ3Y%z{l&OEUtssaM+gaa21mQKu^YL^BgP zv5?MxB?5bJxDv3$B-8W0s0R(hS~v^!UU-7qMDMIIC!5dzG`NWL5Y#b@L@mt=R67Z# zm|yQ@LCr)xbhWnK2?XLC)KnkD>i7rt!K72oH=hYunE0Qlsg5(voSxLEPqRFj9V=iy z?1g&p3e-~Uv;KiPp691={t@d=8Hxn z)JRvN&iQGqh@Vh3TQ10dxNR z2GTF*CIg)!r)9TK|sPv^TK= zX8x7;fzE$d0@|$;Q8REEHPts!4}6T-@I7i1rCn?q%!_(JZPW*12#k$eQ4Q=z?e60?ejRnp?qdMP|IN$Ufq76%^%&Qq zv((F}4;xVJ`z|vB^G7Xtre&OeOn1p6xlpZFI4^_ zR0sdVSD0XhS(@*dm3ZQn<~>mqHL!80nT%NJn!rjD^zpa{)wAlW%#=1n?dBe+nVO1P z^F^plv<3C4wi^rLRn%#Tx7y_A!5YL1qS_sUsz1%T+$EsR_d99^?&15EWHvmMp$JuHP!uo`CFY&zN($#hLbqNH3s1Bc7uM z7=NqcoWB498hKe%!%a|YI0#j7A?i5oK&{~;)CgarrZnX?^PoJaV_N|=pgPv(sDX7t zb+8wz!=usj=l}BvsKO>C;2vAxPt-^rV}1OFI-Yg5o6Xi68xvoH+U34G%x6I^tV_H; zYQ$?%OLZRgBJq240_7>q?x$G8g?WB)mm2=ebm4To;NR~%IIo}>JZRc_e4EtA?n;eM2+k_X2t{; zOt}K6k+#Gg*b%k6(_J)cT*z7-HPUvd^FP`;13mALi=2NQqmv}4Bacv1<@2ZchLQ%g zHwvTP5A87zjzo26E2`les2O{VdVhRCJvhlFV}4Y6UDWe>+xXN=%)h2&0|{D!!>Exw zLG6hjsE#GPY+fX}u{7~EsF_)T+5@{#GjbNSL|0J9`VsEKPpDJ0qeTk4r!u z$Z*wcmV%g@crjFZ80ytL3{&Dt^mNq5pP=Ved(CtxF8WX|E$TF6Kpnems1AjoHf0^u z0NjSQKp1MuhTDuK7)pFAY6d=_rr7Vg+1(jXpK5{DU{ptnqGq5hYO3p^J|lXd-n9Kt z^@bxIbe#zV)bMmv#l@&8-Guq@7}mkhsHLfP!^^pZ?XWNwxoPV6Le(FRd2l*v$`7Gt z>>=s}7weWeJq6J7=l`t8re5ip`kS>811Ol)>ssnRTGq4)9=KE2*{RU>iAE;M!mPpfZUQ`E) zp_Z^3YRS4{dYowE>rwSiqsm`H&!7K2BcPFfMOE~_YerTOwONLscK2}98jeSAoQYb? zIp|qB)O%wSYJ?|IBfgJ%@CVeU^txw$ix%@9=U=;ZGzsd!c+`t%1zyFAsFAO_Z_e*I zRD-XqUJuOfPHN3*En{tL?P(o{S*iak2I27suKASuM1o$assA#Yq!Q*Q-WLOKjrFwk zr8V9|^LxJBs7<`ey3_iH^$O}k?4k9GHKF^+WMsiI6ex}wVYqdsb(M85wkQ7rYAOpo zHpiU@_)ElC5^%(g_$Xj|0Yn2MUwji}S%Ua=XUFpvcQC-yI+VMgNNsF_)YYWN~* zq&HEg;hELHB4pv8PwtA=zbU^Keu}J%_6G1?mWv9(Jk9xo@)aH9`^IxMj zS&V1qGa)(p5-*4P45)&CVMEj#ulRHGeWH$ajCHs5B?jvAKivznxhi57Dt16k(G*lq zx1rYVAnH6{MRo8VYKmW@M*0r5`@f(*Z2VrDpZ)TpIyeIB<5X1r$CBqe9|-6{(O#K~ z2~lgA2X)L!V_qzWnyCS(4o*WY%?{L8xWBM8zQHn>|8Mi40mxK4V^ITGi#pER(N)j) z5l{z?qSopHssj&DJ^g@HFxqSL3&xtL@_(cD#23^H%jX|61O7OhcrfY(b^;6HU)Ts! zzA-c1=MCpyn`HqBTC;Vi2OmL=;3{gQDc_pS6M~wNmZ*-mLCr`Qs{9BW{{!_Zj>IAO z33FiIcc%Oj)BtwBflA2e#@r2@jjUjBtvbYY^bR%ggSmDQ5`9RnzFj64z@%c zzk#TZyQmMFDd_q5Ms3<-s3rV_Dwp=NX(t!5l%e;GC6C#by=>xcRJoeL`vAC1~OXHo6lK@IdD)TgL7|BI>fACG`Wk_psEEQWe{dwy~{iJHl1-rk-sDp^sRt}Cj&HRyID zaFsv+mhaB&x987jr=wn-(V}~M);c4qq3l=@i`(?ksHvS~U5Go0uft@l zZQB^$&Q0QjW19N)W0{V1#MY$uM9tjgSgyBc*B6ZK?fHX-vZxVHxAE0jnE1b_W0xn6 zw`Vg}MZI9cQ8O_gwIs_?9o~Uj^Ao6ziN2n#q5Z64XoJ&9znxWo+-7yfypk7QH zQJZfk=E2jbHU5hFP#PJ}jBFli=6=HfJY>@!pr-r4^bWag6e4eWM+mkqi3m5 zui|2;%~%sPur{bA?Sh_v|Gzf@ZI0Qfcl;LARPIN;O0S}(^fhXviIbZ(Oo=Ut2U^Et zed5niQyuDW_COO<2U?*z)(5pT!~8k_-UP;zpoS-*&h<=8hs#jM>L_Z&S5TYth0Twb z!puM}RQXWU>1l;3KLIr}i?Jx~L~Yu)sHI4jlJlcyn`c|m+`k|I;EUNwjn|{D0piOlF^%?NDEf6cU>3J?x zLuIiFHp1$-9JOTcQS}q1F>9I|^}qtCnJSN(iH@k58HNRLC5E7Thk({3ZCW#eK-A_4 zMinfK8eun7N5-HUT!1CI* zv=M4#txzwJp{Ndx#7sB=bt*QZ9()G%phu{NW285qZkbV=wiaf?KB!Ik3%15x==uA9 zsWO;dn+di12ct$f7PTacPi7m!xt-{$!8-)>s{I=mV6`mf4fYI65s#hKjG!`VhH9gxwmH_u;aCkXqdJx$ z(A)DDl?tFbuoShVJ5d9@gxYiW13CZdzzY&O;5XEow$0}4T*RRmgf+68k%nUk@sFqx z70zK!MFY%2d?~KLQ>eYrGpG3?GZnRzr%}i6F_y&Gxm<70-+Zo=%e;|BqBh$U+=R36 z7?#g%W*}}J^WY??j^#srEVsq{I1}^XNz|$Nj#|2;L1x5RQ7@!m)W9pcHlq=0v$R1~ z7=W7k38**MDb$|u4K^K2hnm7HHXdXxgxN_iiQ06XP@AzQs{OI32QS2d=&rXJS@W8; zDsHWbttikI^-BH&)$^;^0$*W4td`GobQEfhk6Q0pzoC}KKfjs!Qm9kZ26+X$&SV1W z@j=v@zCi8H*agf?1ffP=+S(L#?E0ZP6oIvH4Qh?Q;W|uS&}`D9Sd;h@ERKZ>nR0#6 z^WVXnMj#g%i&3xEbEsXLrm()DvsS1X$dB6nWl>916Sc`&qdFLln)3Omsr?PdVd^5@ zo?@TpV$zi)o{%#w^oi||Z|4N@d=0#v zPxuYh^A8Qp+Lv!+cKb|JM<3%g3~cP}6k@8KCgyk+ZfcfrE~X^?A!^V3Xl6F=%;x4j z;;tZ|sa%h3F-{BfV(EeUuo#4DcO>fFJsR~X7J)uwEJnTYmbEmW8P~BQ@z1Ew`_iq< zhzFof&jQrxS&5u7*V#=VJqc$~Z>ra*2m7`*FOK-A<5d9lDOUsaCTosblHREL(=i=x zwO&Gfmb^n9=eTW5xd7CAqcnQ{JJ^i~s6b!z#qp>fPDMR%3F_PGCe-oUgHjrd)QhVV>P&mbvlq1_Cs9lHpabV$Z$77^nbJ0>rPyRWidw7d zs3m!gdKG(hG95{Tdgo`sVi<~gUkpXf+!fSPJVkBdXkp%-KV6HC`m8As=9&l8B|%fu z8AGrShT?YAlz+qk{ElicZD&)jD3&E&3srwMszbk`I`BJcPn^X-e24mek-Cc+NJf`{ zJ~Z-Ki=n2f4C+l)6Q|<{Ou!J5boKW92Rk!$GaZ|Tn#$RzcDA8T(O%S2{fX+(6Pxbc z-F#g8qc)}6kbpi;N1~==F=~VdP@C=+YH!>_AB@|>+w&XGgs2an5jYAjVn3|k(~R^i z>J|GhR>T^;%-YYzHpDk09d@0hz0HHtpiV&s)RYIIrm7%nPn1Ayo?568g<*Oeje0+< zM3p;)s&@r7BeyXCAENe>Zy&R%Q)4ck?*tN1gY{7l?ul8kzm5ND^OvKh`XFkGBT+N; z-kPwlnaP|OKzb!qhr>|yMxxqZg6iN(^!)yR0|AX-A8O66p*Oy?>94J^`kB3v5mi12 zHDi@g9chRTTFSrCRp2cFJ@8-Dntw+1@IM>(?Qha!qtX+g z-Ve!8n<&7hS3zyw+BgwgpgQsbE1@&Mbi6XEowfrw|7>dhMF8_5(G`P;PeYyaLs$wg zVg*bz(46B&sI_i_8d-N#hx(!#c2OM}gL-d7U?yCSYWEcCjd^n*=RYTbMd0h!fE6=TW%cY;nHlRL#8soet?-J!7t2cya(~E)n`#5pzz&)+- zk9)Rq915P~E=&AA>G282<^G#nS5@vgwrl~~$jjZuwsng#4GABhOau?RVar7)eIp&7 zMA{hgJ%1l4E)iWvY{ULIokIMHiRa=?>iO=*AAEY=aI1*xoDZQ)e^bO+&d5A}v}WTO zDa)VOIvIG#U*zdZYuh(5e!?Q~M+k{;2t=n~G2BQz1r=Wt-b^@&t$c=fMH?PNSXVak zn?!_mNv`kLo*%%AkfQ58U7JiRx+18xkML-oP>t|A%C4r|SHjOR8)b&tmN${N--eSA ze$K5g^twh6E=-;ddI(`%3yl%iy2NwuQ|=Sb9fJQ-?gIBd;!#&zp5KVPy|%r1#Q(6* zI);O|cTjjTeX2m-1=^lx>wmW8`r&rc>)7~xoJ+ibujjLjIj6!K(<#r7NKp^36*0W4 zpL>zw4Jh#&_gJ#t6F)$A?h&6)JPD8e`O0UzdV_LB=~gKDi)ekiE!T>AUflk~E0A7; zaz}Bh%Hs~|w5N^3rXANAN#GWly3SBwiwQbu2=}9KOX9UDGl?>nY4|jzq4AkG0Y{QQ zhHxY9U%B^DCogq%l_$R}b(RrNM*0)NTe(wnmnT1-KKu0c9?b1ep%WB}y8a_vhR9YL zO=TNYUNtJe$9ip*)!5$R)2WNASCodKarQ%-6gRWDiDdFF^qppm$o$2IPwGWz1<_?>#ayJQ=#;4SG zI}@l)ASt)5o>XkYtvCA%o7R{(-#VRtY+U8i5H3UKbj{}OXTx`GnJPSdD0TL7KOk)a z_jA%#P(Sa)CMKR*T1GXi~e)ODD+uE!LbM|c)y;vP=}rRj*S8Mc8k_F?*V_?B=V z?xM7{hWxLD^V#zGY&q2}O5QRBxGrn`2T-Ua_eSmkr!jp7Hd3c(ciL;h|U-tB|HEIq_;H==>nOkao^Vp6_(!q5Q$Dla_{7+d?IY zKO^3Zcug8ugxGwE4@a_tHMJKJD_2)p?f}BM?E|CgOeT#Fb|()HIA|Ys7Y|1jz|q7jQ%+Z0 z+HI(R#i|L34~ev);wj8U!^OCH>e>4}U~b0`gaI*Na#((l27u z$Y^d(T6;rlUAcAT$I6t@wcX&PAl{DFs?*vy(q?cMCp-kBlNT3@@zizPlequp4ySw! z+YZ^DD<02^x^|McOJC_T{**Y1un%`r8qY(4frP7b4%H6}WZ% zMP4MvpJmOiUS-O3B&{%a z)HRGWJ>Q8>!@3TWnUlK~6{+LQCLEK%c^dgn8U0ZDig*d)f2jahbM6V0KSSB{q~#;N zkNZ!`ucO>;%t?9~$_ygDg1CN-I0pUn6{<5Cy0(*8kVcZyD_tu{e@~%;Hop^jw6~~hIB9E$_tp5{kyw_9u4y!& zE0B0p4wT(ZejVU&~$`o-ny7c4* z1*bBSUfgr(%r6xBm$d!d`E4UAr)xZU{1p;sA&u$sA^!~F&D0x?39ulyuJ*K7in2Y4 zKO;{+bDSYuleELOOp)OfdQBsB$b8J*ng@KxsOt~nb;&KKrCbf-1F5Gg0e;5Kl$%ES2HUkMHb0@YHf6GK*CzjW z%EgS%PvVIQ6e8gojke{1Pw+Zv;StsPXLR{nfKF#pW6%VDgU9nb2wL!5u}Nz{S}?Vr zlTwbFL3Cjp?zLrxTenfJHhCw>n~M*rTh!)7v7WSM+`o`-FVEp}W>PuoYDi`nk*cKC zp<_k4lM{}GQP&L~Qj5s5s07SGnI4#wyr}B|X=7=xJOlU;m5Ax-#6HTE@-@$QK9W#? zLZ3*~55@_(0|+-EJ?i??hHFqR{{Kc0mF?W(VSjS#nrh2lARLc&E^^QLsjcL+5lUVv z{r5r>(AY={B*F?b5DlMmmmyrqj=DIe=I%{ePAZmZ(F}Lwk2QJT+BwfdEDg*r{wn~&Up&lHTlj^8t%d3uWb%5{;@`uu19>R;MzY51{{lkd# zC-aa-N8xtq~#>-=W7v_9@+6&Bk{PQ4r9Z7Fb2Qp$o>fGV>CtQ=Z zbJ)7a^_@Kjg|1R9FZQ93uYG`8`bfc}o+khIk1wR{r=G5cglEy{csoPeXrnV}Eo}T6 zZ8ae5O?kW5okBLxi+XN-8u{g?2ddG!G@$FDeMn{+Jz~?2Qz;tp3YeDsNb1%n{C}@# zwyx42k>BE{cy1g1?8_@+Jq`GAm#5HU?r64mbt&|PySHt*$WNVYM_Q4H^g~jW`-5&} zAg3Z-x@YZloN)_I0L{rz>H^@FA((AEXrJ`P(q+%1j`L z{){6%>N-zg9&s<8s^5L-nnFB~a;a!hzg4c!Q(BVNz_vBXKB*r!M<6f{b1^b2JS{T~$fjPoY-aZ@6>X zk+iX8>yqY6V?Bs3ppr{|aokM0uEN~oZJmxb?J92Ieo9^>^=7Ej5(4#TXp1d;n@+ss z&TL0~&3cGR9Vk=8mYYJI1JsR4gU`9!5!RKCy6dUKZ||MS+^tBzNq$Mfu?U~E?F}JZ zB!qwX*o0qj9F2A$Ew@ceM1upk>#Hzn&1fi`hDt^Bbp6~XbcMeG@3bMMFEw@jOZYKq zI|;udKP5FAa;GL7faz`b7t-1w;=1+_o=P2W;;qOJw@(iwP1hmP9@?}+l(|lLk$ws< z$3r(!z=wx^Ch-Uby$G)*oB?%>rOZ+q>Sh~AOE{ErrR~ED5I(^@LG|ndmk`fG`5)BZ zO1b`om)iOzX>Yfu9J}Wv1vT)&B-|x@*A^N{csJn%q_-p7m-{O5)x<}u3=ext+I(C7 zCgJ-$sI#YG7Li7K5U$3ZhkGaGK2hyG;dqqwTp|23ww`XUOoXeFInFk^i-(*buOF3k zwI;tAY16rN^^OP~p2}^+W1DlQH;GOqYB!^mM%acsh}&O}rOZFnoJhPqb|GzbR9C1w znebHdT66nx>+;57_&aqUagU@2GpJjGu&z^D#HgzZiAik5sI;1-Risi0D!t`i$z6v# zm|GWrDCc~pBWVfq7xVvjQ77^LVxIpBtfDa}la6P6px!Q=sGm8r5ol^h@{&U3DD>Sn zwug8v3cuj4L8H3bSuc~OD;9Tg!i~94*m~D!udU6$;wkmNf4sJXyu#q>>0>z`3A-@{ zWs=ybscsumwO_dhlD~wsbu=7m%N)l>bfz+C*ST9!rW59;y*QK|X3KS>{zTGsog%$G z`BeyKA+3BDD#awwf{YY2c7@DJWL_ZtfV`Zj>ndSgeK7;&7tr_=%HAVBBAR}Mp{2ax zDZ}ZaRw;6qQnD%~z7lSUGr8;Xl$!X37H*P$hdRkAH<&xAeVUp%M));p6)D>TV{k8^ zysoXJ)wb)M|Hf0I^#wDUADi^91`e?|w|5x-6T|Gf&6 zo{4m=Pa4YV>P`9CHoS+tE#&FSNZIq+%JV2tgT%xnoFbzW59&a87wNjDPRfdD@G_JiOM#fS&`wVo#=n;YebLv|!rF_%S1GUn zb?qaZg8M2R8E(_onk=U+>BYD&QFo7hSPAkvQ}z^Pn~@%y{JzBhBAk-DC7nJ&-d4^3 za5CnQ5OsMGPDTZ9?rHX6YiPLePi1lwPexuSexh7q%uYM2xOIIeErbVM;MNsE-L>SE zwE36G*X900MO_Igc+!Sj5MOE^th@%?GpQJa!)%#&w&9Dog!JFI$B@^9cs?F>f%5lh zV}|W?Nn5@Z@owC&Ob1+NF_ms}|3ZcTNbJwOjl0KB9iVMzK4}LjQ;_u2-0exLjwS2^ zRAvPE>$ulY_LhC%FQk7V9(DaodM_L48ub&VcFqF|&Ef7uXX6)q z#eW@v=5s|JQM zus8aU-iowyw!y|UG{S~e@n7yR8lH+XFzQ-HxEpnk(avJRm8kP8;qJD;XwsT{+A+^} zBFG%Yy_#FsG44J*Eb8h<`XKJpR6Ib(irKu36xc+19NVey5OBNG`bu>onmG*+4LCEMr#$`&H-$32N~UL46oX40XZ#Jf@F z6J;xsu4}%nr*Lob!YQ|s@=cV$<=)~SUKC1!6UqFWM%oab#vMY1q}=gIA48|sP%gD? z@Gr{g+D2nQ|1^C!$^f;=hqTz?N6pFxr1lT4Gyw z3FV^ppF&PBng38o*DzZsFAeGXK;A*TWz*|Xt{IKrBt0SaQz3i(N0|~do|U>!$k+9f zc%TMI-hYH&kyeQOnfmw&AhLn`E}6+l+)lwk#OqP{cl*GVq^~9Y0p%AFj)SFm@DIX| zD3h5xI{BxGXSELWX4JF|2rEpdXowb$fM&;rxDqf+&EAr0RMso4s zS;SAFu2rOWC!B@*ckaH#_t2SiSlpIbOMEfyydYkSx(Rq*S>hG-FD?d=Fp!46kr{*g z4jCy_F?Ph-sa3bOpB$b$dhbphy0z=I^{+kSb42Siut&SC?Vr>yz4K5uugm>om+jQM q-I2|$+IH`?bLJAS?S*~ncIq*w+D)%iI~(5gT2O!I*C6j_mHr*3i+wsTZm=()o2h5LKFdUy@Y|JsyaXeTMm0lQ2;$Y0;IIi;-fgB_}#VD9^ zlH1X}u_89a0=N=$;vGzZ34V2)I2eSfFbvhvT9_1@pgPOee9jG0jRg)kQu!J4%1 zbS6+8|3Xbs;wj7m)M)p3#$PlB~DJJ!Wv7$2{p z2KW?Rjr=`|tj0jj~Qs0Q<4JS=6?YheQ7%~2ibfvR|*%^!t{h)>1DxDpfM zF4WSUna2D_C-8&>Rqz@W|AHE^4_h-W`eGUk#7tNc)sYU^1p8xSyo%~T{u!oRIBEdx zti7zmP|r`A!Tf9UEhM2Po<=p8VWwHTaMT{Chg#z%m<2naIyx0q(OlF>*J3%`iy1J+ zER!FEA;b$|Rg6HD-|gB0=ddyfcThdfIom8jVQX1b2Wp^ZstKxGTO03*MTrl>LbwZq z@srIDoMSe54%AW>L3P}%XcHP@0153eD^9TSZKxT!j@lDnP`f+YTr<_NFgfwWs19aF zb*untZh@m$Yyk%a`Vi2tdDA_7pmYiRE397YkCgH;&q$edcHX&-7p>L z<55$-4%NXk$UDush#Kj2R7am;8jQL?9bo-45YVQ|gM+aFs=}+-13zOBMl5ukUvM^# z!N5gkq#H0X@tvp{I*S_lb<`$)j+&9zsDXS(EkTUMbb$7qqy*H%%$O4MV?V5cL+~UH z#>z`rU&V1VR#@sdo$x!VqaBy=uE5*a6RR)h%;RAkiRD+Ay>kXNQ&-ScgZ~jwkCU!6 znrmu_$V{HbyN;H%x|uP*XbH=5N5H#Q#FQSFYOlW7H}7fvPv!DpOCKRm{KE zDme+7nlz{>%#50m+^7djpc*cRDqjm@V13kcEl_W^PN?Swp~_D{y>MouI=l{(;6c>D zudQPK6?jjA9*Do%RFoPu;_RpqhGPnBfLiOG*0HDx7of^-LCxe*%!1dD)pDY&F;l(* zH3P>`9Xsn1C`jNQYLld0Yeo=cErgoViufzGz}WZ}wTpkC8ceg!d@ANd%|ugFepl20 zC!%I@HRi$Jum!sJ2m})-v))HI)sI}{99f0wO55t5w z1=Ydjs0RMRK)i*jH|l1yx#OcYaVkus^Y2ffJQhWbWQ;O!DW=E$SO)K*W+K}bv+0Uq zbmFx!5jMue*bSfIC{%urKg@szU;^S}Fd@!C@A+R(AQlNntrt)a-a>Wgq1Ch1bSyP$ z1O-teErzPNA!^r0U?!Y_F>yDl{1McWoy1Cbek=2zlt8*|W(o44dRE%T>tTH2ZBZ5U zMO82ewG_kA5659R&O*I%uc4Ok7HR-bZQS=yvq=+SX3|st$^7e8Sc(Mov@L2Tx}nx= zAZl-n!S*;4H8Y;=rh%B4oOn{yrp$@?u@ff4WmpJzp*s8tRsRobEO&?LKoZnu3Pbg{ z9BL+7qSm%IYEO*AU|faj$R#X_H!&Ng-f5mIi<*H3*0z|0cu&+Z9cRxAtw zU%`r_j!PG;fzwe_{}>PAN7PjB+H1;P!h*#ALrrPEeWs(~sFBvdU$7mjWA9Ki`3<#M z6YSS>tbYIjHIxIj$%>%Xz655)Dwq=cqBh@D49D51kzYqG-Ca~YZ&2kuf0;dz8e0;t zkD9sN=;NWS1H3J1--*ufs$x})z=ik&{SKLt`5iWIu;i!?RYomIAM~DQ>l{=E)}cDO z6SWlkZTdxp-)w%I zqvkXv!sw)@!3-FPrLY`o#wHwP{?*WY6129KhbK`p~fmu%Qxqux}Q$HRRWkGG8Vi+4squvYE zQ6uh!v2d`>A8X^&Q6pP~ez*}e6MIp6>l`Zo5st=B7^u(xA*appSb^G=vCfzgrA0Ly zf~u%Cs-m`-6$fDlT!}p~;aM{?qfrBzhe}_8Q8CpyGZX&STo_g7zc>LsP#U!ds(Lec z-(!5@olzrpQJZTVYHF9GW^6yI+!gf0CpP{Oa}bYl-sI=UjKs^Khw~qS-oO8MxnMpH z51LTw7XONADU*auDye(=;GX8Bwm>sorxltVsL+!1SHr^05z&4l| zhoGC6z;puY`EiVkS8xkH!eE?t*;IH86B56OIyH|_BY%kr(79s10VTw=M027xZxvL- zol!G529x2^E6l$t+)08eI*qFMHfkh~Q16H5Hvb)Jk3_p_Mw|lmTv}AQoEQc3p$1YA zReyOKZ-jA(cf^j^_bTf@n81CT(ej#^iLTbcs1A)sZK7$`*%*)b0@Ms`z~p!xAL6^n z_;pk69cqt7y?l=u6VHwPLlMe~(h>CBJZctlt9f$ z9n{`wh-t7r>X?p3t?_(RLw{J0qd)Q6NIfp!FwAC2jCvpsYHBN@c5y>g!);KTtdEV4 zMU8L{szV!5BR_;HcL!7ATU3YQ-Ze9w5!Im(%&zv!5XetLPt>MahiY&qYVA*=mgu7O z4o)Zj0#(t7du9e^V+iq;r~zC>J^uvL;%l28|Gt@7e~d@_P96g4X-Oqu6V!v9QA^Mp zqvBZ98c($8Gf}VTHK^0F71hyQs2Mnhnwjf1{Uv52{?(>ue!%=|iVG3Y+LuACWo7hE zJw_$o2DN)TqAKo%DnHt$PegTi7OMOro4y=X&u^%K?ZC`<9K-O<1Lj|A9`um+G?v5+ z_%G@~zei?GlUwtmj#)Jf!1kCCC)o5&sI@+U8ps{g9(ifgeIJ_{N{t#w*2m0$9s-3( z2*ob8z;e`so3H>L!{`|0i7_^6M2S#S9Dr&#KWadg(R-{>d#O9BQ zkD{jT0>;EEsLgm6wFh3K8jSj{sUR_`Ls?MI=fY@M2-R@7wF>4S-VmeUI8^-;F&4VB z2>1|KimGr0s=*DYDcq0h$QjgbzlEycE&Ad&Y=%*vng&{IC zEsz1ZP9GC+Mq6iESE80+oAtEyf%PkDuOxbIUZwd^d!hvf<0wprn=uPsK$ZV$P4_}^ z*1v=|z$+NLQeX_m#n09lFHJm|H4|ziq1I~Fj@D5aPX1zyhxe>+tx;aty@R!N{sRbT z?fRjn)J0A4C>#G3wRSU6Q#uz_@n+N;?*M9~w{83f>Qtn9ZAM%iwR9~}ujsz0c4naK zM_@hyRlL@Ez<$i0hmspblI>J#Y;R<1-u2`o*kSA?!eUCCrT5FcIEHjrc8U zMt-37O!WVZiP4{UdQ^T1)Dl&|L^}Vq2`|si)p@^cn!=%yen40 zndpxXQ3Htn%`}_>70+bjVW`bl8a2apFp)VaQj8tG@$2>iaA z-J1k65>Jcja7k1H6;LzK(5AOT9p5fCy_a$zo9yG{s;4~2da=@QVC z55VF$3iIO;Y>YoJ5F1A`BN&d#pM~0#XE8fQ^YwUt$D0Q=(qAwcEcuuw*&3^n-VrO|F4RC`#_@PJYa-O9 zER3O85p&~Eo4y58>---epxyots)9GRz*p2v#P%~INR1jnFlr6+qNchTs$4JB<{E{n zZyKh<6{zP9qspDe%y=8S(Y_Nst{GWBRKZcGcl<<5ipy;JPMdxJQ<8oawWjaz9!8Jn z@&3N=DQe0)b2QT9U{t+}P@fg6YtK@G4BYN;yQ{1%vkc#lM!e-)TOf{w*BRD3>aB+F1U zvc<*^pmzHO%!x4)8^ch?u$^@VYUvK5KJTyF_z%=fCrx5zG>1z-4dk_!L^WIk^*dty0iWcyIhUqfxi2dL*hqF%`{l9~>eJOM$K4^WM&T}Kp*0%P)nE=Rc`=l>T{r$sw8TF)l9nUG$Wv?>SZ&= zqo!yc>IJg}b*#>z*8DaG;ZxLzlO;D(oEx=C>tJSVglcdE>J&^yovO{KnK*`tb^fmr zP>)}t8hVGS$R~vvaST*N@lYd5ZR43y73Q_+6;Lx(8#RD-s7*NpHR5@wH|RPnfcvD* z{}-E)H>D|14%MMXs1Y|utziVJA{SNhB-9M7MUD6{YDr$8_RL3&f#;0uL3Q9Os$8_R zW{)LC&1?{6#awAQ|LR!-64aw+*8aBOG*kt%QA@E3RelR<#&)2-vK_SX|4`+kr88@s z02Qx@T9Ue`&DRt)@UE^+7=lemn2egTSEy6*4TCVTzuA1nQ594~?;b&Qytz#ufaQpf z#~yeIwMWXQH=lm3Py?8W>X191fWGl8M}00IK#jWfGj)NWs9-GS=pSyY8L zZTucqC;kf6(Gme3XCc;W3+=64u`lsHxCURLIy^VCX3pjB=>&3;uoJbrpJEP7k;U}5 z9IC-ysJ$=>Rl#%{pNm?{HKgRN0VnY11^cawC~g>69KK+A=I%* z7G!2595uz=P@8N#YE!O2eZKETf4qU2@EfXp#$XdKhI)^*!OS=e)zLMmCEXRw`PaEW zM}jujZR>k1OgwgWlU@#o6K{fQ_%0ShPYyG+;i!80pk`(y`r~xefVQHR?jO{L)Js(P zH#uB$KAoJVXK_$3nzX166+%sUb*zi^aWHPgd6+Ag$61W0P#-c~LOjl7oQzd4Ah*Z+ ztKIH6hWKCTj}`NnZ$zD30y=h^P!GPsa2%G`yiyOMMvx@bY{p`!ndyZ6a5ZX81M-<& z-U%ys_`F9Q>s(jo-4M=|qty(hNN`QJ}KnaSQ7C?^qK9OPB%m!{Wr(qh{;{_Q0T$=1sT|{dNA& z6HpJ|qTYO^OPOyz1F<;q<)|0aL)?UcrOjTrf=bU-#_aMgc!~Hgcnq7D^*H-5sGP@H ziqBB-U(1`#Tb*?(s`EdYfJS~+37Dp$$2o(I@C61}G964++2j4kBoU~FR-@i*ZWXiZ zKcU_uF{*mJKjZO3O?h>Ui8E38i&3Xw1$uw}znXwvJX=r=??&x~3DwLw-GrL*BdGM3 zHa&55Q(;zA139c=s25HN)aj{-QLrKEebChA52()hSHt5;(D|H>dNC|R9l!0i;2G3s z#6LFv4!s|rUbR1Rh1ysjwqL$*hOF%t*gL-v- zvhhT<%mXQ`0jLMEqZ-JK{#X(9d?(aYcSkkQAJgMF^u={HeY1@pKy}DHZZj^TI&dG= z;~%I8W7IZF6A$&3EG=qNg`oG9i&~nIsHK~YI))ptEc(IL5#X4KMC?4a?+vR6X{VOPNh)|G(yctH_U?lFcU68&Ezpm zsq=rDfHvC`)aLnt1u#K9Q$a;kdQEF<)T^}*YBx_u&DciN-w$@6mgEqs11D_$1q>m6 z19j}<*7rEK6qrarugZu9=D{PV5u8Hx^e$?K9-(I7J*vY#4Nb?Aqc(3g)Ck+y^a-fF zvJh4NPgH%UF(+O?SLZTHBahP@qhl#-k4E}v*x)_ zBOZZjXgsRJlTkCW0JW!%9TY`PzN>A zcBqj>phnyibt;CUj^lLHD|b0+K&z}fT>{=Uu?ZJY4Ln43@1Cd; z?Lswh26Zg|M$Nz#)RH_y4J>|3vsu$&NuB?O1k}@or~*q+Yqk+p;WpF=_Mnc}0o0V9 zM!kY>p-#ttr~$-mWxg*YM7<9}Q5~s->S#06Uh9G0fB!p{fJQV4wR;z%Dq4*yxCzz4 zqo^r9fokv!sv|cs8bf}L4T-;PZSt$OF#~9fjMQm``VP4Y^P|(&<5bl74J{G_HPCJy zIR9GP9wcaFeNi8ylWl?3s8{h??12xkG1l*BM!XHxaZe}nbvqC>Gd)oq>x){dF&K<9 zPeCO5UNq1;^}ZK7`7l&hJW8{!Y{qokeZ3 z&|YR!l|VII#o8E^-^tn!)xl9%3V+3t`XIhUK$|Q@Z&RQqY9<<^K18~rIxx|?1hphv zQB(epjmPd|-khPRUETn-G;L6)r6Z=tfvABjz~nmrn+a$wPNFu^Ev$ea@EnHsHR*}^ znXlnN)|wbX{s7bxtVfOTAnwG|sN*}Xzgddqn2Y!g%!z&jIRDyIMF?mYmqM*gRn+cn zhyFMM^|8DhGvQtwh7U0vwjXGIWiuAFl*tEqoaI;vm*N}LF`O~j)VmDT-oC+{e@(>+ z60}MFL7j%js44r7nwfYUQ_W0zYXQ_7vN}${o;VGChIpJQI1?9RwxJ&94xYq;xM7(2 zIYQ8Ik293`Z^Lo2x$R{70acWISr~OhxVDS*V7Vquy-mQ8Tq0HA5F{ z{sWu;9QFJ+)KvS7F?+)gwPeXq190;b&~B}Sn&Nt>JcJ5c5SMxBzo zsOR3JKl+U|4dg(jS3z~K4QdbdwN62vcb#W(*4-4@l6ai|y5JoNtj?*aim_#Crg>SP!+SdRT{Br=q5ODQ3YlsAKjC zH3P}#n7x$_wMQzT2GrIi5JF%cs^ZhA5#K^>lKaTVr1KKBNo&kC<+`Gd;}BH(Jk;^p zfjajWQ3JY)diCBxjrb*MhN8|h9dla}P{SQiBj|5kf%?vO9t+`h)Gvx-;e3ALlP8ez+1F$@fz?^s*lj-ySI|0o=(#2+TWI})9g;ATPG3v$9 z7FAI{R0YFOYq<&c;u+MEOj=@o&bJn|be)!(ft*3@g&( z;%%`RPDC~Q67%CH%!;{|o1Y6dKy`2(e!@MdrP#K@yh%@EBjRyanoZpibxa4N_kaI4 ziNHz{)}S^^ja6o9o1xZt2x^8Fpr(EUYHbgrJ}XXRC_X~HLDQ@@BQ1w|F;zvCUya%; z8&R9_&}z$VR6b2KsC4v)!Tx@4L~Y2V(~E^P*nubx|`s4^{sfmw-0IM%0^cCx+osY>l2xX06(y_CR0M zln+IfpM&b~O4JK$C+akuwmwEJq0eTsr~FaRm$h-X839!^8q?!6)aKfXdhj3ARDDNv zH0c&w5$aW17B#hvQT233y|`Rd`Ek~1s7<*5)qy{Zu5+4z9(aTr$s4QhA7=XNV@KRupHL6R`_sg;p=Kx?wT2y0YuX+41|5Q0s&%M={eiJ@pN*eH&A?^!)A@fzKn;Gk zCf;reWJ4Xxk{E_haR6rAVb*vNrX#)swHdFWmMY0kGgH~I0P!j~7RTTWOt{Nz%GKy< zjZPBiiGQPZbH&}JqME3lc0_%sj6jtii+Yz&wdtEs1K5Uo5uHNK*lpCzenHJ-(miHL zv!iCL=pN3$-b9s1P){49_P|WcjcaiM-oh+6Xs=0Mfq98vMIFbu`^*~W#aF~TpgvU_ z?q?J8ewct-lC^)CALVR8eade8i}SA$?Is}@kDx~K4zpvd17>rDp}q??MU8L+YIE(w zH+Tuv;L(F7{R`^!#5-i_&yE^se$-5qL%sN#x&-uLG8|RGX3UHaY~1g#S?gk`2J2fp zqc+uW)JP_wmTo%gJun}2Dts%YF%)1kSj=YB_3d;qmqPNF(=4)sF1ih2XSMa^{BF=l}M=d>oEH5_}~9KYXC z9omaJ$EU0*PnZt1MSbk{#6vh4_32jkr1=!xf{G_RWqzpL1sfAThg#a4r_GX-#xy$r zRS9USBCr}xL%p*fphgF0PAuTP&2ydqS-SCFqHU}i=2PGVB%gfYmyoDrVBy6$vR+09A@JyQB$`U_1r_$EA|I^ zH}Bu(G^9c8`T$ft*-$f3!lu_pou+1gbN-dliv+#V#-n<^7E9x9)Mkrv*^JB|HPT$D z2EuH-n2nc3b*Ktzs_UapMNiawW{{1KMjhK{$eGf-2y47E%Dz}$EO_38H=wPrQ0 zn4bxC!u-UGUNz74M!iQyqh@FuYRYe64)k0z_2ojPw?w^~-BARzhD%Uyq^-8VHPn=T zLv5<~*UgvBT&QC?3^h|{P!-<6G8pxSnSqMdI;a_Lj+)87sF|LQEUoKoA)paoMNQdD zRD-c@nvP{dZO)>ond*RAg1)FdFa%ZMY}7#hM9tJmRKpKZr{f!HY2w^6OOXuY==`Vm z2KenYYRwCw)^;dr?Z%)UoQys=57mK%s1B?|HM|cskc+4p`4{z`@Vjm5OM&|M_D4NG z54}JCTSg!Y3A^zCK15B`nt#m5j-Zy}q4l#h&K;AU4mIN3)=Jhk)*-0+=U@mPK+WiT z^#1RE)894k0l zyyT&4K796)P>_TN=#T!7>~}m=#T`*=+zU0;W35ZAyHTH(mr)(OkJ@z4P#yTs=BIdU zp3j7O0Tp)%Xp_}OJJA!bzy9pNIMau>>_ED^OFq4{PB~ z)PQn7Gatj@s2AK)RQeWV>0IXk0e=!Mpr+&%^S@RRdEq(1Jq3PK~=Z{3*a{E zYnvYQ!n{WcqXy6j)$ul{-_g1pv~u^UNBQoBVB}5a6OK|uc)OO`qC`XIMj2K zP#s@_GjSX0L#OI1^Yg#9*qHb-3`U>Vrv9Ah{r+E=fY!1CmcT}s4Hu%`gvU`Yo_|pz zc#e8gzQuAF_lV;GeH3PNK```a-NI(yEK)tyJp!UE5 z)bU!4+BDm-DBi~InD(8Sk;xc9d=BQtJ*Zv(7WIuO!F%)9_hML*_*~S0Z@=gKYm>bu zK_iOs!7M=lszV{DDK3F}(bPt5wr&`Xzo4f26lym=K!1$;(acm%)Y^xlroI?@*B*6R zdVJ*kYf46wpmRGFHN|sLyL7Sjck5o%%$&CItLRVsG3wnP^OG5II@F9*M$KS1)SeoO z`plS!+A}L%0=Wq6!mRilHPU3C%}=TGpgPt8HACG|GcWGq>Ka1qtPo9Kg&FgEQw{}ND-KcE_n zmE80^A8MqPFf+DAeW*-AZNkl{y>kw|uU?z(pTewhQPjt61I&U8P)l$GHKU)=Ekhti zO4EU=n4fq{)YQ+l?m(^aRn*8{p!UWG)QIAyGBcDMwae3?MjnhRR}9tBx;DKZY5?O? zasKlXSVMw#?`@mmo7y~>5i65k7|Y{0)Na3ss^BTALow5s-JAfmSp!fFmqG3JCa9V0 zkDAHpsE+SW!}-_R9I**!Q8RE2)lkB;X5?8>OH|Za1Jytq^uBmdYrhyZkeyfz@1p9< zkj`|Z0rn@}8+H6%y9CseDE_90eyA5s7F5S_pg-nEeMZznb)*;SLuD-L6l_4P@oDQv ztABda(el`V{N|`ld=i_Wd)X%B%V0KLIBKfuqIP|E%!d6?Q@sqeH`bv#bOKfGG3t1| zM13ZFLk-L?z@#U`s>B0Po39tLr(9=*&6tg9_z7y{Q8Suj=!crBOsGv2hI-XjM4j)m zsHuO5MbHT}BQA>mMC+hB-UoGhTvUBav8m4g9|TsCkR+2?yWJR0{61=AnKGLx%Z^&x zFx0tkie+#!YOj33?wBBpnV}J=UB47HGlx(exqzC1>)6VB{t0L#RkQkd|Gj@}3?*JG zoB7lmhnl)1L1wL6qdG7Wv*K0Ugi(UcjBUl@#Lu9XD1LVH%_uu+Q`SV)KNVd~^)UkK z*?ByK*YGqh%3;#Ge(i&fICq=_swJSQ(;5mxlvO%5ewr%)F$-gHKsz<7m7M9 zmCzqMqV~{u)Mnr8+Jw`nH`RO0j0r+bya4J2QyaBM`dTMimth0acc40uB%hD>e=VOA z_1s0QjUTZzR?craG!=DB-Ax4i3H*iHO!rVd_X{(hQW;UZH#6$p9*SDq5~x>jZB)ZO zP*Xkuo8ffSG5vr`a6kbcXECNNXg=om;cA`#7X(_6F{_Y|_xE}K;TYmI3!4URU@hWb zP`kcr5g%tZF2&YZq^OVgzkN)Y7!YWw;DmVfo@d-v8Fr2As>^Kb_j) zW(HoDFvl%nNpsxhTc4wrrbsEXIqRd=bPi_6?Wm9KN0<{6mG*HKdiXYt^YLC8^YwdZ zIUoIt2gg(1$NQU<%Ggrp{{w-J*r0-s(-se-)+|RwAMdZvN1$ft7OJ7}Ny>nBun+Ku~@e!!wG8**;o2hgvUWIvyuWe># z=pQUV{2MAge{+-G3H1USi+Z0-LY<~%E&*+>ji?WWQy3L*U^={mdWU;jn2x1I9nWC& z$C4O`tx(5t9A>~(sOL_g-hhu$oAxW}J(8-WJ^vvDl9LdQ>R|)aE3z4CCc0y69D+@7 zJZkeiMZGCYwK5~Aj2cJ-)bqVjAGc#r-yhat7QBq<(P`}+fa_!+ps6T{s<0Zy#QLbI zZi(txPt=GMCBfc}P3*k(ka z8tP>ohsE|K{BKmlcTh9=0<}cZ+nUpn7PaP$P&3pGwGh$LZTbP!Ox-|zm^{R~=xJ|W$@NhU_CWTkGYPc>lWqPEbXDLY z0ZrK}EQ_D892W1u@xigE2PdF5+g8+bH?RzTLd`_6j;4bZP&3vDwJE!x_QC|zQf)+? zrrjMm|621?BxuV2MxBD27>3VKGZff~&u@mX90wBL9br0Lu(N5P1gf59sF`YS9gLdl zsi+y+gca}|#b#8#U$KP{(i_>K#7`H50qBIqt{$7|_+n`%fwc;UwaT zyP0#p4672qikiu+-AzZkV^8A0qGmjr+ru>Ehg!>o*3_t7p9#I^9o4atsB_&2HG+Pq zJ+aK@Z$(vn236l>%!qeT&-wN=`2na+?*j2 zy*6rU8=*F78yjDU>d4G}0L(vT)FrI)m*`KJTIAeW; zTJs;Ms@6+oE+&j(bW{oNBLrxpz z+UqjmH>$;6bqKFwecBT5%B_*;`rY7s*Hmy_R}Z+>67Oi!4ieA%Q{6AM&fbgp520dB zM|Hf%1H)JxUJKr@;kJ~+G4}r8@E4mfhYGq-wgB>*H-09}Q6+vHw{tfj+>3gyQ9h>@ z+g_UOmbUTTl<~gZij#1hNas01&7&q{-1gtnZJ^}2%BFK2T*3B zo$~C&W70?h;=!b!B+l=soMPO2)N#@`QPF4HseJtY$!TGGR2@6pivOZuMhfXgqH6~C zV)AQ|){Zhh+y!je52TkS{XF*)8j8HwYff}q_h6f@zbR$4X{H?O-;W1%&7j8z(3b*y z0RHb9N<-^yY$WO3smw#!L8Pr9uN39?kd_%qcEYJor=cD3q9n|sOmVzHJfW>O6=kNA zeq0;v4Fr7T`O=H(7aB=I8C`p+tT*=a z#+VW72b-^`-X+1*lZ5B&<$eD--D%`UWD*5t66X`u8Nxk`y9Rk*N#n14&Q-!!sPs=e zst8+IMxG1gj&IXX*^aB)7(5qw%_n@3G6}eo`tUWT6_vH8l1$vMs305Wr%;Ni-P}ZO zS#lrRXWNi-nQHk~!mpD|;vSyRRh_(W@&*x)LwG1@{qPUUHp8c+uj9@|_yOh4l0Sy~ zHR05>ah3Znab44>n|~FjAJ*{ik(YwB96X$!u&$K0uG!Q*k34&X6~m@HUmBfv@CMA>0htQ^!Dj z!L2KbeWo+d=xUGdC<-02869cl6&V@uchdI}zNp?)L00arq}Sq(V=Ji7b35&`6m>cg zPD5T(o7NTMQ$F(AMxBePFY=nJ|9^rhJTS#3KC&*d6*MKU8l_tkPi{xCoA4jD13zrJ z$O?<|yk;~u`TcC(GSVh<2lIS7I`frI+_ukqOMfM^JQ-!k=u22vTEdZ6N*)|Yeg`Ui zN%{uckv>#1%{Fq5w6WY@i0gatW$G!+Gy1|djr$pSpK%V)v?KjD!l|e$cVY_uP2%4a zNQ(2YpZ8#nw^dIdH7cbRP`oORp@gpbc#6Dq+?}|8zUteEzPz+1@2#y%$u(^FE_Dqc z?;!O~x8+yay7{}W>y#uzmwv`Gl!yN0b_w$rT<;gpEjWuxTA5I{{_uk@pK}&AH?8j6ZQ*rKn5S2O8{5 z+7jEL5~Ob@ts>=Xq5ghy5dF0N{59YCi-i2#fAK(F;x{Px3+l>3Mcr%zitkkAqjjh0B^LIl=bdtjTD6|0= z+x!uv^S3qU6>cT{GU2;a@|Fj?QdU<{(n3iK)U1&9+BRB_yi^RLJMqCbP33F56x7w( z@V`GBk{(7yQ}8eqb+2zJEZ(Y`g81M8`!Hf!a>}h2%n(7oc7uH zgxiwtMy1Cyi0G0G zyxobugxq&xZ$zrhbqyjN@6qZGty6HduP#VD{t z4RCeARaEkrTUTcC8guKqWy_qUv7$VekmvblLe4tkg~;zqTtC#%)s5!|^V}%%R}kLo z+6wh!nYdIGNG3lNakBH!O&%CX`Xu7|d!nwGgnzy+6S=~3Cn?vQ2GiR7`own=PCz}S z2e`*PmNI0C_|FDd95QwJ2MTcq76~xVg;y4iz%i8m+x24%)!eBv#rqbk<4 zZSWI(?-fCsE_XNub>*}P$9@{!INR`29!{?^x_`>oa}#*JB6lb5$2PCBZDa)b@2EGA z+MtfkgzHe}JMR6aObw?44-MwNY8#tIxDMqz*d7-r9F+%0V=Kz6;;zn}Qk8NQBd<7> z{Yv@wc*6U&h99MRuMGw#ukG4Op1fwm%IZmcEKi=M{0hQn)LrgwKb5&|!{13S${l&7 zwrzN9ejv~5DjS7urJp1iB+Ds}OMwz8Nx1abeo*9kf zF*(nbvkj`QnUu@Stt%OpChr1eJMwH|z1CKcaf}4LVZPJAD9q1Yl=K;-x6qUJTE;{A z8Qftid5^2HK4m{sE-`U%@>53FU^-HUJ38@E%HW!72U3@3hAC`ctKQ7h-ak1%WPBwY z#KVzSCK{SVCDC|L*D5M~VuH?R%0DB0Ao0{Z6Nt^YV-rrx-N1I}B+qZP9a%uWF1IR~ zC#Ya5PN$JD?%UkD&T+5dfrrGOQ|2z=SvIc&@xJ7DqTvwI%5vYbl}9J+Z_E8k2cD`j zuD-PKnmY%1=Xt)e*8da2WBl>m7G9p8ff%L%lD(Z8HDy$QeO_I6PE{#Nym>sOS!9;S|(WlKT_+ zS;^}{S`qKV-YoBLFeVcZAUzh({YSYwwj(N`-#i8r&x9Gs`^P-y{qvmuduThkhY_8C zx=K>W!vo{&2)t=LT>hu{M8f$ff0g?Q_X6^pb4OkWc|I4Bc%&V)&z-iN+DiIAv=M_m z_g?~6$T(vQC1VtWNYmAdig%E=nfo+_L%5q#t|)g3@^t;los95V^6GMT@TT&iZtGKY z8udlkbkSJ#U|Ibv6In($CN@*}S@luJtFSIX9; z6Sv9#LjHKd+sMnn9eEX^ouk}iZM|y$mTN2PNaO&8Gji`B?U7CYL8+Rg#lvb;T8Rq2 z*-HI+<{I(oRJf5lJMsCL&pu1k>A`a&i1)S6EXM}KGmy85vThbCNX~tPgenx?fwQ?^ za=##cmU}b}U!Y9n)yX!{kGycgNvS9unGL8s8|7Ybrz7tPdA-QXP59AG}7qIpHjni@g3IP(3nYjcW5_dh62sbA9At zU7M@}$h=2ov#7WVw?le#%>rq^5if&>mCp4Lr;`_XCFI#ulrLfPE8z^%#?bIiEc#Oi zZ|ZAp6WeG3D%JHbcVY^C)6E0=jM$EgFeO&tK110e-qMVkbX{w#IWPus4`p)OPV6Q= zl}_&9*~sfR+O0jrHh$P<>?F6QZXV7>MNRC;D&r;6kC1knI}_nu_E{eq$;JQ z>f+&v+~kzXNoqD~s!v!~9>PbtbyXqn5H;K-{sv##^a|var^cbAm7>fX?i6Z){1AE( z4YyO~IQIbR%}v@f%0?qxfU8ee5KM%&kYur5R zy*_)t9OvMvzlj&7dR?h_st=_iuOv1-goFd+tt4+EX_7cfV;%X9#Q|ZswB+~oa{uU%-GWpx6^iLWbMf`~EXkyZy zaJMI|KlSY*{F?A^`)nSbJ4HAhx5uU(etzsQVZmA#bpL z7=K@>Ty<=t>FLZGD*BIjBStloyoXfq4BHZ)sKQ)*3{D~{x=8u+_IV`_B<&yWH-tNJ z*CX#f&%Pksh`P2CK0yAnD2)Flfv6k=B;9 zhLpRGkGMVDCAc?HW(wJGcI|*61qVCeSJCVK?i=2Sl1SQM5Up`2T{J&)0V%O{rs{O)NCX?2OaCypYqOLjElQPS=H&W+!;x{NC zM&2l2);|UrXNh#f8Qt-v78F{Ds5}_QBnRbMeqL;*BX-jr;@LgGhUWy6O_v z^&e%HkhXzx2?)0%Z3Lat)r5F#?qKdJlo?AIU+hW#KH3Jn3aSCRNk8c z)wp$q68}bi9>Pg^cnsjz>hQQtmzF3X`{udo<~1DBF>=%(h*3 z3l+4s4@cpFtYi$LVD8A;FcD>vQ6|ezX%$H;N%=yQk45rT8N>iU;5t++pN_n`8ma-^0IWmoEM-J9X*Ndg{(eg*UgE&^yQG2RlavZSM7`T8VA@ dvU-5LCwbVmr&m3h>TQda+b3y-{{wN6MBV@Z delta 36485 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 z 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%0DOXgr^bS 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

sE!X= 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 X^}_3Q^@xWCw{PEeTlYfVwTt~9LFkSO delta 36935 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 J)4NZU{y$V*J_G;& delta 35905 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 diff --git a/resources/i18n/sv/BambuStudio.mo b/resources/i18n/sv/BambuStudio.mo index 6f0fe0d8768c7e0c75430f8858dd4c603de03001..c4f8c84ff254474e5b1a6b784304bd995f20642a 100644 GIT binary patch delta 35932 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

#Bq?Wl(0JTaRyKh`JS2-U$|sHHfL8SxrwvwcVH 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³ ziu$eBeZt?kj}k6I`RL^9I*28SZ!uBlE@jHuPQ4_oYX|p38y>IkxX-B6n1;uZ;e#2t z-;&_+8kpkVwOhMvX3Z5svgj-iW;tRNo5pT)^9~1VWTsp#I zsjKS>_Ol)7LUlKjK?30r&6ZuOr@vXKb|Pmg~1Cjfpg( zm+5ec&3Hhgx+c?5T=FJz>-vkzg9&@txYG99j#O8~UPH*QN!i#uID|G2)7}vB5|NgK z_+rv^{igFCWE*Qn_@YU7ZqaB-!q=z}m%_0qvkO;}HiNV`gqIQSOT)v-%R$}5q$MCv z*EG_95Z9HIH2%tf(}Z&8Xm^txobuf6WE3S(k&O2?V>)T=X;9Z<+u%3UpUdjnZ1XzU zxYA;hpWv5sW`1G;K(FCy$qdVcOi_5ls(R2<6n&9UE z5WY?Q!@sn5gK%=%Do2?$sb^dwSHXM!2E5xVZIMTuh$0V$)0u|a}CLTJ5yhWr} zqoLWPd6723mQ&fvwqq|S_m=P_Opj~vlg(4P9-cp4Ca{3S%{11Vhit&5#Gl}PTet!h z57_V#>}h(hHk|F0TSwYsoX7p^)xj?7X4|1sxgV@cjt0v`h(;3hDk0l{4 zy{ct<`<8e~Dl{bCmWJA^2G@D+PTWn%JHWl4#(L4vJZ@btXrno4ZB5i^jy|@{su)5% z4`s93&P|HulyIt0;i;yL22W!i3T`E>E=h$cJdz zKTGMvBWWu!J|P-LULD%JY3tmf1D<7kO`!$0cbh$lro>jbL8Z#%S0TSU4Rs=aG2t7w zTnF+VlKzNt5x>;!MYuR=t0-F(bsaP~8%Rq{{#5FP>T66qGGY_?c?D450r8mRHRl19 zZ37XcPoiRG3LYV?58*_V8$>x>&nX*8S|!5&VJ+@L+;1qei903rw^C*WX?wVRh`UAk zM_m$Y+eX?F4kw(KM#>S^)sDi~XkY~4-kucR3gj)M6V*u9HJLKgiMOP^hxqH&jJ&(H zt-^$l+5Fe~F=i$iIeB2ZUux7OZ4?b1wv}3t_ZyX-lD3m@HVowcT@BfeN2lR4w&7EB zYOd|r9MTJN>q#9CGbtB@OKg5N@>daFMf$hMm7`L-p|n=pK0__Fro?+YIK^9$SC1MoXk`rX zZ{%gMPu)l>I|#4fUPGDD)ct{HC^wsO2S_i^U72)UL8SGwJ)c4PxSwAZKk|^0B>YC9 z%7kZeKcjF$8q-ylJYDfgk7C1VX>>G=t)@&x?nC4^AwRaQGvE5zKJXrSx`L^0}?QsM^ZQKe|PFjqxcuh*H;n$yEtI{e$ZR zEtR3Ao0L9BxmVo77}{Qw?PQFsHpa(YOzv6kk>t$5^t9HUTDnHj!UEDxV?V}wWAj;mY((sbpdZUNFOa=#|tzz$*p`A7H{ zB0T@e)jeeNpx`p@U$5sh+Jw8iO}t9w8I-BU9f$Ox#8(sULgQNqujDSwt*a^SvYnn{ z(@YLOIT4?&w8*<-ecb53bbFI6lG=9vKCL$({~J%!bqGsSa}@cvOp>#P@D}dU_Gu5P zQ=6+kDsScPOTj-WRE~#sw+;TltEQfFlW=_U4q;R3 z_23>ur~2AK+@XGM(tK@QRjWk2A7yspE^I>kIq*I4EZ&@i6C{+e52#{$T80KHQeX=A zal#vHgIy^12bJ@vqol>zoM(K4oSSFt8lH7?#s{G#wl@y&dfIt=^_gB5bI;sx!YkVL Yd?&nOl#f=UN9QhGwiim|9a8*%0HOgc#sB~S delta 35963 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 E1I)xhx&QzG diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index 79bb0cd54f964bd633e171e330da048203865aec..0dabcf3158729e04b719c7fb717213a663df4e43 100644 GIT binary patch delta 36464 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 delta 36429 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 diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 800fc32b13..7c49f18ef4 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4385,7 +4385,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv { case EViewType::FeatureType: { - append_headers({_u8L("Line type"), _u8L("Time"), _u8L("Percent"), "", _u8L("Display")}, offsets); + append_headers({_u8L("Line Type"), _u8L("Time"), _u8L("Percent"), "", _u8L("Display")}, offsets); break; } case EViewType::Height: { imgui.title(_u8L("Layer Height (mm)")); break; } diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 580e06d2ab..594b1c169d 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -2762,24 +2762,24 @@ void ObjectTablePanel::load_data() #if HAS_COL_HEADER m_object_grid->SetColLabelAlignment(wxALIGN_LEFT, wxALIGN_CENTER); - m_object_grid->SetColLabelValue(ObjectGridTable::col_printable, L("Printable")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_printable, _L("Printable")); m_object_grid->SetColLabelValue(ObjectGridTable::col_printable_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_plate_index, L("Plate")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_plate_index, _L("Plate")); /*m_object_grid->SetColLabelValue(ObjectGridTable::col_assemble_name, L("Module"));*/ - m_object_grid->SetColLabelValue(ObjectGridTable::col_name, L("Name")); - m_object_grid->SetColLabelValue(ObjectGridTable::col_filaments, L("Filament")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_name, _L("Name")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_filaments, _L("Filament")); m_object_grid->SetColLabelValue(ObjectGridTable::col_filaments_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_layer_height, L("Layer height")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_layer_height, _L("Layer height")); m_object_grid->SetColLabelValue(ObjectGridTable::col_layer_height_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_wall_loops, L("Wall loops")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_wall_loops, _L("Wall loops")); m_object_grid->SetColLabelValue(ObjectGridTable::col_wall_loops_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_fill_density, L("Infill density(%)")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_fill_density, _L("Infill density(%)")); m_object_grid->SetColLabelValue(ObjectGridTable::col_fill_density_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_enable_support, L("Support")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_enable_support, _L("Support")); m_object_grid->SetColLabelValue(ObjectGridTable::col_enable_support_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_brim_type, L("Brim")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_brim_type, _L("Brim")); m_object_grid->SetColLabelValue(ObjectGridTable::col_brim_type_reset, ""); - m_object_grid->SetColLabelValue(ObjectGridTable::col_speed_perimeter, L("Inner wall speed")); + m_object_grid->SetColLabelValue(ObjectGridTable::col_speed_perimeter, _L("Inner wall speed")); m_object_grid->SetColLabelValue(ObjectGridTable::col_speed_perimeter_reset, ""); m_object_grid->SetLabelFont(Label::Head_13); m_object_grid->SetLabelTextColour(wxColour(0x30,0x3a,0x3c)); diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index 71d594a256..ae71b707ae 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -114,7 +114,7 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox m_sizer_left->Add(0, 0, 0, wxLEFT, 10); - auto m_left_text = new wxStaticText(parent, wxID_ANY, L("User Preset"), wxDefaultPosition, wxDefaultSize, 0); + auto m_left_text = new wxStaticText(parent, wxID_ANY, _L("User Preset"), wxDefaultPosition, wxDefaultSize, 0); m_left_text->Wrap(-1); m_left_text->SetFont(::Label::Body_13); m_left_text->SetForegroundColour(wxColour(107,107,107)); @@ -133,7 +133,7 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox m_sizer_right->Add(0, 0, 0, wxLEFT, 10); - auto m_right_text = new wxStaticText(parent, wxID_ANY, L("Project Inside Preset"), wxDefaultPosition, wxDefaultSize, 0); + auto m_right_text = new wxStaticText(parent, wxID_ANY, _L("Project Inside Preset"), wxDefaultPosition, wxDefaultSize, 0); m_right_text->SetForegroundColour(wxColour(107,107,107)); m_right_text->SetFont(::Label::Body_13); m_right_text->Wrap(-1); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index a68229c114..2c27a68cac 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -411,7 +411,7 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) }); m_button_abort = new ScalableButton(m_panel_progress, wxID_ANY, "print_control_stop", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); - m_button_abort->SetToolTip(_L("Abort")); + m_button_abort->SetToolTip(_L("Stop")); m_button_abort->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { m_button_abort->SetBitmap_("print_control_stop_hover"); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 04382ec14d..9afc212a4e 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1822,7 +1822,7 @@ DiffPresetDialog::DiffPresetDialog(MainFrame* mainframe) }); } - m_show_all_presets = new wxCheckBox(this, wxID_ANY, "Show all presets (including incompatible)"); + m_show_all_presets = new wxCheckBox(this, wxID_ANY, _L("Show all presets (including incompatible)")); m_show_all_presets->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { bool show_all = m_show_all_presets->GetValue(); for (auto preset_combos : m_preset_combos) { @@ -1883,7 +1883,7 @@ void DiffPresetDialog::update_bundles_from_app() void DiffPresetDialog::show(Preset::Type type /* = Preset::TYPE_INVALID*/) { - this->SetTitle("Compare Presets"); + this->SetTitle(_L("Compare presets")); m_view_type = type; update_bundles_from_app(); From b51b562be81ed1f5ccf3e66cd5cb103303917b2c Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Tue, 23 Aug 2022 18:59:39 +0800 Subject: [PATCH 069/137] FIX:refine objecttable 1.fix multi-line text are cut off 2.romove resize of object_table 3.fix object_table_setting without scrollbar 4.improve UI of filament column Change-Id: I5eb989e86545c411013e31f31580a1e0a71472e2 --- src/slic3r/GUI/GUI_ObjectTable.cpp | 95 +++++++++++++++++++----------- src/slic3r/GUI/GUI_ObjectTable.hpp | 1 + 2 files changed, 61 insertions(+), 35 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 594b1c169d..9ea452e2d8 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -83,7 +83,6 @@ void GridCellIconRenderer::Draw(wxGrid& grid, int offset_x = (table->m_icon_col_width - bitmap_width)/2; int offset_y = (table->m_icon_row_height - bitmap_height)/2; - #ifdef __WXOSX_COCOA__ auto lock_pos = wxPoint(rect.x + offset_x, rect.y + offset_y); auto left = (28 - 12) / 2; @@ -340,7 +339,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d text_rect.width -= (bitmap_width + grid_cell_border_width * 2); } - wxGridCellChoiceRenderer::Draw(grid, attr, dc, text_rect, row, col, isSelected); + //wxGridCellChoiceRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); } wxSize GridCellFilamentsRenderer::GetBestSize(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc, int WXUNUSED(row), int WXUNUSED(col)) @@ -2152,8 +2151,11 @@ void ObjectGridTable::update_row_properties() switch (grid_col->type) { case coString: + if (col == ObjectGridTable::col_plate_index) + grid_table->SetReadOnly(row, col); grid_table->SetCellEditor(row, col, new GridCellTextEditor()); - grid_table->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); + //grid_table->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); + grid_table->SetCellFitMode(row, col, wxGridFitMode::Ellipsize()); break; case coBool: grid_table->SetCellEditor(row, col, new GridCellSupportEditor()); @@ -2179,12 +2181,12 @@ void ObjectGridTable::update_row_properties() break; case coFloat: grid_table->SetCellEditor(row, col, new GridCellTextEditor()); - grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); + grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,1)); break; case coPercent: { grid_table->SetCellEditor(row, col, new GridCellTextEditor()); - grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); + grid_table->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,1)); break; } default: @@ -2274,7 +2276,7 @@ void ObjectGridTable::sort_row_data(compare_row_func sort_func) std::copy(new_grid_rows.begin(), new_grid_rows.end(), m_grid_data.begin()); new_grid_rows.clear(); - update_row_properties(); + //update_row_properties(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" finished, this %1%, row_data size %2%") %this % m_grid_data.size(); } @@ -2390,7 +2392,7 @@ bool ObjectGridTable::OnCellLeftClick(int row, int col, ConfigOptionType &type) if (row == 0) { sort_by_col(col); - } else if (col >= col_name) { + } else if (col >= col_printable_reset) { ObjectGridRow *grid_row = m_grid_data[row - 1]; ObjectGridCol* grid_col = m_col_data[col]; ObjectGridCol* grid_col_2 = m_col_data[col - 1]; @@ -2626,11 +2628,10 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi //m_object_grid_table->SetAttrProvider(new MyGridCellAttrProvider); //m_object_grid->AssignTable(m_object_grid_table); - m_side_window = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(440),FromDIP(480)), wxVSCROLL); m_side_window->SetScrollRate( 0, 5 ); m_page_sizer = new wxBoxSizer(wxVERTICAL); - m_page_top_sizer = new wxBoxSizer(wxHORIZONTAL); + //m_page_top_sizer = new wxBoxSizer(wxHORIZONTAL); m_side_window->SetBackgroundColour(wxColour(0xff, 0xff, 0xff)); m_side_window->SetSizer(m_page_sizer); m_side_window->SetScrollbars(1, 20, 1, 2); @@ -2669,7 +2670,7 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi m_side_window->SetFont(::Label::Body_12); m_object_settings = new ObjectTableSettings(m_side_window, m_object_grid_table); m_object_settings->Hide(); - m_page_sizer->Add(m_page_top_sizer, 0, wxEXPAND | wxALIGN_CENTER_HORIZONTAL, 0); + //m_page_sizer->Add(m_page_top_sizer, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_page_sizer->Add(m_object_settings->get_sizer(), 1, wxEXPAND | wxALL, 2 ); auto m_line_left = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1,-1), wxTAB_TRAVERSAL); @@ -2853,7 +2854,8 @@ void ObjectTablePanel::load_data() { case coString: m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); - m_object_grid->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); + //m_object_grid->SetCellRenderer(row, col, new wxGridCellAutoWrapStringRenderer()); + m_object_grid->SetCellFitMode(row, col, wxGridFitMode::Ellipsize()); break; case coBool: m_object_grid->SetCellEditor(row, col, new GridCellSupportEditor()); @@ -2878,12 +2880,12 @@ void ObjectTablePanel::load_data() break; case coFloat: m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); - m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); + m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,1)); break; case coPercent: { m_object_grid->SetCellEditor(row, col, new GridCellTextEditor()); - m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,2)); + m_object_grid->SetCellRenderer(row, col, new wxGridCellFloatRenderer(6,1)); break; } default: @@ -2933,9 +2935,14 @@ void ObjectTablePanel::load_data() m_object_grid->SetColSize(i, FromDIP(28)); break; - case ObjectGridTable::col_layer_height: - m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + case ObjectGridTable::col_layer_height: { + auto width = m_object_grid->GetColSize(i) - FromDIP(28); + if (width < m_object_grid->GetTextExtent(("000.00")).x) { + width = m_object_grid->GetTextExtent(("000.00")).x; + } + m_object_grid->SetColSize(i, width); break; + } case ObjectGridTable::col_layer_height_reset: m_object_grid->SetColSize(i, FromDIP(28)); @@ -2972,10 +2979,12 @@ void ObjectTablePanel::load_data() case ObjectGridTable::col_brim_type_reset: m_object_grid->SetColSize(i, FromDIP(28)); break; - case ObjectGridTable::col_speed_perimeter: - m_object_grid->SetColSize(i, m_object_grid->GetColSize(i) - FromDIP(28)); + case ObjectGridTable::col_speed_perimeter: { + auto width = m_object_grid->GetColSize(i) - FromDIP(28); + if (width < m_object_grid->GetTextExtent(("000.00")).x) { width = m_object_grid->GetTextExtent(("000.00")).x; } + m_object_grid->SetColSize(i, width); break; - + } case ObjectGridTable::col_speed_perimeter_reset: m_object_grid->SetColSize(i, FromDIP(28)); break; @@ -3140,7 +3149,7 @@ void ObjectTablePanel::resetAllValuesInSideWindow(int row, bool is_object, Model // ObjectTableDialog // ---------------------------------------------------------------------------- ObjectTableDialog::ObjectTableDialog(wxWindow* parent, Plater* platerObj, Model *modelObj, wxSize maxSize) - : GUI::DPIDialog(parent, wxID_ANY, _L("Object/Part Setting"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) + : GUI::DPIDialog(parent, wxID_ANY, _L("Object/Part Setting"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_model(modelObj), m_plater(platerObj) { @@ -3214,17 +3223,18 @@ ObjectTableDialog::ObjectTableDialog(wxWindow* parent, Plater* platerObj, Model m_main_sizer->Add(m_obj_panel, 1, wxEXPAND|wxLEFT,FromDIP(10)); SetSizer(m_main_sizer); - Layout(); Fit(); + Layout(); } ObjectTableDialog::~ObjectTableDialog() { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", this %1%, m_obj_panel %2%") %this % m_obj_panel; + #ifdef __WXOSX_MAC__ if (m_obj_panel) { delete m_obj_panel; m_obj_panel = nullptr; } + #endif } void ObjectTableDialog::Popup(int obj_idx, int vol_idx, wxPoint position /*= wxDefaultPosition*/) @@ -3232,7 +3242,8 @@ void ObjectTableDialog::Popup(int obj_idx, int vol_idx, wxPoint position /*= wxD m_obj_panel->sort_by_default(); m_obj_panel->SetSelection(obj_idx, vol_idx); - this->SetPosition(position); + //this->SetPosition(position); + Centre(wxBOTH); this->ShowModal(); } @@ -3256,23 +3267,35 @@ void ObjectTableDialog::on_sys_color_changed() void ObjectTableDialog::OnClose(wxCloseEvent &evt) { this->GetSize(&g_dialog_width, &g_dialog_height); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", g_dialog_width %1%, g_dialog_height %2%") %g_dialog_width % g_dialog_height; + + #ifdef __WINDOWS__ + if (m_obj_panel) { + delete m_obj_panel; + m_obj_panel = nullptr; + } + + DestroyChildren(); + Destroy(); + #endif + + #ifdef __WXOSX_MAC__ evt.Skip(); + #endif } void ObjectTableDialog::OnSize(wxSizeEvent& event) { - SetSize(wxSize(-1, FromDIP(480))); - SetMinSize(wxSize(-1, FromDIP(480))); - SetMaxSize(wxSize(-1, FromDIP(480))); - return; - wxSize new_size = event.GetSize(); - if ((new_size.GetWidth() > g_dialog_max_width) || (new_size.GetHeight() > g_dialog_max_height)) { - int width = (new_size.GetWidth() > g_dialog_max_width)?new_size.GetWidth():g_dialog_max_width; - int height = (new_size.GetHeight() > g_dialog_max_height)?new_size.GetHeight():g_dialog_max_height; - this->SetMaxSize(wxSize(width, height)); - } - event.Skip(); + //SetSize(wxSize(-1, FromDIP(480))); + //SetMinSize(wxSize(-1, FromDIP(480))); + //SetMaxSize(wxSize(-1, FromDIP(480))); + //return; + //wxSize new_size = event.GetSize(); + //if ((new_size.GetWidth() > g_dialog_max_width) || (new_size.GetHeight() > g_dialog_max_height)) { + // int width = (new_size.GetWidth() > g_dialog_max_width)?new_size.GetWidth():g_dialog_max_width; + // int height = (new_size.GetHeight() > g_dialog_max_height)?new_size.GetHeight():g_dialog_max_height; + // this->SetMaxSize(wxSize(width, height)); + //} + //event.Skip(); } // ---------------------------------------------------------------------------- @@ -3285,11 +3308,13 @@ GridCellTextEditor::~GridCellTextEditor() {} void GridCellTextEditor::Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) { - ::TextInput *text_input = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(-1, -1), 0); + ::TextInput *text_input = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(-1, -1), wxTE_PROCESS_ENTER); m_control = text_input; wxGridCellEditor::Create(parent, id, evtHandler); } +void GridCellTextEditor::StartingKey(wxKeyEvent &event) {} + void GridCellTextEditor::SetSize(const wxRect &rect) { wxGridCellTextEditor::SetSize(rect); } void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index 3af3aacc32..794ce4b876 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -61,6 +61,7 @@ public: ~GridCellTextEditor(); virtual void Create(wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler) wxOVERRIDE; + void StartingKey(wxKeyEvent &event) wxOVERRIDE; virtual void SetSize(const wxRect &rect) wxOVERRIDE; virtual void BeginEdit(int row, int col, wxGrid *grid) wxOVERRIDE; virtual bool EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval) wxOVERRIDE; From 3b021d44438ce5f1fdad33aec4e12b43df3af773 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 26 Aug 2022 18:28:38 +0800 Subject: [PATCH 070/137] FIX:replace new camera icons Change-Id: Ibd8b178260733a4b95198687d90d111b542462e1 --- resources/images/recording_off_hover.svg | 10 ++++---- resources/images/recording_off_normal.svg | 10 ++++---- resources/images/recording_on_hover.svg | 11 ++++----- resources/images/recording_on_normal.svg | 11 ++++----- resources/images/sdcard_state_off.svg | 30 ++++++++--------------- resources/images/sdcard_state_on.svg | 24 ++++++------------ resources/images/timelapse_off_hover.svg | 17 +++++++------ resources/images/timelapse_off_normal.svg | 17 +++++++------ resources/images/timelapse_on_hover.svg | 19 ++++++++------ resources/images/timelapse_on_normal.svg | 19 ++++++++------ src/slic3r/GUI/StatusPanel.cpp | 24 +++++++++--------- 11 files changed, 91 insertions(+), 101 deletions(-) diff --git a/resources/images/recording_off_hover.svg b/resources/images/recording_off_hover.svg index 729484ea2d..0f59b4deee 100644 --- a/resources/images/recording_off_hover.svg +++ b/resources/images/recording_off_hover.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/resources/images/recording_off_normal.svg b/resources/images/recording_off_normal.svg index 1a4d357621..3ba0450e8b 100644 --- a/resources/images/recording_off_normal.svg +++ b/resources/images/recording_off_normal.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/resources/images/recording_on_hover.svg b/resources/images/recording_on_hover.svg index c2cd0833a0..45a46c0fdf 100644 --- a/resources/images/recording_on_hover.svg +++ b/resources/images/recording_on_hover.svg @@ -1,7 +1,6 @@ - - - - - - + + + + + diff --git a/resources/images/recording_on_normal.svg b/resources/images/recording_on_normal.svg index f1984fbf19..b75b916e95 100644 --- a/resources/images/recording_on_normal.svg +++ b/resources/images/recording_on_normal.svg @@ -1,7 +1,6 @@ - - - - - - + + + + + diff --git a/resources/images/sdcard_state_off.svg b/resources/images/sdcard_state_off.svg index 5e9fa83a88..97b4866def 100644 --- a/resources/images/sdcard_state_off.svg +++ b/resources/images/sdcard_state_off.svg @@ -1,20 +1,10 @@ - - - - - - - - Layer 1 - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/resources/images/sdcard_state_on.svg b/resources/images/sdcard_state_on.svg index c82fdd317c..deef48a11b 100644 --- a/resources/images/sdcard_state_on.svg +++ b/resources/images/sdcard_state_on.svg @@ -1,17 +1,7 @@ - - - - - - - - Layer 1 - - - - - - - - - \ No newline at end of file + + + + + + + diff --git a/resources/images/timelapse_off_hover.svg b/resources/images/timelapse_off_hover.svg index 583bfd0469..d21e599c2e 100644 --- a/resources/images/timelapse_off_hover.svg +++ b/resources/images/timelapse_off_hover.svg @@ -1,12 +1,15 @@ - - - - - + + + + + + + + - - + + diff --git a/resources/images/timelapse_off_normal.svg b/resources/images/timelapse_off_normal.svg index b8f0505d93..ec30c1b720 100644 --- a/resources/images/timelapse_off_normal.svg +++ b/resources/images/timelapse_off_normal.svg @@ -1,12 +1,15 @@ - - - - - + + + + + + + + - - + + diff --git a/resources/images/timelapse_on_hover.svg b/resources/images/timelapse_on_hover.svg index e46f1015fd..7ea45dc911 100644 --- a/resources/images/timelapse_on_hover.svg +++ b/resources/images/timelapse_on_hover.svg @@ -1,13 +1,16 @@ - - - - - - + + + + + + + + + - - + + diff --git a/resources/images/timelapse_on_normal.svg b/resources/images/timelapse_on_normal.svg index bd8898b5df..09655e1349 100644 --- a/resources/images/timelapse_on_normal.svg +++ b/resources/images/timelapse_on_normal.svg @@ -1,13 +1,16 @@ - - - - - - + + + + + + + + + - - + + diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 2c27a68cac..a7f4dd82bb 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -176,8 +176,8 @@ void StatusBasePanel::init_bitmaps() m_thumbnail_sdcard = ScalableBitmap(this, "monitor_sdcard_thumbnail", 120); //m_bitmap_camera = create_scaled_bitmap("monitor_camera", nullptr, 18); m_bitmap_extruder = *cache.load_png("monitor_extruder", FromDIP(28), FromDIP(70), false, false); - m_bitmap_sdcard_state_on = create_scaled_bitmap("sdcard_state_on", nullptr, 16); - m_bitmap_sdcard_state_off = create_scaled_bitmap("sdcard_state_off", nullptr, 16); + m_bitmap_sdcard_state_on = create_scaled_bitmap("sdcard_state_on", nullptr, 20); + m_bitmap_sdcard_state_off = create_scaled_bitmap("sdcard_state_off", nullptr, 20); } wxBoxSizer *StatusBasePanel::create_monitoring_page() @@ -214,18 +214,18 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page() //m_bitmap_camera_img->SetMinSize(wxSize(FromDIP(32), FromDIP(18))); //bSizer_monitoring_title->Add(m_bitmap_camera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5)); - m_bitmap_sdcard_off_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_off, wxDefaultPosition, wxSize(FromDIP(32), FromDIP(16)), 0); - m_bitmap_sdcard_off_img->SetMinSize(wxSize(FromDIP(32), FromDIP(16))); - m_bitmap_sdcard_on_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_on, wxDefaultPosition, wxSize(FromDIP(32), FromDIP(16)), 0); - m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(32), FromDIP(16))); + m_bitmap_sdcard_off_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_off, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0); + m_bitmap_sdcard_off_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); + m_bitmap_sdcard_on_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_on, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0); + m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); m_bitmap_sdcard_on_img->Hide(); m_timelapse_button = new CameraItem(m_panel_monitoring_title, "timelapse_off_normal", "timelapse_on_normal", "timelapse_off_hover", "timelapse_on_hover"); - m_timelapse_button->SetMinSize(wxSize(32, 24)); + m_timelapse_button->SetMinSize(wxSize(38, 24)); m_timelapse_button->SetBackgroundColour(STATUS_TITLE_BG); m_recording_button = new CameraItem(m_panel_monitoring_title, "recording_off_normal", "recording_on_normal", "recording_off_hover", "recording_on_hover"); - m_recording_button->SetMinSize(wxSize(32, 24)); + m_recording_button->SetMinSize(wxSize(38, 24)); m_recording_button->SetBackgroundColour(STATUS_TITLE_BG); m_timelapse_button->SetToolTip(_L("Timelapse")); @@ -2437,10 +2437,10 @@ void StatusPanel::msw_rescale() //m_bitmap_camera_img->SetBitmap(m_bitmap_camera); //m_bitmap_camera_img->SetMinSize(wxSize(FromDIP(32), FromDIP(18))); - m_timelapse_button->SetMinSize(wxSize(32, 24)); - m_recording_button->SetMinSize(wxSize(32, 24)); - m_bitmap_sdcard_off_img->SetMinSize(wxSize(FromDIP(32), FromDIP(20))); - m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(32), FromDIP(20))); + m_timelapse_button->SetMinSize(wxSize(38, 24)); + m_recording_button->SetMinSize(wxSize(38, 24)); + m_bitmap_sdcard_off_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); + m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); m_bpButton_xy->Rescale(); m_tempCtrl_nozzle->SetMinSize(TEMP_CTRL_MIN_SIZE); From f44a0b88d9b2e08a9f0950e0a55da773e2e83530 Mon Sep 17 00:00:00 2001 From: "zorro.zhang" Date: Fri, 26 Aug 2022 15:58:19 +0800 Subject: [PATCH 071/137] NEW: homepage and UserManual Change-Id: Iecdb4d0151a0cf76614548aee69e525ad7e1fe68 (cherry picked from commit 4c7403683b334e42d8676a933012e2133cd1ce7f) --- resources/web/data/text.js | 10 +- resources/web/homepage/css/home.css | 150 ++++++++++++++++++++++- resources/web/homepage/img/delete.png | Bin 0 -> 4023 bytes resources/web/homepage/img/folder.png | Bin 0 -> 2721 bytes resources/web/homepage/img/wiki.png | Bin 0 -> 471159 bytes resources/web/homepage/img/wiki2.png | Bin 0 -> 348993 bytes resources/web/homepage/img/wiki3.png | Bin 0 -> 526505 bytes resources/web/homepage/index.html | 98 ++++++++++++++- resources/web/homepage/js/home.js | 168 +++++++++++++++++++++++++- src/slic3r/GUI/GUI_App.cpp | 40 ++++++ src/slic3r/GUI/GUI_App.hpp | 1 + src/slic3r/GUI/MainFrame.cpp | 22 ++++ src/slic3r/GUI/MainFrame.hpp | 1 + 13 files changed, 478 insertions(+), 12 deletions(-) create mode 100644 resources/web/homepage/img/delete.png create mode 100644 resources/web/homepage/img/folder.png create mode 100644 resources/web/homepage/img/wiki.png create mode 100644 resources/web/homepage/img/wiki2.png create mode 100644 resources/web/homepage/img/wiki3.png diff --git a/resources/web/data/text.js b/resources/web/data/text.js index aeb67a253f..b4589dc746 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -78,7 +78,10 @@ var LangText={ "t83":"2, Close all open Bambu Studio", "t84":"3, Delete all files under the plug-in directory", "t85":"4, Reopen Bambu studio and install the plug-in again", - "t86":"Close" + "t86":"Close", + "t87":"User manual", + "t88":"clear", + "t89":"show in explorer" }, "zh_CN":{ "t1":"欢迎使用Bambu Studio", @@ -159,7 +162,10 @@ var LangText={ "t83":"2, 关闭所有Bambu Studio", "t84":"3, 删除插件所在目录下的所有文件", "t85":"4, 重新启动Bambu Studio并尝试安装插件", - "t86":"关闭" + "t86":"关闭", + "t87":"使用引导", + "t88":"清除", + "t89":"打开文件所在路径" } }; diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index 6e2c322dd4..e25c9570f6 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -33,6 +33,12 @@ html, body { text-decoration:underline; } +/*------------------*/ +#DebugText +{ + height:30px; +} + /*------------------*/ body { @@ -208,6 +214,7 @@ body padding: 0px 40px; display: flex; flex-direction: column; + position: relative; } #MenuArea @@ -274,9 +281,31 @@ body flex-direction: column; } +#RecentTitleBlock +{ + display:flex; + align-items: center; + padding: 6px; + border-bottom: 1px solid #D9D9D9; +} + +#RecentClearAllBtn +{ + border: 1px solid #C4C4C4; + padding: 0px 10px; + border-radius: 6px; + line-height: 26px; + height: 26px; + margin-left: 20px; + cursor: pointer; + background-color: #00AE42; + color: #fff; + display: inline; +} + #RecentTitle { - border-bottom: 1px solid #D9D9D9; + } #FileList @@ -331,6 +360,68 @@ body color: #A8A8A8; } +#recnet_context_menu +{ + position: absolute; + margin: 0px; + padding: 0px; + border: 0px; + min-width: 100px; + top: 800px; + border: 1px solid #C5C5C5; + border-radius: 6px; + background-color: #fff; +} + +.CT_Item +{ + line-height:30px; + padding: 0px 10px; + display: flex; + flex-direction: row; + align-content: center; + align-items: center; +} + +.CT_Item:hover +{ + background-color: #E9E9E9; + cursor: pointer; +} + + +.CT_Icon +{ + margin-right: 6px; + width: 16px; + height: 16px; +} + +.CT_Delete +{ + background: url("../img/delete.png"); + background-repeat: no-repeat; + background-size: contain; +} + +.CT_Explore +{ + background: url("../img/folder.png"); + background-repeat: no-repeat; + background-size: contain; +} + + +.CT_Seperate +{ + border-bottom:1px solid #C5C5C5; +} + +.CT_Text +{ + +} + /*--------Mall------*/ #MallBoard { @@ -363,4 +454,59 @@ body width: 100%; height: 95%; border: 1px solid #D9D9D9; -} \ No newline at end of file +} + + +/*---------Wiki----------*/ +#WikiGuideBigBoard +{ + display:none; +} + + +#WikiGuideBoard +{ + display: flex; + flex-wrap: wrap; + align-content: flex-start; + overflow-y: auto; + padding: 50px; +} + +.GuideBlock +{ + width: 320px; + margin: 0px; + margin: 0px 12px 30px 12px; + cursor: pointer; +} + +.UG_IMG +{ + width: 320px; + height: 200px; +} + +.UG_IMG img +{ + width: 320px; + height: 200px; +} + +.UG_TITLE +{ + font-size: 16px; + line-height: 20px; + width: 320px; + margin-top: 6px; +} + +.UG_DESC +{ + width: 320px; + line-height: 18px; + color: #C4C4C4; + font-size: 14px; +} + + diff --git a/resources/web/homepage/img/delete.png b/resources/web/homepage/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3f857a1a2889479cd60d427268048f55c992e564 GIT binary patch literal 4023 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 literal 0 HcmV?d00001 diff --git a/resources/web/homepage/img/folder.png b/resources/web/homepage/img/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5b3453206742a6e04c0311a2ec01536c1f9dee GIT binary patch literal 2721 zcmd^BYdDnM8XnU-V-UtE67^!3k4ciDq%uQtrZPXIiX1`=uarp`B8F6iqH$;@ z(nQoprZP@xzNVZ)>^}1$Z6Sx*?|1Eg``7-l|Lq@Zt!rJ^eLeSD>$&geS&YMO_VTit zvIqo1-qGRUQF!J5Juql^uJNqBgFwiJI36TZF8Tgd;(R0DZc}oP`|f*<`zYzg#{El4 za&qc>Su!p}ZXa;GXbEc1B$!9k&6x8pmcGs^>N-1MamehZ3xqS{y=Ta2qyAaFL{bT< zf1XoW9Hw^8KCtp}HLquFnvzJ5w3V*zrgz7#XG|TARC1egDRCsOk#Lf^%Vp}=?{79qL&PY4i+Ahkpim9`|?^ap0ji(uh5MQuL)8r*}Gab5IJY8PuCEBb8wCkYK25l8jO9F!UB z-uih^G`?WhQ^ro#6U2y)P#qVjDtJtAcD-H&Vau~nMce$9ho0mZ9@IGDOPO949QY7l zxvn|-H|psrbg2Z;}p_>wBzrn zIA03~>qnRJE?lAb+72XQAWG5`isu1{@-fOu0lvT&wuYAuoZ0$sd0K7=@+&V>jtvrx zvW&gSAKjF5F&z8d+T>9vV?@b66IpP@romi{q%ZICZlzZNo zEYJ?WT5R3@I5$d%Uw6)+&FWU zxdLy=$0Db;WH4AUV{k^;I>|9=c+>TxzrwTmajCcG{s?9Tu#5p6Hqv664<(jT@FjRsvo;O8I$5ja$}hu7MxaP6up8 zr7UB_Jm-lyykw=WGmFusb@x0qJG{STBZ1nqAu*r7`CW-tB2gK+j4fm-v2Lp_N1O;0 z_r8f+fX~?e$(#$-lfhV|FLP~Ws@v!-wB%fsam_MdBIz)5$-~|)WT8SNTIL)uK95TV<9?>GcflosMTCg| z`#rM(3_c-F!tZ+mGP48h%0cxt{1SqjNkh?C6`=FrqQ}*(QLW`agl$H3prv=!@9s9pe+X`s1TDsQBxyGs zXO@73^U9lJ3VstlwVh>LK0?wKuGIIgDg~ATQ><*z$uB|6!iu~q|Er;Hp%8jC)6{-6 z`I8M_41C|nK1I`Bb_uLY=)EvF#O8_&m=)mGZ*2>@sf*p~p+P^~>l9iE^9>37WGyN$ z=GQ*1TKUFi%IOjW z?j*%Tlt{)uv9Iab?@)!k(nJ)%J6|&lhDlrX<<|=7&;?O7g#xyFUL3xn|n3iH*J#D0+y!jR6uINFPCa$ngL6*<4LX!5d)^9kNI!1MUbzD z>ZgUkZBV|teLGx?Ro^?w_JPTuCWYa(Q3^1u%vUWVBgn*u%3KY&d$|w{52nH;`>;OE z6fOpZ)T8NWDWLD3Q{VJ?+?$eg zVsXeh+lemW6k6U$BT)eZy!DyJ%W4~-}T%ODFx{C8l^B8`vt$7qZSOq* zR)ao#`M%q~N9&@cfn4NR?brem=PrgHDmy`_U!~UEJ4> zS7y<5Jl?yTKb6eYQ4Y%~2KXbyj=H|j2Ub{(U+@De ztgw8yoL~a15;d`S0ERv8H=IA4hJc9tA4OIFHF*;Hp-us6LiBtX{(2%D?c5I5+W0~L E0u>;!g8%>k literal 0 HcmV?d00001 diff --git a/resources/web/homepage/img/wiki.png b/resources/web/homepage/img/wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a19f46981d102c6139f941c8e2470992745bb0 GIT binary patch literal 471159 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

uDF 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%0AY>R6 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%0D7G+k8$=B)V6y+=}TPl!<)h*=} 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�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%0A8#n39bnam?dV?T-j#oHre#=G1 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

YiX>0foP`3(307r-TIZB@V(Y3wwL}cV-#(=f66w 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
q(9TA5lYfb0v0?yzKXtzt|9&W0x&K)o>{#?1D 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

pkT?;snYy0E$8AyKVJH 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
`LEuJ@{VuK2B`WxD+NO0dgiJmiXIk3ac2Zo|I0+ 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�xLyv)G9q%#LaqAK#eIdL=+|l^u+a;UWUG4dwjCL*gWrRl_9aSu0>1z6zjWJ9t$g6iTqscRD_ z%kjlH+>8+aptT#N3_~Y8kZ@07$B``_lBB~Caz=EZg2c-`lpSZzfx3SEE$nDg4)vYv z$i0JeWkiW^YIhXhcM8PQoCGB~9F`<_DDxpwyKUI6MiwD7OMG?x7O%=k6K(L*c3A7X_c=3r500u);#Qk7Gr zze|&Zni!(;Nu^kLqDB%IGYCjQ?Fd*Sa3Iq3t<%d*bg4 zMyZMACjBjIo2>pg>mm0^f4+?)mtNC--u?Wpab*3h-RFE}sY{Em)3u_hZl3HXRP~BX zu+Ta8M(Xn>Z>Hw>R4WsF)}T3gHiM`F2`Q068%F+IHIe+w21x``UL(Z!yTT*i?VgCv9rh;vsu(2`wd)VJqHhimQW( z(cs#966n*wrp9h}loK=d12H8RAOv@&dNbm-_E5T^kjY%PGie-_BktM_2R^E-a#Z(u zE~riZYqE*L{Hc-^P&~^;0#=K#qG8!cTdDWgTP9Jlq|KRXhnn&X8i}Oj_t_s}+ikPi zQEm{TF+{S!Xx7VQo2zLN+8D39?>#9L3v6O+ugUENk4B>jH-> zISndv0J)#|3~YDj=TDxrO`9vTFWQ6hdP%9|u`R3r$`u~MXXEktPk#L0{!jn%|LfEt z;v*HaR*?%kr+Va{XyQF2)ercC-;k^$v!mD`nH@={2kaPOF}{bLfJ>OiZh~+|HT3MW zW@N;iBYD;%C1Qg?!G0<5k+gUQuCt1I4%vlW<_4E9Bz?|#)>7M=BB+YKW8AK7+qa%Q z(~s=<$c|r-9m#Z2zQ}f?S(xBg$d0N}r9MZ!6PZz_?3itk*)oxHZfecNSv`^xB$tdO zNd}oskHuk)&$9rDF5SV)F@+sH8EH6av7^$qoZ}L|iW3fWU#D?4PJDkdj-P?5LFFI8Tq{^%O2sKCk4}@K0`0KNX*~O%rtTCvxTVB&I{F zBdI9_3Af0C5ghl%o>_Blz>ynmYuWkON1#>iC_97VY7rS6!PL9fj~nC9HthznX-!pc zMwDnJoy&PUcnZQbo%UU;4>r7T-K(*?ak;~DwGwDOLa8UQRBu2Uq85&NR1L?6p`M?GgpLy*bi17)hArQ;0W zA+Z*U*11Qki=r@tOf&{9HC8S$6AYr-?z4j_wC~1oCdSHrP%hy z3Ht0W#@|sEk8CRyw8GMYf(iq|Rb!uMaGN3uCT9K0k^syD_#P>NwL%Vxx6usPmtw!5?4erGt;l9JV4n;jK-9zOHk_~FyP`XBzg-N)}lc02?%aA-mw zY!@FH2!o5=5!uoU>GE~aIE9#`kt!myD>?bH zdBBxSTTz{#`g1-qk~<-1hun0(N4 zcC_l3lO0b=`n~Cw_BrG+2MDU1D?mCUIVyLpJyca~sIFV1@_k8_ud^Oo{G^S*>HXf? zbKQU)4XOoiHVrwr^=1qk=Ub;*2OnieVu7vq)`1}W)A|890omoUGiKl6|72^0;Fc0n1pD zbU&`hHe`9FPn_zIavce+Vf7i6{Lv~oaCEBsmmqm&cVx{VWR0Bd_mRE0-ibKAp*j!O zGkb)!R6#_*pGp?QRHq72iIL^V?r14{PfPGjI;*7o|1fss8U&mLh*WbFl4fzy3$Rd)*-35jqMH7LV{s zM|RYNc99)>q{Rd&UEPnNlZ0#dnk9h-IW%GD6}z61rVVyPS;7GVJqa1dB zCvis-<^?4p8d>1dQ&FN-cFZeM?-M(Uk{8st=IqFg{?^k+yW^L@j`PE({&&)>3qe<> zuiH=V))}Zew>QC#v+7>2$Bv5i9lm^aOym?xzvIQIWaQQ0#NF<H|d*Z z$NKfnWXEvJ55H1&tj{wa&5_DGELP-bR_hi`oS_d{-=5+F7ufNnh3T#Z5F~UTRcMvn zHD%uO{xNhKE0}dXv ze`Us(YW#dWUd2g^yRP`4EiH-=syGBsUOPomkKUzHHc6>UXG!X;YNS#$u+U_MkD<)o zIhUyPhdbFZt2WxC;ir_;3(!(kC}ee5soY~_RMEGxqe{_@@mENQbp>*XTA;$iDePUG z^WjoJEg8(prcsTpYev^uRw-M##GFj+j)ff~mLcc5+1A?_&dZh}Qh6vd+`_D<%|~Hx zF_ayZO{U^dq8lr4Oz!DPRv(X=)yN}1)S?PWqYVjCZnk^dSZ!@i={p>bhr`YF@h}cU zlB0pyPL*NJOKHRDQ!`^nm2$(Wb1bmq0Dj$HK7Bh<>ugQ)W_8WWchtE|1 z8-MzTfAmlP@~TmiOlMJ`e3*#=3$jzjO=K#}ZR z=Ng4&T;HkevnF;NQP>*VKQnfOgeYnuX2T@aA%xu42q7<|rOnw3X9Fag9wj%f zV#i3Lk3MT|vWK0|D&I^!Sr59FwKKR+S+3hkPby}x!t%oKhxe`NJANTg(F6?LFw<=%Vn%4IcEBnR$q)qO= zt~dCq9+y6vpB}S_sj4EOy7Y-seVzHCB&DW=rC|f__z{TjTkZd5;d z@BOECd){ngSG-a%X0+WH!SOqMLtZZRF{)me7qV=z^SNUn>6l>lv^dkLAERzD zPEN1amWj?wr32Oj&+M41Qt>nb4JPfAds+*wiR?F5k|v)uLJ~Q@!~lS(-n%8eMz-3L zup;bvUXcPc{0y4PH#256*)Eu5viRI=b-jfbB`zfwchb6zFRIjHC~JmLu)zo=PF~C6 zUn=DrN$z%v4m6@+-m=}1Eu$rMPff%he6kgsq|3;;Wet!YFg;KW&a7=jWx?X_#glK_L=^-5&z$c|r-9cyq@6+6yO z>y5KxKA%N)6h)p}*^#XUyr{BCNKB=fUS6K3d@G8KDWJ+t6MSV9V-Jqes2|9B$eL}9 zfvWuZY@{^V#6sJL#1?YjeO)=m=9?n%ZBm4$XmPz6b}W`izVDCh_{LuOUe`~}(y2-I zZuUpps+#U#Ziie|5mmQ$pWH%7vcZN$f*FPrvhyFY8UyA7hv;?BCG*)dOhlN@>aM;ZqtYDJ00f-+zPx(%;`0}ge@KM~W=QW!m^FK5l7x_YZFXcaaXx=- z30==FZM#KS(O90WJK2%)ju+Sw*7Qb?)*QpApI-jszy5FD`tkcevru_dN6HuLf{E-1 z`yvZ9Mt&3`By}ECF3;>pA&&!m&1`*S7DV78;4u(8`tiu};3#8F-fDQUJ>^+Ta*T#? z5s{IDc7vivnSvniU`KjJTrMiZc2-^9i+LWh~)&a6fhotKU56 zdRN%-)Mq`5K%cQ=sLrRJ$#piW-LE~T=Ui=nZ+0}b-X4@wJX;5Igi~^m(Eub5Ql*9% z*!aSc)N%^iNECk_Vsc$UR@-3-61F=g2efAYRG3&~b*NOMX?83Mwcan*ORSS%Cf<|# zv7^fGC)-SYtZK@Rbxy0C+vyFf*->(F9`?FFI|hC7aE061@q{DI-D{OM`>M6C*Vs|y zogGsPTf#_ZkqJg3C<1o_7jUe(KB&)!{-tuCgyEGMJL>QfYcCpsoG4@1Kg)JUZ>2n@ zFFn>we9+lLsmmitO_%+HCM0=CrDi_v(weriGEUf$xsbQP*x=K8l2!4Uv8s4S+D*>0 zPUuMNs3m-m@DU3-e&l-;452fpLIA9`NSEU&05ougKwn8KkSkdveVFqao$ZTRZHS@< zs~$Yf{%N>1jIo=|cDLK_cDshsVj?Wiww7(iq76yOOtfA#sbUTLTPQP}HGQ;2atT}P zsi6 ziP-)`Gf0)ytd%aKgdI@@v4NnYZT6e}87J1{LJ3AMtYM~)XR$l#>WPc3)LS1K>y&yG z{NMX0fAMR7@_Sbo>N@VTC!z2G5^JhMeQ8RzA32Ouv9e@%-#eKeFRDlpRYhr2dN7F~9!>WXH-*Ly5{-6p{0Jrr4k~mvBM@c`jUh6ftX; z5G7glDvnANMK@it8%}oS(zpuLrTCnmu3N5O&Neo@!})2uXTZ>I7=3b4W2+cyH1tH9O{b<#J8> zw$aQ7sh!xQL32#k^}C|jcq)ne9%ar~q|zVQB2 zGh78fRGQvYPJ7Od18G-5U61><6t56D9+eJIKO;h5@`z=HLD5g;_AJGPwF+gEiGosQ zN6JQLA{Uje;=krrHLRc%O!i{4&w9#^HWj(f?1+RN0}E?M0N^FNE_rVgb3k}2o+arf zhRPG2kjRRdj+#`j$yx`ZBA#z@rGb#yG5)-1w)_3={QQFJJ438NHa7WiVymO7gQ9&% z+1ywRr%$wLL`6IYHHIA8m{cCAvBmDFOh!6(G%M1K=|^|yyRJJ>J~b8U9tWSZ$SX@; zW5hGAN>*iI))_mhGOCxB^m(0Av9(xRaa|zm&F+E(^*4wvfS#pPxUMI;JK2%WJoS04 z2J7RxC?4X5Xo?xnCb0U~*#kuB4OzJqUi06Qut>Ksnar}k6V966cE?qKCm|KoK|aAp5>-4|P_f@2s>L$Ib)7)2(-q#w(1`au8@;vscQ zri2;tR|lQPamFYuq7Njo71FH5%8p|YsYRX_T``TA+GsRu!==23`rj)Jw?YYFW&2vM z=RW-;tQ8Jgdw$ob<-r`ey!{#X>w1-mrc(O8HXW z26t&5uSEAJrFP-Ha%FB?(;P{8U~nHd5a@X_x+mTEt52VOpquaR&Mt%AxDgSPsfLOy z%#7|SK{!r%FT3v3es~eaD-#Y%^~qKN4dPrw1-#F~>{QLUw`zCleYeg^jY>!j_U?YNZ=SJqz0-NZ_k2J7!gk`vW^ zf%*X)&=vtIM>o)Aing}&Gs<@kUg|5-x0IA&ORlukGc+7?sPoCQQLXr7gQ*56!`Ur- zgOFmEKoidErae24|9955ThBSNaG#JO4^w6el7WhRvV+p+hO6E~yNNv4%#m5sQAtdW zm>5G@mrA`EDPg14NMbRO8LtmFFf?|@K(;S3hy{y)%*4c%x<&PDvajEUY0i*NxjU7+ zrWiXl`Q`a?bb7|~*kDjh=8TfN8~jJcg7R!|{YHAZrEw!rIH32_ag&}R~N1g4C<3Luxk)|q%cQg?|srC%p9cS!_aAnMUE>|cpVZx4lJL$f7S>=&_ zxY%6j!HK8y%URF*+rW-%cA!Ugx{})AHe-W4*JH`%KCMM(B%eFm0w+p` z6+4m{#xXTI!pCAz(aKF=XZhkE+41)Cob2Ws&W@^jR2Rnz1|5~NC8+OlH*O(kqKyc& z5K~%PZ0)Qtbr(CTl>Vg^YNHP=riTmXo(%4NrQb379o@dS+rM{txi?U?*8R8%riB3x zd+(L+LO6K;+41n1bJr>ybm%Eejl>5aOEN$bA2ENK9VN(*?U5q)<8z*M{ftzVGbjFQ z`POr$nlD)ze#r!0jsI-NRVkC2Kanh%q~V(TN&bYsy@MU4P)gIlv#-Me)>S_mB}vV} zO!}}B{>!-;#)U3?Qr z{n2r}Bi^v+BRQ;5lbXUABRKm0klB%i9&2`tF9b$auGt83Axr}eO=IeD$Kqx_w9$h90AX2;X%c|GPqrhfj%%E{gR zY~Id}{?>EW;e;Je+jF9M{#Cqci{nxrQoU)d72-^08UjR=YfG6lFx_xsjRdfVe5E7^ zQ>>D@3MP~OtVo%~K*#Drg}rwd-fh(wXS*|FF533(-T8OUpS;_iU-U{J2Lxt8+EK;1 z>*ucj+vD}ippM9WF+Ld)0i%$#13UI13_&qFda8HFac>;_$Eu86K)If$vj%v`IWgkg zEIF+?pNzJta?94n9~pRxB9)~TqOHCSRfdWbjZ~5=qf$L<(dZ$@Qv`qUGUIp7n8Ogc z08Q+y_Yz$#@y)fKj+iQ$fr`L&s+Vnw29Qol;}g4M0!Mytl&}t2F-b8r`EdCbH*I@) zad~lZX>H@As+BRxzR2Sk)eM}FBA;QdwVm^0=pNWyF0~5T6jwEJh~0QR9O0ktI|MWy zpt%!~wt*r~VO$|URak9OsjJce=0Vw4UTjtr3S1tE-%B1+$r)#M%nZs==}<4)?%~I0 z_kCs2Oqkwy3V~J0Jw1D|!)or%*4{$F0NamNUA5+CTK)Q;|LITuvp>FR#SRZsyf9*f z!bpJle>@}u1jKbD%K>En^=j_NWzz@hcy7rMB)fZsL88CfI z*io1F`gU+si|lx^|NFca*-@ogL8ZZ6<;)mW;-x6}k$gtAkD^3v)_+R`ryOgU9kB^( z?)0K(fzs75Vuo4_?-!IE)wG{{3GBE&fV>%YG;4O#Uov)7`Jo|pw9ruI?j5+Ea%03E z$weWO9%QMLK?Z{bc8rr}>s_3F&#c-6w+*A!uEEeBHd>!4^VHjS%SG3_P} zbW?8v_9_!oA^p~IZPZtKjBgLlIS^?bxT z`jjgJd*tYPkYazJT7^fXRF7R?ZScWqGB@g)9l@F%-J2n9S?9`xQ+8B5LgoNR#}7gf z$(}JsI`VMDnn`i)!;;{U9i=Yn$>$RhjOu+o?wiRr_iwk`*m25L_fYj&+0Po%g?k;h zy57mNU33k^M|>}LG!xi;TW3MX=Y$=-E=s>SRw+*dJW=r*ZP?-g~1m0<~7~ zLVH$v5bPVmldiEu>;sAUi@csh;e?5U<6)XL(*r+n`x8E!joq`CIr0ByakZ5L+{0)6 z@Ko!Swkl^nW#TovV>!c+R?zcp)SF?)hw6&ohaD%{L!mrtCF!0sIdl^7qaetJbmL74 z$w(Ws?mcBq&Su1B411?HL2Wm7YvW8FC!vAW0$|tl!FqM!)Q8Ra2krTXyC)azc2wcB z?&ja#eD=Z}#wHR=!-C4NuaI~i88>wA-67(m$3x*Lx{=Gnge1+FYZ9iZ(x6wq)EVTAB!Yr}rEksgj|Qu@u(kyvn6I zF8kf?$&)9MoK%u-!1ko{#i=mtvqpu2{!Q;V74Dl1~#-{9bYoj@Df7cIusX{^Y;< zFD}0S{ALT4M?4ZJ;xteJYOtf~!G)0*HCY+SLrv_6ibMFE?T%2sLTkpg36+Ey4!-ZT zgY{8I5OlqlYBV9@C9$Kc3duy=Bn2PX9S34ZC-IJfOOlSN_^cf#R;wJ-!co_>K2pU7 zDf6k-;nD7x_W#I^3&*Xl_ZO8N=^Q8;o&8EFz%i>c%JyV<_hO`|=80X63y z-Ke%&pS5jkbweUEEHjnmpIWD$IC~lFg)>jjE>zoGyS}%6fLRT;5R}G-=`sGGag;_K zchPxw6Q?|q@*#zA&k4NQWGHo&wA2e`*&S8c=|j5q)NUm{GP7f?m+7)%B)w{VK7v!R zAg-}v?&i6!z0812bt&F4K#hl$4w3x>ucOwSIZmObp2q}YO~V@3bhAW%C*hs2qptiU z6o+6kUve=5)ZI2ZD=(^|hC?T4C_|&Fp&~lriOCox8*48wFV8P78ru>LaBj7Ddz}`a zHJgp=7{^jih;rxYMDVM~KTxmKwj156>#LV9UtZnZC<$Y&o;@0tBOtm-d6?4wZ)eBa zoBRdY5fyjZ9jZ0jmdw7lv17besv`6Nc8qWT=sSgJ1#aIGjwWq!((NfMUGscR@jkq0!)@6Od2PT z?0EmzBRkTT6+2GOzxs%T`|u_cq@~%hs<(-X)j55#?AC?&`PSITj=MO&2G^hv9S1Lh z)hzjW8&<2*##`NoA%1wi-JI#L^(byZc@u`p)*xIA+xXD=@p|lg62s4)&@88)Wl)u* zznHSdOS<2Adu}vW&E<7v@Vo*0xQn#-Yyi#w;;~Cj+Mi@Et1<1A9Sv2}F`PLEAsgmJ zE|W8m!XG!1R6rq!l={&p?8s4#O>K9i_mT)DdgDeP<^;C5&`>d54M58A%BGrI_p^>s@9J{SuKMnx%f!Ps@lK7Jm%Hb#* zL+nTv$M|2*dDGqvC{6=pbV!AvH(soacd}#7t@fhnDD3Fe3OknJ2%hyvc2q@K_mLfc zk=b!_Wsee z5T=W>(}gnU+FY8@YPH!k)|(d9hOH-!mN;L<$KlHLo#zY)K^G94m#HJlQ*U#c# zs(cza-^EjfoA_I&B?2;b8Lv1102KsLc8KT`mGhvs(;W_nm)BQ^?${CM)cx7X+Pvh% zDB;x7^XsQ3vtyXv%@cNEvblDu!p_|cPRDzl@PtftLwzuRDaWU^s(G_;v%oe@7Z z3erNGcWABl4`)YBB2;moy>I&6{s+JFd*A)t-`xG3XU7Hti?I8TY>FQu9crpD76u>b z&`@j#844jAe#(vrf*gB@_w=1&b{r)ehC?AWAtRNI39x9^?1;KDU13Mk2A{E`;Xp?1 z@5zoTxvQ) zRo&}Usd(CE_uv0A>&U*!NR(#Z5+D__Bg|7CPnc$c*V!;iYz%zn<+zerSw(}@_jghe zt}0r{b6%XKp!{l8uT#!-kYH_`s=vEG+^41V1EKr&T12P0GOHX`$F1LfrVr2tzfZ1A zeKE^@(8>yJ@V?NTIhapZ<@=-kdC0G$rcGT?7~Jw z64E=2A6qV+;>7pF*1I@?#?AILukHd$U^6=gj(Mbicnh_i!KzosLq86bSc(A3xbb$^ z?)Uq1W1l;_8`Z|cC>7_&S8DiN4@WmfywVgr$4M|DX&UgND_8Av2@RPGg)Qo0)?5pe z>*a*B7Ngdp4#E{&N`*C7Ef+*A^Q61$Dt2XB&#>xRgmR2=5tMq8x`AVpgm@^}(Wi>f zK6lGf)h6XlXK`8VKOpfKh@VPPOKvq}y{#cub1I}*#$X++1B>#rHSI zexxNkA|_S2Uy>lm22q{vPDl&;>Zz}`%+Ert#Z%S*^0_jp4NZz2GO1Xig19Cbfa6Ac zM=2e|^v8&7?Z&p7^YioANm0|!`Ll})yWJg~`~3PMp1=Kkx6wcSzyGhB zpMTnR!;V%JE{jKnLc^1s|I(LWbVTuWT(udGYTTZ^{cFGe@BH!aJ^zglU&NJ62YLAb z)1wD+_d{IVG@!{b^iHFmbzw)OvJ7JwQNU2eZ-IP$AboGLJ0i>x=`U<|L<+Xp9RmeE zdPnL!_z=G$JLPEb9!YB&MbxPy@_PCNxHYagnj)jUI`#T8|RRVwamcZ8Mv+suw> zdGpAQx4phbb}TuD2;cW5(UOCoyo5K`D`1o28r4_9j-*SH*s=F)cTDI1$c~Fwf7k1g z9n*g5>s@6>m3lHEfK)Gx&t_|FYn#>}&Wj6m>e10W$1_D7{ZYgHeA8}>-Nb)-u}z8> z80jx+pp1|sRR|)vRr*ig3bDVG~H!7*MM zsoZETlZa%IKn6&vW0KHT^xM^4?ASCVFi{MQq?n!AabkBg;%VguP-JV&`82i9T5Rej z-s+Kc-6_H^ez}RD|Mv6e+wC?EqvPmUgEL;57~vS{fQ$`gmTX>KU;X^&pMUo0r`N}B zh|m-1gev0Xkf9v6%1;CVqRDqH`K$}|=4U6fW3m^{*)e5OFSDbS#X0hOYIfX0wVW=b zF=4ZT`n`?Mz}A|r-E1Qo>$ZvD`0U;H-u~b{bM|ES*2j9cN0k{p{Gb2(|Muy>`8V5} zZXbVw4&_eIbA=sYa*u5pD2v}8)lqGq{`l8^@Q1&9`FDRXo@=t(A=ZJkx*f6Oh)z!l zF{UR4N3f$Oc7!B2)hYx#BA~tpKcalaKtAZij)aD&e63K%8a``ioiDN@<>0{0eG5A# z|MeO>sybSlZIk-jZFl^3vg1Qpq`qHYHaqf6F!6>+nx2sYsbzIUIj8AoK9qr=;KzsM(niAMRcQCB4+ukRPdKYJX_^JhJ2b>b^bf znD*couR1A7%TsBRBb&Q%(*Pg0kq5Me#J39@xT`{1MEQ-?``sqao(<-nk-zfEs59y? z7!c&EBSfCb6*xNs-za_FG?#jF8Rut;!t2K2;Ktr{p2f;Va{vcqHOD}?8a}WW%=j$X zm~{Jn(nb|o5KW3IEa4wSZRfOa(C`qlhN5VXt5a=PuKHM7JKu^_a;*y8LpURVMoqoiJa7$##Dt>q<#;jB~x(Wq+YZ5b`vk=_c@*t z&1>7-qfD|pqBtVaB`X@nk0KGi_3U|k#e)qf4v0uRWgE6Tn%Ge`oA^VJj2l0HdG*sz ze)h>HpZ5KLyy`~E*f`>NFLANDN-)pmD>DW1&1JfsJUd0d^FHjTQx6wC9#MBk?*bhP zJH}3H{oYf6E_!T#j0Cy6yx3nnSN7TScRqUe;}6>X{;l`l@urEm+*46N)L7TvMnHS< z^Z(;t|F4_t<7ES3Mx*@w+0k&Nche&R;AmcrcK5>{e)Ri4+5h&#aFkpbq?*yMz>aWULnG^f z>=;yGN7e-^>`37lyqpWEZ$q;jm98Gy@lJM}?e1I4j#`QS8Sk*@JFaYh&)19{RT6ST zhGyV#M6+2Uq;% zj+6aN*-@zpJ|b13X?k0TWLm%$t<`6{ZREd-9gP%>CU)$#KDyzi??%ps zo(wfojsb`lihJrUAJaOe!qCj zCr#~7lq`KUQl_3i8MAay^{psMu2h5D1xfcAIh$KgijI)E1~)ghDKRU_IFvM(!j3vK zVuUp->{vOb5u(b$g*g{nf**0y6g#-t<|pYXwa?eKIX*Qh``~O-=Cx>9w$1kG<&$U6 zpP6QZTxnYUVolMscGIE`&^X-O+Jay^RhW{Dq>B&3qeDwYAK7aqa=TAOT&E9O_5J zM|NJ5DtJ#C;GG)a<3_d);Uh_b47ai)+Z0(a+TYHOajl`hJ?wZ&jr_7J;xub{zV*02 ziIrJRT6rKVtjvoO?TLE(FPR;6ZFj6}jfuwQ`{(;xGs^8*1yxHpiy*YL)hL(q4_Cwk6^m?@^hcZ)d0NWJv z>JH_wBP3{p>=vzdwx#HPwXt^FHk$@162y+4`#CF2vDo$X*dInjT5)fm1R|%hX3`FE zYH@z2%|*LCZyJjU%28(SK=CG;a&_fC`e_19$d7i`N94qC&X%o8=A5+E(&|Fy!jhfC zui65cD+2KIU41Uu!JgKHh+qbbAl?ygcoH>9Dk#V>WUaWFRjOgAQ|gPjs*7uyLQ$=q z={^!Z+FDPWWP7ZjBsMmpcW5{kppJc{ceW(xD2jKCm})2+2E?wh_g%Yx^5n_>;+!hV zXikk+NS84;-SOqC>latAUc7jP_yiYN4xPy_-4~MzMsqKe8s*H0e#(w=FQkTHxix8N zo%M#wP0TTl{8g=U&h}IaCr$o*YbY2u972d|n|NiLvk!L{&(EGb)!Wu=Ht&A?ou}`- zeKokv*<~clxG@{i9f<~z$vhr-^k!^AcWG5*$N!(b_k5BhInO*@g-BUd-CZq4^ymQy zMQ{n~TX4^4XZzvy)BUYywjXZI*0@~k0$d(=Ai2O2AfeUFV7j}yDn&%NIDg;Q-NPeA zRn~MjMxc_zMpag1WQ2$CU%cXZ*yHm`w<94%Z}HH_9g}!xdLK8*7C1o>JDPK2%jt*Z z=+!^{TKVpS&;9A|`4hQq!K=cb`+(yb(a@iwT?+-X4T$LjJH|#CBtpYMIoyLF_R9Fb z8f!Yx2B)|qN0-8&4Q|6n;K>OMtl>`-cf`gT0a}kJ(hp^vp88PS(Pr!zFFBTaW#SR0 z7=P3T?@Oz-Hg)m4dJLWUh4LioM`Yo|zsGt|bj)sIGLfj%7+vK0Yvd|-YPV7ia z_I30Jv!lO-bvQraj@+>0?+QEaSpNZQc%kgb;x$X}V-pO6xFbL$8x^t=kZT!LRb8Sv zOb7bLYRHZqG!*m4=T95T;qi?=_gHi6D3u9Szs7*6H3T5JoXHBLe_%4vByAH7(Sps5 z9yVX+z8$EU5d0X~F#4De(LNt@i`sSln(=2xh0$qj!%^seqe+ntuHQ)V$k7PUph+3) zs#DWXbUVaT*K8+$ z#dzk6UF=9d52AE9=ps}s2p;XrT@GG}9ebPEP~*r_+>tJ{q>TVce5auGyKDW8_ueZH zs`<2%I*LB#(!J< z;+JZ<9z(@r(lg&=$NYUd36ULPJ>b3cv@7O!erfpe7e0UbNAEuP!kg1^4f6FZoHoRc zpbC!lju2UFz=8=FF~uDLE(1GaF56=trlrA+26NV-SH|;Oi*d)mj{Ygl|4Knh3_W%Z zJPG}YOlC7666r_}(vn4}zLFhrKX9u7I%!oX@IquFgUbk=Q)6b5(&xd{9gTqwyHalLOJ^yU5<6!yx zeM&`UF3db*$M7b%>3ukLEeq{3%$A&0g{p*_jH+=_fjXUMM{No!7Q_AWPi`OwC;4wK z&iq`f1xxMHY4nI4x#0zNj4euk{(~Euu%_1Rh>3e@H1-!=Al!WjjBrv(90)Pm zV2qY(AJc7wXAL@+gJYK0wpjE+Jj&=WZ6B%pC{R_5!R5)J9(>~%=0gRe;u)P(VnPWv z%$1})jygUFIrOxdv7=;;m{DOI5oi*m7FqB(l%xs{{}-fr9HTZDkbB2OxR9jjO>sw# z2SP+y9KW8Fw-K@45${pxE-1-k(0?_$C3`%b9Ut8~z2m>+?Be|K#p3*8`S{|Z)g2sM zRf7I`Y%@+U9beL7KrZkic{5_v(`Eq@!}{!b>hHmVBax18Y-8S(4~vW_wquZ}P%i4x z?EMc{liBUrom->%teB2?sYL0|!BVIrrbd1Y{9*F{9i85)$76pctE!}J(0C|2XpKgm z#@mDO?8v&>v>*QPN5A;T|5>b7(wKtryyJ(q!R=v336lZE9a(p7s-x4Ntu%Y}!E68S z504(+eeJdTek9gwPzVRx9V}AxR}J)8dq8Z!S_V3sI$%fau+|Vw#CpfTln~T~IuL8t z$c`;(gR>6Ukwtby9>r|6>F_ZP<|WULpv9zvz&J_yXndN()^JSQi)dPndOiK!!}aVK zuh1BnZ@ap_VaH*;<38Wyo$R=AqrYLt_@}Gck!4Yn&{K(hmsnq)w0L?M@O>l8-41rd z%|Lffkxe#X9(DX+c7&U_=;hxigb>&<3W;I6rEZvAGUo9Sn-<{_T*UFbVaFSG+_9N2 zk{ww*pYuDFBFaG>W02-i>S!|d>{tn|I;%RZv@2+j9B-ZRr?gYTvtuWE{q218Fbo4T zi=Vgs1hp*K3d;ClLQ4HCxOB|&L4((V0hC{30In+=gM zyRx?GO5LEEC9-4Um9*I4C?tH*Pz46ah$(vjM~%|o>De`~V=Puk>?lb?TjGdhIco|X zQbHS3z`%|&2L(X!w@`F2`O|)f?&(0Q23o8UubV((r@Q4A7&y!hse!XLETI^y+m*S2Y zJ5mlo5Ics&l9v0Hkz+JkBopn(um1d$Md2TE;6IOv)A{Y!L_HhLr^To~TV7arD)Ns- zcnUK~fLPD!JNNHblaaQTDotrjjIh{^jblZ6?}(bEZQ2h%{J}T>RxOu)Mbf3fTYrsT z#g0%=XqKj$9KY8xbMN$}Kl{V!tEX>%{?(?lFm*t+A+V$AKvms#*0sjZ84!R(NpFfc zTI|2(K$*mja5S*b8dwkw27w*9#+)^>qYF7}$b%a!t2ERugY1Zp0?3*U1S5l{4|Eg6 ztBhxD)LE}g(01SvF;VL=u%p)1XFg}W_g8P!m zEp~Np9B%Rf$8?9I4A0`(v5>C+>yRDO?JGpwDWHWlO#Y5HD%3=(X;Dp!qIA6IoYbyD zA3TU}m~Q3g!M0gDOYE3^Mb3_N!&qisAmFICqV|X6tZG`%GE>^wG$(*IAqKq zJPBctn5`CBl?$F-Ha|kqvoK1H@9NJR+$XKeg(1oII^~+_9o(gOC$qeYq#qD8H*ORJdQ7~I1xCg%XXaW*Q3InAf_6Z`Tbu}JM ztMQ~NN2)3ptsCEcy@P59o}CsP>k1?WiG`@jhwr@A`5%=cgGa_fw>}*~ifH0cTLUpu zU3(mQ^yr_z^|xxZm8vy5n87$w9M$%buISFv?vlzaYt+@ zjqK>pUnuiJzVwS(&yLV%ZTJQ|Laz+QDY5Q(A3KH-!2N>IWI}w8k;X{%S?`s(VaHwL z^BmZbWiiODlE)qFnEB6&Jh+(j8eMFO+y+PX4D6V; zwb{{aAJc=^dBcvwal=b8+lFjO(h~P)wc>Kj`AEvra*vNwS=OAuMzp$H+O9ErVcNBg zVkP~z^n5^xJn9F<=C%-gvH~U|gYl!vFi(v~te80N2~rUs`8$BoIx|L#ULYa)DYEN2 z_l3t@>-`mlqszK)gNdh>?0a!ybTi~_&{-SO5)PY1U|Cqsqeg3>WEmUGksWz-sE>D# zI1YVYf<`s5Bg0-907}1QxwvDjcNCc2hQdY`>Ks$fntq0b;T=&FDt-|3ASvRA@|_$5 zxa6LqZ0ua7%r!BhjX7Ug02uoJZCky#xL7RL7t2N4b|~ejWL2sXssp3yc;B0X>=@I^ zAB7!bWH$2>4Av~<$K$|F8!*oAvXq{Y)+;#IBnWy}LX<+4Wj&qEkEch+RXz4^(oFGa z(TMq-4zu~GS&d?f9TulLsp{$E-fOQwZW@Cdq4T|WlM=*^5?QuG;nTvke6jHCs2@Kr z+NQ9UyQ|qTJwM=H1G_;FHC7BSsvEPGZxHhW=}aJA&qiN6ap;Bbm(rk3$07!PimH zpVH9m+U$sC<)3wpo$o|oU7_+JgHDAaM7;Ux?AaXZJ_o()4F$QPhA`b2MTmuYfN$( ziNXkQq^Q)g^!RA`$g!HMO32zni-#JEAr`cM(+XQsWKeEN6<1V)gN^kaRrBc{b_}{j9FLu02HR*fYu6KLJv*NL?B`>rt6uCW zJGJa?cI-8zu!4~4fIT~&eCf|0eDzD~Y5VH$y#%H3@KDmBEun=r6)bkNtwsmJz>ay` zk##*ga%fNK*^xs(wf1WRfpIVz1c-DLcf=qim=>DNxFhz;K&u)E!`q%68LFBmf5H@r z?0bk&oyWx)+QmmTe#4Gevf~B-T)~cXA9)_^xItk1*zvlr=gy97I9=shbotgA7cxg7 zH=SUy|75?jm%OfIM;7sMgB@AydU-DFi0@kx(P+6_GPcyrv!f1i$KBw_UOYPuytuMmRqQ=+sMlZsH% zVySc`vSZvyyr}7YoV`qT|H=IELOz;m?BW|J!3QwegUP+W9TlexwZm2y!Fr|?*h|eYc}@K?^cJp4NYdZNn#j;_Eo3NU4CRcnpz21f z*n{2?@+P1z8S0^lm6ed}_E@o4tw|>9+*fk?|JFl_WGi7pkmAli5*Kjr{ibe?2lf zSz4yF6}%|n*-|Ll3=9>gV;z+vg(Qner^IMBfAH!n;MX9KDdPbYp~60}Bb{3Qg>gq~ zmQPRW@}Ix`?ce<1`*Z)DR%iE!7#&BgsbP04#Z%+;p2;PyWL>}ZmAC%<&z`8&=l=NN znP)=lACel=b*#mEC^gD7z>Zk|3vSaP?$}bjqjOmG2&X6XS$h_213RMl4#Vn6uq)Jk z05Y*7)H`-SkOD}N%w`Na6WWmJ&e$<+cHU==^Lus~CU$f|GmC!~*)jX=Yu}3u;s@%7)W%{_2-XP5O=)j*qQ}7 zA)Gs}W=FA0Z+3J1`R>sf4oap`a!pMr$FIkZhrKTAt=V9&19H}vk?6jc*mFf*vt(dv zt(R3(&|BGf?%CRBVMl5}jydaoABXH{vriG<^!1L)&yEm!a;Osy?*P~d>E~^w6m)x{ zI-`c>O-=!oC|edRXVN%WV_Va-89S!*0t>PE@Gl0zjGxR$oKJW$XT_NF3fI&6ZxqOw zcq%yO2E9JEPf6qZp~jzwXjVQx>4AcFA!bV##u* zRo<^T?$qYkheywH=}rGZP!UIFqFlC< z1*Y}EBhgb4W;jtrh;eEtp->!1n>nyfUNxP63^-pb{c&`hNEI{MsDp-z;vPrKdOY?J z*%}Q!*)p#@4pBW5?oomqcc^2U?P5prvmUZzxFSSQUIT|7PqLnls_|4##$q(mqEI7X zN53t=+pGYKB3?i(1ZcGR!BSyNkdjjt4mw$)_l#%9#u`;u^V_#4$8%SzPK4ZjP$|k3 z$nnkqZCl@&UWJSl1ZDFLu$?@ND?_*>R_@47-#aostV{&O5fEI)9gPZ@Y&7 zh8=I%@#AAhY5nAkE_2RG#2$|LNP3FFz=;_u=2K3JbQeNJsttAo!wcKy?8stuND)p24+@W9EsAO7edfPT-ie^Wr0 zNy|CJWQ=XNg-T@*N`{$Q^N5d8hDK~rX&l=f?AT}eP-#a2L1Kp51&vsAAw*XnzR8ZX zcZiOX64peM0{Up6K-5DdM)X2|jK@qc*0TT}4VWZ54}YW4l)S3XJp(;?{Pg0Y(PVrh zlFB0;$*6Rph#kwiQe}xfCE4{tY7+Pk`Z4ZhM+!pc>G^3mW) zxKZzjaYyKtX)k3*?6bDSj+%1T5JU{@$j~1xg--io;<#Ts*%7bx8+N>5$3xgLY}=lk zb-yBHM^xm3024v%zUQUHiyJy#!$BEr+~!v87{lG{7~i68>jy9>^1Lv1^s|L$$F;Lh z8fdsqO6H#yc4Xp^Gxxf$O?J%pV(VlWu;UdPM%x*1w`ZI$WyizmZ3rm8J$BruH8waW zx7cwzmmTg-89UYm5(?VD=NT)Ip^4lkP*lA3FcXu;#EuU8Hb}q)=)qXejymSGLr!z= z&Ov3BXF>3}acrupxlqui1I73T${jgXC~C}oT6*wvaTv)&jt#3*f;LTz`nc3(jXMR_ zEb;z>)`H;B4T@UEcy=UHkH&^1HHPte{lc*Ntm`hmvw07UnqN5ALZ=MI9ZA8_QwvEP zVxn5%Ut`CN?ANT71GzMbqLSD}G^lq36G?}1o+LWNMwMhuW1gP< z;M?DJAHH98-LM+X?PSMzy$9Y(&ojV|tXjzV>tFi|_0q%g)%nr8<{NfQJG}MQfE_n-tp~DWy5Z{R z)ukcX6We#LV|8Trw_N=k1sN!Mwu%p-<+Z%R_yA^lg zh8^QF&z~LrXG|}=3&a9VTP!IQ=qW}WIagOPsEZ(WJl0>ahg8mW6H}>XyqF6)=Awik62vjN(^w^GDcMcp48y?;c?KS&_~GhK&NMcbondZ7 z(og{32+;}F!rW~yj9y`Pg=a@fSbN-Q9m}<^^I_zJFys~NC^7DcKf|}jipE3PQDSZy zf{rl&33@2-0Wcm1sPdSoiWVbN9{xNeHC=nLT(4Hk<+|-UOn*8`*9K>oknqXa(V=c6 zeB4@D78A%^m)dAJe?q%--^#|=4t9)`4yx~6XaScHKIBCMog04tN?DYmget~jG##Iu zl(Q)>MouXU#ioKH!N5)+MhVXjEl5^79vaDe{oSOP&a$SB#FS9S$yq&}%x)dadIZt& z0^0ny*)a-=N~*+w(-qDVTNPlu<5r8G{lh;le*P2HwS&g2kHC&jt;GE97ye-W?w8zY zed`O;b-C6p2c&ILg|aie)f_Z|4fR=r-%K8N^ze`DNFmam9kqtgqi075OhV2Y*ijQi zCUyjw9@~L?AxeTLZE%g&g@%e3>0uJavu8(_Ca%laksO6S`Rpk9)%3W}%Vgi4hynlY zI2~Bx55D;qxsU(C`vX0Ce8XM3JpIyd|K)RMtOw7uwXf@Ochzw2+<^G}9ehRM9X^;x z4GWWyzh6-gwF&QUd_7}BJl$3R*`XPZo+@LXS-^tz2L)T{OeZ#irLb`5FoF8<5V{CXtqNaVe zp1~a}R}I5-B8C!6Axf}%kx)iwwZs#ZT;na)$w2}uYHUG^G%G4{(h~!cVAQ`1K}Q3I zyYZCRrs||H%;Kyc7xwczudEw$HQ@rfXUd`w;HxH$sVo*^nm8GA61#T88pKV8GbH+h zHJX^6wP}PLG_-L)k+vj>;4HACpHvyApsBWlgmoJBH1d7xq{!J_gidfym%Bp`X*f0T zi87pZ*mlihLkyNbO3X;d$9Rk|O3GS`LI$T9cqtfpfuJc1Bq7OE!LZ(OrA=d?WOK1z zE-n_0e`$k>`T{pvns|e>xiVN((&3m2H&9Zj>bfq=GE@^nn|AEi&h#3o&J+)yV6l^i zDqK7GB4A^#%2j8fx>d;0_^2KomE&1CnX7tKPN$w4{bsMBVFy1hfgSO`fZH7zFXLAS z<#U>GutR9;3Pd?g*apwNbv-$$XA@ou2da?t`|^H1V(iwcgktC zYJUBL??3tRPuy}*WY^L5Bu0ljHQeAE^yq^1708aQn$I4-d-~YQA<9%?_#~6iKY!fp$l`NV$Yflf9Z6%E`lowS|EYW5w9CDCTuNEkx~j)%oeSq2;BLB;(9> z-5Wz;qIEH64P*neFI7Xvt<~HTJ1&h~_(@fXCb$lQuq?E+T1;DKIqQ9Q119^qHh5DB z3P-`0sqicc&DX&{hPz--2z1CpsPdZZC={}zKt)7VS)tagef0GFZ0VV??VyIurgIW1 z0w8**Sn4t7TlWp@$R;g!=({dt?eVUtbeO*6mV$B@(xnme44RkSA><75jOjic%D z$?WL%czRsa$FiLAa)esz4oIB?DPiAII7$3BQuq)f4xBb1sfg2zgBs(5%OuNagO#G1 z%*1$JjBBo(lZKaQoZhn|)SzPSKI|SnT|mSSVw0WZrgW}ccTax$(+_|A5iX+3 z*fF2kH`uXrqE*xK^x@qv|B1OZDIS)S`%}M1EvO_hWrb%)kBOpBfDY8o#V4F z4is}h**oBV>!LgDE*pjcJ7xpC`IJ zGM_efhK!M{AaR90o_k!BnTLH7T=( z9c(}$p~J&Nl3;6XR<>I+kkeWVuB8O?4rE76zGFWJhFn5rk?p(gE@#J}rlhI+h5m;mzZH!nGBK7nf-hkK`RJYY+CcjB`L zYakCQSW#B>_~i8N$=wID`7Og$=PJu9{}_T@?a)z0HL}nfj^&0a7Kq&_z_KPti1#}} zCtbR<^FDgYu$N^$xp()xmZp+u+~f{7u!ax#)LuBgOfx%9ga zHN-6_@_2US=p2KMFE(dK4o&GSXolzP2tqs>MSN1Y5$YWUn9y`215WG+bs3c4w!!q! zb~>@6*pLP}?_SUxEup?vFWygqgTkJ@hZ8owaDmx-Orm=0I*ve{`QqMM78sb-D zNK8dIaL+Dg`HUhU5r$83l-)_#A z&Dq6rvF_FeV1tZvcyxkhF(!8{c7#Dvayp&*ZwFHq9&n9{P4O1*Y$$W&)U@7pmMSJy zU8#CBn$0Kk+4T5?6$MjJD63uJ+0pP4btr*_Fj2a}j^S)I!Q2uB+e0c`^!ysh7@DF* z-}ggxqNCAde*g5b=xhNewn%54z;X{9IC_K{=y*hd!z3dRx~+pMco4CN@>x-J_5A)9|481u$L}58dHZEGVoxuYV4veR z5~X?kCKEeC5V0eI4D1L3MFyji8|(<#ZB037@TBnz!JjgAgl8tGck~|#py@g+d9=o~ zutWM1c1#y09EY@zBoz>~u|9e1xbI%R@7}sy4<433U<>xKV|>^3>p7Sm_l=v|Q_DYC z&%trWjV-k(k9f!j`t1?d_(RTSJ9RN^$W!-&$g|Fvel+*T(smTGZ1;U1#E!eicBn0k zS?r+WgHH&d);_O`?`tAMc0TrU=If8nZx+>j{XE1Lt+~LomqFd)?QYGu{_N*iM8(+N zNS1dW|u-0qlrVnyVeVEy{c4_}KEQGqo(>DNID- z6afzLw~(iXc&SU8BUnEpz%<#jBiKGUyVC7SYqYBtP3X2}E0}4cQJxFzNTE&_ZKwu! zt?11|V~f;CUg0jiAJ{QdF@pj{q(y9waiq~B(K?)dC4tAB9T_^!FsvyAs4NOulpV9H zPD8}8X&39J107wVIm@3ELp7?Ph<=E%ZRD)o;E6-JsCy)!Xs{~kkwmLQO7fDNjm6+h z=(cvkSk|^$RP|^w8&4V53BX4EQ`mF9@n-1{%JL;%gLxSQ1034j?2OiBN+%W zUL?;Olf_W+Gy+()LW8@F)wMr|&MtoW-T(E$557OCM}@E?WGHjx`FP%@uB`B!W`l$g zM?XVok`|>N&2PQ?#nG#;@jDN0zjiaWwp8+&C2>}aSV26NU>;JEge8?hsVC!u$hL@kZ&`+nl_&-N0JH|?Dz-*h?* zuqjv)?O4Ze*zr@%jx5$19{xIn9e2)!p^0)BMs*oD<|Fny!;Ua>a0O4yD{U?;YeLE6 zrbu$XJvZ#QW5;gTacf8pV#j`buFH-TD$&r8X|UuftJe=4_ldwZ5ZgGzQ`P%;u;1iE&4~d{B&!nV31|=XHS_97zklsMqE3`++5N zdEUb#qn2#NpgG2aW7FxDiaWW0h@%iItCt`g6I^gC3r~H-j%lYh*pa9D(ctkz_X?Nt z@}S-5qSFlZwo4KQ2laJM&M*EQ8Gh#Bt)3m33VqgvQbkeuJzKY33;3%S&3f5-V0RX@ zbqa%RIXcU&e*|`<9kb|I<2TcjUpcBhM$(dqBH&>N-hf=J{5V={-6^W+@$K7pPv^H! zoGh%AurUhalxP?vtc0ksVO8re01SF<+yr#oWJibDGfY?qc1*gA6w^xqTF;J4kDz|A zKz>N9*X!AAcI)KmcshCf-UrLYa@97xu1{Zm%>u$o3st)+dfp83@4@R5b{*JJI$Qb` zuh#GV@W(&@&UeOjDUsR)KDR)sH)T#xyWZNt$sdIZkbhBJR5R67qw&iRPu~7wasSQP z%XfjY$!p^UKwWCVj9>a)g(V~RT_c61#QB(kGtL_tQ?aJ`0lM=Wy$u^#$?TB>2= zOb0TM8ngspc^0c7;fyiZIIcI?k!7{fjPe1os)RcvOR801q=@=_*m2+eS6plP{p`4B z?Sr}D>Ny}^&2N_-cW;|yyXUY&)7J52uDAFV?3mAj8#ABjtI=t{;^%k>dk>(6_k)+S z<91GV@9UcE*e7L%y5&jJWG6dv(Q814<=OSvkwT9SZOs<`Mi1g%hq7b-x;8s*9lN-3 z*E@l(%Z`VwGvD7VE^=*l-1jN9l8azPh(;Yad4srgtFhQG z7I=uQ$GjwwL$NdiNk>b8wD3i#%p+=lu;G1gn;mmygWyvYss^nxtT3WBYkT+h_}Ag{ZBKZYw2rlLT#48%A5kV$%M!#9Xu3I7NdNkC55I#F4TZ z)t(elNyu+Fc-wdu@zmIAtIBG2bbR~t-fVuW7)?M_vMf5lZfKXWXnW%nawJ+NV#%X~ z(gSSywkYNVC!WKh4khyFEsov#hTiAFgSRi46+w@Xqg=Xyyf?hg&(951PPA;flFOz4 za9gT%S$yT||CY^9T2UHS`Vs3pdvakg6n4TVC9C{@%oSEkV?O-Fum0sbe_sewpe7<= zWqv(g&W$>zf_#w9pB=%@=rCL2HLZjn~rhEj%=x8pLG}X z9dmZHI@CK7JAx`d$~QVlUIRO_4&#dej<5iC#FVgVj!icpBnf{qU~-M>mgzdmYh9wf zwM`|zanF&tQBD7O={w%A<7MM^AUj?c8Pn@Uv!hE{>C7LNW$eh<_1KZI!|?H=vLoB< zbjj-=gUTIy9_&ai^5Lo8fq%Vc$0cKJQ0lp1N7~;TcD(HM+h#`zMR$OC*ya*Nc1#MZ zU=x5yMky@asbaw*b;&qrN;XGbt~gKJen6&Q#4n%L1l?6o1p72wr#GG|16eEuriA6iKkC>qzuwy|!)gmOUsnf+TQB)-q3l@Iw z;ZXWHe+{n|9K*qQ2TWO9K+Xb;VJ>CIJev`g+&H^3c0^F4j%JUqC0a|Dbm%<8R2B4J zPmfPtdiCM_=(b-QB&MO4!*99j;Eo6E=pQCPJzgpVMTn_Umy9Pg>cesvZqz}SJA@v= z7zV7HHHna83>ebEbd;fH5sULYSLvoTod?Br(=@B~+O!&jxWIs({3`fXx8n9f@dsc0 z(%pAI*T~VzZvd7F@R=8Tnpa=EP3YyA22~)!@jAF zyuJOyT6mG6)$Y7c{!9M$fZ+}}bc1EK=INy7MbfWWb?y>A!VPCv56$H{+2NWuUpqK* zfSg-9oO46)HrQH0rUcG;UzHMczoW7vy^pgLE}8Xm3Y-xSVMm-fuzr~HwdD(IRv9~P zw;XNz9_1}H+wC=n^otDNzTUIni(toR*`EF9@SYqrzuvQ}JGe_`=ZE)f!|wafzI{1J zb7xTYA$Gr?KLg`RV}(zz??{DBbe>lNnx+*l12t1dcaTR6;h1#p#mDj}4oq%)kszVu z-UU->KXa3Kc!6FWx!2j?#e2UB>-wMN@Z{#mjv`*Ko>6L#EVjAFs+a4dJ7rmzM)>&> z3eXJRqD->OlejVg;wQ#Pxlqo7<5}Bu5b_c@|8hU;HejF4v=E^62z>-l<`@AB4y1_% zguV0K=2(j~wgYDY8{&>cko_G7*%6h#1qwa7f(jo6OE%4r6)p=|m%J!Fe!-#9&J)sd zwQfi13Lc6YF`Mi+v?%KFbXFF% zf2ST#X2(abJbZmLpJVnJD0dCI{<@l+wVt^l6EDzalO7!Nikjd;9%cYral3r<{*V5@|5u(r8p9(=<3Ps8 z?*`n(;H(#xj(b+HK^$rG3PS&#*nP#dP;dR=*PB~!>67D^K6g)7PV)}f5sDo#^k`Dt z(PsLNhN6-Kc7&i~Xn*k(Xh`uJlh<5>W;hsCn+}LD!X?@@LEANj9v#+1Vg;nZ%yn;I zJ(zcRz-1OGS!8!D3WSPh=#{x)M_lH4up=_c?l{WF#g26QqyopF-AJ3tcYn*Lh#gsf zzhK$>m}45UV>~pQ>?oqIcZkHWz>fYu|NOl$dI2>iH|+Qkx95f(^LMtt_gUDn_K2bi ziGtV=KJ+h)0uI?R*HQ@46c*VLB19-^L#1mJT2n$`M+-~rC^qiGLw1b9H}Tq}_^7oa zYwE;LDL-vjTHj*TX)(Gj`DrQ2*0X^FzJgSuVId_#8E{|`&D>hJrxbMb9Et56sCvgc zhk0s$c?yo1R`{Hb&4vykk_d(k@2g>J{#aRFG;vQ|%-rc+Rk4{dGZ{42EW~!c8p6Cy&;aRiJrJnuVMN&C9K;FT`I9 z&seLofBCy_x(|LeFGbs};cjmQ1=R73@2{*FchoFX>Y*_P6o#72vgzE*U;3JS^~)Ed z(Y?>zXESAl)t;X*XAOPU{^1R18v3kV-)C)7+z~}b9W_mRc61nbBu_$WngNR%P0cYt zgoK6=dem#oO?z0xA&0_P=*SUhP6(k#>q2gNiyi4g#p!P+JF@4*j{6qhGv7ZGJ07t9 zecHb%$9=<&*@t)J-9Wn)>eO zCPqiDU`IH9{;)y%My!lIw_O`stuJTC?J>L#JMMX1(_`?u>?p3wg4f*q=f{qF_7^pi zKjQ0Cz>eA9h#i?BEjkY?wJItJyRVID{al>|9XHk)&qkZ#>oR!LX;NA-RIi5prv6X0 zR3HOsLsJf8EO(Zs_@bX>d8FGs?npBZiJPPx86ldo@L$cuh>3~qUY|`*xtz7SG}=f% z$6AsNLUCyU3MGQAIJ+?IQ>&NEk%}?K9l?8$Y8+eZ7lZsZg%}+R5JNZ8#Ey9_P#%NK zePz*PI?lDOzpLzHM>5z3j~Jj8LEz~B%#`#j3l`fp92XPL5Cwro%)(pL>qbQ_Xx&CQ zqwPs&njm~kPXbB1F=dljY<3Kq+jy_wcuK&AVx&NbVlq2=`K4Fhc;k)v$t^Al53(H^ z*kF>njO+*{r2fGHAQH3g;qy*Z{`sVkxMr)$qN+-TdPe@8mh-izPpDyRp{lj2-}$3I z5hwS~{VAeqmf~l;zxH>sqjI`7?f1U*U+vF-JW-Cqa@<{y9W5u5PEi(h+t|Bre_6fp zrHk?8^zHldq&5}rJn*$t?+BR4B0JjHXH9QX+%d6Z9(QC|?-=5ao*hkx+CAV;gPKC%BY>E8-n|N4o8iO*@3n3=Z}XSHy1vL9n*5ZJ$3}IDb)!6 zRCgZy3eBflIJO8foEYKRL`x8YcSu4f4>&|ueR5xohA@sb}VKB4> z*%I(Rff`3-$Cz4$(k;d^c8n=(lhtQC*FVGZfuA*AJIL0K?Pf>nv!=>W3N*qyC>ai_ zJxcOIb=<8wz37_8fbJ10dqb*~y!cQRoLL!6qj3d0*^%Y=cnLeAr#435fL_pi1rS!1 zWjUHmMx#kRo*W;aJh=bTY&O$=j5{L=)q*+;7NcSjWRznB)k!GC^iK|TiS06wb4Omc zDC_7)9{eLZ9!g7@AfX>?@E*BZE|;s-lP8b5b@f$ z?xgf2p#?rbQBhf9$8a*({_5CfNB@OIQ93OqFTFnd{MXjUN8<-4<(-KegNHc97iF*S z2xSVHzN5izW++Lf1iwykN08uYU5q<8^yw!W}AXi(rf$KFQ{*lzZ8c?_55W z-QqU%VX?gTMI11H40L3M?6@@)n|qe8(_Wt)!w!T>--L_-cz0`k({}DlljeRi~HRjLxH9QZlnNz;z;`Tss{C@e}<1iSW!H^um5ewI zaC8uW9)f=SB~D18CK5|RgP=McSUiAIDKs5~{*qN^7VT=~4+^E<(NzXl0EFp33q2(u z{6p`1Q)le20$Uw808Juc7b`i|xy5RF3NLcs!a+>uM}zDW#at z=SR2h)T5bS1}a3ghZJ}`hAKviJ7V{<1w9&Q!s2xaj@3~3$7z#V5Qbr>8N(r&is5R8 zIoR29Ge?mxcw?f*WjrEV{v z4#7gTWW3UW3ZdR0Sq8XFb1LSnF*c8OLjJs%+`9V*|5n_)+s%sO*Y5Fg(SV+g9kOGH zJF<3I?-+e${6Ja*aYSYsiYaOX;yYwc2(_gUv&1AfHhKqX9=(RpBLsO#xJQG;CA85% zlMSbC7>b)_^Bt;fhWvEu;tf|QNg9)v_eW&ML#B_9i5;&fmfPC=PZ~S!x_3W+c1+s3 zHXaX`9T=DWkgxJH$&Tq~nSJ?3X2+I6+;PEf*zp>#8+Lrr?C8%}hzlY+`U$Dk+EBLe zQg+O`X97E-=`I);_9K%jgBkPqNPXOyQIjQQ13zg|9|=jXaEwIyd5p7AJIE3>rkIeU zEP0?$Wo&7hk#n~TezzVS331E$|H`qE9)s6PJW}TUc6kocdD!U2rJr`!r~$rYrUjQ_ z6RPgGFf4?@dbvq!)7OQmGv0(;mV2R}=^_v@?#N=lEp52MA4m_9e5nNjBi1Zpiwp?z zKtHkvGSDseEDzB;T(1PZZjyuyz4J1t=U7g~iTo0F>~q#(P87-ENzj>ta+u`uQk3O% zG96E6pshWccqS`~3VdfRU#~$I>F(VJw@)9G<4LQ{+5mIIYK25U8;&)Lf|QR~QFwOb zN^0t0f)p7)_EV8`h|8xQfD9iYiGRb6za#9JGDx;hQb&ElsL_}s z?0D7kd&Xg} z_R#gT!(`?|J@_h~smi&_?vw+^=dH&M1T{`UM@U#>&{6B%K}U8eJHk8Qd~H&P4SCju z54vC(AMnvp+ze_WOT|Hvgt?HsPJL{l?mmHLQcR>ga(_P%#wcf{^IT~CicU&)U$cj5 z@`{?=R^#=$Sr+UUdi8-`8InqbG%BR6m&TlPw`AI*k4EaFRCPz4vJp@$HHqUi%i`VA zMSRSCvs~uP&O^frdM^_@A|ESizr%Pc!5%btpfn>yA5l6S%|vwDc_uSh&M1N{wLndo zAo_^U6_>MP(gJfLZ=H!c;r-baDp65xMoL*#)ogY&nN6$F1b_|IZW#RIpIW5fwytf* zqn0tpFKIdSS?n| z)q1@KXteR5L&>G0vx`x77`4IU%AuYTT5trWm1XI-98G%sX;#1ig}!VcE@Vdw?5I2C z+40L?ZB^yQv(^vprR*5a0R}ni(mzo>{@{n-{4c7#;C4;yn67YW7Dv+UOER|NjyyDB zlLxop^V{Xa&rcq{u^h|0@4Q}|j5~0Jc~*8ra0GV5UKuUHs2baD(7+m;Z~PBk>vXr1 z9iiUQl8vWHBS1<+!LBg+%A~6`%vRKA?XQ)OksbFaAZ)%i@2TnitJraHBi>$Td|i_r zZJaY)aH7JWMcjtCp6jw>`f|H#91dm2OTNyeQ$2#COSi?WzGu6~FpqM4irDeMUYR^+ z9hSd}9a*N)!}hbIW+~Az+~!XhJJJkv)k<&Jacdl&2Rl-DjJG1gbb=AK!l;jjKk00^0A1J(hybQ;Wy%X@ z{mbMdM-{+IV+R0ljkIgQO2(#Z_PI&*&gA4?JzJhH7pD7Vw_Hguy-{41(45T9jk#dm zQ^`C#!aR#B1Pc>vl!?+~IKfk>D7j~$+ldVsY;>s42BbgSksaeldUh=0OezWX6gu2V z<-yT^`>O5MZ3{X#3WyM&aHGbI6Xfzsu zjw5IYso-kOBN>BwrGkO7Y&1T3`<>4@rNExYps)^?U{s7L=grb9HtG0Gr?FASMG5TvD+`FSXqmr zCjXv_Y9cB0XgFqIjo+STxvXA(?crCyx|C&ce7iC1N_NBp4TxFjR$M&&$=`j$o_zog zh)y6o#)#bY+0l)TiihvaUVm#bDo)>eSlyXvZVqHe&}xD_KB+%q{UTH=A~G5s`>Z?g z@bNnsEouz(jA1`@i-q_8e8+l6=&gZf>&CMqTHpkk9+qjEvggf?mr~;a`L$vHV0QmK zC^vUa-S4elmVw^&*7gj1?uUGUtJwJVL6~O1Ob5hS2iv@}=Vo~8-#0#XpAPv}FH5*k z!QMX9^QKkeDbK^bGOhViFpyV0G$h@PxHn>B{CA9lyZZPJ_wh20+#b@jJ=kj6b3fhX zi5>Hf8Ct!}Vj)q*Egy$L9{|?-Q{STU7v;HbR#2YLLbVqge46h`NIz4aIzI%@t(Rr@ zIPYWGZSPQeiVe>Uc60akZD+oogPK~dxxeOGoi&%N{{Rj1{k<}qd1@{)M$9gIE3zyN z=bKStT0V0i6a#fCoZ-;Yjo1;Cy|p&Erej!5lnCB+5{l443^1Y5xFXkoNxBx4apu^H z;n(9iLJ2WaWq~aSAT?*n{7&0@rn z>c2zzW9F_YG4m9kx5E=DsZ=Tt(9l5*F$jk$JVcF}yT-a@+pe*q9Eu1;NIeUQ(nffM zp}AT_$3mI)yFhYR;@?E#JWD-MbiumbLI(P5fHh^%rg65as_|qpna$?&W5h}sJpi#A zq_2+z;`HCqbWRr4-TN=!K0QT|Bi1@fNkfd&gH4C(jJ&MM$*7u)mYwm>3upLx^7!$G zA3Oqa^Yv1O$9YnJBm?nqgH`w(4uNpLfP%_BkG#~Q?MDm;O#lk{Z>v%6pYN_qdmLKJO3HRSi%hmFi z|L{L9-usE@mIWlTC4SJ7mN|<=75c0P3}7i}$|!0M&gh~o>f+V6Z-4F!i>jQz_F#PX z7)}O!d<)v(s+@& zc7$q2zaA9m0R{!3s*DjsWk{A=qpGWTVP+w%SmeQP*zr2-h~xVr*m2JwJ|jEEfFeGR z@qrb!2@CYSGGWcn#*S>L_xo|N<1lWwgB=+Q^;B}vT1FICfak;U9fJU+=b$e)k=e0HLaHLF$`fmAClQg%xHxhiV5nij_U15m@sT@ z=s_WCmfh^=u<{Ww2>)H_?!19=Q6uph5X60gEK<_ZPwYs2)yXFY*^xv04USZ-cNA%6 z8>FNVOFUdvs`jvW>*QoSo7Qzru~6!jrsGJeQnAjqP#`bR(c*`p^5Jvs|2sN9ZX6WmGJnqaZJvzEqa!h%Km5uc+hRODn*QPk-+S`Ce;R4@sX-|p zIFAMN*+6IYsIK05bN2RI-DtA5>8!qj9sOd3>Bf5f-gp20(T{(?)=$R@Zt#b&V^Txx z*%9VlvE-$C@Y>72|F!e7s9rjq+&fXD;t+NO3&D0bJCbt@LZm+!ZO)D$?ntGOwgq-< z8+%q8rYT&>et6$bEz9Y2%o*c%K4`3VfQ57(AL?Rh%p@@+UI zfBI=>M|vr74R(at&INYV%r2Z=SkqD^{*HUr_1N)6}S&P4qY-k@)#6R z@_#BJdkkGN;3pXGHmTUdK}c`&v;EcvKi|NPbw!7Bld zi0CiJk^@IHOXT?)K))t*($F}B`>-V)WAv_;3No=>r<+ylzvxy`yfi&NR<&4rM)dO} zTMBb#Ru@cL%%Xz0pmxqic4RJ{kS2JOLX-&Jw}H(K3(-8JMq!b*v9M8W-_Y<*8@v{= z_ZaU9Tv8_x$gun2FXY;oRcl&&K-IGEVxem-^iYR}5lK~&JK0e|9GQe?HlJbAwxM#n zl%Szq&u7P;9q048lBx>|GT7ga+TcmeCwz;eh^D~%9PWxL?%sQFa_^oWcMo%&0awDw z?8s9@3*j%e?3(u;{pQ#2zrSeOrwdSI*Pi)6TZf~G4miJPpp>AvN$hCx%#~EmN>N6T z$b}U)Of;NVM@RG1JLCC`k4jIj_0f?WPwUy~vNftwAO7e^Kl|o4$ADZdlwd$WSQ0z3 z#<;3t4_|)pm9LoDd<8_6-|4d}h;B^~eg?fEk7Cl8JBt14yWjrcpZ|faFUF+`j@BW} zLaGAUvyJWNmoS&1PY*PS0gwt1o}Arz`_I3AR#xq}eDzE3VBE1ikR8d2XPX_NiqROT zjq2K1?+7}P=pTb)g6!!3itLCLkQ$cvpvi2L*fGBoCZ(a@b#~lmYGR*(9h3XW_Qrog z*fHH@3_eeVCK#Kkd=J-oWw!b=%#JKP_&y(Ygzv$)qi4sp1@|*8J_YQUwr%S$eEjUV zd(-*#K9$d=jFGzXW$d`I{rf{Wza7f9hUL!WXIqD33SXU z^ho-SbjWBC0dYq-1^hdO@&nA_xWpH=swh=V#?zytY38P9|eRBQmo({$>B&Z5G; zX^f-_8JZ@cnulz%;a}*l5NbT1-oE!>a(wK;u{9o2*kp427{Q8$b_JQ0HmqT`n#}ySsM&mU`;Ht>%GtOWkJpfP z^`BA(qtalmJszL^^k={N=C{Tz)bp9HgI*+m(xEV+U3OwJ_Uw4_?%U${q-8QC^jUaL zaP%*WfoH7URPg`0y;G`3|N2kA_}l-=3s?DJ#;#?DPKkl+2P`#UN9@0%=(Qkr>}1u* z`i;N*tHpS9QI@ZL<@2JFn)Dq}6+F~CY8`!L7$b>CC|*SO7ZUvjp>IM)EO~TjC*#?% z#rLr%|OYV(x?0a309rL{Ec1OlG#~i|r@qX(1?eBX&c5GhWH{x7lhr zaSTWO;IKPk&dB2en^$65kHNVINyu%CVIFskJIBd~qhMSKRytP-Q3*aOR3#Kbp(gi2 ziE<|*%UP#pnsn=?w0o?#5oCl2iY?Z9UTI*Cg`$y>6Sq`(ThtHgdDpBS+h*awp3YyY zrNPNmgitOz3d$sjY*610gF6fpmwlNdv6Ml78oHOps_}3LLh}Gte_{Xu7zI7<#%LfUyd9yXjimNI2>7A&JGC}bJTjI~coJ4blcK8L{`}{RfP{S8 z>VN&=Pd|9{w`!8xbh( zgeM{I6*J& za2s=wuHT*XTnCA7%!kl3B)?(D&kQ>za153Sl&6Mk1HiFw3)|ag`a8;wEOUck&%loK zCwzKl{z2K_^88&g7+ZgW*>S(;_*PwA7|)NH9a*~5@l8(J7v~H8!n`jBPTAGn%je^n z=XAF6cw_b{v(J z!a7I{pIBl?i8^d4XYC9HHc~wzwm*lX06{V(WYd|YX(6J5z8?_9G;YM@opN-~RsQQ% z4klqJH}m`okv}6a?@R}s`Zhr4Py{NqXzk%#@<*_Qk2>fq!w!YIK--T}Y|a%nDV<5` zZV~96-L1iXF5EuAoSM!bI+2hdx7m?uPf>$LQ0P%8$#Qmd(T5RZv>q_AlFid`S4cOV zj!$l#OegcY9-~&03Pp{mn3VddIgiziFr*5=8sE35^(_KB`gMaeBlJ5P=XdAzx8FIt zSp53^-<&;No}I6-W5(YrOSG{T(p4`7L zMw5Cvk@ZLm0pP=-Y5V6tOsGg*$W3j*L#HEI;nVg+K7qAx7+p(U9iP z`m6&}l3t^8#Eyo9zNylYDi@*Tv1>DSq~$R%*&;g{?1@2|WCjlrd{G1Dgeca22|MDs zirV1eoDbOOw-utEyV!Bhr1ZPSj)UB5-dB6|zUN=EZ+M;;J7!&V;a6fuG>oDg4dP=T ztN6IsaZm34n&;1pW=HxsJa4CxEI!CHZ}yVofU0m;K{o}?{mpJ=O+y_sL#>m;JU_Fq zdv5HQjeoYzyk26fp@ojP7{0SF*W5GE_BL?7!6^e~8ZNr$dUrd6<%9EW-<@K}ta9gi z@>g$Xl7SaXDqxpZ5!i$7Z@cPtz=tmA%%wpXDD|-3zclLd?B0^WJtQp?tNmDv=ecxD ztV<)m(?Hcin$qzYw{wF7Og$pm85Px45g#GAD1jYCDWLqZR0<6YA-*P1*-$Y)*kI~+ zwy{7P60L$ng&-X1QK_?wt^vmn1wk;HytOAhZl*%rZPbzDHHT0eq{saXiD)O{B?CKx z)r}18o70%Izy~2`4U8=)VJ(6$2a1ZPVWB4kgI7I83Q&d+*bzv}qm0ulZ5te27d!A+ z;A7%f`gtEahKx0YA2W6osMkm(gp?Vl)4)SwQHa^JKAKJE^LbTOK!?GI+uw4En42ac zb~w{eT@egpKv)NrcS6G22?|NlhH1-Ix?QZAMZ5m+=~JOfzd`=nxT=&a{qeL?U>lH( zo!Vi4a$}oTo7S(WkmYzPMx$G=-1qD_oz3KU`s;}vgKX(ygdS5JQYo&RCp|4AjBv;t(&ZDL0o0&?M5G@QE|>?jo0^5r!;85Y5m&PP#=kx7>DPiPPZ*SXF%K$a@oj^8@CR$7($adD4Z!I}s!L91R&CTM^z>b5(#ntSXzXZRU9m5x5SR&u@ zLt3;y8aw6;5&T%3>;Ig$K<07EtJo3qvtgO!6%ic)Tt8;%z;kPN-QS2Ed;OZL*pYUI z9A!X-!0D2+g3C(Cky3?30D)YyrJzw#e2k(w5D3J7of7a)hqGnpiO2uknZ}w{0`wp| z!UtO6*24Hne%^@_CvNj<<}rt%iLbz*VIRnJ0UhA3X#1Z%I|j`%nz4fpkwy{qHl*#K zUK9No1vF*bRO-U8AP>?G{<+bE{oQkE;1(Top>h7Hyz6Rgju@`j;Y(5NiatK<39+78RLglRge4 z^nvP42jP=QEtbi^S`LQEg~6?$+- zNafp-~PS%<$L<<32R$S?BjPCrmW}+wYJUV3!giE<26%{I@%1>Tof++U|n`1 zWBMNYl&u>vTk7Vg|M0i=mp@Xj@lTtc$)Hc!ALO9wjB&>yJ36Yz-C{?-N4hA-FF$MSJqb>(%We|3syA>$F2VL28A`^&QciN23EZv_eBv9O8?Xf|1yJZV@g~-;rwy zC{jmuYaJ%FyEWBEV(ieO1-3sUI{|8uZ~>uqkLhQ`RD13ExT9Y`6my^t5%`I-py$uB zUYU$twr@pSs~_^jb$ef~`+8P(ynHQ#3{+nyJ>ZN~f5YN6zrDZvrj>k1_~7T=+qs`M z2ay}1#$Jxc4J;7ohu&>#u$DZx*yrE(jnngB$IFi3$H9*HYyLhhnF*vopJVJV%QZw; zoDnznmx@BD5{vM$F>Yy~+d5}QK0NM+ymEH@s5(9wHD;Y&JhoEp8|a#$zXF*`17cay9LZ0Y{BB7v zndi_gRrq+kvjw_^NG58jYDiv}o);^|3Tx@F)MP-J*!)6P9`teQT$-+7wh??S+zKLq zoSb7UD%V1!1)$Auv{p`xth;N~DU(N>RTMSL< zYEtc+(?N}fW9Ky|r9*~ZHJZDYTfcb?hJ6|f9(wfX&Qoc1c0}aXREoZZVK5bGIzrSD zqbMcm z-u;U| zS(l|pOQ2PU9yJcj1pwQUN<(OVf;gXbmEg*Dzx>{J?9ab1nx#T-Bxx&PMf#N$-`{)|$5;i_NG&yl9*r10)qN7!F>WpVYxaF;iyi4oA9R==#*W*!1&ZgT zZ}`aU$l_ISAUm>@o;{2m8Ofva&Gm=a*z;pYkyVRE%|Da&D<7Z1-NJ6}`#wD~$~o=O zEF080WuJRCcBC%pRLh7NP(SaAl8bR!Oq41G_uyDU;Tpspg|qP)K$2-*SRrIjWoPw5 zw@YR`J2sN76>M;=g@e{;P8G&<#rfa-ua#xTojY;tep%0*tAGSM&yFUZ?9L4cH5g}O z`*+eT(T*ZER-;T1RQ}MA;G?;563u1=5|8MZ^+XGP9Z*LGRn8hkur2Rr%mdglzv4tV z9?=Z_wpou4n@oRP|6>$H`AH<>I7&yJ(XSe0YXbE+z!g&g6M zd*Ch9#d3Lce02NtbbfsD${TMmReF9}7~MDq#fu!M5u0Whwac`Ki4=Flz-=(d?wEuM zTkL9w6AEHss^h%HG54HRXj5LC|I2^+&*E%VlY|X$95#)^{Y5rR*ird=|NFmP6rw4L z4pT2!)u_lj93LL~*gT!IAWiD|T(3X;;rI1VzQ-0%Bvg*LP~&(Vc8v9-5cX!1<2V28 zuYMy&`sC!!o3HU&uG$qm(O4I{s$md;9RVdxhwg%wTFQtW5ivUmmYTqhfS4W=TVO|l z-PI@+4(teh_sEW%co(f@tTt37X?4T&4t9jjYYLPAH@|)YRJ#5>{T$dg5JT(i+Xe#v$pGgr%7Jp8!As>9)?8pZjH=L8NT>T4Y z$M7baaHQNsE&$77&N``zWHITOAH>_=+L?>aKU)vjQN{&mXRh4e=f#fEv#wuHkbK$3 zhCHFodrFJr-)~y}9s4wEHlns^eAvF__ufRZvLy3K`dXqU3R!EDHmd8bb77)2kNU?dQ$ zyZS4lugH|4frCygx{C_ZE}<%6>DX9^NmY)dg#K$}#}Z^vwEqGrqfuz&Z(40@^|EW0 z&aDOE1?G+ogoQCA!W*hb#9*PqlC{#Yk#VP`y3NFqxfUT=GkgT1-3&uTBM-@O z6qW2Syr?O$6ML#XhoNwfX#680XBW(RwC%vq0}es#kfVJ_19d1n@_5Zq>e*wS4D5(M zFfp#`(YTt8Cv{nX{i6_NAq#X4qK|`03|eCwXcH+c=oI;POUzl9RQm`u03MzoaHxbT zJ#L(xKYjlq02$wJ7&scLQQd9!-DUXM?18DK}aF}7AvVGq26)qT)bh&2glMJVtc89I;< z^r7g^Ne`4cJC2(6pa13?>{lO@O~WyW9O90c3O3U7y?y83{pCd|)YU9r2`fR(H*NzgYa}pWJWWgBnS&?@R1Rm5#lgQhr-VH6|>0WD69dvMVRw_|v~y z&+oJ+$H%X}DreOi630Y@=ZxTt#t>3$a;;V4+< z=SO8n7JH(@eht`>Z>)HO9n(5@vSS+4e0=<0*HxS#0PI_G*hl?%bh0>^KBIHz3+R1ACC-_n~*G82=mWMd}-6 zY)1<=+phb({3~LFX;77T7(1fK_JAEXf}n<;3vACrc~9kFGY(@%7u#j>1DeI|fIpt*;GTVzp{S}@O!9?H+xjfcPUi{%#cXl2-`3H@Xfc5Zk@dJ%FD;MPCj__1Z-pq zh2w)EM!-bAG$29<(MKln9Tq~ij*)hc|Eu=2hwKQoj}Dv(VX#5ToMAyAeiro|JxM8J zCo`Hf0T(>JIv>6FZ{qc~Ig^ z#Ty=dtv}`7|3&+w@7fQ3C7cQDh=MhjvtxWGl(8Z^f)f0qHFy8ue-rm!ad+>HUwR;B zRSVHUU`N@JmmsPD5j(=(8j3q2`2jn+4%m^In0F5Kj+%Ab?ASTmI^8kT5Idr%PK!ZA zsFj4cV@JA=89Qp|o~Ej3jAB9y505@Ny~poIV8?-nN?tp^|F*dEb^RG|Pmjf(YjR&s za9@rpUp~!28{;tSlgP&;wCP`apAKeR+aqIG%7jkI81u-Bm3Xg-z@t_f3yc^=t@eEv zx4XXog|H*v2h=Z~9n(&wo)r=67sK9>=Ewo;7(UK6*%7Zsp;7Ag!nn0%CPw>637N5Y zEgry*az|Wz_o#+nnVMlP8@y6nCU$ zqM!`5&QzR@g&avf5n|+c#e)eU?z1Enp(J457`ryQF&*aEL~IIl7%B1lCH!9@MTbzw z07g-YNI)vQ(%p$tFO`$Kqe6oW~UzZ`-l7xh%Leu`Tw)`o?nt&*R|(0VbYYZc4#y_ zVF`kgs5g4EX4ZU|HEaIwnOQS>dQTE%NJ^9_iU0|q0W`Y1Oqz(eX3jq6hRe(L}L-#upUAO_a_PEH_m1c;OVYMR5AZ*Ml8O^S)l>HV3_lH6dX^DNKA zyc&g&R&;_OOk)ZHN1acUDcISCzNn0J95S=4t3_3xEf;6YW!2P`gY^rav>6-H$O%RZ zLf8`8yij@8Ksm8ltk(0ry$7$n_Rjn7z54oVL}@3tZ@HxD!L~6x_uyLy#R<(F)5_V5 zMiRU*4p(ywG%f-h( zjSqiK6Cp#KFLaXN=8AQ^8Qde}g&-b}!4o=9-u(W-8}I3R_opx2GY7LqAt{W8{)Thb zA-3LwL5d)`amTZQcXTN{$&Fhg(Bm4ecVvCX0FiegP8brRI-?4{;{I#bvLjlbI(F3T zTi8kTr^`g+lZz>Su#=%IaN6jTyw2m*YxKNe$Khw*h#fn1hTj1@2HpGcrY@O*Xh?de z?zw8rj%L{V`GOtQcgc>)U4YdtgdLah4}u*{3gpOVZt~5*Wuc42BzD|Tq8_o=m>oB_ z(8UT?o{W5j-Yc2wPjY17u7 z@b$*$Y_ntg1;MabwEST|=8}O;`Rc$<%{$_b-7Z|uj?m5aZlhgnaIAN;W2;fnSFbWV z!r8D;ajMP4#JRCEWv14YL_)?my7_72+cf~hZemz9ZtWY#mVoT`msZYD&w(zB?$|L( z4|3@8<012IKg&)DZcKLHP6;2qU$+HbdgF@M<*dPr-id8DI)4K*D{H{e4Z5LwJxVau zTE%naFOww5X2`djGuDisB1=%Z?)3$QI;sUBa8JRTHabMZQ-Sv$8C5 zQ|1N7ckxc>9nq*}7MCm*+_C6-)>5ZP>=;aL%b7t#4Ekc6)8}WGk1x*7&Mzv;@B!eMQaOW$xRkbPUBGf$XbGW|LE}G=w!aX_rL!i|L05h?;ji;p05_Q3*51; z5Ibb^n9#E$#}`!;h#W>D8VA;_|w1o@zi^_yzJN!D;?yzjmpZ|D-Rxg|ND=vSwTW3qcP5-ZA%gn?Dg#=PiV-| zUb?l`!KlV{gEAm!rtsmHpm{6ZxGDE%M z7wo8Rz>X=`*4<{h`{J{(BV94i16;`JcB{U1cHCBJ@!Ng4{698DIC_=xG;YIs%0cf% zs~{NF=xVs3K{MdgHm$s|K`9m+dW|~S@8S2}h#&`U5Qd<`A^%;^j@)hw{hDFS65ezJzd=BciXyM0)J@}#erQ3JBs937PaFhZe$iUcg84}*-GaNAD_DVEc!ErQ+v&gv~3GF>sH2ok`3#Kx7N~(o}Au3 zRhEDtrLQm7o$as z53^$wT}7FIm5b|uZW~TuH@aF)R_lNLzyF(h^3-zAzD6t_*9Os1QZ!?|wx)K#j%|LHyCmuIv^uMP{m;u^{apE)*iqWs(_tK(02_-{Sqi2XV;V`C z%S5jE%da25{h__{ARZs@y>!AkV-MvWi95>WH^{EJHuQ*A8q7p=VSCnVj7*Jm1~{&g zBzA-}6^nT~miwuh9c%HGVSPvF4EUz**wHs@ZrMifHiGm}0s^M~*6gTubKie>b{tlj zt3QC8HRm&U5o~%dhtPgsueEl?eQV5)ac9nYwCVqu*ip5LjOw>zN8NQ{x8u`QccEiZ z|F-OCcK34iqx##kqhz8xo#8HmwUZtBTTR$CbJI0WKgar#?A1n z7{?c{k30GS?Z_LD%=BS+?u@R7xPpdlcGQD2C8?hxAQ>|h&U}kN zxtPxiOE*-g%^0EN#EyE%jvD0Xd3i!KSHlBD`7HC+R@PjEa2D0qO??sKrAnHPDn27S zM$;<^2r{y(VPTNXwW6ZKpEfDg;of|IR?LbVWo^I`Vn+f-BXg1cj>bsNx{k4nFVZAONJQw*s|rolMzZbbWM_6%D7_;x)P{b&LW>BKPF=@pSyt}jzx*HW(IZeF8=e(^J6N9|T{b-V#P%4{F9BfrP5 z2)*yVa{B%c^{toU@yY)EQ(;F!J=<`STFN|7+K7f2!~NI5L7dnDTizhl%IugNWjHq3 z#D-c)NQ}rm>q-YICku~S?@^f_~s6#+MepyJ#Nw~Gsc5w zBdyWB^BLd2Gqjv;sNFyHCUcB?6{R4czcZNuPwdF!Xt~1a;U|3K_-v1sfTL&Zi+U6) zkXoO(bpzOZT%n~r)T@g(ikn`cDSd;-I70ROy&li{7#_iHcy#PCw*9d)d>tA2lS-D& zZn9(FWE0bz87ha%qwAqzyI7Qp3p+Zb+jQ#+I+$-;<7uvXeK^yGU0oYfJZilq*f{j5 zlg=CQ*hoGWdUL%Y8!E~=DW)};e{n>s+mtql)x{kh%^R2)wA^#A=zZQbhvT?G#E*3l z4JWfV{&tvWANetU)3st_e1@mtP%Ue`d4tcq_I%mabd)GX`}vZbO^VsNU3Ij|(&$LB zNkH0mBQrFYis(@Gv1#36LU-rWp>GJ4Kir*-U`!9(h>`|;wCafc`&)&4j#s6#0J&pH z#fo@7&NT(F%aq9zJ}RQd<8pFXOmlFY^O7Tux;AkUnuV`d4l6GRjC)=HM^qA{>jE+) zL3%;G(i{0Q5guoxMDTSQ)ZJ)aveUc8{Lq*w6pkxzVOq##ihO(SlGYlfvp!icLf*fk zFP%)6)_hg1o_I&dxKL`z;ONpo;ir%7nKhnE-Bd~2$TL%N)+rz$ZY4(LPR)aw5D{_& z@bvhYU-ub{_2fC)X=sFJWg*8AD&UAyvS$nm0<6w6#K&x*vYDb$olOYHzIgKFY`HwY ztROPrZJtevq7Wk)xxa8zHXMoYuY zdVG3HzqENt3k(TfI;BM#vuShF#E24fWPu)HM~grsaUnE%)H<-qwF;Gwm##`?3Mh`u z0*Bt31``6INlUM)gtFgtq^=SpP^=ba_jVi58}N$ zs|b5W`pVYFNUnZ%5N_tPqgD3K+^YKQ-!A{c)W=tAG+oXo&~Erk|kC;F4c}sLUo_ePHpcgp|gWXI9n?+=e1JL3l^(6%@3VUl`yKYPKBJ9d2+J9gXiyJJV~FTGkmFFOvS zL^owerSz6y;|4pLu6A?4j;Ur&6wbagcHAbd=U_**A+R#|QxROe2|JEst9@K~`{76D z^5(v5=YNM|b=CQjj<4Aoy}>s7)-&B~dRVtHZ^MO5+%If7{)iVX-wU~Wlt!aM$Z+%e zlQR1QN$_jfQGiM;CDca5`f7IU^z(^TOv_S+ucg9{$R-E$wUjZ=j6I&u_lt=I3pxiw zzqpF-yjj!jPDX&OPBiz&#Kt1jw`yDscRJ5osKpSk+baHcZg=Lxorid!%%M~F&HSaJ zyi=6AS$oy6fF5=Y#vLs8$A%tsOIIAb;uU;Wu5EU1%$KqGtXiK1RU6f4wu~}}xA90O z8Stn_h0((S-N}x;#eq}eh&4{VI`C?yRDqu6e7-kDOqZdX%~>Lcne}`!l^TFHb;6p4 z*67^YY02Kub6rlqdVK!y>60fH=PNjO(-#&Q{YRgju+y3h_*l6Ho;sQcu*ix@mS=~@ zr!U`s`N91MML8viLI{l2b7Gboddqa47dgF72X^o9;Q08sm`o+^D0TUf8&Cup+t8!L zAT8=0qwP`Bq9gzv^q#$f5UmW1n-KSwdPgE69BFR5b_#LIx(SILn|j)~^MC&3lVAK& zU7Y27a&+uS&mHmB(edGXADEZ#Un=-T(tNxjJLZ1feE#v-&ws24!m33f%16({jv{iz z5|3cV`RTz2f0EsQRh=H4yn27gj@+|ipllkj&%}-jebz2XEh7HNsy&Q}h#hjqSz?gz zV{E+iSxW_^hFx{Xjxf}84nfBx4B4#d!ocj z=s3!XP)t-e?oS+c9Nc3DGk7#UFW9jguJQKVgdLNjP0IQ5Uk&ObZ^({~4wrOUYhvg1fuD&4e%_6Faw#g0;=nS4sRE?rJrb9_tww(k?_yiDRIEp5_|IB{*W znh7{X+v|JH)9B}Ye>^T10&Ak}Wq};J2o^-9-&5#<6 z8J{KX!?!)xdd!Yuj*_UChobkMk-E3kqYEaeUBfj9T6l5je>j}-$y7tO+4SYqeHxeX z5oyw`E1qn=V2q4mCg+YQo!PcjLz~2u$XSCLky%zT_aQfGFDs8`v;BPH>UFK-lhB;i ztA@+4u(g3xaxC3P1XCMmrdACjkAMPntw&SE48W1)U*gP~S))#zxv$H2j*bd=`=W>p z=)Ix}Xjkup?Sxvdkhi9fcjyLxn{G#~tVMB)y)AVu`;&kJl3$O%O}&Llhb?mAKbZf=kWLl`kP#C2jNu5vm#KE5@XO=(kkUyX0CT2kW(WYmytuhB`P5y8cCi*9QT zxLhKX=vT0CY?h9hNQ**vme>)YG<3-zg&lMkcf`SWb-r5r&%XNX@BcAAeu}KNl&ZG# zlb}iMAI{!;*W7<~fyrnsVza$3yh`jC`dXcI6*W`k>n}cj^3VUER!>#E%y?pNv*Qke z)Ja00r3L`|wB<;~7xU?de>!>ahCV$$dE)_ef3>(vH*MTe>K(n<4B}VZJ;mPF>%xn^zAPt>sXP(LTXHFmtAl*R9i9dEon z&&iIXi)q(2^E+Y3?&Z+_(<5{bkERawV(hkXl%RRRj@yslA3JI};F3zDi{pZ>i5iW8 zSc^X|J8mkfK07=1LDMaE95PmlJ6_F>YB*Q>I?v%YCyBxMEwJMa&-ipcZaHWVe5;2a z#o3o3HSSa|-`Lm0!_Kox5a0Qu7IHM%<4oHnL0Jq##hB8-L-$VXaS< z`m@uQXH7M6$k}-|9rQ*@MP)<-hqx3<@q)RC@hk7XQ0}QUXC_pfRF$#smi5WQFsRTr z&0NEdhC6e_aYu6%T>+~TqCVO}HH&IW&+|!^rKTgx!^)1^F8Trur@O}6m5JK^YW{&5jz@N z%%*dZJVa#E<`LT9me`ia&y*8OP&=JvWua|WxsX}AcX+VBcQ~0$k}bH>($)!UZ>e#F z98XLMYuFDWZC#14OlB9*uL*DfhZs|Xa0!<@vf&MTYKvQnH_+%|c644EgB#4Y^M(ED z?BoCT*J`maj!7sqs;wNTn?~&)l;3;1c=e4-T36xRwA?X`z$PDzOlEhdtJ<;S+(iHN z=U@Hw$LjKHRbQrhN7G*|ugdsw4#zWZF%fF`1+F1mKg-_x!TgQ4!_mR*w_fu(eTidz z?`9Bpj1er@u)d?S9)BNLyGJ!QWk-W-Lxt+brqak()1h92MA6vYfGHi~zfc}Z}f?zr`?9g&jZ73vw;(cYjYY2(OU|Aq~Av|E0R+c$}!3Us;{X}wX`qPG~O z-{Z|O=)Z-39pz1JRkh}ZH7vgX9PO6qwwOls%!h}+g2}GB9gf-YCXa869e4M91pRFD z;UzN2D828ILO{pXK7k$2~;Tjlf3h+5|!t2$~NXi$&G zp#Ov&1UAU0doJ10Te2B)T-uv^pGj9&);nIQ88lL+>^5!Njc`2dYRrh^ZR^*fLw0X> zjMIOEk=*K6Gs#_d>jahxEBc8-K&1PkWw#e@x-vHTrRiRgWNRECcOylm1AL@g66fH; zhQ=fhgjX#Ab5SG0GyGgh3|r2x!FeYokD7kw%#PgIq4x6p_Q7!$_1WtDYrn3E_F{^; zc2`=$qos0}zFuM@2YvUVqAi;w+mqH^Nk7Q2urmScv-9yo0((tz4efB; zsdAf@8LNq#!Vz1Ttg5QAEN6RrM@J{GzW(~b!I6cUx6aEsmpk&DL8uaeOfe6%0LNSx zWj>i|s7Yp?V|95s+1oqZ+nc9-Z2elGzeAgW^h+datU&x=M>b7BEjZz0Wz8~%MRY6V ztfSOQa;LVUf3BRXQN(~iBkLO~G-Znlq4(@W6ywFBcy#`&|L=dO<(g2@aFf1hS<@V- zXmwGR=G8Y2-+OPNX+jme!jV&5&byu+V^Ri4Yv4JJ+{L4ZKl!nG@|mia*6?*Ek*Dge zOT*Yr%PM?;#pp30SdOYq8c93NzxToP^*8_VQ8lxpXJ2gBsHUc$!LQLy)T~{-4jgfWdy{Kov!XdK^r;i$ zwh{_qaBsST9d%0XhZpSl`)5biD(nBrDq?J(%Iw%R%A~cs1czR*V#l-w3*B=& z;IG(Hh&+Z)D_>=2(2}Tt-R&*sdIa0FfvFm^tUptKIJqh*JwNx$_4I~c}JHkr? z5hT-vSBLC4q}VnG$Mt`0pfR9S|2lT;YJyGc`AH0HOuQ+>2qteb%%O4U|o^wD3EVEtL7%=ufKUXRd}84+=@yz&gStSZaz? z>xs-Im&w5T8g`VSvoV3AWpK=e9r?HxtmDB^;#{Z^yqHOk6z8lhza(!!Z+bkub!$lsB8H{+HC<~ED?$DpIqncvO{kEqR;(XsAo_!ZHQ1336aLQx zy{L*Oi(mbZzgADqRMpVwWPCD!(TG#h{uk=*-J|dSuqq}#=3L?dW?KG1Ur>*fI4-?_@`M4mzwW?u@BoQ!B{oR~&Ri;o}B7CL`>) zn;n@qprtAA8M34Kj@dC4&)%#-|C8Sa)9ayh?8v_}8=120$5q4bpE-B@?XaW1Vw|5(;pqCu&Dk;K+D3H+&%=)L z5C)a(ykWUuRDZ+RTEn(A6-7N;&U!Td@}6|fx{e*gVDN`IS(}Nl8uXLWa z-+o2i;Wxw`clXL{YXI&3{IRL==sknUJv?^fY`1rT+DV;Q$O$sgiLHn1sM_m%(EUEPImc8k z#=bSFOD2R-Q`Sg_OYV{BJQ8-)lCze+853K5C?5QlEP*wxjRHIDPi6dUM0 zGzt|E2329`r&g;NSM2_W0!F3)?2%6!KO9>-$|@2vs)-9?d7KA#XtE>k9u(!PllhU& z2`Forbp+%_@m#O7?CTgF*7c|B zV+`cQp>CsdTEGN^9?O^)c2X3xxh`^D;IL?vBd{=Jpr>X&KRB4rm1te@sR0B;*`h(h z8r>PRkdC!Rqf8ae%KKH+tLQGZUm!RZMX852LS%g^=aIz*N6~-4!UpMFz4lVBz~zqG z+sf@NnvehX@9JNFD(p!3ua&SP`sG8GslEN;`yb`UcY>J^dS1_tQbb|<+|&-2`J3Am|EM!ctAee>|GcjNKN-W#vv$9pl41a_#a z^$iMH5#s{_68xnQquiU2$Ob+lTa6$@qqy7JKueql2>L{c9h>#aSL@&_ZmF&mtO&WK znkjI|j`U)VP~M=qvRm}%AhqwmXLeLK?JwT__%7H{4N%Tp@%i5=JI2?5Lqh zR`ESKZt~4_?AU(YbF!n_MWRAfQfp;-Ws*Etjp_E+m{k4q+p?qD#K&i2N7dz(Hra6) z8P(UaWA_)=OnSN%hpX9f7-Jg=QtqlJ?#6RCCfmHI2FJ1Ur|$Mw!eD7$?TE`>_ZY+- zBhr15*wJ#Pv!4SuXGiD;BN`_Lhy8$bamwNR6n5l#$Hb17Te^iEyOjKp9Syg86RTw0 zX|Y(ZYS+xma$lR=<8x?=X6?4E8h7q0RDkH%uo7K5J;SJ`VpJ-O!_TPMdS^SyaN)M#le=yR;iGmbUl zYGASgGFKUGX`yTpO-|Hk$`YC1qJ%k3ZVieZjWS(aAIbI77W2Km+zW8t`6#&aJ} z9sN4`rHZwp?aUBA_K`!6k-+h?sn*0WCgY%^7!t;{3s3?lQgpf|c61Poti0wPDX?RM zP-RW?WWNr-`TL)(fAwp1xkM8aG!d0JP~+&pO>vTc@WbNvOEI6-&U4t^OD#lS`LM-~ z6WWn_eg4TW{J;NHt&MYuY!lBW4AXEH=t9kF90o`h1-vCWP!o?$<0xK!6oST~~4KAV(fDlzp;LVL7CR2MpV={7#g06)N9W$=bu+zw)zxapYyDMe`(f2L^T$n? zxn z$5U!YE^^o4ZuT9IbqY5q$86`X(})fA*vEfz#q%BCm8t-`?;X}Mj&*+qaryzzC2xt{ z+b~=!4)=XmO=RCs69>L5BTCl&XBvHlCXtYLI?BWIv=tsQdK6%bn`=nHni?I}f%}wU zT4*@#*w=XRC;LHH_2}?&&N{6q*kZTqlHvQusG7o{0;%6$NwH-{)F-2mqV!xF))SR3 z7GXyt?HhPKYrDcx>NT_WP-im@MH#dii%(Ki4`=~@Ek|U0xmCFdaUwfgxQwlvSUbORo;Dzd)MDX~eGK$*2;mlpOVV+n!J+?dP4`~E|KQH?>AllaL;G34&pIN! zM@I!MFA(}BK(s7a0JOI%FSG%21!TrcJ(&gORTCWtGW-4PYLs$m{BQG0&QP(uK^!d)_kX{P0qTf2?tfAe5JhiGh z?g(}ap+ME2UlEVjeQz0NI+Tg%yY^3xKlmtr z>t?wo)|9>( zl!4Y&sMf))iLPO04FO1rJ9_T9mTE{Ew+e|d(dz0>;n3&PQa<4YJE}hzc9aeSaeeS@ zmrQ@}X=6s6r|m|s<@VzRJ8nO|ksVdrd-NRaxcOX<*irEeK~AJy1JpswI=e~5thnD8 zbrm`BHxA=!vEP#PO3RKa>6UymJ9f`^#voNkkZFHYebp6%`%LWEY5;vV?8w`2BX-=_ zo;Kzu5gpCWG@Esn?P!k}PVJ7959^ON+0kq39 zR_g|V8D}^Km}#jE)LmRNxwG^=^@Fe4V#lwSNk+gGFPE!dUp)S|=Hij^Pay^*=)?ExduZ zV?u@=%E!wJ)Hj(Tx!ihuqYK5-?h!1YOSjC_y;~=*-hFWQ=+>>hLt^D=i6X_27qQ5_ z&e^+#kgp_mG_HW3px4ROq~p6}|3&$ij|m zx5{_W>D%AW@7xdNe&u=ohbTG& zW_V`x+Es|R0oHw}AAjEb^uMXqV+CDNjY#b?vZK`F(!!*sCByu9{`$KI@4nsKJ(<6D zPfe6>);UX1xvEmA#V}IlD?;BKWrU}pu%j3iO19ddjKjIrs#&c< zr(+bka@J#5%Rk)Oexv&I-|qUVE49I|cs%R-zb$sWTBmdH`M+IhY`>2;W=AOklgwJX z4bQ`l?S5^tqvFU<9n`}4McW7!^@!xQA0u`gz8?F%*k(t040Qo_eR7}UO}>k5Y;2=G z@+vRKQI2)+*tsuUchPfFtLmcF)%)I`znhDtP2L*z&9u4T-E%c=orwZc690>4E1GyM zJMP@*ZhwcpU%RMrD^I=ab2h#=U4_IgE%lgpt|T%EVwY8~om;M}s%gYu&RPbS)OnLu z6Vls(WyU}qQ?3lQ4WV&VrjtAztzk@ZN9@PE)4h@kExZkPrqnm4r4CruDuSrqQ{7T|WNR*;kjoX)-i(K$4IEi|g=E2Wg@>HREez z5O54FHOf(tqJ_Y37!<~#YBMA5a4}OH?mTeQqZ-rpI(Fo#p4bsuMVC*P|M>r?^Dh-0e{ETQX!o+Z z>lN!hq&uzXTZkQLAN}lb_R9B8Km73gcz*i!D|$w_=yK=TIGo0%O6P@-9A082aBjXP z0uvwk*l_WklE2 z!e3vT|AHNN?BmVYQMLCxJM4Y=HrP?_Rjr^BO21bjTm}&d=l2aOXty4tob}fEsCB>2 z;k)!`I6HP!YP9}o{RVZn&7-(utNGWzM|}(I$lt!neAlz%==Bjk+U@s1ys&+_i`j2| zj!Egu4b8kr^Ul-RNVoUZILwhG{M zw_DfMa$Tc@FG~^D0Xw#z7F}XT)35AXcGM!wBXz|eSQ%eYfX(>I^t9t#6Lz6!Kj`c z84y{K$M`-o-aq$)TY_O}B<@>A&YHV_xJ)y`3q;GkiMLJeT(WH#F2o)KtjWKjDhF|#XPWxA?lnsWzTB2ifX0R()*Q%Z_om9$1yvGSUFekGfA&}ZT|N8?5l%LlBvi5-pW!-GV_$iF_TWu*aBHn|VMkdW+2Kjoo+F7J zG2q&)&li7BRQeF?m;w&Z$Bx?TB2EvB`>);plOLWP?w!2%s+q%F+BPl^>|?!d@RcF5 zixQr|7{__d^GtHq=sB+)@t>>LZe5`*X5ApQO;ZNy-$Qmp+_7Uv6S&%f)@ZJdu2Q~| zlF(FTDfK7aX(iA3d=YlU#^{iOva$x-X2;<*=J`k=UZ1lbt?$2?9k0@Mx$3dwo|Nhv zZUQD(#5mLM`nY2pcy;vqJ=kj#N7NGd^I}@6rk;sjfqY}fyAIRgyf*o(Nk2hvV ziNonOaK~Yc)PrIMxm`WTi)?ibieABkHehu z#yGbJTD)t zJe^g9X1PfU_^U`K315QJ52=eX<)eFXxJoZgkRFH()(Pqdn6 z`N3>jWSOtsdc9iF9T6?x*eTCkYX)b88o0^~4s;4l4Ar2tsP{`58hhQ)eYc2aMmvEf zj0Po!*22yNy)*brbT2@H8AW@p)o%uQ`<@q7*Q3S>r8LYuktCI$p?UzcEvDWgywbI$ z24+N-V$`DWz=vA1Zh5F-jDt8>Y^x^^_xGg`m5wBl8iXOOIwv&95Ri{7Cr+<=Ea0%cP!UF(nwgH0V{Per=N)bPN%5H%rZnDi%fcJ zx_S@9f0=aI8PkfMs7klURNEbp@kMoGW6VYL7d|Wq0ok~m>BFvrCQ>{{AH9KExP!Rk zqOEsaM`p*Udv-)+pRbX<_BpMRs``t6`WN-{f5D0d&DE&wBYZ?|4^dC6_K%O=`B0zS zUl5q-kaV3oU7mruDl0nCsIt5Oon-aJJhl~D|fP>$-% zB!A_Ndq4Wo(}Ve~4_?dmAjo6uCPRiA8E3>7Iqql~>OxI4skp?_YVM(NtBR=+&D1m& zia@ZYo#ho8>KZw{?N$%~_jMMSo?R`i+$;czz8U3+Cc%z!tJ)oROjRqP_fU!w*q8J7 z1v_rNb$G}(wr7JKw=0Fld#&4I?ex1o=-A%wy0?zA)SEHL7wq_~k7r^>)z&kZtJzVF z=b?Q@c8ofsh2Dh=m#MSk8^+{@?AZN799)7lctW{h2Rnw)6HMzX^X;>v+48En-ks0d zt;)aHa+T3napZ8@Tx5d{{$8)VQk(qBF*&<)+G~~d<0DZt`OB^TXmc$)j+_a%+#p9I z*-~kDf0c+~`xX5Nhd4GSH*Kh{^+m?Cj2#}OuW+tetX6B^h&70U+Dl>DTEq6d2wiq{ zIAUpk*{}rv8~pX`*!G+S>5q~5W>QxQzb6i&eXTN-d}H)oR0bw4;=!$$TniN;;+Ae6kOv zNeQOH>(FtBIX?kA!be-PuLmP6yCLdM6}2lr5<@!6_X}=^hQK8H%5}^J-56@1vF{AW z7qw#Vm>@Gj5T_wvkkmqs>JKed0jVn{%jr+NyK{1Q@6O5b{%kfeMXt&TdbcwPT|$o0 z67ZP(u}N|NluuK~$3!Sy@WZF>>cL|8|y5 zrYKy^tVUN&u5#k*tUJE~!yjKhjI>DUKZT>srq(1uhyWN&Fu zarj`Q>FB6tlY{p^GPhq{#SAUVDXO08ciYny*P;z}%-s6?XMd$0{yV%__==^*_k#We zjn~xlD`CfmhW*|vFa7zSpC9hs`ryst0PJWgDDoI?5BD{6cG{dZdSz%=;VwhpOK+{5 zTUX6;>FPSvN!*9UAOpN>m=0;G3Of>b5<7|~Vds3vJ~VakoU{HWb`+f>@iOJM>+U)b zUa;eizaAd%jqMq-e$KU>OJv+ABFl51W z&gjAX=WD_6{ewQ)c8_ktj%@9f)iFG6=!8bv`rC>-cK_(y|FFnLV&k`B$6-dEORmPb z>?;n^cCNW=4esBQ-f6D;1Y`T>*Ro@OoZ3e)q5pib?lt}AZ0PK$_FNlkeGfIoc4+Iw zZ)V4_HhBNNdeGz2u^N+2*1bNAI}X{g?MV{Vo_>5fFLFAmGp6u$(_Abr8@k~j5X3z| zUpn97O->H2rW60C|9X-89O)9LXyyq%=4!A zCgvloJHedcU`h{1i5x;k~kAR#Xb zMl5P5cGg_K2+R{J$c)!7B3C53)9Iv(sZo+G_;9^wQbdRE7BPi9rC}kml^#5=H5erK zYHss`vYZw4b8>VrJ-KyQ&Wuy*Xd9F1NoMzKHpw$x5;f+!$YWt)BsiIvd=m1B%}Y~E zyq)SiCpu)&AN0-S#RLH0Kp(&Cm=%aP((A=EpYG*Tyn!nnbNU(6qAqC^4A{}idQUDU zrVXna9(tOS=$;NN@UG)ZA%cj|t|l~sirGa}Phz+Xc(QN~^^Ww@t94K-AY)uBReJ@q z8Jd+ran72xl`22+;o>)+FaGAos)=e{F~}z{q7Cpir@h;I_XpX%H&zg>{APBvC{>_i znNR%s>A(Js`s80#v*I`1lpROcs3392tg#by`|eBs(_dU19p3)_oAv;G;X1J+`r-q6 z+!|p=wiyfZYkyeqCoVu))j=b{rmq&42#Uuw(b!OC|T<8&i^~Eq3fa z;RQSXL9wGs*N)h}K9D16*>T)c61M6cLyFL}?8xF8bVWB$T}_w5dLVvtBX%5=JbtI_ zXmt++{kI$2B?l$nXRh>U9>lIVhuG$nx8HdM1wr8AeSM=}FB>zsHrCTBUQ*u*Y` zk6gGPoYR2skeYks74HVQ{uI+qRd8#yxyh$0n-C-FY+}l(u@fAHY?74|u6IP-k>Juy=EeM=V@JgWpfc=&kGwv? zj&kwvZgxyZ%3z>tAJ7MbFeICX2gLRq^3>tnhsPn(&&wE4>FE6u^^OFN3gwU9ua#l5 z8OMFri5)RsP0VOn{_xTH-~63=dI@$UXl5W!A$-UWW%GAG%wBqPZ6-+Z-k2RrUtj+6 z@BJ_T@f+igs`cdDzB06N$E>!6I=%hUpZ~?h>B*h<-!wNwsOGfryrxsB5q4A#R!lxz$BvS-M!jRG(4eDxc9aEJr+yuG zvg0sk{k@vEe zr&k93*y)~>7Q}`XtsL?(>_8Cu^=@o$1zmajRk4ci`VpQP|Gs?v?7lsRrBV!ID6hYKt|c7+*HN^NSM{?)GBXPs2r8eDfPOaE#V<>_~jG>jG= zD7ef*8*Y@Qld5SRuP)aHV$7LWGiC1B*>O=8YA^$|n4%hh& z`_Or>38Ml;zvYxsXs?OmM*mh^HYx8n2G&!KF%jKBYRa5J_~07CK`c+z)T+~<<{sTP z6R$pe?e^TnJ)6x40t>6SXFFzwzZl-t1c!UGX;Boq0P}_1s4^#xM2pO1X5b$)0Xr7- zvqao6qgRL~i>#Q&EcbLIvr^~tV(-w-_G~#(ECxQ-YBkW`B;rKO(rWHH;ql>%3^VcB z+1ljx_AGzAc6ovEhX)G6$gn=?q6py=nyhYRlr9G8NO(8pEFCP3UL zf+njPabkqT9ZCuama@8OzIy!h?|z~lKBiyr#fxiGX%R&uL*N_j{O#}Cm)@+3nG<_XlNWJglxb0+4|={R=!qkb%Y+(bN8BG*T=cwE<74 zTc_{6X^)5&z>cWSY*0Llib}8}{X{@9EFs+E>bhFi?5k75y|8Hv3YEc^kTqc`>J$X^%QOmx4$JC9>jot_R;G0U#B z<1@_Z3r!9(Kh|{X%x#875D!7IHsXbxbWXQ+WPep$E*6V5oc(N;*pWVt*|F;!3LEUG zSwF5T)1>LC2J9GGE#+1jASSb5u%qtk8bv~qQ38QO@sCzrymk;5_c>s>M%EZgrkFTea8QkeZ3)f50xRHE3uL zSFSl*UM_=c*kq}QhM4R?Whdp{95UH}M#guRY-V;uBAc6qorQ>|z%Y7sZQBq77eCFe z*+>M)G4mp+v)vHMS0l%pRA~+69X8(%YLBOD9kufozQy#pbE6Jd>LgdUX5~>~ZWY$BXHP;3McPV#(Gq9Hm@?5HObU6guKs$$BdSjKz;37!HmNP0!{ zpG6DB97VsH>=%0ncD5gL7KZHVD`Fehx5m=fL){!MGGgcb@bj-$t5wr9bU;6Q_~mRq z|KNjniDG3wdq~YV%@WrQLV;11cm{TKbcMY1Vc{d#G5A%`#F3Y7n;kJ55NK;Byz{;0ZpFR>#QzbM(H<4ikZBP%;r!B@3k(>}v2GgQ7= z!<|0Vl{m_<&?B2G?P5n7SBX2a5+v9WMa<93j@%`KyUGi8d^UF6-cHdfYoCiRQ|R=) zx>6X`QcF;=zwK=~jQ#eWjnDdc!H)8Voof*~ejgEL<|2KL+ z=a*RhKg&rNQHST#)TvH?5BnC3|s@LbPZ5?qAvaMQFo>z*C0T=3fY&s{RON3#ZvA;chf zLjJm~dK~sb2}iE#)lPOy)q#eS0IFq2AE$XX(RSYu@>s>~D-9Bg(5xAbNlLRvu~Lg( z+HcZX%jsqAn-O-rYzQ2eE5ZU}f@O7~s0yzLaE`OdaXFQ=HQx%^@L6J+wAn_ja#dL+ zZO))5-uIk{nT`AiA8G8g4}A|ccfGi@u4~tGqJ6@_IfqI|La4yLHCfVp)B&ZzqaY7s!OhL0JWW=WjlY=9>cM!5HSOgsntJcy_Iz5S#(ehL^7ndu- zwlAN2{pF*to}8b3{OeC?=A4|Iy!P5_P3>v({`5zGa_9C5@m|Ik7BtrLfD*~jOkKj6 zP+dlK?!$%F#E47QfV^~Z5%AwSpjU=yvWg1okKV7Lp9FS z&kLHmfl$2BT>VG$kgg`d`^g*c<`3ShX9rbqs$HtJcivvuMA(r%CRL-0nX1(nzqt6> zU#n{QOzda}YvXig8NH(8eSG)c5C6>HfA#pCH}o;Gl+Xr8BRZn-9CQR$*NYV)BmU`G z>%C@IZ;m@Ac8pFzsi=X;H_L|qM`OnwC3_oJ<(+@~ZLs4NZ;rYjpYEj{-+R?|_N+4$ z1m>IWK-Np{>wLc%!RZTjfdCVB=19l=oX^Mg~9-aTnc3^(6H8dt^tm6@lCKcNtRSM!ZmQ&kF8R!W>uB zJDNcy`nWZKZu6w_X;6}BKRNkQ zIz$1xeUvIh{$yyHcqHB;f`b|Te-2o*(y7WvArn7bJsen}Y5_h8sY#Zjrj-fD9i8*^ zX~K?{?W~9FsM_>&yUl&_8ob2_OCMfUE25<~M<3c=d&PH9Icwm2-mxP=OQBf-o3quK zc%@jY2M?p-a}o;-zaj=RJ<8?S?n1MpafsK+I$ZEH-HQ9wyc@oJ3~Tl+fj= zIi3`afMXgZiLfHp7{%bk8}snV6WTYpj);jf*Hh*}%FsK^X(L z!PX`&OO2KU7jR%a{=;dm)al;74QVa9Twe;dO1M#O5b%_h^O0kg4Le;o+$&SF`*Xv8 z4Nbvl*t9U_%1xA-D@8xwe(hEk9sgHPO`KXi&CRsPi|GXJjjY-o3#&_J$2`l+jMaIx zotDIofXm4wBKintYRyqbUCd1m`9^If1d+y0v&r16OyZ8&{z18aq~dW zU9VPOeD>w1pMLtA&mKN{^!Q@Ec4%2?8t?ayjvqaGw70kS)?06#oZMcoSMR?6{@uH` z%CeLx>^O_h%})e{f!5N*ju$bU#c&xdQR4#a7#0CuT*Qv6pz%-V)>;uqGCMl3BSR5Z zH;(X2nX}6$|MG9mzkO0-dNs5;9Xk^1M(6SeZ`oJg(T8_d@kZ>(jY`?f`0VK?PyXS* ztL3@sYJZ=R9lPrW?T*?%J$>&7*&A;kyz_c_%g|tCwAi321qAd>)etzws%e%r!=htl zM;}D%<0@{riHG6%dpB8RsFOUJDc5ZMHQU+UvswE?*6x9gkbK)yribP- z&pe*r?c+ZiJC0u8*6SJMj@$0q{`~19STQ*YceRqbqs*bM_?R70HSg1}==$aIe5u@p zb5&4ntR-!W8m}Klwb(ig;@sMd*)gp>260Emm(;8_WJk=_RI)~|T4u+PD3TQ}JAlqc z$>GF~Eph5@i{*v>oujK{pU)lcSKLt%*k6BJkHNtwsG%Fma02z$hHg(kw}ISmoBEVQQC=)1Kl)?Ey;D`<0ELYE@DeEau4bSYqg6}sP`^e|l$S^?_J z`nFp+jfpi0Six#UUjRWyJ>fjl@xA3zMRo_mQoWVqB5Rvu2haUA4gDnenVIYm5g>2F;}fsMkc6)pOMy#~ry!Mt-8o619?M zrp;W%V{2#1&5bU#yLGsSz+z#_OqDiFGF=j_XGRRE=^v)YR=yFdNlPsSp;z&z0IkRY;nJM~jGFS6Mb#SaS!72@yKf7E!{`$$o zPrvx}#~-hk@B-rEUxQ#4EWf#y6uLw-d1$%h?%uuoy?5UI`s=3;9^C)oM;{u#kwb=t zD@gRKv{oP-xvnO1<%DoFCZ~FdPv{T2eyRy-P_9e^?XRp3>@clnMdi(XsJsaq6>KN9w zuj!P7)OjQZU#@vTQMMp$)DT0EdPl6S*@q^=_L@c^)D7wyaVhE)9N~7Z9N1AyuMF%B z+dgZ@L0J#EQf`IuSNK`W^AOwfG1aa>QJgOYFWB*!$Y@Z3q@?e%^`yo>{5YPelitD$ zcHDgYfwQCPV~zdmt+Ji!UwIaGjM_FiR32$zz4S@uW9Sfb6*~^Q6-RZM-^7kedUAEo zj=X6**pWZ^8Q4*`8*p=WY`JZ)rjkCsfxvb8G&7({aZ=fKe;%--oPZ2tjQ0#xj1DZL zou*W(DU7nOZFQqe6%p_gB|qHt&;X38tgZ@BdN1gXh`guw8>FS%j^^=914qc%=2`Aq z(ZuBG%uv|%ZWG#Z31c*)`I$2NmNoD!MLt6#yA)PZjW_wD{X>PKfxr>s9ZsY4Q z35F+XWP-%qm0e$ve6(sw*b$oZ)nZ9(VKY`$YxfR_RQ|3^1KhU3iZe)4g|-Ni%LL_WAY4L+ z6FGWo_q0CLaTdee#!`jDc}e(JqB#bhf(1cfk-^FZjV}c{i*xIdxi(oz;FuRI;++vM z<|uholUz>UzFq`IDNdqsi8-YV) zo*~>wuy_$8f#cK05j8@lCxnZD*B3z{qYZY1iQXz`?z0wlj2$}?uG+=Qeg4JMzx_#8 z6EoFez>dXj>G<*@w*3+wss#oY0;oka7DG+#fbu=d2V(zf=jU%xNhG$>^B-*i%pN1 z!wQYa6>BU_(A~oYOsz!pRnMUPr^WU&yZu!II+5%xw*|7?iDH0k>&)6=;huEoi4GB< zV<3DYe^M)Hhitv6$t6uSHjTFy zuM*A=2Wh$KXIiUCnZZVwZkmwL7EH{T7>Q;k(+Pou0JY*ARZ33LoDAun;Z?6C$yA!x zb+cGpR@F*M8HB6k7)B-S=27B~1TYhTaAd)1iwV!79T9<; zTQ8Q7bwL412aX%a&RZMyU3}e4kBQT04B-k_L#Y{Gfo7ddsi{_bIzLjy+}M%_b``1` zksnBTR|aC&+|Z4aj8M`WgHRYTrFWGNb?Xr@(i3HHqM*rxs^Z+J zX>N%3@;qiaYkL|J{v2zYO5;7J5$B3MD!5uU7jzXh9rnFPq ziAh$_PeR5i*il0Yaap-XPnVy4`RLKp%ZtSV3fwrLv~;m71{gvI z0_aUx1}8k4i?6@&`rW(t=<4x}7GbKKuNi|3Q868`f(I9CwVJ*8T7tx0uP% zv^x1}+#^Wm$eIwYoKIhV{niiuV*jmI@_SQ9tBjR{e+*3vx-V3Okd0;ob<4Ge0Xv&= z*4j1vBI+GE?%1$DHT`+L&5qJ%opRQR9XZYI)+%zS@&!9?eeXB0qk48m>CFQN;(U?| zlblFsg}zvq^F8#;!cjyz zokiqGW<^3;Zsrv(amv<&YsS=>`pwfvmraAy#9GhuP2vc8(B#yGqGvAN_1UQ@=fq$D zg|&}0V8h4U0UY-W+LB^VPZ>VUQ?=UYNm5QWKR1rRZV>I5%e2Qrfl*0U)2+VWb(ea)J?xG3Siozz*k_-hKDIYPo#>gZEy3 z=~ht5aG^n?P~_4)p!S-3V$OYd+AuptXgzYmnjkW+kjRe2mn&t69apY~4G^JJt-y|r zhdw7Qnbx)X>gm}({7gN566=+Ls5>ND%E(L$| zp1n*@ssF&jwHiH<>m7OF18s1yBlpVi!gP>G z*~N~@lQ1btVfpkN>^Qpk51tQnwubK*Yh!kgXYOmh0fCLbcQ=b%#S_=_N~fyRO6j&4 zmNxFt`?>^Pvt?cs>u{`P;@?0D7Y57}|VeCB#~lx`A!|BxM3pQjjh zlZc9wl|X{#b{UmiD4kI&x()`lVqLcZJDSdZ!>~Qupsums=Ao|sNW;I?>{UE7eUyNb z?$|N)3&c%!Ol>i&#A8**j{Vn&3}Nc3kqm7wQlp37jHA3yhn0h{=tfpov6-!Gc})Hv z=|j4fAll@>kjU{QZY6{T9omfXE7tc_0#7J!gnFF7N0);ZQxIms&IAvycX7MUn{L># zt_Phlz1JM8f_K{B!`+d5soFZZY^NuWsH90%v+Uc3&X^XOWiBzHRjsnF=k4D5@ywntFw~GH79UfEEg5sv{Zm9B#S|6 z!@*G&L^LRaLln4Te`_bnXp{Q4=rc>D=f<3tQ^LoBKzX%vbdcM1kzAamYpRayG>w`A zQ`>x%o5$LJyV4x2s99Hyh79C;2ZxhJ zwGKMiJPpMg{<7oz0i%knr?hOO}y~AeCHXGNno+snx`yoqQhEo(mlP zi+QF>g2h~C1v?O0jf^zX(K^diR)oAXM2Dzrq@_Yhs5e298a^==oiT)u6KiLsDT_57 zmr0rL@8$D-HJ>4bG~1_-P~{$xz^4zt`1q609)9_FRe9I=$=*>pKh(D1tZ9a^f}?Ws zj|tq(gKG(E+IwRVBcuOdXk+M~!PwAV*XZEB{r20FX>sTD|xnoZl;zC7gkW9#z5AKbq8r~m8htyjx?d$nmo1tC#P%0{8x z2)h(G?#QLch#1lmn3xY*JV;+quF>SfE`2K>pMEX!HyhvL@DG= z*|F7HOYA83yBF+uBX$f)dpUOd%W~{ept5uOU$EnKkN;HcnCh>S5d(B?7f~$~8_eL( zG`B9cXDkAZ&%=)0b1wlK9O&N#J9g0ToJJwYP5oCgmn zOH12WRn@w#h^VX?6%0T#FheMDQiyhoolU1XVtR6p zM#q}-l9eYOFc6n9_Cl*mPfY2Vv7$o_nw;qHi6L;D8+6-Dbe0D-^?EPHf?H@Zg7{qL zU`MPw3amEF1V_x|S>Sp_WlAmGFnKw(IKCOdI;$mFQXNN~>I#t#Z z`mUPr@X?cpU!6a>ynK4Tq_LvoTuk;RlX*VfGx;Q%=i?b;|z9$z>ccmD}%V>nTwpWW_`ziHTEU_ zRA5J1E38=Gk?jg23-qAgQR0q)rhVNM7puk3ezExY*J`yuPd*H5L}5x?9jEI48}~l= z=v>8G+4fiqI}YORZ3??($1rJ@U;XkI;j>Rwz2+cX)ZW{q*3h$~8Q;Hluw#(%@-ehVke= zN1(CpHF`X;Bf85PCP@5t5O-7^JC1y1+UKlz5ZZr=m<$&t#GUMT6)KGG>wm25c)cdh z&g~TcrBsF8)>%cV5s1C$>sU?XkB}X20&d?DNB#$4$Mk$tqi35PZK~@++^OM9;dxLi zuGWvbXUEpBEZS5mHy9Z+*jlbRALO!iJCa)REP>@qP<6!d6$z@vpxW#+HukyMQJY?n zBJEde+r41}Et=cIz81NE<3lnIG~(VPh4#|fARLx1RZ{Y8R^35K14<~)7%Zi zJu$4{1G;QCwA-*Qt*-~g2@&i_HxlQ~Xb1ZoHv*lJJp+jii+oy?^q5ShhD9J{Xc|}1 zpjY|yYqeei3ku^-eG#s#PO*n!Qq@j^o#bT z*7o7$;>)Uf zY{PY#K{Ue~)HSN5qjNl-M|~0FV^=Q`Ma6!5?$q`Ck7-nURvqQVTxSy)+n``H2dojY zpz)e6AVsdgi0IF@#EuZ&L4ORoU)s2%v6C#Hl$L%`LJ3^**U}JU%G^#0JDcgU2$`kt zUDn~z*~OzL7oR_RvZ!3hK%i`9P5;sHDzah*3@vAncx3rbj?vP&o)b6%4N>yJRmA`< zBkV}Oa>_OY*9LIuwVYOjch$+s$vf|UkErM`{>zUJCYgpOwabh}78W|;Xtl1mrTW|> z`pE1UFQC+;*xMR$$BPE4Js8*+E}N!8Y>wlOv_jx|M`FjkapkJ6e(}lUpZ|-xyd-vv z#`QVtNIN)DcVD^p!4H;2zKk43MYbpOaYsF>eH7jMsZm*ddG_h2^=F@`%L|ql3h?pi z?Gl2-=A|@w^D42yjuF_pD)t@_JHGwa?A6nT)^4>&og&zgo;RGE7S9+_|3=e3)UsFu zJZs~Qs*O7$+fr93ZFEeNQt#MQLyaDk26XJ`+j>WiJ8EfBO9PM~vVXqCjsiaaLD+HQ z*Bv`ye_(cO6?_Uvg&^+8aWKhoORI!zWG9MFJj0?nZPC)8m?_ns4C0Pq5Jc=N8q-K#p-Db? zSY!Hc@7l4)%09zROgT=PYdTE}F5TQ~t4WOva`(5~_#(nRN$6YHQTl1*+j(#Tv184# zoKYE;>0%;W9^kzdC^ZOY0^Mwee(jtVc5Rwwxm;GOwepbs0YpSrUc^>{ zPC4V8W z4(eIhkyx$_@lFi)mH*zPxSyE^v+}f@){Ax9Ag3-aF8MqRHNlZJPy({1HW}h)-V-|# zI6iIYUd^S?NxlvLP0$mg4s3Qrq(;ZpIqR^uR#b{u!6va|F6^iX>yVlze#~`|2aAX! z5v9qdHlM*Trkqb52DDH_j0by;#&|k4MVZZ~=gZ5l&d)!4^ySmb#k%rU1E=P_qtk3M zUsN@n2n7u(qQQixWnRvS9lZf8@`=WnMeImWuCmaE9_938lO8MVNMwm8{8xOAv+`nL zfAph2SuB?S%m4frcjqMy)}pB=G+CJUtI)F}R@7cIJNom$`i=-aGCMj?G)cnligjK8>eI(R{U>#CnbUg2j@eP=>el@`-~VVmo6%=_E*%kel=Emq zeVGr0E_KM8_2m~2*T4QmU7RyJx*M{iyeO*-4jH1%m{7aQ_ilgmUr#@HfBwc@Vn)PE43>#)g9pe zZ`*#Fw)i^zQ_|DVvenN&4&U|TkBl9+zwo!<%k4hvAv?;$s++Q-bi=gl*uTGZHEb!c z%~>PVkA*kvYag@tZOttMd?il1FVE~?3*~~g8F%dVV&FT{QA-s4Rt^Akm3-X=V%y6b z&#k&KJDQ#y$BvHwKYQ=_CE0PFd4{)n_ls~gn*c;oL=q}xXJutx8}WWC`rdLS5Xc-UC!1ucCYVr!whrQy{FXhoo70Vgztw^ zUt7*oXZ6+Ns)macO|K2fLgM_AMJUU)M2!u!OB(q!`57Cbq&^|$xOML&$;F~UgpIN! zB`}%LqZlQrO%b$l+_l|GAcU*681;-q4HK#0G~Cld$2Qe~%PgR^3iXb0+dQG;YP|>? z4dq1zlZ9Mt>`p;n4V98=QzQ3?k3*aWhu(HwESUZ=YqrhQnkV)Sj*8sYh&ZtpQH($1 zimC}Oyel%bw|8f=di&0uJL{5Qj>BMvV52`XZa7B_jKa5e4;)b(DSt(W8zKDV^UpkI z?WMYMrwe2A{%;qHg*b@OW>m_TM%Ol3D0RPfrydH0$iqThMs9N`b`dr1v)uPg*|D;@ zwJFaqVAW1bp4U8qh6-??;Gm*@7KxGI$SKo9U2Qlcz2*KDGJb9`Rx}8Le8M zjxWtO)uP-GINn{Hu9{}k)Y@9j(O#2{(Cm_oP(6`mXm;Xt1U*l)LZ>4Sc1+ma4{#JC zj{KqwX57zYSbj(oQ=+(2*pct+{!q{7Ctv@A-+S$qSKF$5=BbJJiKz{wb$Fd{iVUC(&nXDQSaDyY-?7u`mKtjw(fbr2LzbBfw9P6h_FsPU=9^!iyl|sQ;TZ#&ftFJ$xUjpr z#-`VotaI1>-Oc#Ie7wq_}J$`4|QDl%CV`zw+ zdxc2_0mXq^%%^5Y_BaX>64=%|GOi85QGIH5MAkCIPtao6%&;=(L}AV9mPHfcw(KQn ziETsvQb7g}S$hL<6F7;r(mcEUbHrh}ZGs0i!V&4K#grxco+Dm4*fx13P%W+bWJGQMZ-U9L&u}LM7|&_PaJ%EIVVz3}J)UPr z`NJ&B0%8!YNHC_zVJ3*bwonCcS(&oC&O5&rqhnY(?r_(;(?#6a`8U984slI|P+`I! z9{a&lSQZn-)vXPp<|x@}8)Kh<2%rL7@q!pS7Zs{$M#UGYg&Ed+NGD${0RpEYMqV5JqXJoR{c~+y!u+J zQmchm$KIU=eG>dBf@kRP5J3SO)HtY_SBE;81wCdRbxF$exWU~)N*oEf9b6CMj#l+K zYY2hoXt-wYL9?jKWN&7tBQqKMaaIzs=V|H8`?r?!RZZ;ZttNs%Au8KX;|wRcXJH*> zM|4#YMADf^q|qiXRFbQtK+ZZw5RC*N2@UB*oE(Bq){E+-E9s1;Z9v?y<+kg%UbRsS z>$w-7d+Eg&=wHu0d2>o+-=M#W?w_6=>!3D{TV$MKcBHWpo!5kn(rrC=ksa3%$90?L zVs^|Mr|;bV=)2!j^JR)&sTQ$M-PJoftM(5rz5Hc;<=T?AlLOzW1l8h&A?4BW9znEQ z6K}#ZusJ!Nzx%$r{V{&wTI(7#vT$}Kj`^IN)}5XgcW^u3r6V-!5}DX3VK#O=e*P=Z zee(||FWjuG5_W`o0ffP^RO{Ihy)P|mMZ`X9+=d2OX(w?8tPmX636>QlQxN43k2!UPXzN7Ki$qO6a!!4BN~xW>_Wv0I6y9gx}MC9Kp93(L9? zYrk4_HDJU;j7vCg*NvvP#zJr_O_l9x4Is7W`qGi%n;Ddh?2(O^3m5en$+kw5KDfC= zcfrn)uUmExGtTh{4;^v31ED)_!>$rq{@9%PtFs;1tQ5rLyEO)Mp0&tfx#6}hDeMp^ zNo)F$$#_if+>~WJH8zn}8{%>~bp1B;0aQ9Q)@Mo{A}~9GK>)vW5O|HL5?k4^$$Qsc%Qf_J*T8iC2&v4M!{V9t=cL7MT7s8%Zle9h1;Y*|Z)yedEqeo@S zb%}<(V?wVlO|RTtEY^gKzL_hvNYZ=CpN4kHQAA{)otikcr_8?2W^e$cW96lHwU1mX zgu#3PFT^0X14hblW1{@Si<|CCB!DbR)^c_3GsFSu1MUaWqJ97Uu z2XvJttZajkoV7#wBgPzS6XKx#{r&0QkOuRUdBDT zjOlhuxClgf*Gn!0_8N_qZ9+`e2%hsj)T8g^Jf{Qt$YP>?p!k=i`n_`l%m}9hJJ6c0P$6 z&tTMVJ3Gcyb;pkV?E3{fe)`96EIam9iJucY>dsze4f_PO)abUBdLpgjGZk6wf@Aeq z>?m#)QW|)k9U~5QWb<%#R0Dhz2pjT{*k=pysIK)D-M|)QoDEy5NMix3&_ax&Wr0C{ zE+rzd$+}0e=sOa7lVf5iO%v|K=w^BuqfsvxB&I(%AYLl9^wWmRyv`xi1gj}nlRb#IX4fH7|37S(hs9KQGyUwnJ z(5zr_7CKmTY9c$*Popwp@+3_m1fC>0K_vYfJ~3f7K6UM#)$+7n->cSZ)o#2h300?8 zbT&#els`fWn*-3eLvY{?ODZKT{j@3k3F$;Y-3NX%A<3B?ah8}J!QWeU?CKpw=Lqpg zT9B9&KNWgqT2{;ADshv3@PtJkhxe)`EL4o3w+Ql=w2R?xhJ@OsIO)o7P- z{!}4zP3#DNLT1MWvNSDZAX~q2e$#B(vE_P4T6jiwT&~{x?)TK4`)OShI|`IbFdLmA zV~jhtJM2jB*PuWSI{GHm zC4!OMB_oE99Cz&5vEH&{?4*I8wc>h5-K|m|!j4hj(MN|eD3eQR{>#z(Yw#zJpb;(a zH|HyXcIM_^oildw$b)}8N`Lf)kMrQT{iwdiW$P{&XJ6HU$}Vr2hiu9DUYy504(3y^ z(IY+d!_RN5H{0&f=e#)=X~;k9J0EneALTd?wN%b;Lnk1zeNUIh-LfM(4m$!%I?n4Q zod=(TI%_2jC>%%Z)xxD&g2p=<6HkbI4W7TQ;$Y&peYpGZW3*M&B->V8azd}i2}fkvgsOTkPW4zb;cGQi&b-xM0>}(NkWlNCG)@6$=dOS}tz{Rw0>^8h4l`mxwf=!)bEu zXSLg})wiB|akMT+EpJHzBAsv6w0q0Cytm#gjVdMRUS3CAh%ldl`P&as9_i*z=d(SA;6vm4j0JbB~#lShZNOtj)m z80aEHG`INnFV?Vu?#aw9#zYWZg-g+IcT2Ov`2p37#7|KDC`@H(q$<&;MfY zmFJcU^^RCLdj45Mq84=^+yKNS8;;Y~fl-qFbMTU3xo?&Mr=w5}*bx;%fJNl2=?xWY zgCnoa;$|_;&3)F5WDItu#n?S24o{NEMu^ck-|IW-SOuhhC)jZaj(tz`gV@n`NwD+m zxT^tn@ppZ}j*t8Jjb%p!3*&KkAUpQYciB-?l%t7)>iM#(S;Q<&OIhVlpgPg*^JmA7 z@@Y}{Ms*9u0Xtgh$%t{gv+O9nv^_g=9 z)Q-hG=Q9Uv;HLEK2amsvEHaS_u%{J4MivJ!rctgLjk*~^QY2YZuXat{%21yGZ!IQ4F|{NCxURT|45>7Y1v zTW&ZabRj!(uov}|sc#FVN2;BqYL@DK=(CuRAdgJExYwFjj-I%xvxC}Ybf8mRSv9ZL zOIP1tFYi~b&RF;kx33MHb8lTsXfk789MMVW68GGtn7Wm%h-Z5xYzXRmE!Ct*ik3^-n#A>!DT4~l98qS}_n+dAmdjPmQxefclG zz4yus!jAkG_{sU}EjvPJfY~wB7^S&!p8^w4>d?Qf|I{zo@$-B9?yzHg z&JDt}_TSK$7$9TT#yWW+n9ytJoM*>j{lj^Jlg;iX_}8Tt?M?)#Tl+Ac%AwC?Sb`(*-T)btMSmy(+l z+K()}P6rEq)+1rZbld6AHH|uf`wQJ~t))LtS*V@3k_r?|>x2E-Q`c|2`uwvw7j;A25z#Xg6*wf> z9dY3**c0zhv_tffUU3q4RLqW^*m2$Z5;<#vBMoIoW=DxTA{E=VSzX`y!N0h7KeU_3 zjuLw0z`aq~bbRyK@vARyvQcXwVbGG&B7;7X!5$?X=!_o{bU&Z=1(f_NJC9?y@tAPW;G9mkw_3oY_3>K!EpsYRR!jSB}^zBxHbeLG9-E7xx# zM+sgrYpXwAuYY{|&OhAxAUT|si4k`6+#pl4^bebxb6&6?^SRv6;g0sB#!VW3Ewz`D zWKa9T+K{3Q0L{(;5z~WWQqSjaTz~fZIuxy{5>NE@(fa=Vdb2=eJ;1F+nh8*1sj|dO zM&ktbCao~K#*OIuh$BRK!kN(?OAzaEVge5@Hd6`c&eU0P&*aBJE$VU}%G+!7X9A*GQe&KMJU!iP~|k*6GY>^)1-U6rM%+2fK4PwYr!$uB|@JRNC>*CbNc$gxJ# zxy#TeNG^M8EfZMHk;XB+9=P6-b;9Wi&PK)F{=P{ep}=h_emWjKef`GkFTONM@yEiB zsCy>#_o`|g%vzN_C3aNq#Jf|p&iECxBkCQ69bH=zKB8AfLkW@Du|=bq3oKPbV0Z7w zKds+-*Q_?X?8t*)I!>tZ})$Dyx`w#i^bg?cvpA?tea!TZaf{DhV~8Otc5 zsZC0>xl=ppNwHp44_KFKY0`#T3;esvj$pc~0qBhAe@YZmTCfumvb zMq)=LaYtsy^KnOFN4B@-@gDa*Ey^~y0bOMnCF!%kj;+^FvuL32=<%z#s_Ak-VL2sX{e)K)R_5EJN z_A6u*F*UXM*AOD`%aroGE7a2T%Fgx}{ zsAA#&U@z2`9d+>i`_1|KNUo`YvqI37(@W(}HSkgTWf(WPP)A=7%Cc(5Gy2T)&Lgq& z;^6tR!9~8SKcYJM=|QltPYv@C(0waLKdeY@cfieCW$c8}M1(n72IQ1R;5J;I?H|nc z7Ukx6y=q0a!-rmlyQ3C!=F_AX+r=o1>OG6qpvPq>>#cVNf{Q!ocKrsopYtfUTFg5S z9+71SE7Bb%-s#!j#vS8t&vT)?Q~KG>w$~@dZtYobo{oFClUi#U%B!ZXs;U*?ANDYG zgNBYMaGsu~;pg>2hQy5b1zT zT}U8sXxZ>E>2IIQlWF3b&0pzR zljCX~rs;;h39TQhzOx)Bswj#~mQplxM@IlHa?0^m@~qY8;j*ZFbf3bF&!>ov)d-0P z-4b;X(Oo(?b=A6cx9al8r%h9+oZuRjtgPB8<)~bgO)sVy>P1<^3Tr~b!7NAI(W1Js zb0;F0Wp>2fnxxJmbBzdgK0@~md(3qHF~p0BL>$FermJ_P#f0S|NM6oC*%2B&OwI}Y zL(TORYs0fu}lyn9zp~J*%jS7``6z1&R-vX<+Zu;tPSqvriD2*_sU?S8kVw+GCh6V z(MjhuoI70|+R}p^W3eOllI6~jvle#j;*MzFaZ)Z>p;yK?^if>XDP@jvRO##BJ#Q_q z{aCb;tDodoap?ZtWJgh;l^qO&KkRp6+kJVi+UyH<{A?e;73`?Hjutz(_Rg@QG*k0$ zz3Drz2XW|_zcQ-fO2<^@5~q4P8bahFvZEY9=<@f@OPaZeEhxX|py)tU|{@Jn5@#m@qBtwUm5htqM=+1F% zU00Z*SR_bEz=W$*S+&IH2GX8%T#}$NqX{}vtEbaxkr9SD`U&BZs`Yh4lxaEQk|~=f zFtAQEGP&03#d>kFJ}v7FeR(XXWyEA_J}+yt?LDPcZuKNhAf*l;+ zM;%16TT9sHB{*Kp()9?k5_0L42`g>xd3UcY@0Q_MsgkI+P~+4RF3XWY>#nh|x2A8+ zGcHCDi&MZ5-d7N?p_Vb2s6zyaO>}O99qEsKk_A{`(^1TAI$~!+v4`1VN0uYt*V%GV zNgX7cS$pZTW@?mD$h??L_YXLg(VBkC)!~@|^S3NHj}An0<1zV>iOaNf{-PGMot; z?wjU&9`z*RF$g&xup{Ii5$Sg@du-_*=yTQ$_sTeKqk(?7cN}+Qtdu~2xWD$kGCez* z*e!%w3yz(~{JT7PV9xsdO#C1x0Xx!!QzGVA?QGIT$IT45vp<;< zfRySwc@KLPqIbK7R!A!eYj%La$>l8!NZ~;V+@uC^GET-xZ+?(q+u{CfQjE~%;zAli z5+H_`YEvXOQwH$E^%(b#@13kpYts7$1A*Qm*kWZE~6v$4(uW)oB}!Yd2SZLA0#YbYGcFWyoS1 z7A1%^!39joxy_wUQS|N69Cx%FcT7#f?8v8{bJi%4#6r#{ZDNB>2^@(siTXO<>cpF@ z%TsskXrctqmK_au$tdxX;moy4@?u8ln2!npH-+G17x;&1*oS+BCX zrWb50ip!Ee(#To`@avB7%> z?8uGeEsHWbPGLJSBt*R<=d4A$Q3teCx4v?91yLebv1AWkWYa=;UI#Q^qux<6>|I2h zwag1DSou7CX_ql~$53+B{=3o_%vwZA^?0BV^T{*bqeE9J8$1YDiv!kTc zS+V>qJMx`w+#th#UK=ZxE?vaIa`GN@Wo@m-J{>#upR*(T6}BahpBFm@)0c$y4}=$L z*jS&5I1cR=y90BU9lMM*lG3cvf`Ae?KwiB(opGh|REOfaSar z_uqQ7`P5oh2Hn;?{-fIqmc+r2TmSOG;X#@d2}<8|U7`RET1CuZbf5CAym#r!$BUDD z?YgcumyCV>=rZ)Z=?JtCj!yZbt{+`#iQ_jL%-uAv2U#n1qNfT;e2!5?d^E#C5*%B^ z{8nl5lTCT2Ztrc>DWNT-WMIr4Or2#79it@YI!IA0FqSal(*7Y^fbz`5(cAOvs7)O7 z6ZRuwb~KO~A`Z;}j!DMZYIMWzvLiZXbYw>@un2a9?juU3la@`c!H#I$&nL6J@o36Q zM5^i7kp`cNd-f-J@%+u3uf6cnUZESvxwm1!juo+^)7&fLPn$*|wrxdsq1W`_6$85E}^|#-1x9`{%+#};T>LO@|lcLu4@Ed<%uV1MX+XPws z3^N1XqzT`T3ExKuywQOuTA!}hZ~cFNlP*qexuJ_X_C-L`(f7`roj#&BeFI8dMf7n; zbQe|HHrecJ-~Ows-}wE7H{4t8Sr@~LHn{Q96C>KFQP(20G49BUj|6{Q;Mmlhv#yo& zS)UBS6FUSMiT)Go>!Jl-$IM0s5vHSe%=Rbz;Rvey~yxa8+lX{5rj+Pg0v+mgO z{BQjO4#OAh_@GDB+<#Dy!UIm~r(wqju7AQnlh2%GM^T$U!;Y9zI?Wx`vD8D@5zD)T z-{S+JRfc>S4Ns;t<|9?kS?JM8U~;=hX88GPmwPVgl?mH@WT!JADCE-|Y~wHo*iL#H zX)RV1i;XfyqJTqzZZUxFd2xuRUDDI&oo!=n4xYVev{hw$m=@38c#=Tmoe$sl)4bK( zUfQu^cfV}oYJ5$cLB@Fh^4DB^C5D}2Vju9HLEd)2b`QGMc5~tnT4gA8(OrN39GNbv zIyhDjU`H)lDuYi*WNnYw4<98z{NASVba=szc6;1*WrO@~%yrubU{&-Lz5g-Idr3yuk+bpEKpn8KBQn3DOVPYB6%Du6-o5r~=)ex)asTePrFxl@JPbnCD$p@_kv;fl+sX*!2GLjq@| zgj=}LM4v&i-Ez{|Z1;eLE z8Dd9$fBuWV`I~HUnl+W-9+Q5V9ea>vIPG2<=xqDW3o9Bq)+X7Q^v(b9*H3)&n+uot z8hzeSd1PN14xoxgPt?^%t2J7x8}7eux%0Z_)@&cpZNA~&7kUNm)imDIJDYZ+-8Sxs z)@=0L)Xa{xyx;nGYIU!=z;eBez;dlhK_sgVaRo~+e!kUr9FBCq3GBG@y^p|->VZfR zzggN&L#N%iTRZg_?8smA1v`E=kJ#;h{s;{EXD`_N&zc>F;HVyf9s4%m3)!*vp6c1L z|NJ34<|0g^Y?UN;RCOA{CTvkA8ZZB*6bM z=a_Why<_w;2*UZ@xZq>4Z!S)PQ$9JN(kHe0vTeLk&(RCNkXrd`O?$}v1 zUZ6L*(?hD0{<}nz92q)pQb|pc=lOUto{S0t$9wngt=BYhx6mn!)dj(JuI1LSBq#qf zVH(>k*YtjxT2Omu5Iam-mj$>BUO7CvdG*S{WTxvjLx2-*(DRe~i{&xRnQ1C@euQ5p zW!-Gc5XtPw?aAEy!M1|Yc4g9_gTd`(Rhrzse>|_6O{+Js3DzYM8(OwKyU1{lDyNxf zVTRutOonKlU9a|ox|tPEjAw;`@;3T-Lddx#1f4y2ju7}ptF;av%vWoAq9D9{l$mFW z(aYKNN|8^9--IB3!ETSohWvI$^Vw{&>~g-L&^x z#2VWSNnXvDG7{5NFJMQMW`w5Q_R8S!gB=^X zJh=*`^OXruOOOyF_Y^_gqqA{9zjq5jq)Qq%A5JDaWOZEFjpvl;y_S&1x~9 z&)2Iprxrc;Tg%(n8^&f92~1tCmz&MTu#*vbToNt)F)%r9Pz`x$Jbvo>6Hi>fF&m9l zQ=izTlT5pLy~ZCtZ0e;+()Xsy;@dPGn*ck zG=a7>ohp(0skz-0X<~LRg6j;e&Ct{mq^mk>s~eNa^iVxE!yU|te1^Ct`!l|GQgpfXx$r05~!5XMjDvV9|Oqd=c!@QcW|LX z_X}Nq=$j#$0YdUbF@#J7M*^BlwXc7*Rvu?0_MO3dv^L~4@zxS1wUw-oX zRajcP$c_lEwdfMrxG;y?mb)JsmIrS);%D8u1^lcvvEv3xkmxf;!W#I<>=<*_jxGds zI$!?et<5jq)-4QR;zEf-q{b(u(fP|S9=`N~9~EowfaSf6j*MOy1#KrZflG)0u7IH0 z^6kI>`(l2Q5vA!?h84beV>d~xt%%YUerxoncBIxIQ=epuCVcHX|LOTZ{&QwWI`L5F zaYJ@w+b9dqRxg1@?vIha>B@2A3+JrSU`{Nkox~k$71^;;yKzSWP>w#9(ncerapit%wk~{{nX0zG1g5W{8hNcH9cD4%ktuzU1{GHxE0z)dMc?5O&ORT-aI)^xMW>(m@=h zQ8Q>`!6Lg->t1kMzEM1F|A7)L(^PF^ z%>Z!KS;kde^=iykpO0~BiKE~+W{D+soK2>a@i@GEz zb~G2w7bi_wp`4D1^zBDR@6YzGUAlbv(otc}dbuDf4Zcm4OD$0mda)Bu zf)l)CtS4tBP#$8>0Tf|+Yk03}YyR6?|8nY@%ZFF?im8Pq8$p_*L$L~6-qktv;y^i7 zsZd)qXVB*6&QG*^?#h+R1hSh|&f?UT%@-%dsJj9^&ARh)b$`BCtedKVFygy0J>T+z`69B74rUIE`{V$ZdwYL9!82eW4Br(Mgh*w*T$L$=#+r zUL)2>=b(W`foeEs5u(3*{K+ajDq$U;$7M%)kLWwb>mY?DyRf59b2}a-qe3bgIpm7& zCS!{sJBlYwniZf9Nk;R^s&AAb)=Wp!>E5M$G$rg2KkM`CNatcxZuZ90H@^Jx(>HG9 zX%d>)t&FcG9BkF9C0=x*4SwR=g@-L6e6G8=;{s&~t^_i{vzyb_lCust$}nN6!(y@g z*)LZ=`?+qos+G%h5fMf?M7q%?ec_pFuf0@{^J?pHDtT(Qm(Bi`ns_j^n{-_0Y$TR`&4q?lT_p zxB3D9IqAYbGwf(oRQB$;N|v;~e`g~4HQoKzzhBAojvcwG2t{Ke)eP;4&@O^1 z;o!lcM-h8d+b)e^1gk$-+e2u!;lS8yf}o?~iJQg}*CG(3eHV3;TcS^4_eC1pk@Q?} zQTA6}*Re)Y*;p;9&upQTjc3{%P4;Hv(Yh?}EKforA+9b39i-}UhaI;!^-iDlQ1Kf- zQ?*mqxRqQ`F}LftpN!-WjCVsfPw0!+id%O8heSSR4oS2PF03ux3YTz7lsKyOetT-p zIa9~uBkKo_+i|wH3v;MgYQ=3UDPoMtwpV7W%OhPaa`I038*ZpS&iuxFDo%}K}+YgK5IX!JGP(9&uOdf==FnK;*3uy|Rj z#r~?m`<^84oZS1@rET%+UfmkH}B3jcaB%@9pC%7*^~)V4K40d zupREr%?R?i5&QA550J6l$GGF-q9* znsXFZg+$nqHZ>jXX_MDLOnWl+}mV@9T#m&?0D>&)8JX7$9JBDsCQg@ zx1lG9JJL^8qG?98Y~$?N{h1I+ub0&?-@o^Rf7aZ|B#ScK(HfPWD_WmCdG*ORzq%y(~Mp1dsr6LZ5QFdhh%HsBhoO>B}wdIO`JF)l07oivjgDj@+TV z6L;)K(W-SJN$0Kmy>I`g=l=LFS8Wz5#7!X?iK5L4R)lOjgkBlPc7>dAR!ylnq)y}q zOKZoxOc2RAYg(pot97jf7KzIdcVrE7R=;#&LW9alS{BvxMcl;gjL2Vb1w2|8p{1qR+4eYq%DEI(& z)Lpl=WcOm1jN1OxQpg@Vgs|LZwGC5iy;kkgIa*}b(1Jy3i|dTQjysXX2eV`Uoa=gH z&bsF1FR=xNrLNCfb?g|A=HMfT*J|8%vmGB~f1`?|HIKrMvk|6t8p&>*-1GKKC8LD# zOmw5^D6PArx2H2&So3v@c@WXXz6OlzrgU8K_x>4(128Yjub81ZFc9Urx*kb60vLn6 zL=XcrV;|?!()rWxU@$vDQ~m^+oZHr2n6fx?*0?7NG6m?gj-}wh}{yK>o-faB= zZA1`Tny{Eoph?|z4&TzZ?#|S324ljGE{}QuJ9aPVn6%~NQ>5AcZ13`=qf3_#i5KT5 zC#R>!^dOGpST&C1db4UPsFr|Oq~Tu2>)*0?4VO0v>zi7%Vgd>|gF`Zs2(j2gbbZOBjsAFe2);6gv318OB!K*kFVNO-yVB+mK_7^ts58^hROx{N%&Z^$|1)c9UJ&HX0vYI{qWXzzn?m1AsS^^ z6#&8e)D%m)F0LLv`v-59qqN}xjY&anIWeK`QY&4Lf8x!QKH+5X{tvzvZoNNZ8A)ME z#2tMr@77&Uz03&Po@@EE?(RbnFiq!m`+NW4KfdtC-(L7MK%Wun-CXZj1!(a|&RV*v z9UI9Yn#gg)Mq-eP^&Rn?`>auwC`vsoxX?8ccLY1ONQXE0$*tDFP*7$g!9~+6NwM6# z$e{;z#1T!$Uc*b+QHzd`|MwDil$m3<%@B*ZUW)jGNIeO5I>)%Z5}lZ#4>1DoI7N$tDqVQP^m{^$Ns8wgTsgbixHDR!yN-ymha{< zFJ4D|8g`7I+r6LnRL|1l(quw2)~(~a8ye;`z@_WyiR{Qu7!p`AgQeh>(waudj3bU& z)?GDQ{&O)o8B{k%ViXR#e-EO$U8-fkj)MSXm-CG-Qv=R+!!bua-n~EUvzE)CKU|ol z++YJjWM35zK-cnVV>dMauxAT(`g01OUBsVa!*zc#d?Gu>oVD*zQi}?yY!ZEUX4C0( zdbqd0H=a&Lqy7Eaa=EyF|F~SQPfkwm-o3rqteECQckh6r#Q9pWRw7gqlLRj(G?lxm zTvzLLo+eLTJvtgsCfbgz*~`*VP`N|q+OisR;<>_7`94ogmxs%;Q`h{nJ5)TY_&rO7kn>D4TqYK{ys<02iI<}g`- zc4a!Rs{5xWcTP`zj{J4zebKf@nSNq#@1V#=x;@HM->iyJHoiQw*CuVVnaoQ?vvb0y z$iq!sRmiGxkt6YtnwQ~tRiD)6$G7G+76paMMhM7pMi-5-stp5qPWEbI`$w*Hlv9Kn zQ>&RK0mG8BMm{=0xG}Im54}V?foK)6V+w8XE@!>+um9qXIqWFd;mzO|C*l z&_Z|VrqL(M)xG1B`EvcyN4JwKO_KbZ-~7Yr{$9_Hh|p&FWOkU2rZyitNF^ehg0hrz z?8u=?RW-D~{^)T3kN@E72cwbrDLeisW=Fko?zCx7baUdG6Ym#jlnG0Sgu6u>%HTI3 zb6;|eBmI=LH4uy03vQgQ&g!~+?}PWh|4(D=Os$ew^+7*rk+7lx_HggTKl**Jqut&_ zgDi8jbl2ju!fnVin}yTUTmSmQ`rTiS=mc}zF>S@hhwDAWzRz!SBhhSzTbK3LvPHFR zi@0OmzWEn_^`&q9^~$9PCN>>Af~VQf8aeA$MRr7dQ8lPj?Bb3Uc$q_qgo*5D-AE_3 ztE#pxn+E!hM7bK;mk2tdH{GG;QE@>Bej6LZeK(~VUNo}65Em|sH@BEB_G45}#$d-Y zHB~)3o*5>8!`ZP1$E|8(H+k%IbUyU)5O(Z${|k2fj31xGj^_#-e+}%Y203UImk<}T zBMToyPeQfJj-9m4mK~+a${_R@R?5@3iO{2uxhhLDNVtFONK;CNMWQSmb)!4p zO7^ymYCPM+wmp=)*XCofBR}Wa?ZNC=*z}0dV>G^XeD8FTqT0EiJ@tTz9_Z! z_U+r>{q8?h^+ri`vi3rdawjr_vKO$$M$!37(gZPJ*Q}RIn%*X9dTqA<)a6T;iqXW_ ziC1~!3RD9VLAs<9B$BX)acn+58U6C)-rv3Ri+fFFMx(lI2!RS_N9g0gu*T3asj8-i zrJ@r$_e_dbH`iwbj`^rl$LFG=8KK1 zHa7RRXfydTvgVQ-YfYK7vKsiE}12bI~#*EmBrj zz*@_K_p+{6X3LJcD6+{Yn~doXT#~ga(9t4XS(oi%SA9o~P?AQ?kM$WB+Dq+qS2pKEqYtC7hEQ#HA>`0K5*0uZS_B-GGep=Fb zaa=JhgSVl3fj+Z2oWA(YZ?xm0wi0)Y%^zKNi|L;WP124{=r&m_Z~gF}n|FU%&{?$* ztVtoQ-T{_SQ^$^53(8$~)F@(XO_D9k=Bt1DotOUXKQCOWYS#Qlp`&AVtht}s2|Lms zARUjmBiPX>jy1Lw5v0T&+j@;sNcdT^m1wzXDY7=pNVFn+SUVIP<{V^$4=+=aOfO%5k8<7;lj_0TQnGgA2d?S%_en?z0IKN zw2?!scl;IM=L|eQq}^xuoAU(u*dC0J$(oP9V-M0gdA#p^(0TtfthpN*`-JOfxGk!q zI&;Bq27i0uU+%un$3Om=bV+yH!?dJ(A%@u9+`rPZqrB4jS@X6@>?G0saWkefzXqaM zni#;E#+1W%F#Dg^|@LOFm$~pe7=nJ(c8Jdqy1TM90;UK5cIsO zjikTL1N0+@*J^)XY->h`G2_@qbGDMTdv5u+an@10?1(_1Nm#OnIUB-nm<^;0D)1si z_^Ip5W_5Q6{XzMggN?Qid+Si7Z6`g3i#x4?8Ohi;uiS9R;3zH#%Zr=B8kBz&a( zI5|1_;Dh%zY{ya^pBzoc&pvVE zOV^*6)qYgAqpB@}nr4{s+Z2Yo2v{N^YIK&*gZqDe{I747Cu%lDXt8NVL@)_jL}*Lt zVgs*g0-dI!|HJPaxei8FKfRwF$}~BrNlcbaIv!S(eLXk2^`3d^9R%vj97pBpHo1O?$Fh&6kT!`CkHE3^1c=t5z%}Nq*qP>d7d7`Gsd+d+|jJg3+|+E%cNCo#?Y}8}5~9<{lo_E4THPA$00e)m~z| z6|*C|@hR3H1UqI;Q!G|L{ky*}@7x<9VUOZZVaL>@3;NrG@hji_12-;Uc!OlUw6;k2 zuwN=0$=J#uJ4PDJYgg)Hk$M2uGbfB?4iSyvr9mMCY0SPyd9w34Z-4SJ|s zK2bHgXId0WA~%i2uR~PRGg`u@)3*ua8=Y+4t|nuTiBjR?C3LF8piW(k6XF!SSmww>=ODB&>=^ir*zw^SLtn7t@bR0&j`21azH;GTo@K}FmkulR9*Z5> z7>xhQgg(dpaCWSMqUraT){Sf`6CS{h=j8>W@|2eX-$+#P4REAY=h@K@0%beL`5Z@n zN_I?wJ{*s)99>?lmUrhTE8jq2PByJ$M?_Ri!dgP;8m{Y_CHb}?0SgVl2+FmqCI59s zV=Ia{?&N0&M{lT3bkU&Z_;{;+Yzd}sA&N)-!R#2<>tXxO{`IcUdfTOhM(mCqFS_Go zn|Ig|NyV^rmoc607*CZfq!9*ZeDFE(dNyg6!UGvOPMh^1NqIlA;hicn*b!O)Uc$+0 zmmOzW(N;Bm$dgapeB%0z&1!My&c}D|+!>9s21&BI-mKf2&QI0A=Y}XJWHue82!pnv z8IQ*6s+`Z~@yG;k+s3r*$XMdD!=iZO>F2Jdqr*mxoh!IP)gh@FV?voqDrLU+_FF$c zxqr(v8+7GB)vw5s!luNISui;#?4{s=vvhPR)wBnM&PPT1MDEANNjFkV)T4FOawsUQ zHuZATtOzW$ZFH7~I$7MmJW)^HIJ$A^im4r|4!MyEW9Uy2J8m|ro*wK^52kd0+8WkA z#A7PUiPqI(xjsF;cf44xXkrg*XI4(nomqNQYn0h>Pq62HAT&sbMXv5MW~!@M!7?C7 zY#%4y5SMboIt8027U+*tMptX1ZIOk9g$(HqOEP$jrz6-v@@fh_@gsUnn&9Wl6)ohB z7weONg> zeVvjwH@mQ@NH9}c@h;XM{pepd@BAEbM}ta4Xrt3x9*rGM9EQ+Qm1mRXa`VO?{`sqa z`M(i6`o^+6r4x1xZ5aqB8&oR>TKupf;WpM78Z??WHLHbJiZ1eML-(JsTe4WF-J&{0VvwhVf|b?hjEyYHUMxQ}kU-c(H# zfVB#b32o=L{|k0}*yFd09UruBpEoct&%2bpU!jK&%)9X{e|YYyYiUqI21+i zy*E^s`yO85a_BDftw{|#?1)$zs`?VV7m(r75gxXeQ(SS!;cfqX3g<8#gKnVMn>_@h#3lj++~< zbEU8B?Y(sUiD$<9huVzmCPxcGt7P^ABc<=(yZg64`{^prJ`UAN+%TLUC0U|EZtTdU z1d-yLCi{&Zfu>HAWHOx|YfRuByLK2>(a8rM}*)~eM-di2CKRpbyGq;pYLqBFf-E!V3xAzIbYRG)0T zUAAiJ)Jg4$fSDZ;Y7;A(*rC-|j!BgZhkr#!({xVawCx#(SQEsNRch(~$F+b-waHRZ zHX>Lyqp>3ZhG|buCyQ6n+=^G*q=j4yY{|j`xW1MyC4*qw!Q{d8;h{mmoT9QfMpTrpF4lf#dR)9no6@p8~x6)QzjZ z|Fy5tnqidYHPfpogqOs%Z8HxL=$Sju+TePi4el$C6(%y*%#IRwY@F`dvGH}})Y8$Ts74z~Xj*l{>qZ;$I2 z?D#1*?ek#A$9+5&JIX7a)xAnXq{)Y~qv$>k*^!>3c0REuO+Bw%jhnb5p^hDe%^VL8 zeEfaiRNLi4x3RhyJnK`~;a6uzIg(cYD(pzJEG^lex_*O(vpc89r>>HOG2YyOB!@n^9>obc9@HsC_;^W) zc7!0K?2+p`CAZsV`g12G0QB6VMLRK_@fy%6LGa4LBM>fkJv*wt>x(rzgdLr8gp7Hb z5q)fy(Ce9uM%OMMarh59Aac4L_jsZRl4kKJI|;PSigZ&~r>Cd!ve%G=5nXQW&{e%& z&Y!z+?Tx3Ndv>;W*{0*B%{=4|LjqOmN`=4u(T{$5_f9*TE)%_Mpix4<%xRYt@sXM4 zgjETf{Q99P3Rm0ax$;@H%2Xq#Y%-aK?%?0PeY=K$ceAOR$!wo5B$fL5YcD@JvNTgy zs%o;JQine7RG}qAqoEtAM3pD|SB}iy1o!iDxj9{|=8M*~1Y7ihCA?BX)7sLjwbS#u zJ*~k*t<9jbr(;o_i!!18_$C*cM1qxYJ#YlZ-$|C?6cI#n>rBFM8MtDT!;*P|D1Me_ zdwUC_nY1tp3OH~5{FjKrR&9#n#l*9AK}#Q8Oq5NLKvzMuR2dners-JMhHgf>qiNMa z>`2RuZ-3`I#dt(tc5vw^FUF11wa0(K=0UT>&pCFan*a?m9XonlEcLacgKvEGtCwf{ zqclCkj!Re10gmAmX=}f6VdcymIqO!~vG!0Aubt|nk0=Nve1wt$s%foj550QpAOGq2 zo%beek1j|TIPFjHRgKc;zxKxX=*T6u)u!v8>xyeRClL57!_Aoo>`|JSb$R^OPmh1{ z!@_Z|48gKX5(!f3sK~<~B@7Da>WUyk)Y+E%w1xj?y>Typ?OU(^`Tt7nC`vm(J?{X5 zb*Wm&@z71t(qgQvM6Z#4Mfez8MMUYEjrUUch{}w>r9Psy&i9*$II_s5_E8c%ARLJx zH*(gY&sh)Vecx|$FUO-ghVI|fPplWPqaO5GKg#1l4DlcavcKAtJ{aYFm#239T-XO4 zwekaac{~;G-N%F2@qDjO=X3bkJbu&I@j<7{t6vX0UUdCzEA$_}%@1;t+&RB``{wiP z*jE$B=e-`d7^yKw_Uy=-Eb>uXcI-8JBwzqQ@zM3mC&?oCd+W^_&6rkohG6m#Qk0(J zuAH~uxM2o&=+0tfTcwTWLU!D(x9i%~ zAV0BU%P0BiVqP{S9hUWGWx9F>q(4=_iVJMy2-NbXdFtTcJ8%B}l`JVXrK-y`O=yn) zc(eXL{_p=<&n6|oYhpKu#MH>yqOk`4fqS%Zgpmz8yO;9?&5_gb_;7zV9#4ui!Gfz= zvP%s%X>U5ED|5Z6mdhpKETJB4aj;#E^?C1j2Vd%WP`TFZmUb#Y-6BOH7ft8aFVXYid;e=f}0QP8e;PTmSmg4}bjAF|;f~mygDtBJP-* z=im6s^vYFQ=g}?TIBMUwqv`0MB6X0mL_^%sRGazRzx?>0zn}Zso0bQBX!P`>2n&h( zj;`2F)4L8LRllC0RRi66#GhY!i~oJ?Mi6&wxNdCah=<`j2Gk?}`SW?|Gw1FzVMn#CU)*6w zBe3%b?5KpFoG+}od~oT;;pO)}{NS$J^l?XF$CjggL0hikakQXrxP$n-B6qjTF)GQ? zLEm${03RH)xzoJUN;F;I(DW}QTKD<)?$pZfIG@{@`*BsA71iABH82Q6_JJ$soZdbV zEI1>m)KC8M5%R0}Zf=6som6<=-y_N_S|t9ukCMbU;2k;BcD06KU{!4-VmfH+QPIbl zHxF3I59yWR?TKp@)sHp=f~cS~2?rsGrN(&yq)cSYMPij;rARZHhX{{0tF?*(I)0p` zgaX882>40R#fMnY$nBgom6i48X2C@?Zb?yT3R+o+l~ynjjuV^DTV{&6;o&4Ek_39n-O@(PvsM7qsyQ zd(-Pzu8xWfr;+eiq)AwpXOxfX&E{mWYM^=zzayHwtM%gOV0vk9a`|AoH_Af;Cz`~w z!Ven^h8n_qXgY%Q6-~mSO*B#VbbnTF%9FeI>EZ>#&ak`--K&}$bs^yr8q z8vD(;uHEDIo5qe8zu!M#JO8cNaah~%$?Q0M{%^*Ps?+E>%Z^*q2;HT; zG0NL~Tv~G*4u0*LJySgwI7Zp$u$^4a9OPj-T5Y(08F4|(6lf~q+EA|lM1hm%(1()t^%e#~+?97o$-ozFg?k^{T*viKA%2XP93bbYJ^s6vA_t zkACmzC!gCp7}xCww?FWp$%f8yuNemce29~&LjWeYxWr!W;WwWRQ*fA=w zB0cJa_+$5yT#}a8IWYYoz(OX}1fu&i&vasOl2XflfM~O;VM*oc5N_SO84@;tI#f8yKMck zam0>GX2&%+vMoJAjBpDV33ewzN6qPMhmM@qjpz(5mv`QJ`@MhqQK4+=oy7k{oS`B- zP4&%}U%Yhl36tf)h;_9&GjZ^68GDWCwSta$-E2Pk@a=#2+q|t5*Uh2#KWyg?4(Tzc za=jp5_)cm+l(gOOV1h6KvK!`w*S`MdU;LMi%jvpm%F0!xYc|ztUX_b_y=ck}tLV#N zLn<8YFDP4VpaSgpXyI-byF$;w#TfNuq+|y|4xJ)4iMXRQ&EO!}uFi+|c{{FZ&zA4n z_Yv`~2WSggv0m$Qjyrw^?05zoqb)TTHF7^!I0KHj&_Cz6*v?Tj=clH7NG|0c&6U*3_A)qs?Ik;93y&mRB75I$#GrZZ|kM=wHD(q&ie%yBYkZ zfxVuv+?!Rs=;icF9_ppdm;KgG6PMV3$IX7t&_l>~y>TkP>L=t>=6Ise+A9~9X}(s^R- z;!_tlfB2&x-7O}=P^Oq9)T|{!8cx=SKa29x(!wAJ%kgl~4Wu*63xo9wtJr6)v_pqO zr%KG_0eQpBO7U70fkeAb)Ydbr3xmrW7dBQ04(9B1WU4IG=nIGVXhk*7fgJ%HqcA2? z!L~L)OAMv&yKjAUs~C-C#6uY4DL_9cHHF z%HsxBL`NilRuBH%VG`!hBZZes1I$R>GS81jV-i7cD&c^w@Ob&y1H z7&6u?O`@L~U=m&mLg1>bQq#h~?zt%Bq({?NR;NDPlecew_YZ%cf~l2^VvaR3I~r0_ zB0fV(tHm8>aYu`bVb6}!@#y6jUVQQCXBOhf&e)L*45ghqGqna_@wlj_l^YvLDv$U| zimf8pACpr6lCA}6d)4d+o2WuKgVV|WJ9pms=`TA*vNxvi9sv?HwFABN#Eq5hO_`vV zw{dKHIX7z%{yDB=hX0M=l)(aE@8NG>`MXY;OA1Ig?!9Nq+2HUe zjCaOh=<(JwUw!WDe_Xi^42H#IJQ)r16eEtL*9Z$0lmYjtCR~hQ)R1&`NUVom5t!@F zg|QwM4fnX?&1Y~KUdJ6V+(;`-RPL!ruW>HoSWj^ETtCl_jla%pkmvgT+o!7LKP)@8 zf7%9)^?c^UN%nfwmQS$Y{2|s_Jp8b=6V~l;|3?+&Iq@UU5t}}pzjo*RE?TcV{?8YI z9na&%HhZ~Nk81mfKWTQHGXt$1i%;*pXz$3J*7q3<+6q^n?rmxvz*)UA96Pk_@LQ9Z zIENkCU;w=$L}PE=fFo^Jk~*#pf?TVKkb6aXTu{f1)>SRwCu=qG`D5X0*Q#%mr`VCw zyM|(EZGnO_&SJ~)xmIcMVM5Ww`D*(*(aLK#`{Vae`UVa7U+{dw*H>0acnI{=iFI*?~CWi#@cGW2EhAki<1#Y-C{>MJGacZTAlc;tSbgE zUP13HtAgmKvh2Bw-45E49W(8Quk{qd>(6<_6snPmL@_u@ug_BWq>@N87Tzx<`gIst zYjj_}vc-E+6qzuVW3(KZ!?lyd0MsCg`f+!u-;G0ap|@lM2MZVXkTvv8UN8b&&p7S1hPd@wcdkH_!t?M_DK@`}8<*job# zGlrw-n3;7b*OyZZgbpKEJ!IJIfDOWVVJD?YOH9sM$C?RbV_jFh@{Nf;)efcFN#h6y z6zrr90zg9%$CXk5d7~^JRproDnZHJg!_pYDL&w3HH{bUwHsH z8F!)}N?=J)It4^~IGWx&7|Nszh;2w>Qq|E=62@}ZZr=FbAN>*R1}3b5<4Fe6vm?qmw`u`*0>CA_r?k`3 z4J$Jtc1(pERd!lcz>9F|u;j6lFo<9zlI#j|46Qk=vbCrcetdW5*FSuvTarhSpQ=#o zHia`1sqGs#RxfV{NsLPtU*f3R&x>!eZlq7)!?4IW+JEhDf0UFt+@B<6C7U1|jwjy# zy7B=o+ql&D{t_fni~nv469(~cBgi|wFjR*I}%H=b4=ZA`+@Ap zYqeG=Rmu8~U<)iPBY}A)lQPxVZGD)PId;sD+iZOko!fi;s;eh>Rp`hA6-<^p?tscc`7UCqwU&feZZmS+8K zA7(pvF+f25xhau3eRvC=jh0&x`?;Pa2g?La^)(0l>zfx=s62PZj(|Dn(2OV0PK}!sh>WnDo(f=YH?~z;VRqZM$QTYiVlXnd zhSRc=;&bDj-CzCX-*yTY`jQl^gGP3QFA4PKjqB@|FY8VRsU52pHQ)c7pjWkEmaKJK zF@j!IVmSPlzxiQQW+>;4k#c66dM(OAfwp35lnh>Wj(<=SDo1DODC|D@)K|8yJQ)T( zfYPccDqJ^bXfs_=a28KW#R+R%0Oz}q_664n-o!NuzFoKCjtx6@oZjd!!PIq_Pj-(EFgO=#0szOyVY%A_rhx*hehPFc zQ#^mdk{aeY)LBVF?PV7$(bjYIOg7U#^z4XLaZa^Zkk5=&pCmiBJKTLP*v^`n8b)m5 zk&n-g+-8NzdP(P^_MiqRfRkL5d6uPRZbTguqMVFZ?eTS=dZsi^Z8t5pp2-g>OxjYL zD9k>JjBW`WImJd5R6Y@gp^UQ3!!V4nX#;<_pTvTgG3aOvuwX1~ z66kJ(5{$O2-h21X;o$*X<7t^&vO`1}aDWilV_QXtp|;=eO(w;?oxP*Uq}%B%40`=U z_cW2E@$EPmkHJ_zOytF&6K$`pY+P7b-B?*#U4&ztrem01fse5iY??2NXu5y&;KBW) z<74B{Rx$1-@YkT%TU%ZN7zU>6XjP?oF`d{vlaALlczUz400e}abAOb*{r>S-#(9(k zo!F+6Af4P8sHe9t1!x?H*;mw>L8T%KpUMr{KKFVsYo`U)WWY_1BG_nq=&(7=a*h)z zP_&w{_?}_Klpu~QS(#6Ya#9rILQE@BASwzGp@}4Yj3}H!j_gK*ao;HDb>dDOFAf&s zI82hHzVfK*$SW@2$gks42E(j+?cKW~O00?uce7cCoEZ@t506PEUCQ}+0j^5 zDa2~N3QnMe?--VLY|z*`6>f^%*4RChyLPc7f@4a3*4WQo7T8ZL%xLG~zx?HolESfW z8ZTur@Cis325XyJTTk4CD@g1ZSf8oDl3^Y_DDEiR>=+bQPA9+o>mMX}9-0!CL+FQ& z%`|m0GU;$j$}-cS#v5b_Ami$vk{~b)lBaGzf93M6FhG4rG|M>QYoQnN#; zsi*peH?aFv5*(~i>r%ElRSHWcL(MVoOg*GxzdPxkl}ZjZhjDqm$<;#O8O3*T>Tp6HLBB~@>yVyzKksM7XZ@&G`ot?WSr@g6b z2z?CE6dM;*i|AuH`OWKZsyMVXdBbOKZ*4@T3b85@E6GSz4`D3ORjA$8_QmT@T;06B z9d#m@-bTkmbc`uVY=y~kyEm+cql1HkqR5WNqi#1|TwLn*l76R$d0Y|#>?Ymvc$81j z*SV8Kd>yf&B+y5b(YyC{_K)#CDRorpScQRx+5UKZbwRvv<8oxM7n|ruO!73NUici4 zKuCZ;6@(>MW02c4mS+I*R29|u0tpEgw#T+6EbYZdoQ1V3j2)r)E2g}$rC%4$Wez3N zRT5$&yk$Lazf#2`QCML+7!3N|WN~Q#2Uy?G^~?@85tV&#e;9`Um9BI$DeaqgchNFY zV2cmS2u0|L9fjQ_Oyc9|`1#*?@rAFxJWQwXSp-KQNVb!~B}RY{ECY%)$^sW4Sm20< zOzc=mggiJ!MV`lD^o`&7otJJuVFh;!p&u!F&)^yb88QsKS%0d=;h(g2C$A&F7zk1rV&m zNXb%jPcf>WsanUmx4!0!ZQU*VPB?w+3ku@D9D{GO> z3l|?#&kN#X9Ce<$_4L)tPlQoyD2q)kZe$)vxoH{?F}zrm1wWQtv*^fLkdxFb2`Q*e zry`W}mzm;@K0}TFS5Vq|rrkJWN5tRL^W$8fH7n7|rdOQ?0sX16qdsQ?$iJ_4m#Gr+vfD^*5ZMMc=A$e&o-i*^zre&SghD0?VC}!so21OAZo(n2_ z!pc9bb0H|JW#BO_1J#uF&SYO|jhp(~ofCHyb=G<0G%O#{Q| z0M%h&QVg)XpZ4J_e-}G{9@=+Vb57b?HuV23b`)oy&$&LtIe*C3_qNp{ojkFfS>KFP ze6IL+-yfqIcASqpGG7L#C{v3-2YH?kheMQhle%4pQ0L9nEZMC{dC0rwc&4mXfqWjE zeQwy|aA~lRrr3pC6~*z?3 zFJD}y25eDwq)McWrR!+H#)xnvclRE=dFP$??(gU*h&vsi2kc3w4E#9DhiP_qcQ@|$ z5SOiut=$-OH(`T;EJovwro^hC{))hL7Q!31Z{2+Usc5xts8}#G;`qVCz*tqv0>{mK*oRXnW@mKHBuSQ{N31IP3_9UUddcixZSR1_5)pDC*DB4Y7_!-JiJgK?Hl zii~(AFfuX{J%IyP^>h`N+4DCq4d8@S6gYAiV#La|64Ta2g`psgW`Y4rE#k~if2XCv z0Ax`CJ0dbi@Z}mCN+<%C17AwA@)H97E{H}Pjt02SgpEa!!iFBYs&ExLaqJ%x^cR$H z9XULVw%1}d=Qe8I8(CpjKN)rw$`;EDMza+qbHMJ{NRUi zQA9-^I*e`-r1<6-=X?u4R~b^=74z3D!Pvz4Ea@$FJH4w{Z(ZHG4pfe+MJ0xfF*S|R z{{lYiv(=Wowkj%i#C(evSEs)Xqa?izOCC{33%}pcmtt>?awG{(F~~+U-`H79QMuN9 z)E*a|@4#!+&PhSR%YLyE(C5aE{#HJp9UG}z)1t=t_k78YAMLLGmSNyd#GdJ;BzaYggKyXAiFkA|k*y@UtN~vV2{E7Ws*paW7s_PxS#>$6b z$56;l5M5ka?d#~^==*`NmSu-WhbYagR6E=5YFF;&Bej0yX?6@) z!jfZ>_4aL0t4j*<85|Br$Hzx`kxFaeU#L%)MF#K!aikPE1Xx1{y)aye<8GV)K1x&e zqGW4reSNXN+zo@WN|XX{>?j-7y9fI@o=)%X-20c`{5tCPVSXccvZ-@>hoebVjnat- zxSAH@j=G#~tSoITV@q|n!d_PZJteAPcC>MG^O>)|c>TrOhpqrn2#ku2$d8UM^cTzH z$%8lEy8DZNj<5m})5;4A{ngdgPOn#%Wxt!?vk!j4%qtO_C#AwdE)$|Q>8AOr}; z(nM^b77nYYsPZ=+P6Nt!iy9s{J8&#ci3AqlS2YVHZ(>s~Z?Hs6cu)ptXd? zR6V5Cp*pW{S*zJ{+6sk-aG3jC*ip^&v}f$t%wevDkD_MB_Rp8>`0)JIme=y~xRc2spwI-ImnsEvh{r7)RJrtePVQ#XN$glSk9`;F5 zWO>fUgY0#Ij=NIza1w->QJr}QdG+iQRS##LlTVZ#-5K38zVAeQn(R2qro*FSm@8RS zoM2JSj?4R+2o5^Z#`Mf$(f8aS__eixs2%{-VS*qau|`+rSffYxso8sQpKMdoP9AI^G@>L)GX+E%B|?T3Ix=I$9#*PY1%Cq%jcqx$#i%r6^x2z@MY@)F zA|q2AxPn0FK%iDnD54lnQb@v+8s!@SP%%0wam|LzM{!4`>OotQ3uVN$5Vh()MG%9I z>h@oM|K7vnNsc+&2%f-&g(a+#q?@S1rX(A7lW%?R`~9Uw3W#E_n^5D!WtQfVU)&5di%Licw4yU&N3fi}lzUu1T_=5uyj| zxN+s`_VqYMUm4hOQsFTicZ3r_Q-fiL7yv;yU*1;`gN`KGXbd;CR9GKLUDTL3C&IH{ z_>uO%^4j23ze{vpas47Xno%;k(OzJ2N6{4C)Ol?`viSxYRuTV9*|DBt>;JcBvEvDF z6koFAC;szc+0o68?Q_pr%esI05$s3{*)!O&b+I0c9ZwYL^8N5=jh=wM*jEa&`J1La zHds6^6l^Mau;2f9I#EyoNy8xL0B_E$1PlKbVYZKeDuqQ{q`jL4Q zJI-xwZU-LCj$Apa)vO7+VMp`~)a@(lDHCV_*zx%I*iziF9dT53RQrS2(TkAJu_MLB z7yARO!N>fW>36%>$YRQLnr7)3s6NZ4FqL7gA=&@1yrQ5{OH)?58--My8X-h>dW&Jy z4b{y{7uOdSBe;9ZX(w_4by5RgtS>KRqaoZm{ocYqzxwOnzVp_8o@FR;n!UOEU{Y0K z6iMIaPo5ddOs1nKQkR#OzOi+!UuKb+N?rBVx;MUZd-J*5X0?ADNdQpTeo|CRA{xE3 zd;iyOAH8>HH8P`v-LR8fzH)gmSV)H>n2bB!?)2aY7Aru>=>M#ej*hKS$J6QEgZ-m1 zYWze&RAxCp;J_RiDFTKrMD<5vM=SFuw%69;P*WBG=6Z@aVgwzX<4A+1BHd`X$*A!p zwlc^_U#76CbTTdNL7E=s(_tm1RQK$A+bQ1~5H$iXViH5a%0YBGB8f#9dY?(Ulo&@0 z$>Lh$BZ~MKhQyK)2Kf0V$0sg`ntKLwwd8t_)s0b4_Xlt9?B3bkD*&&8WMQy$;lc*? zsaF+h&rnM;j78u6-uIT)*D$S0(22izsefWe8)Bs&scxap496WQ5l`}p_>5y>!HVsT zOW*wZ*DkIu35v>b$dTF6lJ8B4V(}_<7U*zPp>PjMKPrJH*Hwj%GDaaaQgC+y>ztA_ zvN7V82c>=ECqF;Bi|nZCPIiJ_ykFt?zV&yDB+0jyC4A3E#RbmS^?yNx?ENDm|-5pc#8{v_ZibZ`Kv17?c!L2qJAC+)E zOIE<1^~%&Lux!cghpam8cp8E}Np@6^?oHu=jB@K#0d8e$(l#_IpU~VnlNycqtbZOy zqvzB3`C_nR`(JA9(6bKwq*xLyZO`2PdAulFUv}DVaNbddmmjkpj`n-z+)Ykyr+!Wz zd1BfjBp)?w#~tVP#5MmqV@J`jBTmAcV6vLWXx6{=`pvd3+?d6aW_04Y0qf0Cc*5mQ z6m(K;(~m4z$8}~c>eP9C*6r(J&%9*j)QZNo&UVf2z9&Y_Ga_f4=VFc8XBb6GuSb#= z^lIF@lq|q$c-Fz-IYCS9{M7krpH+M6rt{K5t+-=-U0Sh2+D{$my2ZzzH|D&i3e7fg zN9I2de-;2COVQs2rV-@@9fjm$N7UEW(|)d-(n<{}S%zhdb}NXuN)9 zrMJGU!*F^$SxmaYGzV}j(+t6}5^>y-7EX6KofP-?_U|4Z<>b{9MG0C|qt3JRYRf_e z$gyZ_qp-2KxN>oEqu+_J(Y7jK@l#^?T}A@UDNf#4(r0rqJrdvVl(kB4DW7=R?~1c&XG&VKcq zUtizYpjEE&9dB3%>)2NYxS9$a9jP`-c5}hT7Yw7}171p(rYYRgD@#k?`PMfsUATxE z3DhfNsMmyg{W1NIbS5;`j{=BSW@M^~D<>$2Zl>5VgFQxQX^p~}20%S4v0a%vMS`;W z?LYkd@b1IV`Ul)eRf8k00e<(}-%Ywbhnfi^z+V_$I4rLqTohSrAr@n7m@qM)H-RVhp+$NC}84Z-rnYr_xK5Kq~2OF{X;J z56L5=aluJ;RQ_@PjM!1sU;Q}jD148wk4yD+v=uJ^n!I!PAj3`rR-cj0sb`hP+>~jN z=cozcEU$f0Az63h?#E=uw(j@b>*C~lK0G@rF`reagMa6;qa=@EY8hdMs}qx=_Mu^i zYl;|oUqm10#*UjdJJ#QY4cAh)9t__L|AFkNB)8pCr6cE{SrR;u8ik{)d^kL+ij0>5 zWRZyCkU6S{7;kE0@ShSPVvX#GjUP&NBfv44D7n7aySA}$V{3bPp{q>+)QF)+S49}A zH`GERLKPm4re&P`KR@`ZAN~5(Jy<`4Vc1RBOOVpFjv9BcE4*9UOV&QUxwg69x%K4c zjoVjUucH=M!poOa9hAC?MIL9<cXWSl*Gu)q88aGF&GsUUcjP_j9$70T$8q5J`cqktilE-oy0HW&MyP+6{V zD@2-?g)0Cb$wLq8{(v_W3ZcWj99Jqily0vmCV82bZj!rcVKR%WM40eZh{@XzPj>9RLls{4*7^BOH`Y28Gb0 z+}_(ibh-m@3a6$1S3#Lhj5`AS-G2Vr?dwc@FnbuhaSVx4yl-xfzi1qN&+YT2x3NZ*X*V1V|_>re6RY$EF(E5~ad1AtMTd z-qv|#NHfu)_cOJX0E=oKoOBywb-NAeXcY0xGSNW&$(73(Chh8LcEios%3 zw8E})OQtuN!BVrij1+(TI+K6@LbIc2c@^4vQsm)yCS2Sox3$OO$K0Dw?&nK(tbhLd zVn^BLl6D>O2eBi+KC?HKt~oizi4)0U)glT1H&a^8j)vGV7nbTBogwWHqkL-hBeP?B zH`-zT)0+IJ*|9k@O0+y?+y}=U`BRCN8)1KSdHMaL{jq`hR5l4;sbr(_2t+bPl}B7< zHw#M`Z3l6$8^+{ucLqDQwQ1(A{TGQHIXHwALK#LKu=@9hW=D8^nrD;ogdz>9&Qq)A zCYG&2IbV9Ke8V*v@es4RS;m|!uL&PXaFq9yRRTEf=-JWNL|XQ$gDtUSG0##k(E$ra zN=Gr47GP2@Eu^UiQMA51xU{-_eRK1vn>Tvcy9?B4w5TFcVgQnwZ-7Cpii$A$zy9Jc ze)8MbcP0}61%Y19g4q!ZDy0{DPmJBra#0sAJagrb{{1%>*9TP`+WumE`Px);V9&d5 zQr>yv@QpVnd;4W3bfPXix!zk&;QllRLqMeB-hQ^Tukt*gE@GICCuzC=@aXQ{ox|fY zio+mEL|wXS>!F}lo5$!bYT{r|c-o2Gpc}3xK{wJ#C&IWX>5^6jz#Xuu(+ph)vTPdtH>lszq%>U(RUpTGh&?C_f&| z8e$L}v2#WNQIc6aHsX+q58Xcjp#5A+8M9;18BAa&WpF$x@>v0nGLG}Sj_Ms%xDF{m*1xko(a@odZFa{QZVqgB+%QvrH4?<1h zv>Lp~wU2I}l4L_Ah8|rtHRZ4>$Iigt%#KLg6{)P3rj)L*2A&H`6^D_rzy0aY_wVeA zvQl+p78#K%)&qa(<*%)*t@->0>cv`qgsk=Ep?t+z+6E3ul~r|o#Ox?du7vNi<`Ic9 z-xT?y+%z}M_&RFhK54y*D*HnYlK#f}=JkzhNz@@5A|z34%E$6WZjQkvnQtAU1|Y+R zPv}*I?w!u}T$5KJ#uiHgL_8cz5@)p{>dj>n==X~F)(5Tvj2{O!C=h(%F)jyOZnw?TEhhl_l zozKULJBr6;$Jw#BsTxVcJsvv>8h`DiI4wbpeLjANdYva#Eov7^9tqFKFhQ^F`! zmZg*Nh}p3b{leP=iasQxr?cMVJp%_kk z)VTtvvHRfQ-u=BJw9I6YKHYFXPOt1a$sQs6tQqOgLzOF;FZP1XmHtw{gT3iFvSXgZ z9FGg3w8YTR)SAo%d((1k#IV3jD@LGHQ|4TIUU2aQ$}ou-%N6m-KoLhOHH5E3)f{9> zZs_nGO95Kf1T5!C?KqLfO2?RjYB+`zR+PXl6fs^JEQtBhjI>lE8^)zoxzpp)=0>3a z5ydJII*1xAc1fe>$-?ULAN|Ka&I?0KsVd(Pg6R}gmlpx{%cI^F_5)Q$vLPW$;aIYg zf;}lvUP`|Bm9N~o^+b|HC)g40$qHN1OKK9K7A1@|mP3;tS0&dz0*xaq5kq|7!Q`_sVe&Yni5}!iQi3_52GjY;0~9tc34okphNDT+XnIok2PT zj;O2JtPEzGW#RB7!Z!5>86U?=9 zqgkE87IiJ->7Pa_oNrGy>iiVh@kE^EIu3(H3IigT zBkU%zs>YSL@45w=QqJ{QUE`u58EBrbh?M-9)>J9kJp5?DPgdeB~d0 z{@QOfF#_Un2E?v+6^y(I4Tv`D7o%|Z0s?MvHNR-SnN$^L~^J6KSw>tg$+ zI6A6c|L5%9dnTXmjYf9;!lh@f^)Gitb}a7h7jN(E|KiPM6GR54Kx867#yjubz5n2# zssOs;K!+Gq^W&avoGt4VWPM{0G)M!_Xx{J0%Nt8;i~Z7MFsBz&%$~wwrDZiOOEl9n z_NX+wsW>tM@DUCKts3EykqfpG-s~O`#0eJU#N`E9CM(r6{8<&EK_FSjIC7su^Ujc( zV$k7-_cK6Y9T7%cbV$KMbi9LWHs}x5R#udoi{o(I(Wpd(F(6~5;)CO~!eLEu4w*#{ zEO|zwfp`-A$^Z1Hm7o|N8QoE=i_*cQV=m2Wi~NYYAlO8qPq;{tO-?xL{q;icWD9O zeCO5Q-g)h4dLM;PgH zVN#fpURJ);NOlx8K7J^6M-(@r{kA60hWmRk?=JMaI)EuX2S!|3=!Mq)>A(MX zFFp5kY%5u0nu^I3#_x)w(d4H;|HXr&;RJ4iPBP5OyAK{7O-5Of`WO%Pn1^U2DAk&< zFFkp6bwTJT-?)5n`}VEQ_7$->5SK2c@4jW;e@|y=I!$eVp?l-0?$)A+4<>u>m2cg* zcMi-ud#gH8Mr6au?*09{_jgCfQve+$V?{-NG}Tjv)6JerAI;!Mj^Hvln5c?Cmc2x6 zURb!WGN{TFU?H0n2pC4E#_dfq0LNirj!N+$6C*1!iKMtFMMq)*ZzNqr9H?A#Q%UE$ zrzI8;5+*8=LDFFe*VE_jz4MU9a$t=vI249Lc_3;SA&(ZaQL(5BX~QI5Sz5Tbwl3*} ztNK}IdvFWT4CggU03Yu@Ji^LFW=9MxV@wgXbx<1KRZ9Ga|M7o-tr-+;qbI(Vg&NL}R=+41gg-hAz!exd4uA;jRZK;6Q3EQ-cATeUqP+njs3IH?gTan7?&9$wxIy$S`ysg94`CHFgu$1 zcU)^>8KU1Zk(Cggu+!`Gwk~XKt!~B`_Qul10u9ge0z;@23WZnDoRu*U$*@4>BJW*| zB?PEsWU%&;yK2aqkQ!g`1J3)3`sp6o5dqL~TDr}SbyGP=+w92gM4Yp3jkPVu zvrmZ~eYmk%1W3hhTJ@$Vd&TTnZ}xHYTt1DT&x;+;JM*8|_nym+k7Bs?JBpgm_$oXOI|h8Q zH2@B>W9a092nRuYX#VNYlfo+5N*2d*`**Qp$R9Z zi)@;v6E-CDscIahU4WTwTVpUv3?n;A87ZAafkY|dY%)4dCu5ixlSp=w$W`d%rj6NH zUiiJQfBlcX{VkEF4LcTD{;OZT`m5J|qoR12rlksG+#P56?(yNn!-r`(!QPz!1+UQv zQK*+Uww}7Q5{jV?^PsEOuV3DN=_PS>Q`k}Za7X7^B!avO5Nt?zuH^ zgZC22?C5Nc*~HXjX*JI6QC8hA%A?YaaxpH&K_&`VM@bPmu`I<>5Dq#~SL?(9^I&e4 z%tK@;B}G+g-8x!;!KDgO!x5F62p{np!*HX52o0G^5>-NhX^f(2jl$mC6hdQ&M9-d3 z^}F4xTN{!jSG6F!KxRjHgd^CML6i)D9p8NSUP)q&d;|NwX^AC|nJHmu_wWAr-!HGO zkvKJVQd?P~6^^V`9;IJDBRdK%i$wVzmLP@QrrAG?qnkHxUf$YVU0n?TF41v@pBzQ4 z*_PU6Dno(KlF~0zTjs*TLV8pbStUvfOo^*a^!ur7W&kKl?6a8`39;j=Kl>$R&HbZ6 zsZRV`#rpcKn@>Oc>}Wd1WxnEEv%t=h9E%T$_GDR>tkj4XI-j}}*zvD4UUzI9vMiF1 z?1-J)C)tq#gyi!=313=`u&Y7@kRJCgZ){&$xrnL*Mxrz&l@6mCD9ZF8G*aG~`fn)i zSWqY%XBpgAU`;qw?6AfLYDPsWro`rK5(96>DvD269Gm0-hn#0e#rU3`X{Eq1H`#nc=- zHXbva1edi9cAFjPs~9L}`D@hB^z4WWc)E5l3>O%5%u#2iUN5nBufyP_IL(eaQZfmn zIKuu1Tb0xCcsx8XWg5Z_5UNnC2#&1EHdj_(eCqap_=E3j6kf)h_1=SrfB(u)-hTJp z{^CMmv3V9yL&wQD&-M-}t}OLe7gV6Dqsd{i(7*QVbHVRC zBl4ZxrJ;yacU8peB3cw-S9Hz8hkrkP@W$Y%S}9|(mzoF1Z@&Ke`|s_hJS*-7nD zDaM7EQhi>5)_fwcVnvIUI9TW;YyECe76BQ}mBIlS6;i?<*0sTv0PrFy>|n$=3hT#K zv9o|B52}K~Rf5{ZvGy?tC|bu(fvON1o+fw|2>#lYP2gSZ#a6(pmETkl$|MQ8{kSub zD*E*s@0RG6f(|vb74*@@T4X6EMLNl|@BaSxx3{klL!(GG!X@r4k2BOdLOE+{X`mum zgh)0tz!j12&IyC7us55RF0Nk;lrE~`6gyU|C{FD%z>Zl)ZtDdsFM%Tq11GaY%|gUS z0LP-lK@wBDd8Mt|dGp<0{q$$9teOYX`eeF=EBe$kPv3s}>EUEdnQ3k&!8?46HLq|p zYZ9tL;vyaUN)%I(j(++#e~s)&Lg{|c!!lG{0ZSaMP^Z!nIFi^9wGx@e0}$aYgr!0h zCn^SZ++4a4E82Dm7ceg{N1s%#U&Ux}n}C%VVWdd`UMiU#Ewxw+cFHz1hY?@a z;*K;7*~&M~*wdXOCo~=HS@_syN?b$I*e;)H&u#wqR;S)${IuEe^k>@RwWEk}vz8(= zNa~z#^^L=w#o*ZNtQMco&u7Vw?HTTIa@HSfAKE?{t&Vno!B270V+oqi@12gd)DdZNup%=r84?Rak( zbp}n=Kb{>q7HDPdF5QgRnyje3ez@YB4S+ApvhieWoNG#&>hs`{l<1JfpG2D-1+{q3 z^m@p2j$R1JY`e*H!}RHje3GUUn3P#vRMqz<_gM#?JAKbJ{OJI9D4m2s5{KO+iUMt` zVlq0;Cr4#YfkRkINEb@m3xYuuedBjty0*P_`}$3|$iMvA&wldCD=>3zT)cQR8s_8$ z4Icqy9P}5{Np|nvJ$6T1T3Wh(`QrA)PA4#Z>=KdP2tYQ7w%-yileS9 zIKcq8YwPQmuUx)#X){K4gyV2^NK7(2!nRR>o7fSK62o#>JnLXNJuT5x8;yBT*b7+` z)7J1Nj8(!#HxJ+6`KMQY!s=1YNRD}YgMu~Bzxb6WpLp_kd~8UO-0LG63FHYE8cr@I z;|s$|Oc+Hir&T`shadg5GzAsuR;0J(6QU=xVn2DHAnehO{9lIhg zuV1>dwXzP&EnDJE4rE+lvouBTSA1BK#lw{kDB9Yw zkQ-c>Xq!5~^Wux*oSgN{jJuxJaq#~v*^%d`I&LiJcmD=kHyQdYXKM>zvg0Sb51#@% z%DK0D{%CEa)xPyH*s-pf_i;yNm%#de{S4TV@~5reT`fCH74D6o3?I8}ok{&jb`;)+ ziJ!Y!L^B`&gW^s;U7e@)0YS$GdKtHH-Q>B2Lm=_je&>IM&4-by__V?hs*4NgrT)VKm zEThPDf-uoxKMXrTbhLN)?s)Ho|NY;^*RHzgLb7qox~Mc0oxP{c18a{p+~)5c4uA31 z?yGMdytjv)2B^VU;!KUTc1F`p>Qi_esgd4{nAx$GZc$_$49HYUTfj@5B-~tGS{)>2 za#&0!S&EK%qg+fXF)gvHIxUzTl~oaHf1`G09!L{87h18_?FZ=KM@}`mDwQatG^ptv zmL!f1h?iH`wOw&ulp3fphz0P7^#O*fU~%NZK5Nu?N5w_BSV07rx02{FjU}yGTv%UT z=)@ElmSs`EYrvXex2qR1TTPr7?(7~sd~l49LD&JFE67KWbKesLHgVz7#qWIQ_XuGH zi4h9&v!N1wAMcEpAt zL*<(}wp3$CG`Fy}z_43x(H6YK>Ohm@ABV9@_;{A@?>_j+-~R-VlZOsJ=$QgG;zafQ z3oqQdb!#|2#=I~dh;iKQj@f7G3M;S^2d)O~eE|bfQH);s+rO3+chty~h8`4JPcc0= zrq5&y*dP}(Qp1jm-5x9~Zf$M>JHp1vgRlg4%nfO#R_riXx5XHe+QAkWRPGVAITk{) z#aBqz$&rqD#Yv~ygkr|B6a)49Lm`j$r0a(dTkBb#o;&8^jxQiRccLYYzlK+ZChMFH79e{^VhE3xACd4qYz%N$A2H2qIfA8A9rkuJAoZxoxQlY z*z5JOB0o4jYO6fX)N`~dt(l~0iW+4`_*^+=P2sbeIy@MggqW)_XtQIxjB>69QGPgf zJdv|Lv2jt?JD#*6tSd6fkN z7d|$xeBX3){#700^tK{_|6diTy7p0X01^oU8+*xYt<0vwyqIu{49*{fp_;`OeRZU5 zG#BBOL~9_qCn7_!L1&s2fGiX zwViH~XHzXrC)TD+fgMAQdl?5w7{>4(m`YbyS1)cXce_;>m~I%uH^xGg>GZuf@7&FY zPyMgozxDfns8^p7aUbpL%zjbs>gp&7r8u70U%vJ0AN_Rn_QRe|fJdivla)oqPC82X zSZ&=o!S=Sk`PUCTR>H&?VN*y+`N+yB8^vmE&{^pQc5-M_Ltf7)2b5XPQ>(PJ=zs#l zl?pAMV-yt+v7o~OMy>Yxd?rzZFCY(6jjA+GCzHxevT}?b*%tMq6^eF~tF>=wMY&Bl zMJV2b_bOaSph7@%_+Pj^Fn9}OsnNj@S2)scTv!2iOky2}swheT$0X?nNvBF8iaWx9 z8t&ddc(8k5MF6L^vZ}x+9Oh;*;76(HD2f00PyPfQRSc0A>N|4j3-(x{2DtJnMn;e| zHm*`oI!OiOy(!T=QDEQq;`+wLt5>f?Iwmtd+hRwiB|-i&)GEb#nS@X$@DbUuvKiqg z8TiQ}%lCG7fBfTDFtP2g9fkwpeB>prPp(|K^7M1hPR4M8OD|x9QxQw^U~dtSasYpu zN*RnYnrd3)lOO-xU)6C(izS?vwZu_N!e@@{Np`F$jsvrpvtH-`J5HG$LrgzoJe7sb zb8A>9+=mhc>496{XWis%ksaaw!{W|5?uZPJ_V(2N$V%e=d$|^$|KHCYEq0s<#kW1I z=YQHS;^^z>N%_3kkq?9X*-o+}X>f=$xA`SIeggaOLG1Xbjei(+oNY&P-0`HDvfpI8 zUD`cr-xevG$=V?OfAm=MGb?x z%|*_7Y1=iFbh!i@XgyYEcL z!!(`17j@$J$tQ0CrvCQz*Wie@FK=$FuNjy}$47yyB6z&Zd}V22I6R8OWNmE?z9mh^ zNz&=|qA)CD%vK{isq*`*OV>ym;m7|LK40Zh!4?I$rAL&OS`5hq@dmIv&09 zPjCF)&yU}{zbKNP?xfSa$Zb(LP8y;AjQU7aMIc=iML>$E=@>{<4i8iWf3RKvbrz4tlW`6-rKtMF zvtz#-#}VK-#vzj=iQ|q4!aUT*D>;O_JHU=dD1Z_q6*;3~jh&=LEZXD9xRdw-)d$@Za&6imvE|rPz7k-BXo$%a)BrbZ}0Yc7cO490_+$jC{I&4o<7>_ zi15UIT2=yAVNsy1Dgk?iC8BWk;BR!70g^&?#0);%if};>9`60k-~3&kV_u$X869;k z1BAhWU%ql3u7HXI_aAGs~4s6u%xn^#c_B}3+ ztYU=ksbmiY43}3dzQgs77LmAsDH}$s9Izf*KmMqfA*}={nP*XSI>^;^u)})rNxeI#l*Su zKcA33dpqs@Jf$)2>LSHQv*U^HojdkgVG!M_&dFJySKDwNQ@V4G_e^bVt`uQ#G@PNX zv(mzc+2(h+?v*BS!xQYNMO~R7TdI(p8+9ZH((n-Xw8HN&g5z9bW$sXy#ng&4>M_`n z?}H|D+G@bFO?cG`&yGz{Q=VD__|{uK+nOrFSi$5hcBD7?+&Wv8poksiO_NTtytD*g z^l*PKD=NU3x=y1xDg+={i%(0cAE%LvyN=^9>h-!XOOk%dxz|h7d1QBL9CPaAh|*r) z*6%rw9ZxC&)u*fVS=%0weWy$FN}!`zsiQ)7IQ&;GV4xl#yd_A!j}Oh&-XV%Jj`&^p z{Q!aZ%;FxID(Xt!sUL@l{z^pk);)|;* z4|ngs`R1E<@7*0wr^{-ka<{_rLtXmEZfWy!fmO;V=$G_0Y;gH#s`~ z^_vfV`P*{mXwgQaouMsEfvu_}3sYg2w_yWj>AMY7`#RgYdCgjEGI5F;o%OV;hIx80 z8CAL1Tolh1h1tfBxr_Nk-9P%Z7&} zzJpGlm$tW_fBuPB z(!OEb+SSI;WF%urTL;S)8}F77a|*7b0yD{;zIOA{!V>n@=UCu~aYt)%ZrmaEg8|UX zi_;5+U8@n6T!rS>#;{a4^CeKOA$Fwak-nE(b&%oN57)HfpeM#CKTez(bo82uu6{q| ztmWs&j{Lt(&f2&y*|GWFe|zkBMz_IilOKj11!cft#Qg->@x+&&U=iab&^#}4$>ZEU zpK~63Kk|oXM><{~dK5Js(p(}lhso>{}gk#p9vX<*hqPD#q$if=5KuVBtT6?gR7 zkgVRK8V{RUPr4HP733x3d<0bEflyO6MRqOlN1TMxn$h?W*b)7VDDK$42QcWURlOvz zjE|uPlEc(8`pN`RCk&E6bal{Af=(!6ZQzxKIEk?I5@)jUbn>g;ymmMmsze_Sk4M>< z64~;?pm%*^V-aZ4W}z(OFz6tAV1EfUbs$LMcZ50y+>)x8rtiP`I=0g~(c4K3lB1bzGWXH5X5X20( zB!xp5Ovo;eZvY*tC`OPcen5%^FqxDhbFew|Gpr~o8izPhCWy{ql3+U$_9R6boo28* zo(okeU#w#jL`UOv|9G5L*gkIXikqc{?($;4-wWUz!lQ&ie4&jDm>uca4XaYU_x}CE z;YeVhG{`DLT0i)P(o}f`Eb3nV`Zu0<@`>qWO7ah3ld>QUa2ypXBuI@V3`qxtgsAP> z2iLt4zKFtj{UT7@<+#^FfgI~Kxlm`vxWbgAL1TOrp9rt2N`NZr;AycVcE}(*V&z~- zjx4~AY5HIP^M9TqJJLd#{9QQz>)G+SucSpz&$6Vbv!&*G?3LCmT$z`gnAULqi>xTJ zAOGDCr6~fuI9AbF@vum_d;AIvIdZ2nyAfJjQz@$RNFBrCSxP&}p1FE+V_`*-3r>!E zUBP{l3&V5>`^n8Q6=5F>@m2(=@E5LnxV?wIom|4PYo3c_@XaI=Ny?fWgtX0g)s#Zk zq%q5eJ%SyZe78>@!ASDivm?(A9ByRqV;1dHZdSqhB|AR)dp}EdoImLwyl{Qmf`B)jp7CXR@~ znmMJOGuctpaXxnPpopN#rNGK3^0E-VX!4`8qrVn*mbqqOwhzUQg8P4)qgHyRXUX5F zELF(ihpB=S;ilW`cKdx;DDOVp$F!-d;ilPJsVj%0=OoW^!d&?FkZ@j%i_KqX<2 z<>TS;UYVs-UTbFxaLOYi>8WPNgCN|qrY%#>(ct56G_+YQ@0I9teg%sY@Po& z?NAKJ%DZp9b^qP>2EFd`($bSJKdrxW+YJwfMciAv9$dKv3ofzqv)$KzHo0>znN%@Q z*rc2sOibZWh`GQ_A$p=zCP!5$IGmvFk1^y-M|TWmGbu!@VSdh?*q^4m`0i6@- zeUez`hbrRef=!J9nj{typzuh=aomYetVnZ>BQ~G#fW!AB^{E804H96-y`ymfOG6z~ zUz!aAv%a>px;*Ih<4&i;w+FCeNp*_0jyvAnd9Z(YOae7Qj;hnB_CW0~Zjw!O7+$${ z^~D!o1l}XZOWizlUIrX*8aS75?K?V*sYzV1fPjMAzAjVILAbVl>C&am-r};r?r3TX zrf3=9Va2}A_@uFrx#Wy3- z;4+67^IC6iZ$09mg+eTpBCjzTV$EDtM|$h+e94ZF{N7K59ouuF_yV&d*EjkdtxG4F9UD_V`SI9s{{5=y zi4kHZLF!uiJEnEK?eA^l<7o%Q56g}mZ4G>K77NTXB`4OvpOT$NaVu6i)xKvw20MD8 z%8$T~qP{ac-}o4$r#Fr4KgW&$0i9lNVPRos_W=xrr`b`^kOz|luw&+Yw>6CT@Xmg} zAHpE)#K&ewH3wdgWJkthzt*jVFzWNEINdMRte2(siJ{|CvtF5|tWfHZ@espFnhgO1 zezOWRiFRXZk9rFPS41jQ_rx;~Up<|shldAMWwf4aFp~joAEUI=dsUPAcilOo$u1@! z`AE$Hm>MEkd>nJuO55@A(b3^UXG$%_33kMYCS7f8w3)G^qnve=L}5$>*^i=Lq=6ve z?>Kac77Iz#gX>Om>O*VRwFB<{bz zf9Ge#{(D{H!n7!lr{&SKoK`4s0^pced5)d8!odF`HqfoY>{$6B6jnc$O_l?oqH$U7 zO~&sXOoln^D?qS}g;*5sD{J9PH!eoyI6_Nemm4uHTv}EsKxri=1%l%!7lkFOXc!Z* z_Rg{P`|d%h0SaT$jYUt0UckmR7<6P;6u4;JM8Sb$e{_gKJS4Q_=;k-POpx`H0BaQh zK^t@`6;JYN_wX2Y!0Cvp1}%Wr#^(Cvt@U0frb-6I>(WZ8isFS9II_|Y?jJqa+pplt z%aG%a%#NjSX+DK-xpMvLOD}yDT?E;9y$%nNsyT6P7zR;cqr75 zexSokTU*aP=h+csg_Ysata5N;QUf)BV2)~?a6It!$fH&MlOO**?1HA60nz|RktZ0R zNXENjV?c*kIWv-J8f7F35$L`SfF0dv`pngvYn=gn1?&UvEfu-Kg~G}R1XqjURT4mI zx-jW5D<((^k=Bt#w#;FvI4A4mxsMkb=d;zKW=DR#kwcn|dmqG(oUMjiH-ypYiJBK@ zquXOlw)6F2_3%9Zy*zjN`Kfk(Y)@KjF6kW>eIe$uK7mb!A5UpkLP&ik3Y>Ac>Q`OUQE={arrll>X>yP0ofqa^Rur==$W(mQMf5oX$o z;-vo38P}B6c3QQ-fvtC}?SaIVj%S>=Q<^@tyI_q_b=)tPjzdht1r zmS#BD)v%hci5(k%1Wn%S}DOXvGz>IN6r;3LOc zyzigCZ-c0Ag3bg;j_yAuVZE9gBZX#OMdVGf6L z*jv}7%y0nMTOA+*B0DBAz+xYE0w6CEolq^rF_u4)${;`x{Kv)mm4Eu_tFQeU?w+Hg z18fb>vm&4LvDGHry0Cuz>h|WvW$h}70t2SY)szu-u20L!+UoM%-@N|*n{QrRT)DJ) z>C*P4or9gVtLyQlH9!Edup+XmN+&@t6#EY+dk=!bno*t|PfBWCAaZC!ZkiK{x`&=g{3 z!;bW%MrEaTA0FP{-6wF81v|hg0mBY9sg!7ca`WcRuYK)n0CV`r(<(*yM%aKlsetd} zAWnc;JxVsd?HqNbGC=_0rIpoFhcoN9E=}Zo0p$`{wr{CIFJUg#)_U?+X-VM z03s>58&m*7nZo(u$wI~LfFRFQlHtlmmmHj}+1r=Iz=V1$)|j)qh36&3Rs0!Q>U^scy=Gq-h< zCBAd!C{yQ2W-Zkp9FChWj-+#CEsQUpBs-qm&OAFdb9{3Q?Cj))9yvhuMZ&T#+3~|1 z?`Oo0qONv0!H)FF8FjT|f#c9y=1~vC21U>2>@4%a<=d*n2n} z4zYt(os5&i=m7JZcBn4>6#mv1pAZZ>o1>#YgUYpd2(dAE0Rn#vN^5Rqwq0 zHq1Iv6gA!4)Q1qU1~?WE1fk+~eaeI5A+Tn+3M_?z#EFBoIm9x}gAeOoBOf+@Bo%_#c0| z^I#_qf`xt$@NqIa7P12Fgy|Wc`jw@H+qbT7Tv+KQAslps=~_W?N7wB|;{RvwO}{Hi z&NIJ=$o;O^s!;pZ-PO(BM3JJJ8j7M;OCRhr=lC3d^GRmPzB)PZn;K;-{+0YyomzPUCmzDoYR*r2tZxr%_TD97w_^srU;~X@3l93 zUU=i$wfS@c^P+y(d+sSr`ICcJfBcg(XEx4VzhMvdY33J2Zqq8Cro}v~(8CW7DGQ1C zPC?&T=g#8%V}vxd_aJ~Ln$FUPd-MJIvP>c<>J?gQv)&7OKFTqBa{kg~ad|xqOr#52 zRkkQ)RtQ!cEC_C9m6&Po-l3jrxhVaDZY!^(13~ABt#updn^=pd`ts~(5Jg^=&wH^S z_!ePG)J-d=o5({G0ZXK+Ir>PXk=QZUivH%#-3LX5F;Q5KCc-nvRxE%(2X*Djm2ZCYoAoWYwxAD3QA7cX9Z@x>Rxj;tL9c0^5Jjeu;( zXnp7Q$p2+!PEV?z{`6IP`a;c;z!s%L%!nOQ6wZf`4Q6VIP~psGa2k>@>dUZ43$EGx z#Y;Cf;{mN3@`4sjG!8UNsbkhDgrVWdg72$|DL2|BtTluIV0&0c-#9JfvbeR4xa9)m zhGpw8WZiAjK3!Mo7xAI5)uGkwNS~xb^{K`k#p&#*jy=y?c65ip<)Ev$&KKeJB|DzF z{S#hKQn%23sT2S9h^9=J9Xq#Bx5wp^uw(ZP&Q8!hzD;LLwh2#tbUPo59YvF~K0>Ze zk>f+zkzGWvQbs8-p1)EDKCvVGxT+#!iQq;@@E2jn+WF9~dOq3&{gbn!;2OI&3$JQ1 z7}0hUy8xAYgJVbjP!mPb*|TTqOg((`sLU&xMIJlDG}RTAnH6apcN7dL0o13_bK7Od zZr%3@{aDAYdqaV%^VYigJ$7Yn$N%uim2#h6_rAC)M&?Mzj?M_!U3VAfYvPWzD7UQp zV0@?>(jmn}kZdFf%^WBBh_{3RqD-#K8lsKxoO43K@4o;3GF^s2=-S^U4+i>Y+cexD zILqBOkFg`YiJQB*ajA2>rlx%8^U&=3Xy^Vgh*1qW9)`sg0w zgAvZnn1ILcNNXE*n#c}8nM}i#*dFlVXcmEc#V^*Y5Ks+d}U%gW1>0597EP$b5 z30arWACG!3zx3SpxlJ1NVT5Ww`copRaX-{$o~)13$$mCnj>F#K!ES%l&jXwM=GVo& zdmsG#)z@EtV`F3d)t6riqJY3LpG{>c%4Lxq&Wc5Dvci<2sw9+pQsg9&I7Ix3U0Kk9 z4F~6nCi=W0{My}L9L~gW9Qe|Ur3452_!=sch~=~A#ib3fV_AY7tI}qc_7(v&f$f{o5A+8tj0t!PE z6>^M`p1Yt5YXeWqu(ZVK$(@}?4-e_{J+`6oxdhR_e(fURDgA7?+`zG;<2-z?{k`ep z_MM#^edrM1)@sF$kRhzf_4V<$e*0TVl6b1aj(7mXenjjT8-OD;9nlEu1;UjTHhkH# z<9L1j%+~hSx%1pv!e)LAI~vfEtuwO-l6Kh9fVu(vC4p3x<|S(~lrHYLn9qsqOjUjN zFaGazzRFp*tABcWT)24g02eAFXqahs$)zi|Oq%U2)zL^Z@v@(m=?1*M|4QYcE zAxDSJHUGhR(jw04^wN3NX8DSkrsR?JAn78aH(fZb0OvX0Rydy2tNJnKcgK!On@>4s zEyPF19lMWdYixI(=0|)p!#%;#eAcfo+40ovpYZx!a-G-tRRB z=Q7v69}I`Xt+QwD-Mg1AbGMQ1=h9!4MohEiqAJi=&im{G)4Vu}0z#EeEby~pN9(Fd zU4C5FT5j$=93$kaf5ladexqN*`=gG=9a{}ZkNZ9ltU+GSb=JUvIE>j*8UU@lkSQC@ zF<$7?d+80_S_8-om^f*geCzGE%cAgupxtMOj8GIOiuG9}+9`e0ZlH?Ncaq-F(x$5z zV056e-bG4moiU{8nC9n$y@z`{yQ3&^;K=?Nx*pib2bZ#qJ94=y?KZ(*FNl(e`>Ykg zk3y3*lxHN^(YM1eOgtHRlGqV_9-;q}*I#}6gZGOnX9XC0{mQjLFP=~L-+Jo}n#|YM z*2m-F{{F+~zw*p8H?JF00L>EmbErl7WwtgRE_K%1K5O?Td$;axskqXm7{vZ_H?uch z``OQaMwfT*VDF`up5MOtl$ahCi@71z$cqB%LvtiMGfh(yu|bicpMSZ?h4q~r44sV% z!q7y@;`I;iWLjh(O9DR83qv}VzURk*arSgQSv+%IT-*wL!oOTqr6w-T3xZDbpvVs^ z>l$SUA2Sru!B#IMeB@i32GII?pYyaP(q_%`wnj-1dwI18e2q>V*N)+_x~+2_f?%TW zRt2opE(1S6-WoY;?qX*Ba%d|C@x9%>hX;!ip?xHgJ#KWrcwuWe><9D#S~zwzw%NW6 za_ucr{oea`(vpR5XeT&l?b<^iDPzlCzyGaoeQPut)%s4{;fsYyNT(;3EP?Lw*H+R{ z^AQr`;p0Aqj~nbrTUg)RJb&qmGbz@>6&Ba*SaEN3mmLd8D^;%Hn%)DKLT#5>w&Z*@ zjU|G;u}(hC(`qJS5ta+(udP{H3c~(SQz# zs5C1PQ*=Jyka)C$zPccyD?>-~kf{n$gCjS{Sm$fR5l8FZ%u;KrVp$^>J9nol1BZ4*^%}+rZw}k$KLg6vEz}I`Z1cRziWQ2JO5xFR}%T|%ZxsjoQ8ly{hr;_W3k8O{Grm-buPJU)I#l63tx47I_yZBR|MB#j7!OY z3)b*`*J|T);LZz$3sYfwVY}P*9PU4QG~GK`Os2y)Vu2FFLe|_nYmrKZXbjgNVy>@T zY77??+1nrreWFIh9s8cg?5GGF>1*PNB!G=IO>>)DTZfCo|L}kO8I-J9amMPBFyiU! z*S0p+@7}xp{=08a4komRFaO#LPhG!6%wufn2RbC~h4hc;i7Fb8>2yE1b9=sb5LaSs z;Ai7q+}``(g9p10(27fFP^A4)|JmoCjW>tYVpc9w^dKzf=`^)jp|i@XJQigx%fjZF zElW{Wbc?zWOt=I?YVFy=x0SDpXD*5Jn~@R;p;new zS!(E`W~F^#%%RqKVU`6tW(X*WL1ivBV=<=Fl_Y!t>${#6(M44hK_b@H=z3cSut-J) z5BIadx&wXIe&jpb&x$3>S>wHS0fiS4^e6nvDB(r>lf{F{EU&B|4lEWy5S-cETHD-Q zN3fsR(Qw?+xe;TL6BODbYJBJY+w-){4bdwX)hSVOl!`-NX3*=s^2#e)XEy11>4yQ` zCHP=J^iY5sI1g)%J95NPc~t{%#x2SC=As4UU@#nvN0+YNzzqw=ar6UTtW8sl(6%vb zE-N5o2|pEQT1bm1;>2Z!$Q|7j{Et;i%;(~c-~H}#Ij;+c+*83~sYB3w<~#9!hiPs#r3F9BZJm5xpS}9YyQTZZ@;N;n==ztGYPS*6(qo zb@kfS>2#Vdmb$7=WXD;V9cGIHk3!dDf{zYWNRw_HgyM5yN2f`Rv>=>_kM_#AUXzaR zj*|d%=cHywe-(Fh6<{2xi4cYGBQ}&n^Dz3IHKY~;FkM-rhCtX5ejeqI zfBa*&qQK{>y4H=w*CkKkffq;C)dATZ>Bj!`)GJ9vw5jC9oG4)=Po>bN!T)5%uAZ8 z=kxq*(d(ftCV?hS=o}qsXwqr%O%<3* z$s#c3+3WJmT2JVJX8y%ICw8Pky)bf5`co|+8dI442~i8O)#x0uL4;cY)njfbIvJKA zlzE|}SgfskM9duWbJ)(IM*?S0vHZF#Y^5uXoV6=<6`pO3E@2%{5KNbDkym?%>9U}q z7i(LW-mY&9x3)IulEL-b`22oZKOz*^v8dEL@83CGWSQ2k6cQm=2Pl9Ro5b;NzVgcX zbLZ&O!RPjn@V430F+WRNsUdtagybVF**P zw_(Kv!Ge7w!H$SK65P#}XT$L3_JvUpm$bUUfw<(dWtB&rqxe=-vat{(rqmUb!)=Aj z1UVj>!4#6(OpW|8;zV|A-DQsU%KYN&=pyBxaoq7JWI3Uc$ILvGu6Ncnd&h`fcQ7=& zE6nGs&eI&%uLwJyGQEF#?0DMtJLl))vSa6UWEk6zzRpMMD~qh) zL~X;4PPV`tZ76HMUG1JdnH^Ud!&N8E5q1T%}N*j3%W=Awp zuKL6~`zbr|U2!Tqw(oKGo$l1Yd?Y&xQTtiTw%)PH5G!>8JGxIt^&YFwY^-n4^teoE zy3gG?u2njui;b$x!n$K#WVTgIgu0mDi{f6dFPim$IzDuFdF=djmm1AV zLqUr=43sm8M9m`V%&hB9;FzL&7B|^*zd3fNo`^$VHRV9cTcJ~y@eZxfoSBA6u}8y% zKE;O+OT&&ttel#}nt|ET=j2yF^Bb`vEZAHZHuI(H!eQ9;2{64lL`fwKq3N^0j64bz zB7*@Z#-TnUoglPBPdaJy!|AQ}?m`u>K%t$_hHRd#lwA@$AOOkY$xX>)9f1}oMO6fg zJvvtbz%k(;xzAeovJ6Fu03^LzSN%AlH~;X}AN}m@*K2l!1#_4#W|uEteDN#K_xcHq zqlXV4+`oV4YhQnPFo-Li5x`U;^E^Xa>;-C&gxT)yWapu(bmE7@{!nDa!<`2|`q7WZ z<1tjPJ&)xVZI-3UIJ)ucS9+Vhe6}dkG@CE8*<5FpOm$Gy>{yj_GUEBHoE$8t%XBxL zRtT^bfwpJ*VXS0d61oav4WcNY^`ZluoGP#d4U3nbOZvk|r`3FxrAykN%`=e-c_^ZJ z#q5})@x+5hV-V8C#Kx;5&kfum#tRXfj3P1Gl*3VE!H(>64RDkYO~i1)0)yq2WTmhx z?y(>ncXEJ*Q5Cv&Xlr)9D2W{_&ADkJGg}SEy|dd}p2zHnu&U40<0=vT!uYusw{G9x zn=j#`&Bcx^iehUIVO}}>_P4%u_4;)|&=`iWsN_4^)a5o_&5p88PaCl+b2N1ox1b?C z81x7I(S^&Gq#vPRpfYs=S-46^Kv2c5Fi0a4W)&-T)bL~hPNqe!E6Lx3{$Ntxvg2am z;*L!h3%=4|yKwQs3(q~9&SpgLhAw}G;z_i26P{`41JPHHu(@KdZY7BwcMta7eCKW9 z1Qc1lQ8k+RhK*(FCK+@$SI*L!-@tNes$oZCDZnpaI z*GI9VSkc&u9i6)6iR|dk`RWKxVn=?@QFg=>?{OcArYB}*tea6jgdMxSBd4)r>;7yS z#fNr>k2b;|apgWSXMGwwincGC*|Ei-(P%{AcyKU5p9d-iTy9#q7FW7h(|kFl+1R?? zW5Fsair8`3?>AyN@(J0|G_{^xcI=)X$BvGo>HT6a(l&HiZj`9a*3RQLE4cxYGApamg?%?%|@)|hQtl}bBP4bK)z%zRt8L*+KDrrg0eWpo?+9vZ8oFbe$G^I~P4)DG7;YWgqs zB_W|%WTPaeq5HRg_t&=`+*L8bEby@xhs(ucYh(Sn=bpQE@8!$>7PPw3+I+i#d@I*yXH!AJz*-mSa;`jekjd3JXDY(E~L5tdsY5S|K(t*1tp zZ(h(^&*$?hr6DzAb}WKYR!dE5ld|xZQ+s%jKYTz(KaDnGI_%Keo)kSRBBLXg$X@ui z;(O9F410Kj6tObD{`{yv^p_Lbak?#SQHUZJg_d*CTL4RnGB;<=tm`tbic%LPjRtxw z_(!rLJPHFr{}@JMydg$sdRmkcd1`B6pG-qvy2vptFlx1O#kN2^Fjf6@$D4?Mvb2)$ z%?_5Cnaztdv*^2#sx-PcjJD5jWBtZm9I)!Dtz%V*2O~-z@7#UxXf|6^#tHN|VenR- znZEhPH-6)V7ha^{hGJC)S*Hyy>J=K;vFVI)%O~YX$TmJSbR^7-r|O>Qz>^m) zTzKKxXS3OqPEeKQCd&+`xeXgd0t|JDHXj#vRB~D7J9`h`{@^{KWUYB)tZHTtw|neF z$SG`QJAoBfEsu&NV2JxdnbOPh^HFkb>rA48Vv+LkA;_x1j&KOijfPc>f`K@sE-egp zASA_2liWyDxf7^`gx0U~fo$z(tQ+_>JGLr6D||d{?mlV$Ju1!3;cwAl$L{l0eN1*d z>0|6_o1KmUTkqcLQSFpgln`})5HD-o;>NVkblctX=lA+zv*YS|cbTv26Vp+lscW$0 z(R}D*$8tm$u(SOmsp(Vp#wo?rd)CQ8f82BRBpli8*>Co_DLrX+vFni3)wM>(kOi@j z?X4Tr_&r@d>!Q-BJ!mKQiMPMyI9&b5+`H3>OV#;n`Pj8{*QnNiv8!uj8|o6xz2jlh zK@x_DY5^+@Re9dYk-}~-NcTEQf3=^TP7Bx0S(@tj73AmVDm&cu9z1~^-NfLvNrjqk zyk_O1Sozvj^=)l!(bMhry}Mx$T62uFssI50|4BqaR95Rzt9{0#wWx~2<(vS(rMYRw zpzRNm{$Mbu^%UFC<1t=rmByRq809{qIph^bHflBQPVwqL;fxdq1_KYOdMN1vI|A*( z=6WID*INJaDOJw8mwRPYtC7xqHVzQb9peWsCGBHYiIArT)`g_+!w@=N81Tubw>mlhOzSzgynG*`l0Y)FAR1h zBmg@~7JoGH^uYW1zr8b?OeC5)SlnktGO4{uEcR%=l{>yhwL=z({>i!tQie$SST(XytIQQB7z6@DKlxEtf<9 z8|&-qYwJvnC6~+TQs&EG^7M<>wx50G@cw-`dCZq)k;0d7J|9LSg3`OUXCJ)1fAFZt z=7{2LU+POQkD#Ok_jF%W9tZ}JOq%OaNZ^MA51B^0woR9R@SAI1c}T;fEKFIbvOxPb zokAlAWkonx!1K^Ha>h-Yg{}LnrL%o^B^98j05{rjOZ3+W^rZ;33@Sxyfyfu3Z++r@ zWw_IymAVkI=0^y=BF3a89eS~>;Qk#9(`B{y2=;-rSVN~>Sw#K#+_^Jx91~)3+|fY> z!;1Av84kqf9DHS8$Ft>Fq8-6l&6zG^HexffPP4q-d_wLTyyOCgP6*}&W!Gqt$NAc`O&ojEB@gf>)swZpV zx|-cwVI~{3xwBMPox0Tv*GEd<4>)H{hy{dZjUH?{WNo|=b_Av(gYA_HN`XX>G)aLY zh3W0y6|cW`Ctb|B{eeT=^cIsVaj0zSv^i_&A>h!JFl8WZ7>Iu8t;NwWjz&pL;2QfL z(d58~Mo*x0Y@KU+*@#q6u!{u1nm`Fimuzp)$=RJ)eBAQ5G zJ8eoC`@McRN@sfK&H(|H^uk3|E%GAj`CHpt{a)X&Qj@Lgcr06+ICk{!K6@%_BbUJO5E!-7W6=g=p zeC7Pbm!5lWIVX0^Q3#BYY+3P!L+SJt_^(@boaX5VJ3H_1-gE3o1cxJGVd{#lrEOCk zub2euoONTIi&_Ib?_^+T!INK22ItpDbW7&T0M9@$zXHi=B*trY%rw}MkP#M{{l1|)FJBPx~Q|`%MsvCc?^^{0Y?aw&wC{KRBI)QcY za?6^IQqh-j#}9dR*|D?FNA~SgV#iar-#I5w&W=Z5@7Pg2!N@*opY3YP;>fq0TB^Ty zBCVxcA1hQewz4%x`i;8%H&0MgY@3*Wx6%7JJGOh<_!HKB$DJ*H7(2Gd%TY`=`LmqQ zEsMi4BX$HO96PH#^`G$SvSWKcN+wc%M(fA&)D9m%#kiwzp+|HK`-6U;K=APJFr)e1 zTBkhHzRMN;AmNr4x{i5SWXO~n3imw;D3yeocoIpvzq zTwN1=7V^Akc5d^_o+}@8ofB+}6EvzsUXw+4=v8Zsuhf(*TmiY>F+#ngYo{i*Ls$_& z3EgbpXCcWORcdB>a-lgd{iDI;2@a0z~Q+AiT!>U^g^%4uGWY1y^z!zhV2&YwGX?XpIpq$1{x>2DL+m-gV*pZ@53e>2Y}aXgqxZqZ9gjUnRP8pYz=W#lTdJ%lv?nSl*3bKcjXtrXjTRE@NF+|+=viNx zh8=k{hbR_AjvWz4cypH~#uZ2+(aWax)_V_fy1j(I)ONC%MZIYI{Mr6s;O=71z#7*G zQCQ-YKudq;(ZT)w{Uwo$7r2F`teq>txOBBP&z%K3#t~MVZdoqtthA{6seR!rr4VHd zt>ehLx6I|NgQP!Tv>q~tI8!c4%5Xu z_wU`=-!-a^-382!9I32az^{G&^O_33z{je~j&SSNh<39Kc+HN&S)C!*4I4vdN7`?X+0mh;?06E&4`s&>i$SUmeKlR4 z=;;5Vvtxaz_Ll&T;=dwxRL%FFkR6X-^y8X4{65p#2A=T#qwIKmD1RhAp2m(xcA>Mw z4rQHoW5owwacEI??xjzK9ao>|u1klyKaw3~+iSv7H6PB7ASBIt)PXlItG#Tt5Y~&s z<0st86RTU*5lzYtJED`pRat)mc64P$ZU1$BRckHmHa}j&C9zmcQ%Ao?A2B(Y@Dq5& ze+a^`!x!Xp^HMh+2`{x4Vb6(dOLpR9SpmH5|^j2f0o<}(z7)Qj3=qKksYlIfz1s%kFSntsll-+FJK_H@`EaERBjV=47gVn(Y)kDc+FMn0|dg^2<)jMRD@ z4Z?8P3kPxBOIRwLKrE0Usv(8b3`c{=bo#&k$Ny#b;oYbQCCaKQ#>4({nf7`F62qX^ z^Lp{k=UMX_y5Dcch$sb02kuBfBt_h=X2U&+J2Fx z#E!$YG0koju||=(;HWm$quIgDuRee2#&um}#bPNJc{$7O-oAI|{X6>y3p#V?^YH^- z;V8s&V8f2WHPtGC&}1*l`7%40n)w13lg@FNh>e0~9 zC77f6pRM9fxFH7v#IRvAB%L829AV%As6?_RMrV>}F=oh&X5Md#=ivr$_oZ zU~CNtW7wzL&{6c`QJ@l8_{CJ*zx{A}m{l50Ftc*vo4Immjfg*PNo!|ch83rZXpha8G*nDk#uCZPUT)T`DH?4El z26ew-ZxHqR>uVc>^-bXgwk*H^@c2W78*TEYE_p<%8p~SkDp}$6Tx!=Hg9a1rJj(GZ zv%F=;z5P9R%JJv`ZxUUWw2ZlW@xt>@KU-uARkDsJGR_s61ehHajBB9P1hT~QMorQ= zvE$wShn3H%iOK|~R_m!)71FfLng}>L1_g|BTNV1O@eGkz5%kOA>9w`3IHFz3Gc5{q zqgBSSBatGpqbQxdHH`shCxejzbpuA~)_BmmCuAj8?1<#KIDsA82VHAv-8_m<1sZiU zY}c|Q{3U6H|1sF{lpLZwA!qk^&bk|C@=jq#+en}xUfsy1h^FIp6~Xwtx@UgX*->@1 zTI#Q^8oJAlt3Oa5y<|AS-S~t(lc&Dn_$S!Y|MoO&JF-o6Y|=ji;nu9HoVD9lSB)IyeYGA9RI=N+ zqw2&R6>Ednx!_s{(P?heriR18c)a$(`|o?OMd_Sdm!vlAS6f!DW}d#MzoVx_633fc zTY(BHX2;fZtW&+Za=Ui=k+PGZ7f0(In@{X$>o|7DGudzAcJ$&Hp0n{l?{maR8FrD8 z`(0fu(5Vsm?Up@NCl)b-@@9i535f{sHRM`K2sCnMw?7;XHTN>OtZqFS)TR1({qqlh z#1Xo#~Pqn?t$oQRV)9z_tvB&g~Q<1hyF&{ZllRAYQ-JqkAM_5SVE z-AB7iUO(7=5=qybTG6zfxkr61$d9;B&RtcdvN^HiS}z_4{wNOmN!*Y8B;vSZ2yJku z?-=^*bS(7GzW4wA;QN0c#k8f2a9itQM5OCx*C-+0rS0Ch`5d9ia=8dS0%sA#rYACe z``y3#-~ROaGZ!ykIX|B-&#s-JEA%hl|G}f(9gndrpvko?*4NiZYeNd)`pxdV$gW1=Wn8xOhhBBcQZ`JE=y0 zZ6#B>gFLmhwJ{hD`Q~MN zOF7b_VZ62R`+xjLBJeT@4!W|CM*5q-N*TB)JHvzTszJCpjCK|3-}HUd8_-1`t#6Ds zHU%xEDy;>hB5L~TAR0Q1HDZQnf~Lm+G{V`jugO{S(!i9t&eJr@GFPiWZy|O(oE+A- zwzc%{T!yHl(7$@&!ZX*d6W5y}_bQmP2)M<79a*mk?5I$o>ex|E(#1Qs@7y_jWL=r5 zuGx|P=d=}DAmhFn;}X{BGc&BjkK^`zMUYtZP5Hvc=Fsn4HSE`A<+$q$Vcwh_mAwa?n%z6&#a zq1ch1l3+(Cl`h1}Anr?cJo@_Ov*VNWO{>SD?u3^;9ZvyA@daeZ zM*T#b!j3LyjmAb#PKxx9=5|@Pl6(?&bg#N8@8hr|Z~Y_K(FxFr4m-L?2Hozxet&y= z`wq?Gc<6P`EuRfnualSPE3ceb2RpYCcM);+x})yqtdHcc9Xq<3C-m;R!pala z(M5mj#uvA0cR6cxnn<>Gi9*+5&83eK67Ny$a8tQ1nI>~Bm>Ri(nx;|YdiXc=$ARL8 zYNW9ONIXJD2eC|_9W3Bw>$avLEX>n`OGL?9Co<>Pe7T^nMNzm|GA+M82W=a>J#ySH>As4C!vVgMG_qydG^nL{g-dN_A?*RlOm++ zUx6JF(e;6xbSerdw$7hBd*K}MM-=vPp@J+n^Wy!V?|$&w*$ZR(lR-4nX?g4Y_kZ%w zKTN{NvvpqrZEj=lQYeVel_eJT8@p>>g*Y~%T@r$}# z+mj|xt^7?*X4=!GS8C`*dN!gHFHK0hA#%T*%7aI?gUNg;`O2`nkD2Ww4%3huMFQEd~0)n(6WnWFAlGryLkQbB~c;4ujs0x z9mjIo+Jzoz|1|xchP-3PgXQe4yLWaD4^i)kN?+sI+BBNuf33Ad4UX<1?AS3; zVSO69Rr%uC%>j(U4Gazo-&hZ^Mk`W_(oJSZQ#BGi1s*~oH;p!kbe?=1aYV0-ZDkE> z?YWO)$5n^cNwePZIj?0$tp5!!e&{z}Kz3~9Nr>X|}7l{ZaqS&VGId?C82V8coO5zkXbHY?N`pj;Iu)D;ju9p(j-_qlp~4gYpU4 zah0k*R_{`mfp%ma^pWcR$7>3I0d{2R$~s3+Pdb{wE?hWIPx(iW_Gq5PeAbKs+4QTI z+DsRVG|M1p%ymEX!J|IG&senM*{phHy0OFVXlXj`WxLPj=;Kc`@yI4;t(@l@cZH)w zlXbQcdU17%j{lrorDU1APR?5LX{c4iIme9%B`6Aw0zP9fl!-70lx3Pj_?W)X%)qsv zJ_mI%ce|u`YZqC%%pAb6G{|mQCz8TCEhhLUx0pa;qF zA#pE=6BY~)!Z+T&6(++tj=8D{-8tYYpZC70WYD_GmUJnWg!Ibf!eohOHu_-4aTGwN zCsa`C31u7w%#kYgQK$!cT1@`-KmX^0y@$3;33hy9jH(J0YU2Z^^MW`P{OR4 z5F!(0Mc7DR-9$^b%(ctcAKl;CzjH6JRTvf_%1I--BD2||s8B3e7Q_;Pv9i%}vS3F- z_0;lm02+-w6swwHLSR(hcxL_L4I0Ulyf9U6%9-9rZ=L8TOtUi2${LU`JolyES*8s0PbSDRWlg@l`~utxQDY zLTA1#13ed$-Q|OOd+CC(-}8fzZXjB@^pXex>Ci_Km_@LN9dp7b;nRA82=e{|bXp7a zl%uoOMbIVE9wH~o5$5;)zVJT#aL$t@hyBTokBx z9IeMmzc*OhJbOWe@o{!Ukwj5fHad0$>vG(YE^d{(I!8L`Hd`*!G|kd%I-68YpLJzg z5nrdA4Z+1;7+pPg{>J4?ir$yz3fCJojt(5b*8<@_%iT@LL3{FGHh<^Nod>gtVX+Rd zqp8KG9q-p3=pAt6K)7P}XLz{7T%aoaG9T#jtJ~W#YkgzDlmQL$!irp2SMP|%YV3_; z$J$_~?Um6S?bP)m!*GANs+Aov$4SSIrj3I>F+1901-VV^LpBp7Dt>Eqi!T~G3fE^X z8@G?ftJ@LJm+aWQ9_zDSRa&g}^OwYq;;1X}WBYLY^;xi^Icg8%;*PCo=<#yQPlX-% z%^$&zqS2mg*|DQT`LWm$U$MCNWU0hlLqJ<|DDRifj=cL$8vBXZk)H9y4VznA!{PAu z?b|1^BW;Rir{!`%_=sZ^(5T~D$#^_o_m$V4nbp1>*LQ5#v5i4GMm%!-N7zyEV_I^m z8XrNd7_s~f_8*NaH2=nEnT`|J^w0=HHZ3^(9Cs3fK@=G-MWWeie{Yhp0|pUE0nrc+ zsg^Jz3z+bNFyf9SYgHq_!;+6^$sxK@*z9t#q{#*Cr5X-_R;eZ?WI(0B)EMQMen>NO zgi5|BOyVf%4SH)~G64bh(ipU zGlXf0{XMcWUl2JFp%6iB_L6bv5B*?(GXuZuga|MUdNG=RBA>a5&d+l4-9P^`LbE)b z6FY_ymL6b7Os;$;eQ!A4D246~2ED<^%E-vF@(&|1Iehok&4eIuDT}HfuK(n3{{D^E zUc0b;emS2ytv8oUU*A|8tqqBF5FrJ@m6ix2E9r6!M;rI<-K%mvN@6`=>Y4w!JIiYHg}nm4E9Ge)sazH(cD&v%W(d zcvw3+VdWrx3bpZ31;5A2RIF+v{E(oLz%fq7TjwqkI~vYeqmH&=N5K(FwvoY5hXkWz z#{$Ky6{Nxod?jWCIxYzy@sCA`ob_M*C4JL8#47ec0_lyS=iBTRsZ9XoNy+^q;Z>`2?^ddK?VtbvkXA6jfdxOO!pW~moHsEwKU>GxbTFvhkfilE7d?C z-Q(|nOsxCFt#v=S(aPr$qUyI;yDE5S4rCQ{6fLA3yPDn;jG&L|73*%tm54basiTa1 zH`ewGtt)rq%hG58u0~+DFUMTDBFK+3j}Ez@Vubk>z_M+Zs-0^nlEYHBFtD*2FW?rh5OxrBnZx-k%a*P?03*Y5D9i~&C$PhAa#>n% zYR$k%4>5RO5(I~RLdhhK1-qpYxDyo<%PweJMGo!hfOG00sF8MbOE!E#o>OnT=bRPAhfo+@A=T^>4#B|z6p{Lf|XDprK!;B{rBE|`?a4I>?G&a z#v2$UbR7v$;M9y70Pa}{*$c-{tjelj-&gy3`OwVwx5jH?R{ZpP|MJFO+#~7P1o7(_|3VP{BN|)&}UsPH*S6bBpawKFGO&o`_`7+C_%b-fg z+VuMPpUb8-XWnba!-?$Jf@8POx}(2X?_vGDGni2|t|duAB!_NImRYOY(v7TGr=#v_ z3bENW77|K%}&c9)&ILzk0g*Qzvj3a_?!D{dkH zHE+?pfDu9fNN+~B&2V_};>F9CFW-3P#%Me^bLLD{WCT(}-w&X6m?p~WLERBSPc}eN zK_FR{6{Y|8-+J@W{X0Z+@a?E0^0-+7F3JQuvJ#O89~|OMpBM@X+~FhP9Vjyui|NSv z+3vwVe)oG1@7$x^ra!RG6534!#Eu)NmAu1Z5A=f*GSg^3pDE+i|Fgctpx$?&c5!O>Js%5~A(%k&o zOD})p>lqDxx#~-Uji=|dcswUmK->e#?hK2m5*;wkS&0@IePYLCc*ge!+m~*LpoenC zh8?-xgl`^TV`W(1kysHwYEYvE@n?koRh}*9Gvdb-p~sY-Ce!J()Yad8@B3iKh8b9K z3oS;WwZHSqD+#Iyb6FOC1)xO4u>`Hr1v0E7S!yKXonyk@;of4KcXvDCtePENHRR{Oj!vRjwh6H>EIW!O*67L~O|wA%k{uu4&o9}rQynW@ zV%pWi9nD-nw&l}GGd>G;tSj)iLG_cfqx+RIO?R^bAEZ`KEBI;|CXYrNRXw(MEj!i; zR-S7+=R|fst7gaczB_*GpPU_C&#BKIEyNAPC0Us{D+pJ+*(C1yaVgAfnH^52^w30F zl;^M{j7FnT6vSTBgy?s&{G!u0?KFd2NY&#wVjbq`Jaf7VK`lFqM%aSpp)AX2T5)|c ztM@1cw=M!5TUV)LHrDk-;zEF(5$IGvn!x7@8}L1%jBGsU`}Hr`$k&P4!D|e$2ULS0 zs7X5m$q|G)jH?51F-s@a;i&*K4J)}2M>3;$ERc@WBx0OE$Jklegh6Pkie_Azd}#|# z0h_KMF(kBaqNqNdo^lyZKk$bHj_1y;Z*HuQ$4_6qe)Hi2O{DsC;}shnosjm^>e2ysUt3&)OCY2W(!&VxJCY?=*wN#vDZ|Fs)0 zymWbba6eE%iG(uoBT=KC&Wp*xaxu&I_osB!eR?mE7}2%KRUks&kKw!Q_o~pRv#xR# z=VDwu_3axb-Y>+W$TZFWBKKs0jv3-eVzr9Fl+c0;K2>YyC>sw!7lV|nC}o^G68%Fc zWDIr;6JZiDlVa`Zz`HgO3GsXZb~MC}k-$lF42>IGsR(aA)~-)0jf<7Xpn{hCysg?d<$8CQ;s+43hCy+&?ST;KG%g z9C!RMb}Vq6G>i3=WtNu(qSqiuV#jP&qzjN^meD|(&E|Bse(&$UU%2Rg9UZJ_9Mb5g zLI0iK{D$J7BP~hUmmDS4jvZa{x~$pJa^z1woE*OO-utYE0|_P90bUCaIdPb(dW=kb zlw{+CBHnCmNW5H@17k1tlIy+Lmf2i@9m^^pUM)d^g3Dzg4^`kQp**)~9hN08haDY? z+Cs&)>{v?fl3~i!PG+sCPJVKBJYMgpntI2&eEW&n@zj#SkHwDSC_X+3JF*F8eI&N= zU)M+Huy!WBhdNJ9$@NCfnfb)*C>r;I6WGx( zD%aN5=z|U>6ZhwB`q z_B_{pGcG0}>yDQ8dbv~W`=JXx(f5RFhqEb7ghUlk+u>=jUgF{ntWqv(DrJI1u+e!K zx--d9Xhc66{ctEmJ~lofJ;F@^$k%BngREOyG23{)8TZni%h#}D^D~a9#3PbRA^Cba zEft`eLhO+aBn%+NNZ-)JyqIFf#W{DCeKe;^mn(;LNf<)DJ4AUTd=V$JY252W%sdD- z*VZqd-Tv0szJBHWxhv<+>M}iZb}b47#DYAhmdxQ2Q|;crjm`#BDLzHKD}X%}RLFex!yo?BfBAoBy9bd_#F{v7TpNmDE={7Q*w`9x zj7Pp#NmUk_uiuZg&1iup*ta<_BCJ$Yg$gY#sn^&3S@HDm-ZXM2von(sWD1ojTS}7( zliO-(0d{Bo8G^gltS9SfUAb|`_-Hv`M>n_jMKGWvgdVs}RV|4f6|#TWVL8!6q>xQ#zIU@>ibz`nSJDC$D`1xUw2o zFNkiILKEUaic!?%G`eX4h9pxw7_6TQ;!SM_m#;rZn0%Zau^kO*o~rh(Mu~w&z3jrm zi!e7Re58L_xVR%Nr~+okdAj)i-~XV(y25o*Asg-*sz!12&6i*Dq5fTX=!!B@qnnET z{xrcCvnu-YP-}>opM5x)ynE|*VcFMPIzt(E@3W*2_PBE=*44L$>wbmLwx0BO3X5uB z%(e085-rB6ykSSLvH^i-!;YHSQ9QzW(cFM@K5F zziF2G@bgW*jP26#IZ2i!kMs%%=Ae;L^+SV|p-u=@) z^<%Q*lknov?Vp^pR>Jkl9AQU1Yuwv?=7SFBb(di7;alI0wh>L>QgkiFOjIc<^((>D zI)?P7mdXZ?$Y%UR&jGZ}l7gY|isSI~kG0q9`ZRLz<@iz;8dI^&)eNbK@)t>t1i} zx#mYM@4t(Q*Y3f%+8&x(@R-+Zoq-SHFq-B%co+0VGq$^D>rfoWYXeRNYMM#wGhCl* zK0X%vMh`od-tDZ9V54c&e9)pBu)a_fCH+A!Nodwx%w|N!4*H!991mB+p4^S>h%fs| zFX{J!IHLKLc8bpYAOU_}y>RK=*5*#l&hkJ(bgGOCoiO#iJ%gDcmC;5|L2GAzmv!axMwW4_cEJu!Z*(e zTi3VGtS7yoDCd>SS?AvCukL!b?@OQ9ak_VVV@Ph1jDe>8LiHU6+KQP$2N*AG@F9Hx0~%<|Hk&#OJ{|*qwS(fwOtA#NK4?D zsbXFj`mw}Qlt(+%#yw|hr!4FPROe~T_}E)lYy^$4U8#IOj^waMY~*i^X6b|Qq8~lC zQL3f&m8WC+ERhGQqW^qrJwsnBD3i<5N5Y!+A*D0onT0Ip>h^n&CXbfsymIVFXLWsj zaQVvloY+=b7gzHA2j{G!a{-^@F{`_wU>-Xe%n@E*8Zm z-n_JCi}MbviN?m-gjVsDwCpHj>@wR>>iKiqV@;e|EuVcYpA9>TC&R~<9d(^Ds54cfqwK%hpgcJM zDSoN!=+1UCjXya%a!gIMo{u#M&xn|9l=gyePaQnQPXBLkDvhLZfGyWe*=dJUl#fkwv*GQuADnl^M}LG_AcP|j z)O+9aaRMtyhQDSAiiMsV9P1`2AS)646`3knsY@jM4V=LA90+zIL%3WMyE3 zDkSufWf+)-NuUW&~wvQt&?SQC{ACAVG$?%NyhPmlodHMwv4{LU;O2cyQjB(74^tEIX zrFA3f9!r8n8vRwVEUVn)8I7m{t=5YYfpeQKbGoMg@Q?r0q?JANln_MVKXZO#{x;hi_3$df)hVDDMZ1K_T*yct%FyVR# zTCzEEluqA~Hpis~_A$Si&+hfB&W@`c#(Ve-cXW9^4m-97+*RW4nvFk}vp(_LkIjyv zgOA-G@yK4~sa2a-6+*Oq!AI_ykIA^79y_)%H__VQNxNc46vS|}NHWUR@9~bYW4r&h zjybu^tf_S`Bol!L#WhbXX$dZ*!$;R7(b@l#*|Dn!RR3%3n(7s zvCEFlJ2AU=*-@#^{zw*vMt?@o>kZ1H*xTPHTyqWAN3kzJznSHUB?<30d>8;;#xxvqhe>2N7%Z%y9;(S_4_^UWr1q4 zLJ6cJWRKNtYI$&e@zg@oK*_l+H`!=c&+ahP^}$GNhd4TDQr>l2k8S#9M8l4J0)5&P z>MyH&b@#Z=CtIIkE-Z6fc4mpbZRwd6$=&g)0D)h^(CKtaGrm`6Re^CFQ3kjeIJTLt z+7x|_!-!_gLDGXrd%rgtjgll;8x00={K_|e{lfV(o1-E9h{jc0(Qn^*=e_giw;`Cv z@l`HF5J~8g&^{7J02~!7 zixM({9XGeOi5>ll*^vOdD)ioiS((agCd&-i5sLimR&?{`WogUV;biY%LhM);bZ%lF zjm?T3u?5VmMI}z{+x(>$xF< zEasY6$OTn#uhyAc(3ICa8QQsq?pJ?v4Y26>aQle|^MmRA2ao7*^)y$Zm{@WBchrU7 zeJ+i3R4D>uWqtZkWqg+DQ3S_C)u!}xN`ph#CF&hr+;R8b?7`iG#UVk6EFqm;5Ia8o z%=NTL1Ny)aK2?6$j6}Mb+D-e!5LKJ@O!q&I`==TWZQC?zT z0F@W1E=sN-u)gbcmrWW(xRMDUuG!i+b{vehj5kQDRV-Xi3zD0Utl+8HWzqS#$`{pBce)gBjj&k)`$Jxwyq3Kg~4O%5!>{3SFV5(l<>j>&Ie82T#8kJMz(~ zqkh(_xFfU35q7K_Zcr8o>%2Jb#c}fR;lqv!W4(PI1F9&B*pk1+E1L?8reNZtmq)238zbY@SWzP3(AZFv+sim12sz7S>6Y()?IT z-rFY4%8LQtPlAMygZ7_(xqbfpcsxF{wZ1kS(7gWa(@(wd>@!y{U8LE1GzylB;;;VV zFGu6Sx$QF-E?(>>2~IB?52FR!D^;Vdv79gJlP^WIzCrsRS{>=^jqm^E^u3>Ms>!{# zUh}=AA^=hkeoud78?RCI-i z3!q0C4Wc0a;Dh(*VdHtm52VjwCZMf*jv470rD^4oRQ`5wU)yMlmieMf%!tQM7qREYrz!K3kTvT;xU+C9>XXDMmxF zGZ8QRQE>L(zhp+0$g3(do*&T3h&p+4b-I@$XO5MTOOn z=J+FGh0PMCE{^2tK$fk^{w7$ORIjWlWR{CJC3wQ5E>N&=)^b9vD(EQ z;YNtBT+>01xIESP59~fc)E;>M-( zSI%t4l3=lvMJ{y--AoSd3bwIE8i2FaF77zZ^Lu*-_a8pW5O?$|fyG2~3v+~Aucn7O zDQavayaC$)u(YH`3R|1=Nql2t!yZgbRc5e9N8B+(Cc?$Hk+3e=S{tG~T*Bxw(Kx@1 zZCG}gUk*D466{!Kv7d|`>rYv2uKSLzAMTMJ%#(Na2uGfLIE@pI=yXBKRgSWidu%_= zh)@6ZtH_S(gn9tHy6o8ItUpwDb9I>A;nclePjVWLt}#w~&&lklI=^%)*QyqccNTe~ zsaEFqfNE7MXMKe8j`nP=e*FaO_;Go$dv3aP?sYz~>0Dc}qmp$&iQtr}Y<9If0%a4H z6fSOL>nE4%df^61!Rox;yvnCJJf*v-M-s* z??ATBSvRJ9d~}^&nP&TKo?4&*g{7ibT<9}v;Zu@9|Lobb#EvLBvvQTXZ5n`Rf9C0O zx|q9 zyrB4|tAokJ8NG0{k`=8(@FHZr{rZH&QJ*N(_4@RZ-lP3J`l}Lpag|lI+q%13Q8Fl9 zz7WPfD$Ug@hcbtKY7oGd1jb-u#Srv@7+T-RW52}|?a0EC4EY#lQ5wYXd%a^ZQ zyztcZYk@D%pV@rz*_+#&8w8m1>EZwRpZ@&dU~fEz%FoqHm+2KJu?l?)jhUS0K{xE% zC{F2#Mc~u^CMFk$J9l3FyI{U+CU^CGy7zEK%pf!Zk98n~#Kc@WS=s;lo>W>`5{p?k5h1uOM_eF$-fYC((05 zR|dX;()9<^bw7kkJm+!r~vzS&sp*YtH4A$anS1$*N2ciuH$CVIKL&*RS6m7)b z-of79B#aUi0HUPEcTeLIVKgOs!FT@T50+($7G_hk6t9hhs287Xm1(3ap>aJVv=)F` zR%ORqTVa2*u*t&2SD$$)Og1_0=+wgtMEz0PSaD5s~Ioc>$rEaUGpL+nV4 zgLGbIsbHC#pTGS9{Wnc><;8GPz)?X`RF?VE*DhV!+K3VIE>)S^GDGItp&4h$UA<&V8cB8~_krjHmYwH1Zi zNl(p}^c*Xsq!n;cNj4<(O7@q6hc;R}xJ}1}yA}7!Snic^P1gLC*-@UzjMz-`-Oo?Jjz_QK>JPie z_=RFe+(m5pWSdUvcD>itTltk>N8zG|&DBwI#g0vl;K}T`@&Ir;hg{Ic1#d`tE=)=I zIHxDB;syl3m#4l+?C5k1p>4OS8T4FR3NcWW#Kev;YhElgjCEUfY_xKuSZ3*LHZQAE z@}Fp-(1=B&#yqnWpfPuF<| zIOZYB3!y?n6(7gXSc>v_>eSkiU7`Rp?n&YvgJ3v3wkTBHj^v8!w;@=Vl**MV?~;avOS zG#F4Tr+qX!^$RiWS6BYWi_tf>Egicbf~ZQ^qex~)TXfhlGw7A!xMMyQ*<8H+`rXB0 z87PQ)5{UH&(Ut3$l0k@-INMdZb`~ULSwV={aep%1eefvm_1X5wSN}hI@BM5^a^3l5 zX8CKMf3Lk6+v9p>;6Z{5vm%zHA|ypfA%%XELjT-GXqT}hh1eAZ5+oNGEI^onAut%z zzWe!iUHLRR=VVpgy3fpX&kO;~kQa@f+t1Xk$};)MbI$jB$lwVp7X!D@0;U&5F9#uFUCifm@@{wApI=@NctY0jEuFp3_Fz4iuuE{yyro^B*v^D|Mxf_&C||Waq%Md>=mwJ1WY%QVBaQ$mjyFiz22M z+3~dP|Bl$PofK_-V#S3drnKx>`99LO-4pCsojZy(w!5L&v_+jovfsr`mO|uAjmsj2 z$FAdW*Qq)Lp23doob}0(Y<#m#?GxTEFm1D=-KJ#->%!xAcuteBQX)}s0HC(Q2 zx-}q?Hy8|-hQqzRJ($HE$E_WUcwMLmOK^R3co-*1^XagOZm-wt4qS?z*zRXdX1rp@ z$_d;mk$Dr}qR1>3{#j5)qh;(9jcGF0>Nmq`cHBESFx06K&n$3P7@*S)yu7f&XxIZk z+~!Ju5W*2*%s5kJA+lNi&Rcg5cE&)+(`j+->grej;L4zj z&7FaIrqe0*prN=Upi9M$SZ<0^9#{)t02Xk~F^)*J1Hfapo?8xHKF`<)Xi>K2#zSV<}BmojFquqS@iC2?oAJK zhxu4?s>|*$xODY=r{9rSgx? z`sJ^GWw17&f+D*v@<`Vv?32n=#kchm&UQ9J`)vo7xBcZc$L|3{OOCV3q! zXTV0;F5D?u{_>4y)(3sAfX51_l<)@G(NJ0)4J0YcfKfmPrk>oe2m5;u_7A5;Y1t9T zv}VVu;GW`+^C=6y>T##zhz=uR5PZBY1F2R5Z!-!#RL5YFzW{thc7)S~LTQ-Vl%WtM z1s!q8Vs+D8NQ#%0mANCXffz5`1`?*ywcYrxRkVDkQ8&0ycSF8h23jr_Y?c@d(DolQYdTt zxu>$DXz`h8u_K$)o7E#@MiQo5>A4eGj*?k{WpOU{H#Vo#Dc1k^(CjEo(=hO{*%37* zV&3r?zUa9@I||6rk2=`c*qDrGS(dSuM#@H5ZL%0B2WEPhsIlIWO#XZyt;NHj!|C~E z^WgQd%-IorI;;z~Q)^iSRWuq!9hwW9t)8FD7CRDtiG!mX-*&Q!{)wosp_sz*BNP@NnM28a0INV$zbbZYvmX02+&9Y-_zNV%{BNnJ5mRBT?uHoYc&B@ z&qQi~z1@RO7f=Mn*S_ln9;^veKZ^eJ8(;g%mp=dYuYUfIKluK|^XH-tph$-@^~`h7 zetdmnwbups@4#3IZ+>wqjKd8jn-#O|>CP=S+h)mOKG~6RT$ak@DxJoFkB-E-AH7nv z0(AVvFaGK4-}o}@mz43vOIxsG*tRh(%EACP{kQM`WOA5zB8X?jwQKAD-M_mL_6+dE z!R{Um35{j-2ktx<&n8Xc9M};hW9+EWgE194<~ju^@7{lRXL6J~1a?XlovwHO(nbjE zXmI#2;7h9)T=vkl4sbP^q}$s&onDVRD`L$Z8ZQcG=kNedo_5UFzxlOj*j0|KQtjNM zCsyqxZXXBDW6B6%vkbW$g=oXo4L2Ml%!^Iu`i;*bJ7VrwAv;P`Z=;5~G6pBNAM9sc zF!Te@Rgs{fZC>T9F>ReqfgM$rA{z+r`#=4s+uH{j?iZC`W7Mv60NJwq=8Mm-bh}*T z0tl^u4VKgt+_Ixm^bkOFWezOGQ={+g>_0p>N|mw#MDzw%_R(hR=vdu-TiDKbcmBHSa$fJGOq;oUzT;d%pM``x~|z zw5sK&KOcMA`qRXY&CG;K$u>K-^V;?Ao?yqeR))UP+VbPG<5@4~G!zm5oI*UN6&PcSb)1jSjwh+Hx)WOS=-EekoE;amGBp>9T4#n~FH=Py+wAD_ zy57mO6wr;mWvjg`eG#9Jn00Yn<$Ebp`$-Jb2i);gsa1Du<8x2%dS_2$#_gA#DwA$K z0_USjl|%OVViB-Skf*UDjjH81iadHwRfA}?!xV+|>T{=U^SzaoRoH%({TGex z>gU3b&1UgvG{Qy|#@Nb2c(e@$OTB*IW^+(H+=A5h(N#_V&{q;ek62?=6dAUxfN2*+ zzO2rs(=Jth+KfVi@H(1|0odR=gq`<-06rb9!X50!Okq`zR_MNMhmC#W!f+bT4i4dj z#9CNSxVh_S<6+dg1ihwY6AgPXb?G@a9La^PR>WU~1LhvgacFIqrc#!+w2@Wp2sGl& zB~aLqxN`Qf&02sDFx*SZZp>bL#E#QZ&5j7Z3$FFn*PPT22)Nku*uh<>j)Ero5@#h3 zmn!P~)&}f!2x#c?t>xj?%J9LxTWBL0c$=H+ODoHP=MRQGK+MpC(E?yd{f<9a8ZIpj zU?{243e_&VeWNGIcsCz!vwUQdkxWN_<{U`uRgWB;pSO3BX3Kz9@H2DD#r;m zbA&Sh117P+kx3Yl9DUJ&K{M{<-m+PH^)kEEWBxSDca13Eq`*(`vFlAD_DHDvsTq|z zQOP8Sy`$VTx{+gHCpJaE5yrV0Hi=E^@XpZnx}v$iYz?7?`^nL+Ut~Szy(F&wyU(z0 zS^5etHq_;2+!T&eV9pvNrny3oX<|nM&w_;W!e>Ra`(P9wq?SvS%AA0&ZY*~PU0jgc zhn%pS;M5{DZ#<6g-F?vM^ik@ZV>Z9U5E~!IDYB!B?ATfAD1icIj9fBGy6YM}E^=1w%Gstc=? zvFvD)sm)mf-u?ZLezAKLCk5^#xDL~o$nL1UmW)8~3( z9j--v{Oo^6I2n{|>aIJHM~Yjz~BN9*rsD+)}j-qBbcAvXOq)(rb> zcGQdWndF3IJqOnMLs2qHOG3( zHSBmS?)bj!$i%!P+y?wmt!SDyGYz>u7CQ>^7^=RGfjjJ6T-D*#Rc_X>hFT|gl+>7* zw(+()KaNe7jYeU|6a$lhkC-AOcI@?s@IqT-cbS_G)9*%7|$g#qm6!Tv5f;84_) znnBdpXWfs7;&24D)H0{i_qe`2c1$r7JX)6*d%P}M<(XV&v)K%0yoPt_SA;E*tasa^ z5F_Qgxm#@zkd3=mr&PxsM|qLbRfic;du56$eybarq>BN=iirM|odA}d!q1|aQKj`U zzRQN)&QiA+Ep6v{H?#+Z3@F$k(r15V0X z*rgnOG2wr)_Ohi5z2KQuw#t~F&(i%Mg#C}0?64z`y_4?$y z%z7$2YWV0(@Y2^saPV-F9HzX)dNqYz7EOO;*kA4|Zm)TPuAlf|5q4<@%OM!%ci*`U zdqRaA*qxA8FXX5swB+h5U;m^2N>4fx{z;2m4?Tl0?_PP7qQ$(meT1QfwID3_G^}2{ z{&3J6tSAx0%+K86)#qM|`dbR=Of@-cv~pA>zLym{Dw(P>F=cA9M8n_2j*;iTj_ zd=tRV@nWgpd+=y?G?g|kS+QERoK_7xQlD-r5L9sOb_BAcL)C$akS8K7+Q~I9Fz6_#>!7xAM?iV}8}2E`m71KbVL4;TwU*0p(szG2cBF5b`oVa7b$yH- z;jDUAN4S`8`vkM2XEBF?K0c)v&NxOjf&{@#jNS0?-*k(szqhGdyuLeg^=ch3g=DOBOkn_2ZqaZ^WY;_w& z@ZaflYV*{V9W6N8QpGe)4-O6s2~(hB_o3GvtgNhdqAuCK(C0I!xe_SMi3N%X3V8~% zSmimasz$V$K3%hxkC<_oSa`O=p2Pq$M5uGo z$lSV$P?B{yY{Y}V$tn`rkz?G_=B&|8$n(8|^hxN+TpzN%_H45d+Ba%zY-m!c*^#6- z^}QxU;0JO{v0nEWR{e4`tNaO@W^UU>QCS3dLVO%(e8JNhnArWYv3 z7rbIIvO8mirnqB??6}+?tS=L$Q~PD| zan!7~ap3-RlE3rLd+?r|xfRtv_~?5rIC>B=`Q@*DdAK@|6n7-Ihk)Te32RvjD+;Ou z0R%)LHubX+_ydmD>Gi|jk`_VAqs&>l^1^FDXQN_A>g+=7h*}w}bX*emoD6pMO0YE9M z9^;z4aLR(hqZoID(;X}R&bg8OAST*=#CC&y->U`6+4oH^}OD(tm2ON5z>%U)R3gw&LG5qM4Z;Rhc)4q z1?^5{XgF8T~Bs(MH9zU;`@F^`_#9y>Pi|EA}XT?%UUA=#0ov=pXtgd0TC(F9(SZi-n$6q;W zT^VvP8HMDs1dK)vK|O{}t+Q^@{SJjKt6Zct40k;0F(#}%xE;?l&B$%Y!mDny|2E=j z8${YtH5;n*oP~)8gN9Kw?DYqOUKn`T>LW(ml&zIPHXD8KzkX+VIDl~(jSeqexcJ&@ zH~-C-zvO!y7}O6$r;85juHQicIPkqJyAi-CoW<0bf^#3INSWnDoR{M=ov_(VQuI;I zV#I|a7ZUT2MVyvJ_S`d1J-mAh=;`QSFNsI5yz)|(CD_G>a)r|gim8)K=4$fX%WK!4 zJqJVw7d(c=;FaeZhVvlx@Iqrq;HZ>Fxs1jmcW6@0m6NU9xWIabb#lCKb7scb{?5_p zZaI06iG9{fcvMDCNv)L8?^=<^n2X#X(UiwXCMc)kVbf|BbX?en1$M;Xk`}af^1Y6T z4C`fOqz{x@ePQGLpWG6*pi;pDyd?u8*qv#U%WK4jojmB?J`i(mQD z>bVsF#{vllt~L}k1Mkp-g6J>Dy|EbsBpywdpKv?9LD*YX+|OB*xJ%b=yykTm*^zSA zn5R~Cwi?cu1YS&ai3w{~z#FW0l$IT{m?d;EXg-dMfB50glEP$#q$jqp>Pp0rWbp_9h?TNW0i*~#Rj3?-m1U}7Q2ms-KY!=;Bqbjta!seEGN-eni)?C40<&)L&!eu%11!fPcbZVpExR+|hQ{K8+o5d7;RP zq^f%SxY^NThM#1|>x&cLF;}@o4rqH6&tLis<$ySY9NL~fkHe0~tNQEtuQ3TfR(#%O z9eoD>eU#Vl8#_MEYaw=3X-jR{eCu4C5uZEjc=Z`z_{84YHLsBPiEiM!p0$zVSeq-x zSkox)177;%HFjcucsp=6-^n&VRliFYm*!7);^*3TA^(-#hIqT}VU@6UQ{)rC}hhv1ZYFg2iyIJZpJ z)IJa^3)7Gpu-L6tX((2FrFihM=Y?W@*NW5wtM6zzD>PC$ja2yw>7Q@c1nrx+^k-E`TSp_tTbp(3X zG~VDCwIzj^O8v2>o5#VpBCJd-Dxnq7N#^M#wwFtpDr zfywbADM}gVa$ImpL0Jqvm%xrxJ0k&&nafg^YTtC9J8ZjE&AR*4|9I0xNdYrFm0_Z@WW$an(>cbk6uMgqM|xPXsodl+-n(~@jZ%1z z@?GBv2f^CKb*j6>wsV|$wy6vjCZbgh8y!q;-?|G+0;+K)!v>qw_8g3jF$wH={_440 zqcbK(hlvhxrzF`P8bUx;nE*JL2f&Usa8-5sgD~nVr<0j5b^BLueAer(DGJ@S*s-jr z5$hB)DHEw;U8Jh4;*Rtlh4HAK!MJ0LN*pCdlkB@ccr(MOqSCgJI7|vMbBgr*a`gO_ z3lWzrFK~$|wf)4(tP!6MK(A=dHIo|HF;?zR-+C`YH+ZZ&B(F-Y>$GP{^;A?}g)0jn z)X+ySd0=pg*trHZO9jjHro*lbMI>B_sx4C}l2@Y~#l^HWTp~ElS$1SOMvY-}czs|v z0F9W??-BjWZEcU@)=jKt$4Uu6hCZ}!i!)`DWM_-|m}b7Voeq>O@McvT3pfgwQWZ|E zjBJ{>9cM?j7rf$Onxc_V6m_yP-PzrhH9J-YKy?*q)ohi|eJHDC5~io?z%Vkd zYg2*Nm8q^>GBi7DOzhfwuo_Lw9Fj0!*l=UDgrL94zYouf8-!M<4(upxFx7QLm7#9- zr)taI>@8`@eS4ak(d+k7V-0`zdYz>u;6@Mr-wVX%^6*Fh?YrOk+rKs#<|#X2IOuiz zp|{-c!JijzJhQRBeD&%DzteNOL*ayE81Ari`sVlk`qyv&Xt)$T_u@;}UVH(;LzWro zBuqMG$yBDZBEjS}zR6<%2$`kbz+YWj0c!s7_un|!dz8l0YuB!vzir!j+Jh zWtvZO8E;)&ec`h&Vee5xxUymb8> zOOE2vff}dISg^5(CsIzZ6JR=4j`G~nV}+0@hPrX#QlbG75{t%b%LQum@H%rn)*G^* zA1MSg%=214ffML@1~vSlCjkE(nY%>^JQDPiZu#^#pJnI#l1pWu`1&b~ODrq z93CZa{P1TP_K4Ay=o=pdnUL|dwf-{~);k6h5U6mWMHk&Wcx_A4bmIzBvsm+td;76` z`~IUz2BhyRYmTogtSmo7{V+?#;$bPxvm#rs=ToJn8FB@Y-?fJ zv82jH$t!jQvZVUrN^K4Qv`w@hmmR52eLf{V9y=OalEN3*5qszIPZ2vdnI|}wJ-t`zuw#JMGy&i+%a0vg5sq-F2@)$|}P)V%?IjT(J@!{c7?bL{NIVy`J5ZM`E?f5qb1*6w0{RhMRiONkAJoDEM9A!4SIz&Yhd6LP6UK zT|2uN%vsx9JsiH%xODZz>FuC@l zuoqylB0Ji)z`l8dS}pg z!>Euz3x!jpj!b1bDbtCJr&&A(;zPr~GVl7~+He`B*$21Yd++UE8!cCs27^IwX?0kl z_c%USiW2xR$;)K8+IjA?FEbV6E19ummQaIXS8s-=O@O*gl0xF5%q+52ZyutAx1U3fn z1dvG1No}nGGRs*xd2|#X~1udG7r3(_1T{)+Wo~j$yPe1$N{VceFLosF=|#6-J`nt|Qk+ln`qZ!^vrmE#(v*Dc?6_c0%I9C9u4lZRs;<8!&Z=5Hvqz`- z{bI)tk+W{tv8sj?!sgS7Y>rnX+Z=R*k|=~EOKr&oOaxfQdm7IqS;TZQh$l zA7e-QZQiU+S%r`M<6uX(B@nKEKw#Aq%$dNBfP?Xj8s(61*arWoA0YlpmSx*}yIGo9 z=?&machDaWm(fWMCL&sdpw%DCm%+tXwcC3D&sfjEw@0ny-0<)m! zqGF~Kb;7V?9nc(9rN99@Im~r&47=LtbYW)Q-hGrN36??PjH)e=ovaH-mvZa(4)1-> zaFR0vqfv)RJ49Hdh{z6Ou`9F0#JS#?>C2#BU zRu9$$o9Er2udo+L&UK=TSSDkg#$`H7lW_@aj6Ci5-pX(V7|qlA=Rf{Y;JLnsZP1t3 zmIdm1vAd38rZRzvYp#SI%dEH0_DAM3dj!72XXq_dq_a*+BuGTK4kT%T_}wWVEZm#MKGHl~@C zBEc7qTs%qMd+)aAxytrq!U-9#&s>`nQ^n;gpMCY*<*kyT+8HR19uwl2^OP;KqiPA{ zD|8D zlT>Gg*52KFJ8%B--CUB=gmxG)OctV;zI656#pPZATTgRzxv@@-YR-<>y#~%b?r6^)%t6489y-cW=8~Sh@6V3x z|}KR$LmzMXc}V~vkCD$riX+k{kGRq*k=KI!aOeZ~6q)CK#z_1!ij z*{&x~^jXda#d=#xCNg}WL}X()+A2kuJMid*Yfsl-{1{$mvE#y7w(My4`NZizYjsj7 zUhUD;3WnAw*}e;Qdzyl8#`d^v*wI$4)$Wg+44Em%*(MuPvtxA&SoJokAhAOQrc`pK zXA-8kg0dcr+zRJio)@(s^PDxSG&-#nD)obI+%-+z#kE?ewTkeXo`iMol#^+rsC!t8 zD!%A6rjNA*n_Edp)szC*sMqa9ohVJx5?f#JTKqw}Z-I_5z?9qDk4BRT;wffy(J`mf z?*eG*+Tt6Zxu`n8tE}Bix?T6eTU{ULgk2YvFI1GHm$;fH(+q}e0tKN zpd0Yfh4C5BW=cvp1elsfN2AGfWN*D{d_;YFiK-2qC1XlY+l;b{K^kg2?O-9IXR4ma z*4*2%^a&pX*q5fM)>au!@P{8z7X#qvqm&2t9$*p8deEbXyL4vA-#bZS^d3UZO`ZEj zC7ULRgSLHp?M_;D#Otd$7>W}_k*scfo?6d)3fd(s&!6g=S!J3XN3kg=Ty4-WQrTn`RV z1JwGF2bXuZ8^IBd#s`mfAFON)Zrps1^;}lOOsATa)-@%~rmQR+jq8;#8nC!v(`@hd zcDj??e^hoav73K%fdyEV=jJ}kz4X=&o62-l<}=Wn7J!YhJqW6aXq#aX#IiPIsohia5ulbI#=EQ(Ge7n8%mO z);rqF1r@#q$!vD(-P=M0*eTxBIcoqKWsuWlcJs5ZZd~33#K_8wQWjXRDYR&+Z*^5; zhEFnqK!u@hFY1S#u5o<<~c4XAgTH3zVrpPd7U0{E1%vP6)Dr0o& z$rFQBk0_HWF@-IG9c|7U4*$)czjgcJ0jxJUu_JMZc8zplho8B$)^R&gC#APalGvV#L)7}=4Cv^0^jlB<{~dVJXBz1 zYKYnQ_@xNgksB1A0}itc0TJag%7{Yolk8}7)~Fe+JbJKj(^e|eL(SNnwPfV`D5^x9 zs{D1>{0V;sJ62M9HZS0*pO%%At3#C)0VOd6%_h2)%l!nfBWK5p7SCcwN?un4U^((% z+0njEWk*I4ujX)$>8$7Pg?XYwet&jspNq!Yo!(Qtu{JL`7F|1)9off$kG~amtoZv> zcBIeJ6iuR;m}$>cS{Xt-yW*>zgK)MMbx89VJI=p?LS3q9)3z6{V6jwbo~5!V1qN{| z*8FX;qYXL|5|X{O?RP?f&vwrG7(0@Ij}P-#r_;qpxklZIsk>U!9&-3DJVVFh@&4gq zTI6)pxS#MVK@iPDdcvu|kyZL}dm2A9JHmVuXYp({E0x5AqUQk}c02uJ>mt^fC{U;no+e&%z@gFC+jrZA-7mlXc#`Emb zXD+h7Z>Dj2$n{|v-#;)jmW)^d%sB%hKnHQ^FoFdMu)=|h7bp+I_pU%H!*45EG2#v6 z_{ffK!YPIIf=0b)zg}RnSorO%Y6^xWo%OJy_vs z;Q^7xGVqr#UwG#3*rhbX&4UX(6Q!H&nVRgzRvZDrY#LP9t9RVB>AIaab%q8Zm zQ=I{81wZ)V&vy1_Xk(6RXj)Ng<#E;F`qk$ycVU3Aflz_Xbnr}J8*b~-L*C;U_AEJ{ z7%?i$&)(V1v4Yf-oO13cSkYEiQB7e6_u17j20Ziwe9mh{GAHB0v6QIKUhVoDp6R1? zl}byKGnVNmWk*BoXc~63ssPnuN69Pld3<&hEnc$Brm3N%pt;URb`+F4`v~mV%(JIk zlCYE8c`|maA3$uu-s*(^-~2;c>{#nSO|vyCzHZMA?2O#{lfFJF?AS8UX6@=F`>L!` z8ZTrs_q1z#q^qBNj00ZuzTu~Sy}eiSBsGPXtRX*PNZt67w>)&r!ijsFb<5+w-alu3 z@^en%=ra=Mbw1i|^Ef-U`wiNLgj`T8r;aff% zHh?B5jB0%z=N#!cZnI6?XJcIKJ5!bY0Xt&CHv$k0a_VhsYi{h2+varwoj26Z{@%d| z8%9%F8tV)Dy#}!ZfZR3VmDqg`o_bdp`*Z+ zQ(H571mRfUJ|2yeBAMIBJEAHOK#Ly7Vj`nng_vlY_asC{fDI*aG9Hg$+O)lX7_&7` zb<~{Ma4{w0>PJd@FySjOAiaKXd1-mj>%%s#U%L3pjTf(9xybYMTYvchdN}OAd*}AQ|Brw9zx=QN+v~61eEXL_%MKm_6qfN6 zyPW&MaAkQ`=AB_znsWDO_uTcZ>#6`cUQNY%KGsR;i>8b)F;oQ4iRWS{0j}hxhmP zcY*-;K8SqJI6CO~e&iQ2Kb#&VG6r^Jt6gMAta>bHCM{W(F*tRj%uLj+pS`D!vI5N- zx$lITNiVMPT(9_C+za*pb@(U?WEd zwM&?vwa-Dg=Q}GMuj6UAUUYIT#uM`Q}+z*(J8TrnO~9YQe|gc8U64 z&{fAo+Rw=y!c0`(_xMNH`W{@3anZx=R zoj!B)2|{)}m;l1@lG{o>TnsP;WBlr~SKP9|rjS@Ad>T8-(vYiA!;Yx}Ec3|Sw6+9C zV8aIpQU~^`WS(Mh(jwQV8=1m?RClDM3#<8+ z3YoO7c7kN4hOsANN6SlQuE^B&+yD>j0Iq>*3Su7vJ66AG_lceP`q1pi*c>1Av1r+8 zdW)*Ys~!s*H8GT)Q|)nNqVZJYA3=ZpiDO6mFJX?eBcto48B%AF`I^h6os&8%qWGlj z$QpzD7CTC_&?9>R;mni8ydVGd{vJIiKWEO4XVqHPueR4Zw>~>!K9&tTR%fA(JHmUn zjys}{#Rsrsbr7Pecce!^RntcQ1a`Djj$o-$hsiX7d%zQ#;tK770)XGv_c zHl0q?>kT_m$EkAD?UOY>o2n|7ZuRD|Jzc8fJ)Irx#_}QsR!fT6SYjilO8gqa$6;Qlz6IHe4A6~ILfb+DZv ze#HuC;K!!3*)*P24a6NgciWh*&E{jy8lAk+=i0KPOMhb&6aEt?3BVuB!LV<2J{_MM zwilv9t4NG!Q$VG5@X>^=mE)W&%P8t#OY5lX3ukrEzp%NvzC677{L|n1%Re6r6}DD(|5KjSokM&%E>uTkA17W5tBr$R#dh_pax$Vu<8P{KBR^_Mzl#1lp5Bx4>9244U%IM7sj&VN z_B{ajq|CUOav@&JPOsc^IrhlY*+dD$$mBNtS9h|(bLc3f-- z*+qLA#bf35*Pq+C_7V#RmK_Z?ug(qNFzmfd4c0ZrhO{#96(jL1Q@vxn7uxj}JxwlxT|}D0&aX>9G95%HYPe3r>-v#0UToB}jBrtEyS3Mwd{_j?R&0yQzHZ z4lFR>KJ}Dc4AUJ8q*pm9Ql%rT7CgoS#|!ZRV*R&N^%Rk1-w~Gv{jSX5%;~DV`I+oU z#^7Y}_`W%73}D*Udf26^2FH(s9a$BF#JbvmQejG*iuQ3?R~d!MO3G$h%B<+e>SIXR>r@a) z;$N3nDh^S_Ah86G(1yZ|wN<$NMSvaOrf$P91Wv-Xch-itju!%xmAc5%>}WE6w7+ZF zkrQKuVQ1JMSQ8mNZ{xCfcU06{oiE2454ZP zlJqdkj<`QA4HL%8s(Q!jq@#=nLD`yz<4K4A`L4URv=Rv34T7HM3_|CZZ~kay(A`*D zD)Kn=g;9B#$Jei%fBO36jm@RN=P)wg{`OxFmRJ7lzyGs4Z~gLzZ+!RS#`4zc()92^ z6&g5WFc<(4NtGq(2>#CFiB{R=D;Lhc@**lwi&UmrQKp6^4tCb-;B|}*G|NIx((%3; zA90z4zSmppn+C&LmYB1d^uz5_~s7YJP#HuRA zXGYI;LZWUZUNV@lCE04vJ?yh;h|+UnsOf1>*7|7LF9DMg%rfEZ z7v{a4!~K~~a$qLc(5;gosjq>MnB@JL1c_@K|;%YuAy69ozF!Egcr~o~x}FZ}+6a!vIk<85b<*SaO}9Ct>*evMEHp8INzVgU`P92)V9(Me>D9_EIZDl zJ`4N#FM=Iei;Ctk$kw@Q*QYLOl|J}@`NGdX7CTnISecPB01(NnfoydMzY}(3i@E0Z zYmpt>_eJ{?PGLt@`)jt}A7e*~!*QF#I>C;{#(vmY>`1KEx+UkyXzIm9Xy|&S%cn&# zDYKMgn+|2_=t3)|`$X(WpYBL(H;Wo>QQJft+8lb zQ#8Dh-q()`dcRoj*!0V>HbDGDjX}eXWTcEPkK^$eMX8<-$I^6ja^-TniWkhf@?8m10s_m9nLRPP~ni zS$9cZHK@UJ=6MLQ4()Bf-wT2Ody)GAe5!9uH}E?SFXPdhKmNfW3f7i-gI?reH@+f{ zN3Xtgy7izMp!7p`9HT|UR6faN8CCEz-R?>k0&7`@W)mDuDHdGM%AjsR!Fm5y2o zl#rNNHaeS5`Ws7Z1z0mfsrB?|`sm@ouXprsRG5Vv8@hN0hllnuK;}rM!!>vL)eSb# zTF>&ND8^-Zz}aC`ph#U-FLiC`;zx*;hB7Bvdi_!(*2_^7hmMP)hQ*T%Up=m#7X zE|xzUcI1>ECAF)-lEJvhjn7tJUhjYN8tVfC0#E`whD?Xp6%bBFseox*%z$!{Gm1(Y z;JbKtw)gH{aVTM3fJ$Lktz24;Rzl%nd7*uJ>qi)gm>1fI@j4CuG#OY0$ zDcFhZ<`-^mUfI&VNOj(%`0%-H>6wy$mR+bq&!OI!z>ain=fr#e}%b` zjXN^5@lVl|2Qaam>T+tz1lZBY)acZZFAqbNOsdeP2YV9Y*-uOO0*eG707 z@Dipt%;Fm$!lWCR>sQXfN(SJXqPm!QR-~1o`bAQNVe0_w5R)5mKgoY{e+p0gDUd20 zwL^mUiXC;E9V5dc;RP6-*Yw-CB^Y8U&{Y1CVAogIL^^S~Dq!7n8aqmiM`~b4G$k@v zxp)RURypfB=!oIXCho}C$H0#Eg%4$v+Br=UvdYqY2zFeYNEg`g)E_yEA;g(+tW&mg ztPXGSnC;Vc{(jDmR%b*rjjqfB?No6}kHt?bJDS!%#bUi9H#KvxR=wkg(pjJEKqyYI z*ZYi^{ZPCIbj6NFJO-;S?BEBD#uJX7b4t$o_?8wu=TB$H_Vs^~9qX&Ec0-^gI!fD2 zRqx2D6BMPbEj!xbB5n}#p=&EV@Ku%Lh{{HrSGj4$MF9&)PfUyKFiUdOK{}QEkXJXb zsB7En{ikg@Rv|I>9juPCrS-Pf<927N3@oNd>*TLvY)PF%pJ-o*l8VT~^&N{d7)L|1 zY1b9jAsiJVl>Y_diK0%0fK)_*6=Y>emNH2uvr(}6k|U1pwTN7TnqP}XW?Y=>)G76~K@hjTPKlzE0N6+M?CoCrXq zv8?W5v<)Ze6S)w%BnYGSJS5LrURmySdxIeWV*k?CW|=1CEY?L5AMO3*```5)1NhkS zy}%d!e%OiJXP>@&?WxOaYfAu|MVjn9dT{gQmjDg_>d*guAQ(*W!~Wp>)<%&QWvSs8 z0w7Xs(voGfna&e9&t;huOkR2R>E%o3SQr6MP|_LM5hh+Bj69DOn+g;2Y%d>g1C;nZ z&p+RjLI;?p)YCj2EcJQEk!d2*MD8CbVgZf&QTuz>S@gl$6 zVLhYsNroM0ba80dk(ZBTmZVu$!XQ~0ET?c|bLsKAqJyqEipIw_6KL)b34}u{Xf3Oh6=4GOZej(6*28&{2XqIymYh>g~+D`mi?6| z?oIY*2e%H2BPk?Z20j~J7<5-6WJjW?#^(>~ZMmPs=KlTd=~0YNBZC-bEqD}SP!0t5 z>K9*Ky|kfyV7h{4UKCUFI=5?6w@oVnbR%Pd;}0CS%LTGy!JSNYRxjLKzWf4nLL*C# z?&O%22JTmK2JFZXA7^mh4d5dtvf-o9(2*6fEC?lm9W$j9)LR4W-n(<~tAD!XxP6sV zH$p=vPQ^=o@2RVs9yhKkEIXp9KIN<_c0u)vxZr@Z!c*%i#6eoxsJB)Q4-{)vv4-b$6qnUuKsEh9!U`OYvr4^M<;P*=G$&K}n$Ji0*Fjv@_ z=Y!&o4LjoELlZcXM5fBM!nZYV=G@0&N8Nf~&EoW=#-O9U@&6gwajvvm*v`kmj_gDo z-okO7#*T(S(JbcvZQs2 zmN{%6+h(8L*87Sbd401t>?jsun;;>3J?9{PC^g5&(y{f3u7Cr(LHW5>odnn?t zk-Dls9);H&><>+G7CdN;HYifQDY*jneBD^uBl{|Xj_9k1-mhu&f+A7=R53q6m^Hg zp^I@xgkykLzz9{S`@K$d_x5{$dY}E$=WhMt&HwMe{Kb{6jXaK- zDxZ1!Y2Wj0Cn5Sk82%EdROJb*hVmkQwDV|bYyHCYOKTS|urQz*z-Kzdzl$QvC#9SK z*#*uxKD=v^)D1-E;?Q{7$4)#d6WWbDjPRvta(~$rQk=-r!PYWS zk8PYA1|hHlnk_0VbzO5sJY%m`6w_hWHwrL8x)m&c^BLBMYui`K*F|JhK%qyb^BI#0 zzyuv1r@4?0rqMGK?~V8G?3D-7(O5ML<1jea@2~eApWA)L$`E_AD7fsxBvB9V?!vMR zZX&d~RF0_B1!bnwh8>k_QdU?CFrtll7ZcXBKf<(ofMtQsP`D8n9>yKH5A3*c`E!E{ z&%$vT44+CSVGTGl1|`*6PE9%16nE4rW7wqy8})EZTgRxFDKZ8e3GA3DAjx==-+6EM z-FF^3Zb#)|XR=6x*T?(#V+VlnXJ;!F&lAOB~WyvY-h!v&SlMuec$2q$*P44bz zQ4~xPnV00bM8(#&A3cWpv|Z%09upnM6J*X0*eCHAa8iSV?;CbiIF|>*Jey&oM@&qg z!jA8gv$j@iXm*Lk8OA;zsDKvdq>}K_@Oi~oYr?Ib*y=Iav3j=SqaXfuZHmZHSD^U< z`^oDaA4{*m0JK0$zuSvxbL!8F5Ay#zzCWjEYfc{j!o0v(<8@SzDG_D!Q;Rx>Pc}QA zY7t`=zuWe;Ss=*z2OH;Vb^_3y*7i?g)swTMVeFV66W)+ye@1afzQDd8B*|*!h)>f| z9Um+90YAgdf;!}JUuF(f^G%7l>i;x_b@LT%D;-a=BYed(*kYDptkG5=;jcMjzWuhR zHw~0%>q3wnxoyWqy&Qb(5pWd8M|oOs>|3aK)t%OD#DW; zc#*p2l~`)2(M1`fn2yPm1ajOy*b6%WwtrLD2=2$!P3Tco zoIsgzqnc_h8*gaTV|M(f@r=6KaBOMqg=j|;b&1AYdkF9|S&_$Cs&olh*&p7Vi>?h-)LdX%7gPNU{ zI^77^acO0FZDn<7&|B(8TN`U@gYGYX{Ey%J&bK?BH{RPWfe6do_t@sv>R12hi!Z-& z!)V#*c=zty-dtb3aQV{Ted|As_Z|lD%qnxZ;Df-sc=4j|hg4Lcu$lnQd!DH*#xiM{ zPSaV=%fb5U)n~3nmo78uFl@Mo3kGy`%HzB|QhG1!9>oWD&1?$n=&yxo5wG|mTU(j# zJ`ldgrAl^>R&*fm@8|FBUwzAfVIzFn73^pUNmm)elYHWY3 zNu$l+?1i2i20ZY}9vggS!@s=BoQ~0f%6*|an)&e2d3wZUiT2+GQ?Ybl@PW6NPJJX|-dMM(07UPb%`!ds6 z$P9KF60T-aLmT!m_wB1f$Zu_LQn85>!b@@RCgDN+`>YO54PA zmAlY7Fl^`q*uD>q#x=pODeOIA*b-w;x!z`{lNBkPR_tVrUBA&AyhJgSBbmq*rzYf$ zRz|_M3i36#{mm(s2^-_I5^1rcp}0Vc9T#WAs+Jwo?9`J`pOGc5R1g$pbm~}!Elts8 z9*t&o+{An;+0j1l@FEt~m@=CT{TIWI=EQeDkR90>`ug7vJF>cZ<0L-*mf5k{|0j60 z?~4z^j#evEl{TJaM^{j-H=6iW`*wmI7u*MxnVVcS>}YG|@b_ImDN0~RfEVdH3e!gH zeb`Y{p4FBettXCVbB?T@Bg9o`aKWlt)e2_`{#;fSJ~|#n%qms21xt)J`T@-6H9I0k zV+<07rm#JDA9Z^GD^lw?i6^re#_%YSYKPZ${>3^Z&f+ZFJvcx~C@kM$9!ZOh)wPX{ ztuW}>tPN}5FLi#u=@!H41{k$clKxNrQMz*C)ub#Ibpf%NCbPZ0J@~vZjNs5vW8CYL zsv6^V*qP7~d0E1q7ZMfOoqh-S7ueA@0AwwEJe3`*GFIVK-Mxt&F**zUC%lFoDLU(i zp$|xXc(?}yX_X12u4Kp9(eZraI>r_(x|L@*urCnOXf!Ia6kT|zuE17(T7Spt>{E@S zPrlJ`Qm8Dl@p@#g=M0vH%gf8FtALNogMMdgeSK}<-}%kEz>ZyD$KCCnyLU~Q2A+Fv zbM?>u^c&Z%U!W^oAMWq2tq!-=*Z%51{@+3-m}G=Wi(ycCeSLE<7}%>0mL2G#f*MX4Cf` z++E+;2>qx$ij!M=dV8Yp9hOH4^&-ZGalP*I20f-WBjXqdX2N#04%lGm!;T3Q=P27gk@^$j|4VyM zhK&238wJ2B+;@|(?7pxWUD{+p*JxkofzY8gA&grV9|GO+QUIhFG`4ooauVS8V7hyI zTOJm`j@XNm6}`>=aC7K{=y<40$<+J?@k9{M^rL%w(-Dw*fb7U@&KhpIvQSAO%GbVh zvwLo-aABlMEQYjgtZ5_7YLhA*h19MvUBh}t^tkXTx$OWuO0ja`sXuU+FTkjxO_D?} z9;IicnkisMIY!S+taOC&%>klSmP&#@RwNob6Q)j4vaB@ldpX;EFuHSle|(f`jz>Tdc-}h64sQs zHdUD7Z@v3@NziJFt(_**HyS)>lGPi6|mh5ORc3 z(nb3Lr?!Wcb0nSw-wy-pA5^3Xnv4=W+R9oNKc!O5W4WZgo?OSbFRXy9?=P+>?l@do zT|IYhW6f2-@Uh8@E&?DcwpqcCTOk#E^i7MakPy98E-nLQeGGL>tG4c4~KJ^vY|yG%tG zeuK@JTG&OQGK)MRBkWCRjt-7?c1H2^+V!WsAUeFeyZ7sd{4f)Hu}F~k z0EJP0i}iQ*jOfyxJ@bw0YzRP+C6g)EB`;Th$8OaNVBhFLmHPqk6|uVGq2z9t+0A=T7J|?B@vdk8QRSPj{}b zM^`Se&VcDaWx}!}rmT}gAT6YrRO>={3U3KVi()iAxV=*x<*vb=Oohq18@;8iW#&2P zTCb}b6}zl*MUc-7u;aL5M_-WpBZb3Msk6dKU;Ef{{_d!)fu(!8pMPt|8k+Oah^-v&wE;woo3hqhWo=573SWiybr03SrP+ zTr&99rpulWI*~Rp$Gkh{qs{xVBl$ZjY;9zN)4wBjbVc(}(yg+@PkG!CRn=9v(ag=L zO$!!ORr7vw?>_kTd&Q3LpRi^hnH}kOc_Ux>SlIE{HX3%U90zEhY@3<7{Of(Z6h9U0 zST!EhE@iGg>&r?-=}*dz6h#wFR~{^ev;09u(^NhM^xzjtAI9-atI~B+N`i>GU$)&y z!;ZF(b`^;f4zK-&>Yg#y*_+q?VcI%JSgf=MThpXNnBj<8F+;H{O;)DJDSv-Mn!2t$- zw6wGWZw%Q|Qpag8hrLR(I7@)L{3!HXZ#*7lS%yaFf}P5awL{|~JG$uGjDcDLH_MLj zIhqVU@$-CNmia86W?5qWjBK{h=A;4l5F@Ep($ITGKA_}n?uTJimgV^9FpH<0YH$(i zDZ*;cizP^GrKhxwSK7E^zu&cwXo*3b5?hI{Ew8OFpFh9V>vzwuuP%4kTR(gIAOGv$ zdz?+SA4Tw)N_9Hkg>&n#zy9L#u)DIK@qcDPi zRnxM+{p{^@KV?(xjB_WG_ST~b8m?*uh^}2#_>*V< z_y&tomBsOBCQ`1Cv_91GNY3^$R`7-$?GwpHvtZcZ(#OkJS8Xz_#@caM5COKsB7sZ; z1gd?8D_vMIDTbzn%pq3b7@qXI%n9KF0`&KcM;8fanahGJo4qTSS#QXct8!0hUmH}I z73mQx3obSG=*y|UoJK1dHO=?$>=XyNqg<-P&3YSMU`JS1qFE`f_8QMu$K`$*v-@`* z#naN(J37X5=m${nt~2fCH^2OfyBrj*EGhiWEnJ$G&XsN^81!7hh26*EKw?L%t_F4l zc;+iCTEeFnz_>gr%1LQvrHQqi>SDrVEHthbtP?o$cp){sDN+U0SmZp-*d!Jy zV4?T$&JnO<62tAz@s5YnR+hky!=8I#tG~9~h1C(RJ#3*i6?bx!$lwb;fhmviPR7FR zN%rgAqZqzWAnGaf%5@udv;kze835IRsk_|s(7=*}GLFbFY^-(8I)+_}*t2feljT&X z1UAOshaFK$4+Oc$j!aUjT9OAiB2B}Ngp!rU^b~e%%-WuS9eJgo6sNLdV@`+ccy)0T z{CG_0^!E!>CqFrN9{2j5|I3^*H=opSEO0;_EIqEXK6MCc9$M^J*i>xo9vSp1V zpW`ocj{Qga<9x7n=GZ>c9FG=DBWWazNs1In5FonI=)Jr4s=MVHnKAG4M&_+sUDW_c zkrYL<*eYGzx;K}I$cSIO%kwsMv5l>sEFEOAU>nbgxAst04xCMiuq8TyU%>s^(CTK{kyr;Z;GE;p=Hf6l*;sBH_K7%t=gHHj4<0@Y!nl@A zMC0!6?$*wB6m_$dP@}RH5f@{_hQM1xo#DdQcAm9ec^>G)s*>PxX!Frjj-YzNmobET zPG{+quAJy`eQlHOOVgjrsypag6)O7R>10eF2%->$uRZ_K>vdfZC43)OC`&!C%FyVmUJSQ8`hDumt^nQhbp^ewP5c+O`fNC;l)s_ggrtDCDETkD%! z>)md=xiT6=;{K0*`u&eSGFd)8-0S&%=r}9=-s`t_c6ZjdHdp%H&X4}_du5*f@BiUH z{QY12+5WQ!p{hA4L$DDVC!!(H?RL6x6!@;rv$zvh8qsZRh0z`nC9FcKP`>DF?%a7_ z$PwFl5&1`Ju~d^fy|0R=!Z}MH-Tmz2pN{$~)MWE)x_-T1B{Ol9R+FmKPC6^Ad8INP z)U{XAWdwBmLd@!*$b#wcweH4ytJ+Lyn^H{k>P**Xl|HSCqar`kQUk1wtrb_dt9RYh zcx+=I+O%th{1^;#A01s)1&tHO7o)Wvb#GCn(7Yz#iiA(B6}p5#bT@R(R#}OMy-K7A zcQ!k>Zh{?azse=pkpmgad}^2-4Y4DVgrVW!OW&L(hmVfZgBb$rpf#9xHaa6>M^9#D z(LV27i^zz;jnkQa{Ka#f*A+eY!lTh6YqV;qb8WKHOTPUF@4Ex9^lYtdOO0w-McCT% zYlzi&mF!d^mZk$!EP@K$w5pumwXL`Rt#Ah%zIP_7=cSqC634HKSzXKsx`-WRm7%&! zkx5OP6tE-B4pm;_#XJ>fXJO?P^Wep^@fV-((ayojm_q_QOO?rJJYL&`id2!zX`Zt3 zecJXEW-Xf7=&%IcG#mA2+Wq9o-XQ_3#(Y|#CZT1=#=|Y)5f_ltG$xcTYiM%?Az^YQ z3Pg<>k&C_*Z;qnt+HrI_k=0!4glW&RBQUX6i+D$5XG_K2YOo^%YootoF>z5s#%fnD z#2qWqWXUYaU7yRCw-i(@UN66I*KsAz*%2#|&2E&9gQZ^VpXGT?T6yczx~IOz>kDi1 z&%%!4B6Bn!`FiXquCj7n{&6m`qi74)E{!NMm%j~ESip6UQw7zgymY$Zj`b!gM$wiatHErTG#2zclmI$}!0@V^(IzC)r3_mu; zk=@sx{T+azfJ9aukh(0*GF_Imp2G7}b0>0wFRJP(*>WBt?NpOdE^P`VVbIC=?9t;# zL>m^J>6^pR==N*3<8H5@l|S zC&y>UC#Of!fo*kTb(5G1W>}6Rl&!AB!SM+-haU#SJ%euV(c_1+>6BW+mW_US^oT3j z5k~@RIIOvYe;#nd)}CSiI9+&A&?U{2G$kHsg!&fjC|w#)j_=jVS;SDf94f%&Wkiys z)7h9f#@0)8IOm7$i)|vmVbw?%n}LQM1EzeaOTwPg9dy?>*SEGeR@PT&o!%IY`hj@- z>HY8h&HtOvr|H>Q;5Z%MSzj5x`TDIpw|CcuF^%(o_}+K6*4I9G|GmHX)Bm2HopgQa z$r@=fG?pOb6r7I7#E$(gk*Axb^Oa#2`K$93Pz=>+Na&8mp6 zR1UFYSZiNYfv3Tav#Jh8J8N(MzA#;IPxeyNKf|wUs zGsK&lfp}-s-=L<;v#~V9j=4aR^;fYYY7#Ek(PsTx-?Uv5d9I^D@)A4R*c)DL|7q;# zvBKI*?AS2X|03+zTuswn=XO`C8U9;#{PkhS=H6Mr&la7dC+9bq9ozR^+hSbUnhlMd z%J_BIv5h-4i}taqgiQ_vFD-4#k>Zd(R_9iptw%?%iLOqv*%85p()T!mtGOLCC~# zwz6MpJ(*0hj8+S2^=NGM6oh4Rbrk_sAZ_@)rfPOuR)M}w&-LRc&-M=Y7wkwMc<;S$ zj8<0)E+(NklyDL6Xg^ciSVl~gvdx$gixz0d()lQ=Q6hpCu_7zyN5^|loBKOu(Vd=8xI!HrALV69_a8>V*4EaeM-NVpj<^M!nwI@mO^iF!&R}fkWA1MYL~{HC z;uDGfJz_;Dhr0or9);&MZCJ~i*l|9Y0+egR)q9v?9k*h7R{=cTELQHaERtu9OtiQY z|IMdkqIM7Z>eOEhj&7SDOyFp{juYlBI|hNrv8PZbr)9O@@2+jFZEkO_tq(fgcx%)h z`r`3VpZxWI|G)FuR8%@pG7i0s(eN8@zj5QnW}J*+7ICq%eK3Bdy~qSdY5fzP~2CKJ;u% zX;cArEDy>TAEyUD{p<(d6`9)D+U%}&OO>wdbnEHd+fS=meKbvH^OAa0WV&NeEzXDB zs&*p%Z1!OF?e6v8d(%{Bv}ce>tx{1OXZkctkJJ1(qhr!yUR$++N-s<`i_%kuv9hjV zZVW@TqjDO5BFo}v3}9ERYb7LRav1kITac2lKr|6@+^_uglJ6w6eWId%|3oaS$SV z-^NJL4B$r9ynJ~7ai!fH@`H3%5A0~1`FvK<`TgX>Klnzp78Xh)1k!K`ZW=e+nUWJiZ19bL7kVcoDJAHgi7mKpi!)|1$;D(HaONDw(2c9RW|jJxkAm7-O*;ou^0^u7gjYA z)hV<&E0SmVv~bwU=y0G5w7ebbkFMpy1}Saj8@S3G)|(`Bptag@jI#7-OZOUDG&Khi zvXic<^5@tTT^s%9H5Nxe372N3&jen`QGBqM5Q1n_l_=@*pq=K@AL&GJ(b}AG&bC2Z zKb_9wk|t(R8-{fX-M~LOIsWY4JG(!bH z&)wPC-rL(dIXq~Gi)F|9C3fT}RVfyg$EB_E0uM499Rs9V(|YXs2BJDFfaIY;bXm;i zvviiARvq=4)pUf%-xF+iG)*OINbO)OaTX5k2XvVec4k?^nou>)WLp@vWb~us+w3J_ zyKupdbY|)@`br!Js~f9ZI~(iktKB%l{PT$9P!+WJbr z9~-A4zN?At2$)?3&ozz7V9j+1F-NMqBgz>bG&d7wlJ0$89zUo~AAkPwkIG4XZD)Js zTDNeLm7QTVo;Z7%NyYxjY@QZ6uXLJsl#nY<2ZhcfdTYIO!_U<)gZRJHhEuBOb z$4PdQ=O;;VmZ_W`7}r=Ed2M;buDjaK2D+kN#+K8dl5a6m0}Y0Apg@G%pu z0Q<(}$%EthUWS^4M8PKOtVY9)A>#VV%u_zD1(-{-u%s=}e4IXf_>@qrOe?wr6zOKW zBQ{PZ^?JpJfACEcmKwpj2)1tK!&;tC@)A^p>U?n&4p-c;gG8B9xdgAZmq@2`?N;xt z_l5AqEEmO0RHs@@w4b7?a|sP_Vp2yF2kRP2-~|^UEIH&6={hyBW12b1%%t_f)8dmK z6X}N34p#XAVT@(k@5ndrT=P^ev@J5p@h3p}(#pTL>`42tZdr$qPm_BuCSwW3C)HF2 zVkfw?CQ967BbVH6V7@eK)lS3 z5OivN)@560O}7HoR?2ai9XTl+e=6lNJGRU5lEh|XE^VE$%h?{X1s%yHH#w*U`lK(h z<1fr-EnoSKkBVO$J6<@#^3{B)mUV4IN_iPyguu6J#@Ese|4m}Y^P63+XKgO_ zb=#htbNx$U$Hk8k=ZOojCou1urZn^7^DmE|X2pF)zr2ba7mv?HF;!u0Fkjy4%U7_> zj#urSme}!fv$JgvF@d6CN9_3o*TcnsRxYQiSm{RvDGzgz9c^B7ZRk2wtR0e4x`-ca6d;57=&?p*>MroRU>)Zc2jv`(#Y${K~WHzH{p$E=& zWiDtQiA7=JTC_kwFDusRphXdyzTf-7_h^lZq7Hp`Fc__j*1DbEJV{&zEV{!dPo7O? zY!t$qZf(`M*=!73tn!6t36hw}Z&ZO? zPN@+h&C=-^3Jlt!g4ERTQ#;7C0BgFH`h~zg^gUGBn@{EwAQ$H|IX3E1v|MgY z%z_JBBeUG|2$4C*yz%DK#gA4;yVtjfAc-BfMg-B~*=NuH^uPYMbTW>x6>xiDaBXAb z-8XM-Z;iT}+*)b!}~x^+8pC z&<#QfaD+r@C0&EWA-W7d_PxGRJ=Yu3-w;L{Qfo|fdQi>w)4j)jdh+pizyIR?!TTS) zyK$?Nit*Z;H_K=H;@MPYYX5YW=0r{iK9+UjR+X>m>pGFA-m2OC_LkV{h;&{ix;o88 zQfG$=@bN6IXWA_r(QNQO*o5npv;>Kjn}(|d+j|HQwZbQex?|OPW640nXYCGeu2*I* zLSwwT@@j0aoOXCOg7(dPLwKdbxO?rIf8#m}`KX2+>6j&oeml&Ls)Y5inio##=`(%w z#mW3dCQAo}|EeTf2?r}(dM>FO5X9K9FBGF_G|gt&qleEVv=SvECg2N!?7Ws$UQPS! z>f68fUge}H9^QyNG{vl~C?K|55=2GU<#nTYb=8R?OhKh_3qaD`5!>H*Pi=0_lcGbT zo4Bx;RI;p`g12TGk($J6TC(T8NG4;Lui0-XXFnUHEZ0KgyPq0Xw3Ix^OG8;fOc7@w(?Zkdi9rrsATC##$EfyGEIGZB$;P zs0{6vpwVOF9og7bnDbc1^OS1N*02dQoR?j5?U_aXpHZ!=q_r=eiwd=xGv_OyBO2v@ zgeV|=i{^Z_ke#qo-E!^LW^GYoMbiy(v0D6=9h>*XKMyQZXx-w(93T%b z)Rl&%vCzEvudMHt&SMGK4QzxT&1sn2PzOw6Y!q5^QVrtm78O}I<^g--Svq_A{MqSb zT$W|G+fB0k#*Npux30x;htp+T+aL>8ZgQx_!h*Xf$#Cwm1u%+c(x|y~8q$yhHBZKO z@BZ}k^n|^+Zht_WvmVDW-IU|A+t>3>j!#ccPjl3^u2wHccnv!;fqOPWk?@MxdU7@m!Dyco?6olQTLr3pCozK>vab!E8R|iI2xkVHd0he!bc}y6D{2qjS~QH*YihG zc4!acN3L**3HGNa&pIM2PmcUNx%&@4dUEgS8*koRyB*bDI=XWsfAYdS8T+NPe>P9c z8eUgXIbyDe+%)8>Gc_LGj0bNG#K04oE@xVwWM*2X2lL`I&Bw%%+SQKJWT|p(EUVmX z7u_}n5Z8!ob(^_bu{9S)FIXHUjE;VP3p>#OKuF zeiUwRg|FQJe`*I8&ME_flSq`-Y;n|8TIzYBa+MtDgU^qWy;5nnBD~Z|Fz^Q(^oYb& zfdrU#KDSecmk^LWeCEiosu1U_M8l4#CtaPbZATyco40C}aYBq$mgNVBJ=daf=+&sr z9mt^H4Mu(C2WS_V+B5-e5}KWFzAH9HX`Y32@;pbz3iW-JXae7Yz)G-5wMMbYf+z{$ zn{=u4Ta`qUHQ^(>w&^L%?|yuE@O&-}@U*tIxpk3e^WE*}#?C18DxJ+a4O}6XTC;X$ zWf}=ju%l8{e0WkmI?awsGf{-B>)QIPuVzQ!AiYyB*iqL_qP^kTU_59rK~&5zmNj+T^45PMYjd7q zT`w`;*I-9aur69Foojzvc5KVBHZl4?8#})0P5IBpj#sbc%kgTLF|w^UbIy*cSs|K? zOYv1dzbJORQeKDex4se$U#W}qGyeQ@v17yM@?1x%J^ssgX_mka4`z)ub0HYM+!7a} z#4f$IKb3j8!+t(?w7a*lWaDf%xAN-+wI|; zu3yqJMzg4DwZV~IU32y&(WD>xf!8QSJE+~vkjKtz3(`unea;r)Wz>X$(Qwj3E8K`9 z`Gk#OL@bge`JD9*Sr!I*L_V=8q^UW#28p>2V*4yhp%MzxQ}ePQupnX}A`-2{_ag8y zi2QpG?!9>aykvJE{SL$U{cpYB?{}?h-mZ=u9?BtN##VrH>NaD&83JvwMcbI|=G$=L zTCgKgOO{Rd_MU(K`Q4%{qNvj!tPT33PPZcw(2b&>1zaWuf=TlvIX*rntN|2KvlGgLIbCb;gL#kRA7MrI z@f|-5P-cdcg|((-JR6M$yEk{&H%7fqv^nVZeDUDp2mkdy{in6zkT@pt+9tfgvWo>O^V=oTzQ46QTEFc@ zt8Tn|T|e40&(6F;9WXoANTn==O2Cd4*s*YCH{RP6H|a!xx?)z9r>U6K`4QN$oRv;) z2pL@Iwv)i3H*1@&#JMfV>~XkSx=rWjOfURKurqr^>Ce%oGkR@P)N>P>+SiON)_sUM z04Ak+!Hz2DAVPO-6ux!4(KaJ?B+5YsNlwT}q-BU2vmCXaXNAnYY+vu+J4yEn2d-x# z%q$#v!;N7a`ovPQO_AncCG1kH-BHO9HTVol%g{W8HB=G|oo(zy@Bhx5!cF0MX9=){ zf`JW^vmw9qq^QshM_q5wr3r?ptwt6#;l0k|VCVg}#YQhJvY@EzH0PwjqO2ygsgR|V zr8_y8aXoG%^BV*y5Ia_?GAzf9*HxYtw_9svQncEu2r3fPhZTQO{2x07?Jqp;dFT`uz;1*4m2#-aWBiPYYSuK|Bjz!CkS^YDzBg~-koE>>~XxXt{ zYcALe&tv&6vSYJ?E7Dfo>cG-S5oD!;F{2F7LKlL_ou(NX_OMnA()F1$@I$}-x`M17)bk3cp|NGsCl<7VK1{t_ zw9pGU0@Gv6qx(`sfngj?r-FH6Pr}W0n8@oq`2M-_KpG?lIx+f2a8a{9+ zDK+Zr(s7msd@b87AC4aN2}_mF?C3S7S%f^YotF+ZpUmddX;Bo-z+(|e%Z|cU5qH^m z3~O+}GCdfL)Fb1waaEN8fYG4~qvo-aJH=Moj_%%f(R!1+yCdUx=~o?N$i@yfhM9Z zigcDj!n(?%PQ1CjJz85)GJsuB64chjj>@Y9(v}qh7~IJ9dcy4+Vxla2`uy{a&HiA8 za4Jm?_f?Vyo`3N1-7kLd86oY)o86V`eRpF$fACE1k5y_;rb$+mEP_``lL}M1HH|~l zS#gJVI%1Q0JF5s|rkaqkp4P=_R!(x6300bMmitY4rgLx zX2+a0dWtg1s=3Z*rC)@_i9Gy#oV>{WI;6|UO%|>AqqTwWQ)`#9R!ifJ?#G|ci$@Qi zDjCthtY|`N*pdFLEb8&r_3k_G-;|!M(rkBJ4LjOcRXhDws`g?(9QOQPM6HlPrV*M> zgi~2R*!|!gchrS=ep;wPyT&bZ>hv?C3v6Kvaq#Sj2$H?Il7=*EXM^V=NgPV-SQBN^ zzzp2(cmM8g;Ekq}+_EFLIW=@>_~&dO8G3ay8*xMke*8cE<~!d_^wK zg_ZlO7<5tTt1ZQAy^8j@ZGB$EYskhDarHI){6EXoc==$jV#f>D@RhCn>d*Wt*>U;& z%AB*~@>edGk6zZquMk*c3fgJ$*fp{hQeOJZtgQqvc|qze894!t8B6k78n;f4zx?JVQUmt!3Q2AxrmH}S_k)wu#_PeB?>uS zP&Q69t}W+4xr0@6VE@Cq?>a6Azy+BUPZHW{PfHXlc9lk?U5-pwW%FZDm&EhW?P&Q z82EhI1@E*9jtU0LIHs>Xe)cra^U-jHUZ0$u5fL?ZMF& zdw1^l3K zH1GAbRa|lqi|JV7&0?fkp&a7`j^|VNu@TWn6%_VX!?uhtP$x^XWH!r^R6{ug$9F+k zKumUQ!+*`+b=@FT+&5tu7DaY;a++mHh`2o4T98xbAWob*o)Xg-7twu7*A3u7bR8VTc^N>sIh~n~+_;k8+YjEf7EhnHyL^rt_ zRg<@CLkXKQ9G(b!-FVPZfsgrI(>0Y`{Oi)N{)hh50N?HBRzqkBZi&O zRFz#kkknEmwFPlj*u2tM6JaH`e6ic<_7JL2()yJdLzkHu`X`FIkq0l4a->S(WVN6V z6zu!pph?&rE4EE8v!e}pmAmU1!#v)XwWT$^-h*-_M2eE*lh zju+lB^;bn~{wA>F(s5q?Y3We4wtBFm7QYtkc-eEkoGbHBWXDG3k(=C>6ZPmHTee(N z!`Y1HW!Di$Jz91|AUUgH*i>jf8uDK8KW0bCW6Px#FpIOVyaZeqwm#5Fi zQ(D2C3O=cVHq0=!xvb8EeA^aJoki*f%z!{UUoLjNwB#v|HGm+a!+meg%hf2)+7xL; zp=GZuO9a~mLBoy=i!@0QFGg|XaGDOC0IxldX0Wu#X|B(q$c-fHWImrK$$_j|?am5q8BqjDzi+jot07(XhYT54}n}zI*>~{`}8F zBwi_I$6$AB!?I%(IMgiNI66GqzxUavMVbVzj8ql7geP@|+KqGS;*;^=+wZ-79rxs?Kk;UHenv=G(olh|S!zNl$m&2}+}!%$H8HA%cOuGM99Cj# z=ERPPo*mLxgj=~zfvEur9Cc%!lCV>qLnIz&+F!J9s-=azb}BDaPUI2T3$N7Ovb#p8 z`RpEQqZaHDDyJ{r=l|XhJUnN8|_x6h%(>h?;~&rRN2a zZZ)gJDk=`^!+R&mUZFICK!|+0>z&cYkf;GQ3E5}82#=;7o6n1<4_bDV4Lfp3Zc&=) z&D*0JcUGOKCa5#5t;>c>A|Dy~WW4S1y?D^;^kYI(jU?iVwi$Gh6IpcMzY|?s4QS}n z_G^;B)L&?m7Sx!ASYKBJj;K9da>ypwQP7u7jzWt_vPMaBVo_OU;oVOj9354xf7x7r zp6e(QZ@#g8W4A{eNk?P~=2M4&3kLx^R!wdY;+N?uiJv{LpC6`4RmqSBMOLxkMOnf_ z>=+R$LAxC;X^HU1%Gh#+H4`MK&7&wGisx)cY9orM)u=TH8FQMTG!(y6)B3EL9ch11 z7$Qi(C2Ajn9mRqj8=*Sp#bu2itNW-gYWIi+6VKP0uVhEN8rqee!Lbp8TdZ_82WZ*% z{qwNnt3D&I(06RE{L1hC!q{=y_jiFEm*2noY|C_1w>6YS%anE>BAS#XAue*sFNz(_ z#s56NwpZ94U#h$K6|MZMWyj@dB6Q(o1!)~Rj#LQ4eRX#`B4>r2Tc%lwtC zdVWcl-ue01vF)Z;+8tjW7)$JUaSVScJ6bJ8evNDrxQXGOV~-X}k-6~J5nm$FkByWZ z0V#Mo2jn?T{Sm9yZ3EsN%aN)rLM_?Z2s0JbYG}4nZawInR_5-r=i@}vA1kR!7oO`z zC0KE|8&`BeaTg{$lo>=3>JUaR(Z=Vwc4lb`5(>L>wN5(gWh()cgn%{FA0Pjw~mev z{`xQfM-%3VEN;jX5j#S!160}+)wa1iHl5tg;~Xr4fpir`AJ6#SntcyTW zu;Xk#t=RO)3D?d-BZj2Fn6U#Gvg!S_n9+r9ZmsTI+gx86je3Ej#p8ST|MoBbJfyEk)%CnVC*0lIdh7O$ zwbfqiJ9L4bBVX)M%RLb&ZK6X}N3K(**?cn1l5{ee%+krb-*{*9`i|!ZVbCLZWS*t< zcTT^JS95I~0!KHUPA6w$THC4BC(|QZtYzR_+uadqf-KVU)QqQ}{Oxz>A=-ZT*5HjB zG`ded{nVSK`PmE+ctw^~rQ=9XX~}a#U=^w|ALD&l0JG=u$A;fne@dTm?NZSx#YVN&UW?5JC)&34q|J^t09*oJ%j)D`Ai5-!o49rR@x>`NgQ5{=$ zO!snCz@A--h8^hw=;m=X=4GGt<44b26(a*1dYR0Q^prUC=uK|Dxpw`vH4$opxQcW4 z?D&Kx5!Yw5?C1u5cQ}X!T{=WwqJj?L9-VHg%H2QwcGU|NJK#mG=_0C>)rD~JHEfV+ zDG(&6%Z%6&Mn{u#U75TxsWt@+lho?T)cy1)kCBQ-td=(OJRx+iE8cl$W3^9AJSTR9 zv%Pj5`p05uC0EI^l0B@K6yLo&Jv!BM+SZ0H?F><*TCtH)3tx)B6CDRyqVQL8B%tPG z=Ms{h7#)aMOhsRbosJs$P%hA@y-j0OWL1?hJ6dOS0i|3Q>Z7&F=}Q%1Fb-gaehMop zX=`MB2|J3$?%1qQZT(&={@cdk*!gW~mAte}(j)C#6*jEk=PMLD@=dE|*la4AQ{1|| zUW%{&`3+-7u_)=&`mz_Cw3V`t3Sr`dNM(qb)>n&q4vXj z&-cH0exMOmXXTRU4 zilPptQ01gqLFn1(4LY4+uRq+{x;9){gL$LSVH8$H{@~#kKl$Xxyy?KED}Nm!UFr znuM<6wfYimJ=zS7~m9tkZxIj>Cywe4Y-9+CNYOc#%^N8h0#lV;62R^yE~6+{;vF2owtJB0m-LtUjr$NoDPh#YBsOK+y#yB8vm0<3Pgz8(!()HwHHABe8Ne9F@vL z<^`T7N7}Gn7TYpJ<%LtsLorwtG`jJ)Cq~%Z3gH~?Pp#msRcayt@+v%uNuAB3>h*vB zzFZAhDin6dn&Ta7&f_(NlFW`(Qh^Kh2vGLAck#cuKkZcJw2tpK~@H_ zSMjA{SI5ZaIU;gtKkxVi@l|Clar8I55}c^MqyM&c+ZB^QV@pL?6&5})g^X(N#C(ie`KJn%u*2lg*@Z)WpVME_n#Nn zIYd3t@`141u^dj9<7j=2yo$Qz=o@~qXRqp?mQO({@qX$!jBT0p}3;EX(vTV3pjF5mr^w8>?5 ztQS1DXeG%}4Q>2~c$po)y5nE1ovD@&(y(J2^2@JjhU1V&QwI=tq!%SUj2ZikE8D*|L&cty729gMclvz6@s2fhLD*?DjA|mMFe@~z zi9yue+}P@LJHz3CTK{kU`hS!~5yYLr%Ep`Ty&v~SGKjhGG_qKVB0D)cIz2rLLa*ED z{+oaO{(t!|e{%o+eH3Uev|=e~&@$0BT;dgEkZUB+SQQa_!FGbOxkOOjfkHdn?JhAK zi|EiRt}tHHn^jq!oF2_*b6Xxpp?@R`&ZB49?igb9aA2v8njiwolN6n04E3cg6GC`M zd<=shcd(6jg!X2Pciq4Z=5wH;Fr!}g z*3Pv%H?OY^W7MZE^QtWF-ur2hCDhfPsC;C$*0a;`d_191)#-$O>~?xR;tv9M&yV4u zMi^${s8pDY8i4LX&$GR~ecCV(Z6oqkQLw8lh0;PUjz_~gs_zG74?Bz)stdc4(nU*--vhVHqOj+T8}exTIq3}OfzfA zlO>IEXo_-3s#cyTs}#l~r;K6;1d7C9F1bQWzXbT8UJbRr3v;7=HtpjNVNtghVdVy# z$&uIjScClX^C)rXU1KtUH-hLCxFfS8RlfD_-|%h>L{-8|jIwuJ9~)_gHG!8-D#Ayd zR&m`e4~ZQQ5@tt?C{Oj)JKdEI?I(zGUSdbOr^zhadvWBsot)UGlGbU?Q)5x7`8Pj& zZDljaWl|CHvzg&S{1sbaXyntruG8(&Z6HAgnvd8S5j&Q#N9>q-h@-S3lqM@6xRYyJ z3kR0CTtoJT?T&<0Fv^#*F*;`WEA5VS>b`hZJbo~y(@ZAGeAal1d|#}thU=@5S5IkF zxIF#3u*i9?;Vd+0FH&nNM9wIAGOK^`;4IM?UQm~0-ACFKupG1qTw+I;L!Om{v)ih3 zGd{xq0P`euGWFqBSFDF#P-C-D={iGxj6t? z>-t7N%ZqIa$N6WL^Q^H(7)ENz5l}4%)UA&j?vN$3-q+Q4 zeAUly7(0q4cj+7-t6wHNnlJsUlH6Yu!TWJg=9Shh~(MhSw&dZ_&aWn8$eX-yTxj`XH4jqfz`Ak2*{ z{TR87lESsZGmztDP~ck9@I=7OXtQP6DrrrVFjIMf@5RFF)KT~8WPJBv|M@gAULgGl z^3hQC^AUxsfD!P`IGAcB5@HaO$zX(-IAA3Eoo&*F6$Ym%b&@4#r)RTtUKSOdU9|er z6>|6_%0$rr0FJe>1zorljbi0+o4bu#XA1CY^?+0p&dKh0>CzmZBydyN3}vfExd2B2 z-mPY{X~DY3)Z=swolYl?W5;19;Q8m<@3wwnCPl2!R#>qa8;YyfDkRMmy0Y<|)X2m^ zVdT#yC&XRUCY}Du@BQ0<=f^$aM}`{S_lR!kHpk=f;o+gD9Ky#BKm7LH&+dKn(MPmM zvK*5_UE|tDT+@3HArgpzM5RY$|;3CZ|bqdi=wG_+By@cLU#)#cIFz+V$(VZ(JJ= zq5%3$=H%q?VDAMHzA|-8msjUHONkweG^6tp>qp%n?nQ&q2<#Yi;HJj|Q+QtPc}Ubh z-rqkxKBFt$-rAxK2#v5A1aoiy{x?N85@~V# z+5LR)$S1}t8QeMULX~1>X3lkY_x)|vt;*!goTSdIDh^6LE{ho*SeumARY%n>>vV8b z0P5VpMd`YgAJz_C8<#y2P$SeF@|Z)Ykm!R8aHFt0JwXU|l|=b8fcN)jam=Dz8WPhS z&CC-HVxFb-S=Z<6s51q2yz%dLx^Hg@T{P@iRMtL6>{zqik=>>8nZ@n82V~FZk+Ge^mlQFa7*(5pGKk>aTu_JBbx$YI`)SJW!%HR3DH~k)wepb5L z%2QWu9Zu1j@PjDq4TqB8Od}_moxKLnI}ukeT>J2y+(QufbC* z$*(Ot$|{GRV#|&tQ8J-fo;vqFJv}?DeJ@B;gdy8!pLQ8*Ytib!lhqk*2AamC{?abu zQz4@2RD--?NkaMIuVsq2~(4Y~Xa)EYyR;g^mb3AI3Rs1lXAir%h{jtWC*z z?y)Pjhu&J?xdhvpw(LlQ!?I(!$cBf-QCfE7u!1@>XhSYYSQVl%C|X0KX-TmuQ7F&Z z@g=+Ca>(0)5$*fuYi0ZX0vtWnDweUgjq4{YSm=DA{4G0*FJVV}X#$X|v+|_3{@N;&e-w@-jPK_{vqU7m>g1=(0w@#;l}GoB8!?%#IiA zvI|Ch#WV5}J1)9_IvoZ@m#vSe0!uS@<*_jmSZQi@YQt?!>=<~$7ZB)jY_w=qaa<$v zK=?XgfV8e^c!yOR{%BO-hP3oMZX|nysdDd6&;Iej0~rlKJVcG~VK|(@r2u#AFILER zksu1`TRk8cyrALYDE3xM*RfL`&E&IWesXq}m9)|$rJ_QWg<>|Fb6r7dZ$(^GE#wXy zn>WMkXziz9HPqrGkfqPC+th}4awal@#pHZGC(dHexnk6l%Zg6)*(nr#z)$vB4#RLT z82En3;e?K89WkaAS6_@_qg-o`JRcieW17p`;AqGIK^ef3c&pQiPLB2_lSx?_ztg+( z#ycCkH@9!Twtj7gu!6XUZi+7B(c{N9VE3Evzqc|9{_}tSW1`78?$U8fxVSV-D~yi@ z5D5P@2WJ8x>$VOCI|a3-v*xK)(O}L7S0h=Ran^HD-8;*uwP#tDu_eak;@0Rqho#lS zI1)bV_rQ>dEbS-=ilU(Fga(vqs_)n&dHS&H1|Bks9FCZD2!Mzki69|GYT~Ztc zn`^7D-MrC{{n_!EDzhJa@4G3nV;Gi6vNq_ye(T1~ovi`=*%5R>2m3Gf_g@ex(tz)H z(yR6KQS*~nLqLm03sFz1 zl4(Z|KU`UT?}i8z!a8AhG|TLWxJj^yj_OWzpbzgI<%hW{QPYN~y0;O9{jkXu(Pn8H zrcH>LjI)FN)4-2&XkPn@8V2$=^)x^0uXrE+-aECI)_zebji_{~T1^0H&H41YKN@;H z7##%?d@Ab*PVx*f5*vfyja}3;tdaQQXh?rwU`Mt)DlQ&VW;ra5CE@{*Nkib6XlBPc zox9)v&aor>Y+fpfl8ML#q>&jIKP*D83`8C&cIH$tHi{A4L}O(ewzY`#YmENUY7%1I|PrLBe~0)AL+Q5N(pvbAunN9@>*rEzHh((_!v zJW8b4uw%{SCwPZ}KuKr8j=88ByQ6@4@-jP`MsLId>jidPtWDKYTER>9$Sc{=f+IGQ zrdhtNo6Y)yto5-v_XPfy9e);f&`U{WXrok8NShwmA zwwl~mv7@*WAFpJ`h4yKCFTY@R6tBR?%k0=5oLxk+4mq?tkjATP-!TEx94%a2{~D7t zK_osSMXU%l8_T87<%sPC&|*&$pTpipen(ov9x-L$1(6dwUPs0KGK?OjvmZWulsQ2u z0gm7X3AEQs(7QkYd1)^T z@pDb`4f~62Ar-Dyi0Dm(Yg(ltn7Zf>@Q}(zB*^NG(-(6%#0eB?NV^cWR@E{)(k;^m z2!@KXs4!~qzfQLkhh4=v=u0+5W<=K7MGu-bsa!SeXziM&jXjhc63CTvjg>-_raC@7 zP1C{)g7G|G-`*u~9Ib6_zjkZ)=Bh4%Sv+ccj%H@-0Nwc~RtKwI?+T*Ma6qF6exjnRQA$P=e`Hk&Y<=@JG4ykZKb5nzLlX;UwS~% z`s^3qYUDuV*G0Lu=C_SVZ8Ae&j(6nWZN#Xp;j^UM@|E{<)z3wqySf#nS*EG0&){59 z3+L8qOf^4H3+0 zksAN1JC&ENr~Xo^Ug#QJC~ma)*ri+#bu^_kJvFZ zD)RfI%yA!_o&DWsKOJ1VF`vvK6T~I3B}dXJE=LW$Go+8gFjS)?A`w841?X=EQ;wyd``!Pm}SHIsEbqO{G&^4^%3cdQPd$4wR+&qsAww3 zAgaEdL#)<%8$aH%qm4QOdMe~$S|WFlo>CCSPN&lfx!Qglb-LYw8^>i3_`TlN*4Fmc zP8h~nmJoXNM*ZLUo$KSN_>ceb|Jd5PHW_EstgxgSm)6ayEQ&It)l!2yL%8Qyc8#=t<0;K6{0E^r~) zBT!`qv5Ry-I!jgNO^Fm%2}N>#82PNt!=gq$0w)O~<1p;SM362gWM#9dsOo+MFGax7tafq-)ZI_)%8J99#nc((^kc39#gAgG_Vx}5XI<%4l?~)TFbdt*aZ$YX*5-|OZV9^CI?=EhE*2g< zcSurpRMhEtors;F$dxuMi9iTB*QMK!2e+?_t_Qn%K^>Jx4laU*c%37X1^(TlVMk&# zjrZwkaM&1`Au0Ye?WjKC^Cv&tJ3FK&pl6YqNPU)`(ZqcFW@i++jwz^jQ0fp(Ct$uU zSqQUs3firyz=`@tll140k#jXQlN4A+N&~Js@>Vm@-YnYOq93iQ++Yo7G3l-K{+Rs#ZZES#J zBmA3p_ewhoe7Z$PV{O!g*W!EjmDRef&T5vcmtJOBSp@Q8wt<1Zf z0PXJD$X_u#ikDg8*N7d(vNpK*EjwQEonH+*USPXR>}U^&xbzzP(uHRDtM2scvt#pq zCB;Si;)R3%3fa+cT^SE4GTM_ea160yAi<9Go3_Fsf50&?L(;0@(MH)(0U{s)2Ub+Y z<~j)0_T$peZllw~N<9u&40NH>N5~bGwd=+Mn(q(t?A~Pj$>S%z?!X`jj}2N}QCj+N zOcQTu+LOD)j(%-3XB>xBQH>i0gp97dfw8<_OA1eeY zVi^zoDDK2ojk2{ny0x8WTZ<$2g|h6p?ALA#-nNuZJ7GJpGS!59v)L@qO9C>&(?NIO zMRC=OGbO1F5PoWqC$zP_asB$vzxp@dT3HwW=O2Bvw}0R{9Tt}Lr4!V~hXkfZMLA?d zK;DHH^|CI~q{wqqq%<&&_n*(lXVR1i)Uy>JBqY#z+W?JB!aENhUU#0%Ks=^Gyeo@a)O>aBrpGBXFe8?rd-EZg2Fuk?%U4D0uYf!O_7!;R1qp zi7(Q0c6M6piVIXDkTmKdr1IMJT_`$v0m3+e`85CZUVd;$a|!h@L4W&{X0Ds8 zytyiF_9`>OmSa*l`(<^g^$GG$i0M%ZP87@&1>qyzyB8>rnmnXOl)=%Jnxi}rd4h-3 z<-+A$Y+8%@G|47OI!TF>%30yk1B*u)_I=fnE4N3fnB@@rgNgzehn0Znj}{yekSAR_ zz7FbXoY&XAoeyrwUL>*%qUMWuM~J~l#ARm0j?yc<;)vMsxH!_T@t`DN^6lGe5)qcv z-UT+3jpd2egN*m&@pHw|mZDv25DlQjTo%{fxW0Mky6|Z-$PIGdIY_RZUZK+9xj`p_ zFa#$IV~bVMHdLjw{h^6#(CzQ8o7l%@vOq*5Z8Hehm>sjKEDikwCW0NEx`v#1Mq5DF zl+a|Qnmyeg&oX1vQwn~jy;?+-7zx?;yk4xV%)85z6EzM&x#kKtFdiam$YkSU z&=DJhu1`CAq`TBmO!yk?m=Qa&wh~QDtU;tLJ67ikFeoJR5 z$fewB0Cc-Xa$#F#?W{JCMzW+s1D#9kXp?4s%Z^J2xX6y;JQt~H>_z44e_8A(uV{e_ zb&6g-*VkajWuNuMZ?zvbO+~&dK69034XXou89T})+t2bbZE+wj>!j}}OE0nG`4uT^cZ3>8q)aGP1nZ-KX+t4h1|g3i zOO)#f=pAE-G7(H==?gUon+M2gVjY`EL6>9QT*f{wM1pw7O8UZ${J|)3oLS`m$0ti-qnhNvXeA1gPs>`2G&cDi(+tf19!em0-Z*zPzlbI5tuaJQQFXPF%h zOQ1W#s!m&bsIhgNxgsIr9l0)_V2w#s5rog0?T+?o<$@{&R$>CkVUj5 z*YUQdN4kqR?)E!IxMM49PyCUtTA{K<53q9E-9Z#VpbN^+4v40Paa`z}Sa3EQ2LVSHpyidVWDWlI2w0K8Ll*!~H?389n$IS6mD#xtSyMj75PaIK z>}XR{Wx%y%hP|-cp@UI#WYdXjWazt*>yA&4*ZO^@D$Wk~i5+9l8+PNBe*gNlt?Rp6 zLt;5d7ln@>J~%wwuXRD=85tGxc|M&}f5$--_)Zx59i-y~8(W(gz&>g!3QyH%hvVbD z`*(lb4^6J#LG<>%9T#I(lfrh#Ey`XsB?B(LkGO92@?Tl z1yUw;1Tk(3oTj{jW2rq_{pc2H0h5h%X?1)x{FB?WjB(>Y3GOf;W$#GdFET`~m zTXt;ad(JcbF05|#6*)AE8XcU7$cAKg`0xa07E9Z*QD$Lx{4G0PJiu46BfoDJA&+J` zf%DQm{36-WEK60^mtM5(^XtTp{Q263?p^Vj79W@Y>RgH+{rc>P8NkXY*Dp28Zvs0S z6ql7Ka*MPW9T7Of8%8r)-BAurY5@zHz>BR^fJ|AKH++fsZpg_wmJ3^UbQ*TFraX_) z(XsJ~P>K#6w_}{JR=(5iRbf>3d-wPDKmF|9Bq^ir3bAOd5WU6rr-0{Pw{}9~y8P6r zUcc{0(KMO7IM_cJpID!D3Z*rRVxj@Zg)RTf*b&#|Ff2CgXjn~1xinb9Am*F0v?sWH zbKoE&$R%{5lTT*zUa!aHYR>zvX7N3M9cpMpQ5>M=f<*l&1g1LPdDKcX4=j2RCtsWq z$vv&!=Vf*Tm9pt^K2K?KkAtw+>B}%wLoAa7y6_G=-grDNw5F5K=Ccnz_~7{T8$B_(Bua#cBEG$l}55C zWWYa?S5eE3Q7=Xsla$4LMiAAB0_v^F>GArYN1LC?(f-r>_heOc1Ah?5@4WrS>$mR= zdtKjm``!5d7oVRT@6mIN8pC;Br)gE@v^;|yJtq#shz=J7qqS8;^CCM6LHNZ-=cojM~C^7 zN9p0A_1Mw&gQrIVxMKH%9T8-rM@xM^JDTc~Qtz4h-ps32MSMoHoKw3VjhBi|)w(z8 zIllA)$u=lxwm_|qBP$5ad4*TS(Me8FGoIwLIo*`C^bmBh5G11>O=dKLA~Cwv&s3Jl z0uhOH1j9-|{G=F8g0&b2EkISxqf+lU*S`6h=!YWDnH?*u5V&AR6!FW6Q{3z@IeBzc zp9&Y-OeuY{c59WUmD;ViI6M4CR>TQD@v?sL__=ClMazZsen}8JibgxD-OW|V%OFRc zfR0_PlIcxAT1jtHuxd8yw~!;a|&g8da$S*k*-dSQ1&jcQSr^xKq` zDhhT7)EY=B4UsC?Q4~koO#Hov>5IoRP1l49-CR9O(q1cDTbHXV9R}bCQ&$awA zc3htH&UtaEM&1HoEMD-$D(%7~mmJ=;F$?7xj5u>aV_dMlBVMjQt}gSXI;T?mvpfczFQxpe7}T!rR(e1|+X1oDrnLvZ+yxi=^yN0coVT>h zi;LGbCGDkqeC0LUM{$WAug}Q$^}@+9_JA2WmL1bl{Tg^M?=q;j{ZP9;h^RLFhnrU`Gf4 z-XI(AKt%*ou_OX}c7FEsQ3q z{x|$8J~yqC^g8YcIYZ=Rfi-|d*Iiy*oL*c(vNDNvu-Dkd|a-U~M!Ok?sn5yD(D6R8!APK6rMImsFh{HIcMUk%hwq92AnQ3dZREJ!63MqI)`u@B+s)D?6@ar9aoU$6SK)jzy7=F#j`9@JM_A^xH?}GcK40D@gQ$$XxjxX z%B?Ax$q4Mi?c2AC+2Z8c$(!%~gx2ly>p!|3y`F*{1)*47 z94`n{niD5$RTUF9k0EfBbu&)~(QqqE261Z}Zo0*vY#0ke^kY~fP#{iOA#>>sn$f`0 zc8lrEds_!|?^xRJ(N-`bJSdy8RPFX_c^x)g09o(|n5yKu9d|?-WrLyy`ny}2@_adeI+Y72TU`I~FdE(-i;S}yqMt>38+ZCh^KyQC z5q7IppkD%&(V`uOuf6*Qyc6@l+6DcL?+ClXtSSvO|%hZH%U$ci5Ae%BAAde8W^lKL z=C?)8y0gnP7ax9jcR4$ktyqQZy&8ezsy?tI?ahi#RW5#TGJ7_&i-seD&UaV?9O;rz zxGsb4qoTn(faEONp*x74V`7h#7zHX5D(Sk^xVQFpV%yMN77v3~&^+j#W5<;PHP{i3 zGA#XGSzB?If6a~+1d~=~)?U!j@&mZE*`Sn!>oT3k%Ij5TGxD{G7&q!2IV9&R9XA)X zUYqP@2MF>gt7nOgUS9bpcD(VaUiQ(=iXGj?;l7F;U)I?DKL|UD=eY0{?C2l%{n=5z z>;r86_J!|nu%koeb;s68*GF<)@bUZ@{9txmYped=*>Q8+Ud@hD``{ubDVs={(N@@r zfs#Y5GU;O7B`nz!st!6nv;=frpnP10s|a;(W6j(Mdi1^A0s9$4jgh$_3Nxh>r-@WT zndXF#h5#{6PNvh(A3iz0T8K1rQDn9EK}L$J5vtRX1DQbk`sDKB`26_WDKn) zXn)_v>6~7U4lhYCJ`F7_@T60=RRl4nI)C=~@i$*8S#jcZeNpl8!)hBrW$u8s$n2VS zSkdW6J%cw04)v`K+xgI9O`w*%})UZn#cT6h0EU2T2@{ z(_}b+Ga(IKgWXFKK-{P;iy@sa(N&Ad*PnkpP9xP4RJH%==RbSzz4t~r?StCUVEE+8 zH-oSQ8d zd7j_<(JgUAw_GLYTujR1xGK*(cNMEnE$fTU6*Q7Mq-$Tm(k72|qHN%NZ*RzVC5@e_ zo326ktZSh2N5rGhINY+r5^5)eHLQ&SqJl&#tn7&^tEH$%ck(W6Tli#)kZx$_Yk@bX zAg)JLvekAG*3Ch1@cunDicrr$7eb8`t2D^-LO7>USi>4nY;is-PnK#aT;0*^knQBz zVeT>r4Y7$Ac0QL&u}bU z>Zlw(_~`uE*K|81O;@sd7R?MO+`N4&yL)d~E~l=s8ZtY`IIPQNG~>AG^wP+(i#~rm zJum5UU{iUv>B_ChCGatT`$5=geX*!~H7A6O3|q)BN7CbCC5BRrgm`Or>ux@XO-)<6 zx~qsC;qPOZ9j#!oc1A$=Dt5$v7XM^+>^59v99z+NC2(K+h|T#bk8EGSj+LqM%U3?` zeG?(KC*I)2m7kl_G+}Km|@T26?OG1J>M3us3X|abbLvceB*&P`)1_#yQsV{o|5uakH2BS=;K8? zyL0sQjtNnj2vVbCX2+q9<5qydZXLRbYa6vM4XErV}J+ zn-a2jRp-1xf-~NfNAx)n(aX87Ms=;ftz=J*z2s!T>=?4up;w&gE2vP6B@y6ccI2UD zjUL1uLtPXleVT)VgR-gbfBALQl!M_=`{#0P-+JKb2&<|p%d%}-4n68D%?Kga?C6lt z1*h_XYInVA`U^+;d=4L#^4!0^TzgR)e975tfx}B;^rUQ!1-g79UxrBhg-A+A@Db4q zj`p?)NB-mg^M6#uEYNN%$%@ly9uI@zINLwG_wEN>lGrdK6rq=6ksZR1QkzP5&BfXA z{rewjRVsv-R@0#K?5nf{KnFBIqLCv=gBX_qTCJHK=`qXs zlpqLYj_Ue0q5T5b5q2_>q6em7G|bZBAkI>Hm5!K4NO%{vw1yTLU0Wc^_UlhS4xFK1 zThsjPryqXs!3X1EKATL3!+dgiKA&D8$b?{5=}^#V2t)^PAmq4XmeVk1<1xE%29w8+ z=CcWb)_i_`{_M#pjk8D(GD6K@x-60`+uqxvJ4Xk$F^di&do8-hl6Y|Ea5|qt;XI1P zqCLC+g|<`K*1oB{6Wx5dI5^zf{mC6MszgwV`E>s6rMZ;ViPg&y>SKagrxx^Vs9Q!d z2g6Iv$|tX#ag$efPr2GOBm#fQMD>64y{?U(wO7D2m8(tFhPl$fCjeJZKal@ zyQ41Z+5r6)8WNJ%Nfm!`@e|99MZ}I#+Z^bF_wI>|*s+$NE8EA=8UcwX`bmrO9#@)r zR#c}8up_~x7K80!bTpu8g{BxI`no`R@lZuA9sXtE&KHr{DA?dHx{R`0JMkO0VS1y9 z!5S|)w4SBCKVh$0;O`fU4O3TMsxIHgWR z-nDvW9I@kn`^|J}xXm5X;UY9*Y{gc9Vn;eW6Uasd=d-qx0VF;Ucf@AIaRjmE$7HP- zIq{1(cK2x~ZA<{a?h5?dIrhZq+0n-x5kz#F*s(-6ykI|Txc|UDO+Xu*j=SPAtnRwX z5YO$|k!v5lJh*S8u^S7R6W59A%`CR_+C7{zQH%mmbG_LUyy^7oHQo`OVO5iBd&5=# zjrfOPK@&+N!G_9unhC{4N318vpUn&{sM#_J<8W6}3)7QGUYmz(UUWgmBZjvdj@%Njj8 zNnxUm)5np@kjMl*uG-Mrqg9@d=m5^o&mTU17{~E&IK-v`89u!_(R}@Mofn*BjAqsJ zC?SrLXzqq}Stop;M{nlbR~L?4fv=M+fwakvzD?fu1Wl$>jhH6bF(P)1Vo2u%DOy;9 zxHWWGVVGsKRE$Q0dv_0h{j0xz`s86%&QltJ0)exV*7w0M9PbYH561_G*>E?`x21~k zwyuknsLI*Z)x|dtKGS9jEs|AXJ9LO#?}fu&l&k`e;(2t3mdi!kRDtAEA9*#Wkm;FL z^@z=`3Bzb*>6)@?no8*#1?2STgugU_V+@U+fUcL}Aj>oQpmZWaxHorgQN_-s*qVqu zQ1?Ii$drqa>ytlt?_FZYt>NlT!l%;VJ2E@(BPaX~ulvi$#hgqJ^%Ox#)`6v%Um!z7O<`ziW5a7|JlONrp zcS01CPV{ts{Pk~QRS848o)V3{ipZqhzO^@gZC_+dBIj;eoZNpB6>)bJ=prl2Wwc$n zu!>^1G7X0bnk#IhLY7)Z^@t^$D<_wtsZHHNdS+pK-60W#M%AT)i8KOQe5E6h<(j%A zHUd6E{JX0~Il41)NoSC=?v(ZQ!imB;t;6%rB=0>vab)NY(~tQiNkTkz|D-rH>2GXct>IqQUt(#U&TV2@bSD#-I;dLyo;M=Q5LhK~)9u(Yj-AH}8 zKn03_nXd2sL!12~#HY<_F>J+;_tcKk<3Q4l#Cn+x!iokt?v``beb!qM+avB+IOpSz z#EW&uZs9#UqC49>$Byi6y~&RFtyk{f00igki}j8|^ex+tb0(f0V=iu0Zle^k@2%n0 z)B0W+)%h~@Yqgox+VtPcj+>AF{{12N`hM)V!7DeksbB0ncH$;^$ya>;%H#j8u9}V= z176CGFV;A&y_Gk{XXAKY(KmfF1OD>ozKYk~D^k9%ig#`9EnfZjSFo(FmEHic)w8b8 z(q^A^zg@mj*~k7QGWeeF`>MX2Uh8qClj7a&Iy6J{M6wFGzvTE|_VwL$6z+T97B5Z0 zub;iCPxM?UxBq(;yW$5U6u~CHE*3VHlK&P&jWk0ML1xYjmCLnBgo!c#n{d@b2e&?$ z9EbknX$~@JHkHw=mq>gdSN$}^4WJnrTb-yZ4dZ+e4iF_tB9#rF71iJT`lHi%84b3A z;kb6{WIq4u@sml_)H-P3j&@y9KzB+BD`vwYizsdKcqmp_<8!`Uk6+qX5V9W%7j<#; zapkw|NjK=#u60DqQ5>h7zi9re00960Nkl7eyh ztA34#!G)!3F^QZs$|Nh^I zpG4abq!Tn44n<6hlHN5+vf<9HgEu~;vycymbPts@{7Fz0<;C%X_VnANYXBELUaZWo z9f$;b1_Ez(gM%|)F|QX35EY&IxDQBs%SRo62qEGa5IkA}pw`suIIADJkjR3+;9Zl% zD5cD^glKLEpcK4OF=f5DINwc&d4i~A8mb4MeB3N%67nqFyFY&CgAYF38jh|eSHy@{ z7iWw4EJ0#iT%A3ut0K{AdwUdzL7HV8cjQK#VNMI({MomY%L~&~aTL_$VtRGn76qa3 z>u;wl9;k7PN(9^%%9BkQoBM`^(;QBWn9yah0rw{4QPZ24BMs-I-Y<` zB|6w^(#z9HgmB?}iS>h99zy4ErJ_cF_@njPX*wz8a>+$_kW8f;sFBsy?JXCXE;6X0 z^uzA1cm6(j=75OA>AKC7*h}}`xGnRB`#B z{k@gy?NlVV4UE7YZ{d$42)w(QE6$2~S_QsQhQO(x#JWZsr%IKb?GvT>OsG@C)n!X7*aw*vI6NlXd_Ch1lx7~=_ zp?G7Mq{f6$073}U0U!nQFz)Hj!r-vs2rL?9oG7KLtOrL_WBMLyV>#}~Lt|FiGygq% zqW5OjR`?nNUYj=KjvGEEy?;#amX3wC<46h}GK4$4Pu|9w=bT){TriD$6fq!5<-?h7 zr8Z;##E#ia1Hz(*zp<-`=wp6Z5!j`KRtF_f9dDz zmaaeAbL_}Ncg>EW^z0}iX$OJY)^ey+F3d=FLuCi5i=}1Ji2fGtyCl~2j##v=wZUoi zf~vL_-qqMAD_a@aAW~@_M|r9USSdry>?u_Iw{i1-*CZXBh)^vbta z)83f_sFCljK@Juk$?9q{dGzpMk|)F*gp#zJZ?Yr33mx8UHlu}*78T-1df1&iw+G{` zqG@pt(oi5s)Sr>-%K&AmtHvx2m~tPYw+eK+uRTYUk4@enNKUU$hdrlqwtXNErpDrFhj5@;#F6(v~54Bj-S+Ws6l~5v-u3XZSW>rxt^hqm@JcevF842|B zAOs8LBcfzu5VwPU+X`Zo#8aYh&5mJ47?nmz0(Q(&v~LGNQ!MAF7rRNew>5&wq;SVy ze>J~2byYzx`}Uh}efZ&fTchz}z8DR%%kv959=hyY*PI-G+qF%W1Up+Jx>~b5_c?2{ zb*HhN&(F@F1X(T@#FHrBoK9vJ=XG7a@%B4gJL9@pUQRFLL?0gQHtj-i^DmwLz_>6S z1=~kPM$C?7efDH={#Z0~2^nhI@03v1f#H^Ugl17FSv9&ek}i1HK@+`wggu(-Gewuy>AdS`-qQPZ!!s= zYuYcgw%Wc;`w9z%cx|k_kwn1Ecd?m>;%upD2V_G(F}8J+WocCv*{v<{ z#-j2|)AsSZFpkFM`GjrZHlSozBumAds>b%q(QnNwYwz%I0v3&POucvg#wrU9Z z=^paW4)I!-)28EIkZj_qy)LTEdGQiYRmpsCR_5j4J40rAD^8vlT3)1ous=w(pgB z1v_%bv}Z^Et4&SK_2qHHdvJpteHJcc(NIVNY?@#DYR*0nuKf4Hv!m$Q(aYi4e+lgP zeZHOxDqO$sx?&U|E#+l;)@P+#J;r_)J8lfr_hiQ#PkH&VZGQg$PIi3p@qHxkx4pCL ztH+*umz#NcE_7Mtm(>e#M@FLGl^s`J!`EFY{L#1sy)&yDz(@NxUh|dp1J^%yn>v)6 zdaAFeN%-xg*dOhtjt^Q~pHF0SZd$Izef&MB{Lk5z(EDu!7MZa~iGfzbP;M!aIkP3Z zEn$XQZC(#@kXCDnjC04hrl*{$Lwf>#HbkTm<(fjF%h(3)COU) zf20T7|K*qe?SK8xfAy?s&dZucbuikhTbk|yT6JhDYywor_a{+7sSbjRfDXt&_`9s{ z)bs4fnKz%?5=^?pB))vsr_s4r#?xeokHTKqh-Sp8;%Fs@8-2G=(5L2C?3ia+)wcKV ze|dR%KHM79Z%yAUDCDYLl@>H&$CH!Owyv2(!~OmJ@%9eAt|M?%A$!+rA7AXx6i4;s z%JZ6i9krh#9OhW3{9*9v?u7BcR~E%|u^=iPj&=rH+fgIyv6dYTe_Jn?vnkqBtP2AP&vX^g-U7`@G|n*quRu`0G&4gkd8AL=ni}eu zrdi#hGDgLNMxsAPLpub+(+I8C14JKHi1XbPC9!$bx_d_laTYWLduQk8kDu74q>a$+ zJ9mEi!F&5VyYu;UJQ_?cFN^s+4Ruo%C(oYHaSrojYn$0I%ab(9vjHj;wVFOVro*NK zTh3>r(SW|Gish4sUlXIh@zz^AJ7c=LPS20&GCDZi(t)Y#CB%u4FIG`9lEZz=TIqr) zgV|BmOVvUWsJ6>=lx)9sBnBb&p;fWCm^9N$mPp;k1p6}9p$UgoIDit3<4QAw@VX&( z42xD6!x}I!-RxS}MGMh;kUB`Lvk4^h0nra4IU_5%mP~rxK~z@2tFU#&kl+lgQd`|X z*P1iJ-rjmWPs%>h9(J*AlOR9b6;W)umWdA9Wsoz36n5{VqB^0Pu3MC@C|y;#u2r!N zh#g~zgLA$@k&fO3Z4k+!xDwOH7lV*?rYxQ>p*&?=w=B!UpWGF%_+g9#=T4v2pg?5;ie{W0>IQlwoWrj>m>lB>i+mNJUm${@E#9Umm+iZ9+qh`vygJ&c@h z4eAf3`yKQhHy{7UV#k;39sZHnv0v@P>W4Qwn0`yndSjsenX}{SL-C$+oxpktJNBdM z`cucXZuX|1%J=S-`628mR`>|PaJiOMQrB?*PlFxT#h~BGj+z^h(YPVI5bKqNXd0Bj z)gZ9rKn|SQ5#6>kV~u}$c2v+`QLFf(mt^bp9RuC7BUXQcP^c<81vS7#z>_dR+%X>p z;UH8gGFU-W6H07tAJ2-v{rivq>f=v7IX%tx50WIKX`e8ShZI`Db)XR|1DZh$&_Qa$ zumd432rXAL5uY`?-YWN9%-nRv>?knLA`LBcZzO|?NdPVp3w*TWD3z?y!{X=YbqTyb z9;eAzK?aYn>UyzUJox4TE$vyF4Tl3-!{CUsy5Av;+_WdBC(GG_Ak??wZtd*u-@c=Q zxH1Ink=4@gzm=bm)kZ-oH=}5VMcb=aZq^2ij%{p+Z;4Q!9zUgHq!%CW?dPMNor7DR z9fLG=I-n~StxIt@9t`RF{pH{O4K1a`?1Js2SCqgy>3oGdpH9+A^x*L~NB3Ua-QP{q z0WH#eMfHu7YdZsURls|Y_67>e7dkHlott7Yxi~v%iy}Zso3-LmU>d48>e(@-??QkM ztEtyj0lQs3lnC{u3U=18!_J8sVgHh*$smif)SDbO#nQ}{s;u9B?H(~1kyv##Iez$% zsD&=+ql3La|KO(wdppFATjSw;GOZVLx-=K_>Dk#y7@*jZV4GHP0>>t!Q`m#!A!4FC~|Bg`EoHp&ss9 z&GAB_%JV1lXOF{nDNNaPb<>qwN8|j*cSSjC+R9Y*;%e^7rY)LoUehPcVt}#AS`kU^ zvo#%pvh+gej0x&CWSpR3FRP{C1oS!s!+uFP3=Rw${E&T~nv?JQ&XB(YH^QpWUzQDw&!{SX5@AxV0nRdTk3njHW`Z zp}1y(e3Y#hf~FRiGxy+Rd9|PiB(xQXIulv5J&M%2-UD7XaOx?ASkmv+iX9Oy<oT%y`v zm0r2Yx0UyE9sf}NKG^Zauir+K--jJHUv;xSOy0=Oze3;V6<&F-`jX%EAiFv@-n_&& zTyN_2yvUBP(zub%M}hu()Wly!D4U%9+j~Czmvhf|`>cK2UjA-3cx$76@n$CF`J>{F z0lAUmUU8Ct)^*%b{ZMv%;e9vza(sUVEyf%t_MYzQ`ZL<=?_a5%w8^!rB9E7j@b^DU z8%xMFcIyqiS6ny0mJ{D(#~vT?2Te0tpf@pAm?cNL8w$H4%$_hiT5g3Raop+2x`apq zJIFfvw^;RAqw7I&raFk(feig80oOYwRwp)0f@~neT-ZzmsSV;uYkvLJgY%+3naoei z`f1x%NWO^KY>{U}Ae54=Qgx_Xw67q)?0mN}<5bn4Vs5Q*_3;+<>vK|-ju$AI66H&KD)fkvh?WaR#7bB zUM+Rs5K0SeXXlIg?BblO`dWHQHW=Ny`+ArTYdT9vE+fb%`W>e2JHA<%SxIjL9s1Hn zlmr1}udhsB7(_%!p!4YA!>VesEC)Vr@91=_qDaM=4#RYiO=mL^=?G8Qkk`qh^nGcCGeV|(Tf6K4l8LbYl=lj>$;L`?}HbC zC1DU`X`W=6hUIh?W>GxIAl#!|SJumm%dl+UcQ&*$$ zfFN)-Bj^-QpFSN9hX)6H$d0>qGP~N_A30H5Vi2yP30xS(xg6|3?I=+5(`WOO$6+%| z8^pLu+vq`X@b+ynjKy*$Ojpe2^}Hm4Y|1K&;J`$*8b@>?`gjg>2rsTK`+M0mk*T$9 zEN5?tCvml`ih#LfgKq}HgSPW*r#x^u<9&qv^n@;0*)*;kA8mPdw7PL{ae@RQqK}>( z5lMr}0J8urcDh*Uy=|l-*{&UTA4CX+X*z8*lFl7*7}1{*^IDW8fQTT3*fEc2uO@(i zT&~%*5NkC`m*M&St6-tT6nfn)Y8^xgH5nly@&3R2uuCpFU9D%h^^!-lu2zCCz2qj} z+IZEPc&QuT+6rFV7NbZAXg7AO-AIRRt4=aFB3wvhTM_AMOTR2FLURR51G;&umV{mT z$wl|oHI7dv`N&@0tU z&6g)z2tq8OuYJ@m3PhsXT)UApJHj1FyB~-x?Go393R8n+DPa^kU2B7b9RXw<)8h{hl+;N2Z(LN*Q)H)yD=X$t}9h7!;ae4Ce zn9y=K9*(#720I5bf*!k$kYFrosJWqqW-vawdylTzPk!~w>heiwjc3+1JN8>LFF~cH z(b_<-LDA>EI=>>69}dTaS-bm(zFoTYX;bB!iijPd?H$FM)3{ABn=B^h&2*-!nttPB zs{$=aAjlByGAMfpa$PHavn;Nr|~a-@w20Y{bpGZN6x1+Vnzb5@AC36|v*&_?xI%B-Ok#%OKKyx>NlGMaPGmu95Xs{p_=9i*A!ERK+zKVl-_i+CYpCc8@;1C&Kei z7wZ{rz2vRMF8Z7=%hY@6AG%8EphvGAh`R%11O`4>c>nBgE$H(QQlC4C|43Vw5a-&cjZi~ZR+EbU@+0Icq%kng~=Sct6 zO7(1Jzr7Myb58!&BG+O&0NA0nbG>4(n2g?~4zdn*llYp=Cw?JFofuhr6zBV4np(OH zxbKA!lBk$=6Lc;m67MDdZG5!46`_N+eH28{iHAmPNL!o+@Z4e|?a<&;GiP+Gx=FjL zblhY|+so+mOUh>VMJIgu%EnI+%8{ve9pmB$*aJA>%<9C+RZq9@Syt&*?K0drc+HOD zf7H0+5B*vzt3Q{_?Ke;AIwrhnn%u2APOi0Je4zU!gZIyg9beMx^SiO5fBeQvJkO3= z{QlX|$rV20@6E*XKNdTxb?S-*oO>mgzEMWW-i?06mz(UU`By&lh$Tl_T3JJFBV`iV z&}MgAbhnf|3fz8RBilqk9LyRDPJifx@MG?^{I~%H(jZuj;XLDPFOZ#zDD8CKNY&8f zWogAe`uk76`sVziOOjwPZiCRO(CB2*xThCar;`b+zS0O~R3W^r(Gf0!b)#`#S;KYX z%VOEtJ_hW(iz+gy9JgcTR3X&$-6vUpoWKR(6|7&%=d9@&NsF$5_#bQ1uwA$L)+q-?2 z*fEOHI01=2YnNp`SuPLmz8)m`;o+^n|GU3lJbR@3dENTzRex=;OaWpQh-(E1UHBnd zTum)}XG|D{hx@m(!7v#OSn!;M)7kPdgnuCH$m4{SzpG_6y;`1MnCT47xm=cq@j)}N zX4UYX9qCioWnsDBNI~NRFc30ErZ5c5&~}^=J0>W3%o7?HSJjut&&0gi-QL-|cX;d8 zeswkZ&98r5TwS2NG7A3U7eBjwbl4Wv)@V@77sX=MHqGqnl3+d#gVC6qWTJ48rloz%3L}icBK1b zdG>Vj^f6&bTufS1bmM66M|Z_27R5qTZEFC2owl_P$%*HwEMl1%XcO+^w@I6K_ zov5*8KR@Gq=f4L>hua0_0jW$5cHsfo8l*yz8wK(p&{)$QD8r5l5!|^Y^6iE zl-SYGS!!m6wy@Ka=F!*9*%_S*^dNEBv}-0}I~RA4hC6xMmQyeq_jwprl;q%?TwB-H zD!PBtd^-`#hPMOEj#~jDuuE3V+3bsz2wW?!V8KQa8EaU~(20;E72I<2UOw2Sr`C0Z z*{p1Xs-#U@6*V@XPe9;U&>w+VbjR6W-@q0!ud}#qfMbJ@CA##89ii#8;zi@79PNrD zQS2yLd{KEB9kHPSZf{bGuxnGn-W@A;*ro?qlI;yI3@bO;(Q>!_pV;xc-syK^N3m{q zy2*|ka)5tg$IY75-V32U#6z19l`F z3)q(W20J3K=VVdQWZR&bQuv4?x5R9)BYI!@LT?u4ekD87R|KhTsoNIan^oIXWdoBl z_6B6%X^yTTsEPAVZ$huUST3g1>Cw><@lA^yF61HOIBg6~%bF;lTrL)~)1q9^>>Whe zc+cX}i72MWS@d_yRk(DmA0DtyP|uEQrJ)Uh43`b_`FufeIL^~=zWnmh{RcGs zgVEM&Kl+J|6PV3JdNdl)d6~{<-#$H+NfxHrzy6>8?dj7efAzor2e2bEu3g=;TyGF~ zD0jqX8V+VYCz$BCt?K1+NlY`yavG*6iHBR`(bibSi6N#@L6oOKN}q@}1_8RL362)? z#o1YTawf}~ZJ9Yars0o{?(8H)*HVlv0bEkJeFsGmjE`FJcqqC+5F{jOgb&P$9f``X zzCCFt^E}Is-njGD+qb%T{SUwV<>d4@RxS$lU;eAVINaau8Z*q(dQp_ixoPUj<+eKVRWb6nK+ZGY<-U1Vr zC2d)CZA%A0#|hs!j;;~lM7E+O9@{dcl>vgRh{z|-vLv-6Tth80Z2}#4L-TVzvU|Bx zjxPpntLp4v0Cq%*m=&P$NSqopRJabM1w23asyo#B4TG4DpKih0aC3~Ldl-q&(x}qO zneDE+;IR%S-V^y=ZX#=GFBS^yGH_v}^f~Hh^Rq{bgJh@|bkbE5*oyvy zhW>uz&)*YSC*rB&oOK^)y!jiv#I6E&uOLQm$G#ZL=Ai_``&uz_i05ow`RdZbh*k^}%X+bj$ z)|b3i^lu&0@!wu%lRMdT%VY>orTF2hh2ouRgaPEBgojqp;)4zWko(rHknI zdj6)?w`ZeQ9@Pu3A>T*0c{4ir+$*o^u3r7w+{X9(H|M9k-MCvF!v-Y2Tyy7DJx21C zl=zCzqJG%`s}vu zM+xyJPP9v|cXT`*V+BH|f-;flhEncmc}vOLL3gCgP|y!s^wP32B8aA77P^&ZZBaT?XSl8@n$i9c5!(^Bq~Hu)#70P?l1o0-*h6Nb=J$CD>f40NnZHoIrMCE`6zwr zehq_l?}nBZcP*j8mSC%_KKa$JXr$<XzE1Vn5&16&%SyXTe~+Hn}UG6S$2(%gJ=+=@-&I*gQjVE zd4Af|8vQYnX`3^Rbmcbd=l1Qle(yvdFKAuZ#oK`(9wBJ*1(6-!`v9T#+6AN& zRaGODH4x!`93PGlH-iW@fn(hk#+7u{SxJA-otUcXxSJol>H_8@^qN^Nvat+DQ5SS3 zgvSga6P@maHZ+ZzT@=l^%D7 z;_?DZOI6VA5fGCLX`;aF?+*uQE{W;e3Mpb}oYNs9dG6&FTl%AdN~>>Y_5I_zFqpG4 z0>@BB!iAjIUbKP+j3zW@(Lar(mDs_-&IlRSU@3Xl|PbG^PXP(4b5-8KsSi z=0^SI$@#^iJ1^Xv=DESZ_VSzv`k|XSiU=hJsL%-tEuSnGpPig9!+`LyLtqpw;Jy-T z#g6nRfFmkR?Xa?hEYbR;oAbh9X{MN6xl~2tLuOOAyg^e&4TI)RCi@9Q5nm zmbG`d5k3JPNAz~n`Q&nPH5d%;-FdBRIvA+v*l)!HWWd`rv-iLH^z!U73L$LS)Z)iK ze*cZPe^Swv12IfsIAS$QcD}}_*AHUHMJ8tWk7Kwu*pXXK1=rMfi)A}se)Z`WbeP+> zj`D-uV1Jx$jfhEhx3`H7pFKOCPUbp{clP%V4-c2q$ydMm@{;%*>(F()Tf-6!JqR4N zMQ9Mdh#G5~MJ&vC=QrZ(&?2N$n59lbO`Nr}yLIOcm**-^Z4$)WDbY`8Ox9XEnV&!W z#xAQ7fj5Lr=vgq;ra_{UjzDh+BN@UwTUT`9F*_oruW@EYHW*~XJRJ_AJdO$72rjkG z<7oQqtU8;ZTYEeI(U0HW$>WPBPo6$_I5|6|Q~BYay?guUC<|c;)76b*GFBfJ)m4e3&eLoCGQVpdGsmZM@sjgTfqg~n>01Sq4w zBC^3)$rJ%Q5Mmc_&#e(Kr)~r{5xbGhBie%L-*{6;^4aLYTE|mVEEctY|-6>w6yY3wH84(S8LaF^l=G% zSL}#_%r!f9^pnCiQ|&IcAAfl{n_{$^0uejlqcDSEFy2lR+FL>upb;!Hv%!uC)VEgE zI=V3C@#W&lB^r&A0Gbssp(O(9V6CDPP+O9yJnfu!bK&AYsCQd$W35$!UA)p+)4n^1 zGSi6Fj*>q(6Pi}EZKf-LHm-(;!E%KgVy)cWVps>=XOrbhc0)lQ$9g#&f7F}o=)dQ@t-0)iWgo@{toPTbM$(4 zyf#x&y?o5ZNp^@x^Ot)lCc<^mDHA{la4151}@+!SN546SsIN zUX$Q1s3FHg6G1BVcBu9>v!klFTr(7HEKR_iL+l7uGE5Mi;tVU46JZO2HJDzQ)vc$0?ASY1aNf4-EXUN^h9-6C z)gRfz5O4DwJBD5!N_rKY5K@-4spre(WHNp0^*0G40v&fYBuu2Oc$g)$oDOn*a`NQa z({C>>t_JzmY*y^<-}>pF|3xx@nl~Mjfd-uR`D+&_mN(SC*}G?4cE#zh^}Y^--LCuM z2b%`b$N%-$XV0GH!{N@|TiKoc;rfa zw}?rQ!)m&%Bz^kz!{ya9SXOBPIckK8yQZPbCJ12YLgSStG}c{R){8k*=s5rg&<{iU z6#+Vp^LT$ZBJN9Rc=aHPCMRdr`6V%5mx}k^fA`k*aB(?(_UO^$2M>vV-+BA(yN3t6 z<58B-1=}rW)2duvo`D?+|2#X!aR_9qsz+ZxI^5qK4RS2HD|Q?VQ<{H@Vos1oyh^8k zv7AK&yP=xRW;?svD5J%-k2WC~-k|g%#CV)u6_@9xS?I8>y0craAHu7hI0A)gJv(NF zA=Z$7-C=fYnudK#ICChCA~N9yhQ4`-6V|v#fkHh#;^w8hzavtDge0N8lk}`w2QEsX z%H;FlXu(BBS~53uHt52Ug4c^H!R96q5W#|q4HU&297)p>KBD(oXF_d>_@2xUGq5A= zD@tLP&Xi78ov5uY9I>OEMb)t_o>g}44L3zfXJ`<*z_kIyxK}eFZS`a`x5SR75($*D za@t6?L1_XTj>WAvM`}b*c5Q403@k%uI##y6o=E$8tsXp3Yg3x0(IP(>#INNd1|ha> zrRcnPb3MAw=yI-|hQ1B)qB9kZ7>rh+4cfKlRQ3g+o2F`$AUVvE?RuUX)5VcY3EhV zwhHWf%Smmn6!bf1xvWY;iYQF(-hGYc()p}DIJ}3KOlkR`u{KE>JbU`&@BZ$Wc{a$hVb!#6y!E4Z z-}}I-fCe2U>fB3?w6zq&(TI!J)J=BOs|)@5vh=faJV?5>X{W{i_n-bV{ruqGo$WX7 zY#$w@qYSn_aZG3D{N(cSqX$tC9_;SDcK7x-4Vs=`bGhip3<#+1r*~A8{cm z-)8A$?5wv%#+CtH2v)JqAH)XYkjA_v!iV?tK=0)H@4hK>?}jK3chaki>f+hy^xNZc z>4M52s7T9u+tMJ%+|!d}Ns>mcDkf*oQZ1nbPbZ7cVE_X|$0ZRvhx>>=5=v@4Bz8PL zEzU0Jw{_Hg_`!Sk4#(BBK7ac7;r%b$s{YYiZyxUK?QV@yf;}mU#k^R|t}f2#{>$QM z8`_On)`?4&i`nO&esTBK?ftzSpw@~V^Fc=cEURUptj}4`=X30I0$mh~?VYg-*kTXi zU^w6)_!maDs=L$k#pPMkRYB5PwcLOEu4o%>g+YBl-8QajqpAs8HiY4NL1yNZmN*SjckAf`ayfb|)Q(7B3t>x5&_NF?Wmh6#nc{(@cLN?Xlr*9h7&7?UtNRwk&^9W}m{sZ4fh zTZN5G*#eX{sT(!)n|?@MsUC%c#7n8l4~M~FWL4eK7@7{?2vH-#GzG!Lnp=bDvR$zw z#~|S=L&qa)*;Tf>l=G+2$v2CZxHeMDneFFEA#NXKQ5;x2*?Kxtoc3jQ6wHnhvE#Hc z-&_?>FGU=CcEm0erxhBPcs#u=*bz$PV5SE55Cn#RfZQjIJKCsbX|~hkwe4|U7m;oJ z`Z=Ap{<9M(&uAxtHaNyXOo*yq;CyS8Hxgu~G^`8X^kB;Ig6=x`xe{CinzBZ`^YKV8 z`pC8OV(kGVUSLO-^pb2O!@>~4J414r1jkbBsRijp7nFrN^gF1BH3Z0*G^~t@He?v_10eT{+b=xI}rVT zw7eJ?B}f&rWOk&ZfmS;~w;z~2T_1?*wlXNpzUU0inQwSpd}3ZZ9P~n3@Z4> z`yV|$IiAcfu4>wF=i}4}2moRo37BJbf3VQ|BS_F{D+k9IO-oEviQvh_)wk!DvsO0Q zRx2YuQw(zg#Z!I#HJcU^bv05JE!^KQT}rQb!uemw*5R9gJD>$O0oau(7@f6_eZagX z4x=^-Ap43+pV(I+dvgb#BRSrQuw@8Q9`-7P<(R9Q`oW`bwzv0w@vr`MRf6ckI2GJz zPV4k&oVB+7^wW=zkDn5%j)q%}=|1@RFaGSOKfRbv(yc8Vc_1D95g|psetrDC7C*P} zNF>gp!=q*1``NVGR<22-IBL6Zzj}24H(wed_g=g8=KDX{xw~h0Mxq5TRO;#DZ>O`1 zVV?c?t+(S)e)93xpZ>#Vqrm~&Qu@re-o^*053{XNl4S%GV`7ueKKl4Kbm5v%9o*V|_suu+P+T5A z`{I+2%jNv-*I(P;-Q63HvoKELuv*S%ldJjUil)~*jkm|!UM#a~>+|!AZy!HC+&|bF z4zMYb^eHR)|168?0E%)MYRP%>U^bt0+<{78IgGTiZSuzF*sE~Axt-0s^Q-0bvT(~_ zpmq)h!6+3?h5OAA!BmDYv95I8!OvKjmCiQ(uNAiG*fB&h>%mkA4lZy^39)aGSdXzq zsF5@7U>8m&h%VNc-9S;=0B1eA)tVM+J?Mi8>Ao}$QqhfVmaq;Fvp{C17I0A}j7Zvu z$Vs(`6Jh7jv4W#QDYK1Cmzs7YMsG)IH$=~VOJJs$9W5anp`5*gu2 zr8^l3>wxgT6VbAc%l@7m1>w&Ko3Xi!B|Lidr{-lE=caM9Od(w)-^-?@P( zi(Qpe8qSJ$t5pe4{=@dl^b7I}EA1bc9XEo1ulyvx3p;M|(3(6f=c~Jy#TYj~#Sg@= z@AdWjVn??UrhfkTe+PE-NVNLJOW5(bxA;Nq_}sB=KITR@v#qBFh$@DIU` zo)_hfw(j+F*9lF*k&v~o%y+P(cU9q-g$DpGEmWL<06XS^8mV?$*Sldu?D%#hhOPo) zp+XPN1xm6SA3hWeW{pUUOpHn|r}e|L>ElJW?BF*+ubvNw7#0rUc`=r_W!jjn3EzAm6yyXL& zd?^x%(K6j|MHl;>b$)M#aqwIyeLIb}$(BCWs5rWaXe?rlkqjdK0lKnbN=6hbM4Ukw z^4sI5=a*Nnzy8jh+pjY_=1{R=)MD}tzb<@eYg!9VI?sjl~CO-Q0=f#X>wMf8GS0N~&%*{C#>{!gEF(4uI41(oW>1^F?SpGe;uC1{O|^7P=|y&rw}9<8F`5V_cLVlO^<5Y;y3%ZC=# zayQIPT`TI!Rc!}+tdO$h?q<)9fD#sNRGhG;OC=0k5+UVGN9Z?MZB^p{ z>M{tGFT3;|Gklq__NQje>ZSsW`lvc>7!by{Zdsc}T`r5ZYm!l-hr}Z#x+6Lik!VO^ zu|KsB!ZU`@`H_*W*c zJf7%NJ+z6@CX(S!8t$hi?To014bf0;h+~Mmpy`PA@fMBH9DJqUTUWcT20Id>xw6I-A#FH`6_5uKXTenYVyR~-p zKM!_XRStcp|I2Fmc0UYu)^wwu|M@G}@dbvk>n^zs+Ij9sdI=J7E#dL1kMmtBFfSgz zbU*MZFDA=5;;6;Ta=16%>xFv3mmSZIyz|COt-K1af4fTTzLXtb@x6ZGyu3`?eB(=9 z>jCll326;aB;xnMjyF1mZ)h-G>l5kTo8+3#z3Gd8504-IVXLN@estHGEURir%*U{_ zhA=k@7K!GF9W&A7ve}K>Lsh?@xUnrfJ1T7LX&vZt1ub4K$tFGu&l)|m5dq)*V?pb> zQ87K9_m+^0;3%4t*X)QeXB5zKqr)glqZraT3hb!Ew39*6bdN5UUreh)C;aIY=Wuz8 zi};M>k{#tjWDMz>($FedA^*n8c$WRI{kibB5}lu_ZP?3f6=TK$X&$R^ePC+!y<^#H z2$%4IMF=PGAN2Pm{(B!&kJF^-?8l#ergil0kKf#x6Tx{en7i|Op=fBBd1|Lo_qd`p6b2m#nmt;D?)pPk;U2M{?Lg&g=mV*{3rm8Dn> zyOVZ5h;(Vc`t*x0zW6-d8jNo3zy0$MR2t;Dh$1W(^c%(dYm8BXUeHl@=2+xT=po_%^g>1|{Ofz)xjN)vuD2RXt zM|*ev?49gzJKcfkN%^>(Kf8=*w_pRPs5C8co9K*2`K%03o&vj%<>h%GIg8qp^G0 znEAq#wJVKvZIJ50{vh57=-;hbDt1#udKVzeWrcnd&bqH6>e{#>b{xKwh%xINR!}8^ z3J;`h=(1~7>GVR^r=~m?c8MBix=(Oh6Dj-b;a=8DV$?fHm3h+~?t zYJ>Lhoh=d3ow+ozXcCd_45B2#2-LOYHh;CQU$T8)ARPEYMUxDHW4M=>boUckwMMrD z%?iFN9f$Fnj%d}kY-z$d>#h-9jToe?l`0AARB^F9{l=CjN}CMzrot?i^f%qGVmyX) zyyIfg4xw2{+7P!vbe!O?R<40u!m_qcFU_HNxwc^;Yx*p$aYv)2PkI=vPTeg3{hT5hl-7fPb5674xIa`Z$2-%+Xk zq9a}3Va;(z$ySFBr$Q?4ciQ!ry?1kvzSEoqrT!VRVi`nl(Gqc3BK7b1>5 zJ6@+y|1j+6#4G){U;g4ReUYBM{vho5+?%g|qFz>6ctgwc55tZEg0UU6UDkRE*YEO2 zWk<29)LFCRTHLXJyc27)nO->@8(7B)YufN)C?Xx?p^7C<=H)o(j&$?WTxV^VsRm65?Ky+yp_5aV_dp^mQoM(RNjxX2#x-qZ>K#CDs zE;l4m5gWk`?Fap-`XK3pHWXS(SS?79O8_M741gJoz5d>I<&Muxz0aGcs;m3<9Si`1 z1h6dJX!KN;T@E&FYW;^sBRj>2#)_Jry7P;)#dfB;3QDM!lU44Xi_v49;Dp8ox4U1{gwE|f|ghGI_#yL~jq8N2XpH=J0gOfX7cx(T`Ax%tUAwK^3 zIZV#!z&EU?+_&qpB=YB}3T*(RNMD>jQH0vw(RG++IPXvtPh%08d@`Pl^ZoI7oaX0` zAD7iSp%*we8x>!E>&?uVrw<=JfBJ-Qg7)v^V2{=!``mB-^7%7jMOL5+X9goJV z#p1&cKRP-f=@)aDoUjJBuZbO%2L(bg(Nx|q zM1SU+bK$E{iL8>`7#btcdSi#ks5KmM(tXu|J9*g`2C<&#%XFO)Ctn^3Rh8cAT$GX6 zyK^9j9hYmmXt}PG6)M@XTMrIi*wHTX@hnYGCTbE@qOq=)eT!I{<)H~L4XJi zNMJ`t=Nas%RjYNa{j$G!u|9hw{N=!o^v zEgjgg>RijgL)xtpxzD19S!h>+Ph5U;59>j)R=!F68|7*l~BJeq}2ET<=vk zKIe5E47a@V^Y{>6`;Xh%arZb}(;(Q*r4H`n!+#FPcI(b02IFvXCEueqYl3TA`#MeU z-#noB*^k{kwc8=E>w4hV^cQYymAgX0TaPny)vn^*=4d0waZ9hvYj|--QGOfARQ_6C z_;tB^ltSM)N^~<=F1g!kpZKj$@%CHf_W2?HKWxt~7v9|3uvU;euiQPJO6_Fx_0_(I zjOUgbuk;-~XPGxo4zd7&9chY&YM_iGouFf;k3}{um*RiaSi;~hs z@mbX-`$wHhK6!re@NCtps6{O#z|L>V2Q=$F1lnLr8;@MD0H{SK;+(aP_$OQv4eUn@ z$SikB_R;y}_kQugdEe#-$7M^yQ5<6fL6*JNo^^cS%ZoZi@MUfLbzPQqjj@%%G1UK~ z_$D;QI~KEWGMw3fXg-((v#{b&@~F_IfM{cckRb63ZJ5$2M;!4}5op9Yp5$7|gTuqF z>)wC=gLmKg*`NK{pMT-YU!h&1g+xRkqP<4Ijh@hp^760$>OWtcoj*9fcR8Prj}QL) zfA^R9@!ok`i7dW%u&2&D)jRq|V#L*|eE#wUJ)HCOv+0-sS?!A*!$bSdMv2LbwyLW& zLD6DWt-t)$uhN&&#_Kq0Y?n<7XVkOvr#|XuM~CiO zZW+C^)5HC;Yu9y!>NnKZ30rr@y0a%w`*lT7B3qX_j%jetdOXS4Ex6~VE6?TsLdB6x zQ@WCX(UJa>Z+xX(i`9IwURPN*3hnvaOn|sh&5Ew>{Lg}cI_m~zx<^y6j3xkKYjGkCz*-q1;=}{NUOvB8NJ~7)5q)O z98tqG<~zdEDJ_@lr%#{ECgUt6dUio5hgLAem&K@{ood?-TIOj)2evHNzISmJao-f3 z{{*#+h(@6x59&S_m#g!0)wcO;lpIfW7NN9}-qSU%TFa`YkE8D(=;(>FWFK@HIkHPr zKN6py7EGg7qO@)Ul(;W##5Ip9h&tMy9Y6q5aFy~MUXjIUs z#yND<^@el-V3TMW6)G6%JJFZEZjG4T%cA3%h$X6HU>Jy8s_Nk79H<8=<{ruG@JrwH zSoXF=z}hsiEJb;`I(urXQz4c#ju1OyRZL5$EEoA$>WK6CY$0R$XWt1HU#B%^M3~;t z-B5~$k3>8c#ePiVMZGK$MRf4cM%)obF`7G}1X`jXvKTx7CF0CLNx&a%V`AN1lf5w+ zMeSPIzLgS}3vE!})i_uzI)pNW0Y>|<+Tiw+P!BCO?AQk+6`@rHD-0Hu_k$Y`pBEX} zk$)NR5fMbSiJ^oL_9nB;jWwaT8HMe%vallGuwxkG?MB?2nRt)^vP0X~;E~N&g$$oO zwC4DY%g)9pMgG39`-cxN%a`Z#%ZgU@=&;5r6VT>@uQZQM zkXJP9c&!;+p$7>a8sw}Ib7W^jmMt`c%L_;KWSq1n`uWqRKY8-_k|wt}6EZd2cI{-+ z!wDy~Q2zivN);=vkRx!U&8gd_&vq}8rPQMx;4Hx&INYNw69l})pF5ZE~X|T zc3}BDofMfgS|vIwvgxGQpG{raT%5gx#!cHzvh3|QA54q9t(#BY|A3HxlBXy8heTW_ z`+GEBKYjLiwYY>7R1&cRw>Oa?iak3!FR~;jxOZr`cebOyjYoN2r0n$42Lp7vsbN3u zZH#4$h=MXD;jDy4B4*jTB6h6ja{{{Y{v_F(pvuLA)i!vz;?nb-sclyImq{f4&Krmfe@W?k{A3DuLVJ&h7Z$oB|{E5UQx zqS?ERQZ?Euh|+|sLSGJi4qY%mwCMUJX7wG>QWU`u$`=mocz*tfJR^q#2nmP1sSPW3~-KcqiYHBiMkzh(@}P* zWvvi&T=c8w)x~q+*Tjxm_bHd+^fV0Qg`k^T5%D%bQIlbcYd>sO`A^*@f;hBlI0p9}T4+0;me7W@#M7PqnEz?9b+=<|c~=L}MA ziN{@4HeY*Qyq+Dep4$1YVB+$c@4Cs3gFoR$6Z^*LcwImBwchP(iSujQf9nx=HDWzz z_t5Cn^?@A&gUUgPdgm;B4tCuAxq1Ey=6Nnr*R;Wh-0PtJErMRpHE;|$+TksVwZTL3 zTETY$25aaUfS<8T3Ev>LM>ONJNF6AD+^ybB{Jp#*b{vU1!a7`4Cb^9BU%WUyo7ZT9 z(J_K2tQ;l=H)a;)=I=G3e2)vOkr_sug7qEY&IXA{xFj=D7{ndv`IJB{Nk{YE{`mQm z@4o+@7*9K$BFl`_AhO$VgB6C=M-ZqYMv+m}LzH@TF`uv7nybIVEVez5=n4)4BD$T1 z`ohrufs7qX1|bqELRXB*jN#n0Nt8~R9b=skM-tkG|4g{oRuirTeEjA&zxl>nZ+`vj zUq62EpiES6hNWQJwv*{-e}DYb@BaP6zx$D|Ymp=?+y42#{fp7@!Rd1T@YBZ^&z`#m znL2EkXx0GKcuxuuxIBdRY-2>v)cV5#MB479}wYZfZ@xBzm+rZl%pH2tRwP7eD}NW{qXzWk9E|Q4ZVR*2f@*3e>OSX-#a=Kkxs`WqEVPXTTw2Wrd-*k zvvup5RYg<2G>2ifFk{SjUl<2XUGgMU-T#avjs5W9#oNJJM?8 zaF(x^7wh?Dw_fW-X*i(59aUIY5P!#6OwfCBbUL9Y>=PjjDBB5nO1EE{)L$ zIcwSjoB$I+*N<@7+sGKYh~oqc1-i34(LqU(aACbH&oBDAqOX|l@5wy&T_Y_48^J|I zWa-+qf{G|Sm66NF^@yoIVo7ozEKro&6nLQhfm4b@$P1yjt}!sfA@pdPsB{^eRH7-t)_*@B08Fb^{e$Eg=2?~U>ceX+HZtuTy@#C>5-Vey(iK{(ANVA z*{`AR;Y5XwX+20ILI$=+u_Jv{!%68zL+55KyYr@e*_CGqRf;9Alo{fq*cGGH7@}{w z64_64!;Zkm4!)04#&y+KD_gB`+UOdk6-k3u_#QQpUebcAscDmFkkPCZM3=a#duB%| ziPpQ2-bEe+ttEGh;$AWu(~0ORI(-f6Hg(L7jRl+!MuIL#d87Y^_>vO^R}y~glp7Wz z=rwmCe=P1c2lwvCay2LmA~Yb!1!=|H6*HHap$|j^Y+}l%YiN7X^cq=<@ANn_}UNg_mXN z4S~B>yvmNdpD*3#U`KWR8?SnUcI!BUNAqq6`j#CxzA|cC@5p_`+Xfo$l5?z!&FNcI zn`uQONCaChpBg!p{=|2Ovc8|$!>BD(70aNJ5r69^Pkb)Yl#mX2BPWLX7-lthp1+hq`SOAytfkUz(0YoPB(G@$H|!d)8Z;pDpAi;pjo{ z4#{i8Om!+Eu9Ae5ny=d)Ew8IZ)i#b(OI z+sk`89oKbvw;2EY|NhqU>C4M_G_FZ z?KZtm!5fo*H(LW)#7{K`PKg+^)Zkx2?5MJ+?5gR}-qFcnO_Oex!qhoIgZ6qUzV-io z>+HqZK`}$dioGRij<%8ZCVWV=e{^{N?let_g+yK29&MjC=%VZnu8=#b-3Qpvu`!RN|<6y*FAgh17gY`6`(oDN(b4% zAU(c!?@nT(YQA(;wU}Q_vh?KW_|Ea+v`9Yr@YCh_CBZ)NWfmC%N+tZumoG2QPEoC> z>FPrC(f0l2`NeX%oD^A>=d>S9(-7lub4(0&gq%~qWyh*2={4w~Q7RjyI*!r6Lbpbi z&~#ZY=c~&zqRnD7$|oZnk+v3HE$W8Yv1``OmXNsyHdwxMU6|iv!kowr@ z9-yuQ^3zD`_g#;Q(!Qy?sw8&o>Mjl@!akIS$k1WU6>7j7$8tYTwILPW`zFrxXqv-c z*>d8Us~a6#5e7XbPF}YN+{bioY!`K+5Yb_}Wk+Aby#xvN#yWz}wTMcg=)hE(IFAl2 z>|)?t-lHaE7+RT*={PhU#0Kel;DOdddD2J3i+f{{5?9aFG!uD*s?Dwqmvvyrz7INR zF2W5gqn>u!5tTQ}CPyMW8H+d?Z1@0Sh>j6EI<_T5TFD0sXH*nI%f6-2*$@QFM!C6f z&+6vPw=1DrZA&^bnw1UdJVr^XJ%)#NU0PPU8Q4)kwURay;)Ye(t(H)_Pm=_#KTcE) z#7jdLOUH3XWYL{$SW6r-K@j&Lpp+bc=6nd`I7Q;boBIbxCh}Ef6zU~V;^0H5(h+gi z{uXvb+|lo{Bmb4-d_&xE!;XmX*^T*O816Q+klo2wA|K88Xdv+^BU<~R7ff@wQL@Us zr4ulcn(mnt9f=&_!PTMqz>dKTQVv1@pTUl9lQ`X`RYN77{Oz%$zb$1#e!i~HUk|D@SFcyQM>42#3BA>K#I&)= zKM%QVeWi3Aply4UUeydoRtTChnsvVj9%$fz%(sz55o#p-n|o7n@pR(m560>+mD>07 z)%t^n%QnH~hjb-eQLsB)FX)GE6*c6_87y@8t_?ey&}SVZs)V?dg7geGCvyrrj%ewh z(p(T_BbgUZR;wR;`j8-UrIe)!!=yq*oM4ZfOr45koLMJVP204r8*IBpRW8>n8b);* z_ro}+ydUsAm`A%{tIA@KL^w%;u%c(RBl<gvy=l`m#>ta%@>+KcR%>%|Mq|U_-F5q z_xGBvPRFC!(f;1?QH6;g(%AUAjd!BhXoMlFesy~dj)ftlDmPl?e5c@D!JaOJS_JnxW&wB2 z8F6}doJnt5QwzFe;fKiYK_^polGw{3^=Jb|SJQR#NeX>ql#nl#NH>>o^M z-N1QFuPxyv>?spAt^VZE`ID!_Ns!q~bM!Ewb%joA^QA9+p~#YYzEquS)=Qd{j}G>a z4-OAz#r);v^T&@PA?cYsWiy&2F3a-SlSgsPP5)Aj$D`$Zv0g5S2&dx_mM)yL9@sHY zGKlXGSlOUIY6;xX@GF9tc~a1_!E^{cIigWwyY+%@g+-RdlgWsVB2vUnBaqoI`?{?A zlGZYz-GX*=JkEn879nHTuRWU#GvVPhLKL1gIdS;QvrAI0L}aMs&(i+&Zl zw4tpSDjhjaNT5tN6|Lvu#k?#LB19jTk}<8EOIov{CmQ+r4hliavX>0q2Mx>CuvoWm z=`)3H{2-+oTX7tl`_pMAB~sw%kLeMk9^#G+`_8qSCL1dUS3@FLlsj;aD^Njbpc&Xv zx}X6RpqJ;O&6K(AwGDHw901NiwTB&O_#Z8m61oLY(9Hn_=Lj4VXGbzrI(juURwL&b z*fE$vA~!z79r21zh08**>5aFW={~pyU9lr?hWsaHNAX$s_y^05Vk7gl74Y2lx(|E! zd&`cu;o2`@NAVeP$Jg{(>ua@-x3i;vZQSwZ_U}e0F;1fBO9cIJ0O*dF;BUf?;S)lM zW%EMu6ciB;G;*m!25W&|WR5UnY4VxK`Fcn5+t~rjIyM-9* z_SvIPE-$fKA-n+aK>`s$qX>ZoR*>ObCSuU#@>6;k+CBfS|=tMH2$snraLL3(Pb2L!nDA8sRJ8BLq>ck8|NA$-aXAOqR zWReR4N18SfA?5fZ=pq`=rswA`|MolIA#(kT|M4%r@h4wj*K69RVw^Qi_xSOX4}S7f z_v~W+`1#WpPl-$DWwV3X!O3wpnd&@2Kvo$WR5&;67`#bQy}!N2&_ynSBgLj(bCW2f zQxK_7o_t!j)#PA0KA0qvycIni^(c!xQnZk&esJ&pojZ3X#pL_n`$1c^25saBRZfo& zY0^MP2$JI#PL*jyNRJk(7;$3yuS5g71@{nyE)Iw$cHL^ef*u{a$?rjbsz9etpVNdq&5MYu9OzGt?C;;dGcNM3 ztPOo%RX0sF%Cp16y?aL|zH6U+^3XN);cUM^1*#t9h;csp^b>A~LU?R4nOvNmE$5f? z{B&G^7YKP_l-LnFCRrTV5d_Sp(19J2YXqJMrugbdZ3fuNO5brfi9j8RSh^9oa14@tecNp~enqIGv5<{OJ)9dQtU=i$OtZN=qoWw?QfOb<*ifSwBJ$B##)mNw zhAmY%7UwPZ)`3(H|MkOOs)ToK5FQp;o2Z2af-aylQQ={^Ons_ z!&^PGW7wF19fJgqANs5Zb`-oy4>finJ>~qsi`$3&r;j^||C-owh?)e^ri}sh-@WJMMnhugZ>Le=$utw5@XV5%X$bl+R|z zSNnK2B0F5msCV}+q_@oWnGi+|zi+uya-*@5gOAMC$uNW&?G%fh;fF{ zBlLI}BBKa-VXiL>7JmvgY4mIqqaP)*pv@?ainQ3XarWNhCqI7p>C3)btEi7sl*OCG zsiBE#h1hw?GT&HRwo-gx7UM~|Mo^X_{{C@1JBk+BgeVvR(N`!JkVM4XJvk)%VCp!TzHGWGxh zDTjMODfV7#MBTPS&=JBnoD=2RLBA4wos6+p|F<}KKcBUWgf4s8$!JoY^H;z<*E6QLeN78Qm|p%+4| zkOPO3($wftL{tNM0~<0sHhy)sTAYf$A=qMe06w6KV|*g^z7&aBB2tNn75u=v9+$pC zGaPN`#{VhAYY~xx@E{lnJ>z?k+>5XPv@(zjBzPcTgxD=zcwG}htB9Wk>pcJ;n$9x% z`u4nAJTCoQm|FTu^n`FQ^AWT#8W%C@io2$1yYO}g=}ce|;Ul7tkW|FyEaqiLgetSH z@_`*2NFi{^5^~lMl5`d^LWm?0S<)$ijVeNq#GKIU={hW+o9uwk@ z1Pl?RvsIkwJdX0#8#9?bU9bMH|MHzG$x9Qr$~0b8ovS)oHMX~!UMp1Wv_XBkvr!J) z+{-mol7q=N!uHzGkQ#Ix*>4aL$Dowvfv~L0hzBu5MnCDl=yMHWMUrvT3<8kIq^CJ? zDt#kOIrK$DxO7NR)#+`P5(LTb{LQx)XQxG)z5Ru^&gYjOeDDE0nz?CaJRVo8HDL*) zG>d{48ORN`-m(79;M~p5il}Jh9>goP^Pv5^Eq}b;S%p$p+N}-(ip#1g5APn0_KV{; z?mX1U_LXHkgn{@`g@(G=-K5=(T!QQ3LT6o{ z2#p44GhCUNnT+6`T1-d?5ZIA=#bRy^7$$KixmoR>8sT!*0CPt`K%ZlI(!w8)_T1zM|t|yFMf%D@#(|I#EyHD z8GK@FKQ6M-sCfSD@x}Q$0bwy3O(v7G7cbY#Ih~g%hO;P(e_Hg)7#SsTnxc8jbEGhe zqK1hej$-;!1RWh`QL*-M=n85Z+K8k`;v|M|QMr;$L;n<_hBX1P6@4;_U4Uq&G|pLf znB0T(itSLgNW@UpC9Qv|(z#$r4G|m7o_0EPWGl<|hv;r&7W0s2*Kj2X3O+oJu|rJg z>2|GSH5ddP4L2|t?uh{=hD2`&J-U#y4xex6?nxBO_epQs&b8=n;W8A$U{$jQ5RpqI zqDtsqS?=|XM@A%r?}+FlLEBEO+lYR#zC7#cHHjR!7pZY0PX0)Wqm;>x)_aIxwQvay zdM4b+hsF-iaYv3}yU@aqwQNL#&t5Lj4c~DqH*>8+swX7nx~A_?Ca?*i*-)4QI|Qu? zL3n@Kt)5qYAq*|2YVenj=q^u^JZ2}Z9_HqdSVRt&HmQS-BODHcH=uy-Xug=&UFRc{ zH6^{@fF0?H&a#U&TwHo)N1}UHZWAb5q!Ul85hg;5I+8kb;w0A(@`B*G_VhhO&=UPL zJM7r9EzK1>Voe^{QTI45ymKfQc$FPJcS6Y<>?n3!b_YM2tKI>gi-%lCxMz)ne9=tk z6BQlN;*7+n+9suZXEhCSPH|3oDcVZg_P;Qmw_EavEy&6-tn4- z%gqlL;+Oco-2AJ&_J6lOu4@E-UUnSzbjK_2_3XI&X1DX?RSa_TuB)z&E6elEaBPL& zJve^jTfQ|H;%AlEGLgShN54jmyZyzl6|{VnAa81|U++`auYSZUsJi2`{+gbf&-V3^ zuPhy|r)Y2I$ZHxsuQ26qXY{7uXlK86*BIAl?(JT%JD6u--98k4y~@PH6|%uk!G>o- z3|bbNr{%ECp_(l;C=7-%G6*$F_Ol-1n%ib-p@tgAEkSPgcgSLgxMOg?^Xy^Bwlu-T z6!!Kk>;(;E8WCdE^-X>8yk5MFY%?1rvpkF2{!r?P_o;^xBu&Jr5ivZ>2JaKL{KJ*3 z8HYC(d)$}9-8(^j8`3-x{wLM7dPhRaUNSqH)acZ!G~PR?z4-X-@;`p(N9N#Y6`K#9 zJujg?5gP(s7o!N0{~=jqG^^_M^t1A4bH$jBO@Jx3(Gk}Of})5E1+-%zsAd(it3-pe z0RTr-I?^T)8zAUtqC}#dhPJ4X$w-(KNKVd`4+g;2 zckw9ACV7&h#?i!rNLVI%a&!QXZf%H!2-PAjGWwH-7Tx3L)$?X4vn-m96(Wx!w&;h@ zJ%YL13V@Kx<@v?w(`U_mkqE3GvLq^sQ8vn_dwVD_91Zh9*Kf49*n{kRIoBMzBWm?1 z`NA}t^vayqepN5mD{18ModYDv2-Ky&d$t&)K+&!{DzGITC*04{^k|fIutb{nP9N3Yt(puz&v!V#)pMAad zgc4OH+ZNqFF|4UoB5l_-wxO95_mtvD6oDPl0)c_Gv{+ePEKr;WPdpdo9yLxh>lUzs z5)e=$Jvyyd8ln8g(jwhek{d3lMyi2*q+}9=R@1OQRHhew-*7 zIh=TuywT>iDA?n*B-hX>Ra;xb6`K1_P+AS$a@tmeIXB^~-U!S1xbD`cOKg(E;6p## zmZ;2|sTlq7NKE|@8^mSbSP_bmD4o=XRgypii6Pi1K{-B6~cs0 z9|PQHc9a|tqYGHEhYAWodOCc2&5P#wN6Uk3B5GIH>!$bg^yFZaWNF!ybckT@P0yk) zTSOvqou~gKR$8sZojZH$Wm_(6UD=k+>-$CoK|mkfXeH2!t{vEslk~ps-I_>S z6BN3R`^U4^eqlU5N+Y^dnx?8mhio+~^7PiQkT`l}P%8<0#lVh1!4X(V%VutlaltOc zhJG4%l|E+u$e}Am@apc?S=3&;4z6NJcBAM+7j5cfF4e@F#M?a)kA$KT8N%p_rIAoF z;I=VNgqFD(aqu~mgYn?j_9le1h6MW1{yS9S$$w$TUz;7p_5AhbU4IDd`16v zb#2anVs;Gw$#y0#)P29Q<-ZO)Di(6wf+Iuf@Qnck!#2nbJ-QHm+?lL12ysW9AxA8t#3kdOJUso@Pu}_Y z`O777QkpqW{1YjM&g;OAG#OyZh~;>*YmxcK-9f{q7IG z`@QGqXS0)|KmFJL3NCfbjxKm@E4h1-L!%KGs5>qaL~R&bY42PvT5NdHZq(_+!XR8l zoWuSB2*JT;U@&3Wy$=y4Xy)jYLWHQ-5oM?_g zb{*_;Iai69g3q;NQz4iHnNCFKyPMm z1U$iGSIYu7g&t!M~0`kp9=!7*G4{a}j1 zu|~zNk91*zdW?sIx(>)CSrNr?KC|f&W$c4IJ9~K$?l!iA4!JZgj!jZTNW>2+l7n{7 z&M@nOFt~_lxj?53j-x26(`Y9T&cxWFHn3w$px8EoGq!XtWMo2%H@FRzjva$z;OK9qn{SiNvF{QuM{s_t(pFF^aNTJcfS{?T=_hD)MPTw|$Ls z+Ob=Z=qoEr2QwS1=|q){o$XK3B!BYcv|UQynZE2@tLOx7*|FnJN!vrpht+&gFw7xa zPvg%@!^jYNJ$+A??x^?Q*gKdQ-FPfJY7SX;R<`&M6Pl*MjvOfFmTECX_?R6D|6A4u zA85=E0+9cB?C8QAgT+0aIIm)a34*wzriE0BJGl$x;vFm((6AIHqEJo84LXB7WGK$| zJA7$(>K*@u9e4Khx6F>=8GGIEnnM;>>=?jtD2TK}RUH4}cZ(g}HKoR1haIm~FYIB~Y`N%lIO}qgmi4{ZtwT220`YZyv zMH%9JPMR(*E^PA6fB62l-}wo#j+#tqWTQ{@9zUVlV<1sZGl7M?8cIItXG81$y03^5 z=<6cL?hv72r#0A-zLbEHRn7U(Y63=DTE{R*F`abnh1=>hMM;eVJ zZ8O{7=cf6cnBt~?3nQ<>?LX)MsNq1n4Ou3%IeAu0z>Y~lFhs}=nVWQ6u(NYM$|IUn zV+rF(0HEDu<)t_bJM-m& zsI;8{HRlS8{7|kLFrd*~22uAP0@A zRTab)19x)sNC1p*(eR+Nkp=95kFq6b0Xr)0#Fhj8t6r)bVJ5zGBGNM-*I~4A8+c(2Q#P|3)Geh9`arliEgdG8hY>BBXVsl9sEDH} z+q3)>o#(diR?4+TteTo2i;nJ{EdA2tAQ7VMsztqWk>V~H;G^|};7$W=NLJ*5n~w`} zN~|U?aE90j>hrVXE%Rk)l(}tAV8i4jO0zJBC{<_#cXY7Ix&h{IhHJe!tjp`^v3;;b*bq_TU72>uo*3 zmK{Y{(p`PTZR~hm*Kp7wyXEoA*zv~a{0lpBw+e)MyRLWc#*SnKrv*V6!-NS7)* zi_BEJk?SYMjbuMEHjiBDJ7gQtxV_oJQ0Azvvt#gqR`OML6!;xI&uEw7cn8b?8P~jy zt=AWoeOlUu6~B1;?7fGNYGZoX%tX$|O0vB*v!je7i$((p7vKVqaq1!r*@*Fv9dSj9hI}%T!&x4Lmz5c=9 z{?+B#b7F{Ml)wG<+j|Fx7xU#iKYcevW|Qwq7j%sf@l=Dt%3zO9e7-8ni^aTLS6}_w z*RHN5ebprsDjhB4sksZ4%?YtYhJ#DyP}Om#T+7WB_N)vL7emXoVEfW1^G^NBBKjCj&Z51mbR&z zs-$Pm&(8>a5AGc18n?zUoMx{+Qs5>GMVh{Pxmr2W)nGBV%I%98yA-s zi%a^bNa=&U+5N-g!*LWr=1$aQMSp~H4b9bBXC|IRw4^WuPhHc{sj_Wf6zR#y3B9td zOWMNeWOR1=;_k^wZ1l6|&)19P;r`yFD4srh64;T}HfS4ST|kZ?CagA!qZAg;baV`(jbr&I!l-xMcXy3>JkZC`v%2qqHkPR5fLg-5N%oOY#VA2Ej0VkC{4dY0Nl6e zu=Xyryr9UK4TYfqKIk%fmd?V@U}EQ73r$j(!SwXtQ3xEVLQ$iZLs(JvkiUYOwne=j zxG+>V_Ja~%@V5)2?%-1pCZHY>N8JtVDBPAELw7?&OR;%vYX~Kxo)v=sbl(IE9L)Tv z!?biX5)L}ni&NXJhoO?T^2MbnX5!wPqIh#(6pe@gueL{ceF%53V|9pM@{@rb(ddFM z<4EYKPWN&VGf)yTwVbPG=|}!&!yB8XgLQT92M%wA=~UEYqMdyFU!Fesg=p5$6pwi0 z#k#y`eMf7Cp59$oPz7p5Qu}^|W~El@y}J)+Jox0}$J)kr(MxDsy1pEA z94#9oqAZaPF(QsKtVR)mp#qym;IG-sU>^>TccshhN5yubhkPts&b3yFHKFE|XWOaW`J53!sb-i4dC9Dl31P2jAfCWgbd@B9Oh&?R}*^QN_pA*wh zv`dH`h07p2vWYm#fqr-xLK#e?P0%L4f>`cL2pMGVN6`e1G?&x2(nyMG!+cDWVPoaG z>0i#*U7XuE>%4k7U;XV5e&n)|9FMCOvk$DUInT$9GA=A?qofc~N|Rk#_sgcK(a{G7 zLT(X)cZ-CL4UB4JoCJv+?6TC>s_|%sP-v9G>PAN_ACzhQ8w-=_Jck5#Y!>D6>64GX z|GmFkT)cd6@A$2^@Bh&^zJ7A=!O7k6vzN`czV)pq4qkDLEes)>?^v56fYmxbUZ?eZa zosK)a{Z=E?a3vFtHRcT!)IFgrL}yl+a3LED_0uA;GGFDI%e3 z(mP0S*A1QLEKQG(4i3k~<0mf&><$iQ#Il5gqdX->{P2VK@15M;pUs{RKRU-Lnf094P5YV(yOBwYcr1D@G%j%J@(W%$89@poIyK0E)wn(BP0&pxr1#cd_C=kz9M$)eM4{1T?^nN?(4ZDFK9s87HMl_X?w`a(v?vnn{DgT(P24A z%>C&>0Vz>W?6`v2wj2x;(e~ouFVE`VNLbT)0>YYu)^`XI(+~&gAG8ReMaFH*5%{NL z9iLrx^qaOAA;gVP+f{Ab?vva{6WnFczt5da2ID3-MB=QnegOKHL>SV=wj!Uy+%&kd zZO#=zhI+@rgKfxJhYk<#e%oVqBf<+|G;I#7yPR1IK(4g$BrQl9W?(!qvBTo zZ>J`bkxsC67-W!#-ZwP_GV$7m9xYO*bwdMV=*MO?7%m{Bm42dqq2$Qei54T-k3~1t zZeqHE{^Z(Ji9`kYpTLez11|g~?)W-(M8%^Fj?!^zjP?LQkrD)rr&VX4zC6EJmPB|J zaY#Nc@~JS%FP=X8$w!}_**=*a5*4!33@RPtBD366f|@%GA;v79(YQBnP(j!BRzj9M z;%v3?Xr4*Hf=T8L!Zj>=L7N*H4QG@T?8v$FB+*%>6WXYmj8m0m#FUR7fBN2g?>>C~ zG0pB@`Pvuny?N)s+YcrO`;&ti4dwOPm#fv^{Pnk=e){NWdQh#)c+(5U<1!J9`X$A*1&82DAF5Q0}MFA0Ll!kczAele2`_?;ht<7c(1J2OFGI494L_o zN6H_x&=Z7>M+v>LJfFAA^;aLfeKZ*vg~n~LqjY>AV5l8qMbvk7wYr!`8m%q#MGuY- zp1&k=S<~;DeV+0Jtp51ZPsWqU-gNrn#S5Bq(==7=DARXnd*x;=6eiFi9nU6EsSH5F zEk1OG1W6m-cN-R00m~4LCqV2fc-3{a?MrxqIQmRfhVrbAE-b|ExK~Dm`8Alg$xTJ0 zri)rZyW10JmKS)LqiMSX1!|y%!AG@@pD=el_ zrEFWDiRm42_*SY59gmW1JZ`&+o26}N=W2RCo#fNep;DvgpPZJ9o&d00TU9AZD^+C1 z>983(^9|}9I~a+h*-4?#x|1yHPD=*ZTDOog$tU~iNOE=Os-@LW-#RoL zA#Kg|@x2R0jRKlJ=x=hI#g;++o12#v6nt!`Bi*p0+_2+N9~rc}uPG^VSM^nVWIH?G zn3Q+f5qQp#m#xR_Kq-t093${s-!l4i8i5RrYbdj@p~HIU>Gxrs5zg(^%pO9Yx3lAI z^drRUwRJvQ)cOyP9k-`##~O!*U;U_)2`p(rawkq{VoRIYF-NtQADw=dgSp^Z91&CUk$NZrG`3a?>4x` z>3AjCM9YUHU5H1vwplKhWmzK0j`_;?jUBe)E=mp885?Va9;Zf*6|rMKmd#ALDTf|Y z-=|s;o1xDTy`_R%Vq{>((BnL~-Gu%RBSN1wI;&z_ZBe-)YwdL{D7l(+^Z+_VcaMO-NzrNxwH$ctrlv0U{K zQiM|q^3(v^7;->KDhaqEcpkz(+8c|Qn&Bpjn1CZr6XL}v%XO61Fq43>$_GFEVcD+q zMBn-1y|4eb-$*8znG}#(iDUYN*qCW9K7Rk@_rCqNuIyxs>UzmmK-}A6f>|Tl(zPj@ z=JfoW@Nqhw9vz*~&*4(xM~FsXZVh$J;9demXz1uPCgfI0OvhIxBFA>bl*|Q zr)3%&Xwyi+UChGQzAo3Rt~s?UG0C&ptcar1r>nDvFREu3sv|;Ax&J1xqvq;@ojZ$N z5W{)o#HFRb#vom+6u6X)k)`YVMH!(lOB@^?9_(swIGXLxCXmQ(P%p^rXk*K)3^V3uMD?TBP-+tqbvRo~fEBfmF z>5Q)AIMUP6=Czc!5Hmxv0Mh9S5_r7wlU+$n0 z%h>1 zSL$gz+dtG@ynbFidiR-F=}Z>QWvd8JUDUONc|`cMkWt`9$EGsa0J=OSY8rWaaId=# zc03XqlysgC)8x(3Vdiz&pjCT~n)1F09WX4)fhZ;-K{$W42SGM4GepD@p-0w>fWD&$ z)u+Mqk6p=wD_}6w*|Ou{2dKPv+Zr};8#_9AlNQj{&!i~*b{4xD0uYc)9 zVORvt?AqN8o`jpc_D)j!x66+1mB0Q$vg7vo--I2vALusakGqc>isHMU`kLb{wp+6E z*XxJ*bFky?pP#E&mwoxc!_>c3fV4?{#(z+Nh3m4JcpX{^qN%-W)D-Ee3fD zJBED;N#Uz!^x*p!)OW6cRR+^rhQ;8$C9igKh*c{Wo}tlhg~o+dUDuL}-OyHonkN}# z=V-i$(Jt+2=1#Sp#(E^(SoTxjOf_mB3j#-hn#c$wfye`g8@U1!8>+eAR&SjWacSrw z?g%|e1xLIn$sz(5qgpSP>+*EIs_GURY;i^~rc|L+Vvw9OW<2im{GDfyzx$JSqilpZ zh$m!XM{khw4%DbLXb;*tQA%U+yetVHX+&0W;<*}f!;ZO%^EfH!Tj;IYq?gNzg~HP~ zHltAnq3k4%vz*xP>GQJ>A3i#L`XuV@pZv)mef7`&cyecY*{yx7Txy7#Ws;hNU@fzq zJ=!x*KD_+v|M>sPbrZwKSp;WlxC=rVg#%DlWJOLmb9#EZzrUa7IgO`PSs9~c#2mt+ z(vF+hp}QIDULP@28Jhx!84DG`SI@ zG%0f8r%Z`Qzj*QTqsMMlkMa?2ZD6etoA}~zjdP7GyM+V#fl8cMH%21x2!j($AGG}F zR;#zCN4{>mrlt$v#fulmher<{+&eyr971)1o+o^ynJa=cr9f^y^0e@Pa;BG;&tCR* zwLd0&oVmW`QaC{ii`b*S75Xksb#eNVeqmo9b9i`|W%+V7FW2koWWp77sAXI)7v5Sr zs^xM;yof#V@D8?JqtHtacBDNe-c3gZOOD`XVc{i%AdL4{>=*>PasOJRuj$ooZJU~? z5webLDIFXRH|sG>%4`>aHxgrW|4Jyj>JTy{WJHP?VL~fvi&Q9ky@Z>TZXd|zd)TcY z)`*NHu7aRIgP!Xkjpqh$;gF$rEgE)13LBY1?&e10&OnoLkc8YQ`JqR)722W<824Ny zxoL&pt@-5;wkD84%LatJyJR-T2seBqvm?|EVsYMdmz`bFPC%r9w!bqSU1QU)?~9xc z_MB)2-gk~g??VYV{{TO4*)e3)d)DF6A{q%bi^V7r1_DsF?@&kxXCoG#v>K!hKR^`E zyG~Y1kM*s?(arLE%lE1ee^Q;lU*8uHAcDxEcI#f;eH-{#TaMB}0LV-aX1#1_hBSG) zwAJ{nqb#2+9xXolhmWhrB5y9_!x}Tk)eqG

10YO*?3(h0U`(F@|3{ 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 uo9i&<@BmeS`|AX(_))e&s&_FN0rFn#76g5nU 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 O0000 - +

@@ -39,8 +39,11 @@
recent
+
+
+
UserGuide
+
-
@@ -63,16 +66,21 @@
+
+
-
recent open
+
+
recent open
+
Clear all
+
- +
-->
+ +
+
+
+
clear
+
+
+
+
open in explorer
+
+
+ + + + +
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
+
+
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
+
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
+
diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index e1bcdd8e8b..a37539bef0 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -14,6 +14,68 @@ function OnInit() SendMsg_GetRecentFile(); } +//------最佳打开文件的右键菜单功能---------- +var RightBtnFilePath=''; + +var MousePosX=0; +var MousePosY=0; + +function Set_RecentFile_MouseRightBtn_Event() +{ + $(".FileItem").mousedown( + function(e) + { + //FilePath + RightBtnFilePath=$(this).attr('fpath'); + + if(e.which == 3){ + //鼠标点击了右键+$(this).attr('ff') ); + ShowRecnetFileContextMenu(); + }else if(e.which == 2){ + //鼠标点击了中键 + }else if(e.which == 1){ + //鼠标点击了左键 + OnOpenRecentFile( encodeURI(RightBtnFilePath) ); + } + }); + + $(document).bind("contextmenu",function(e){ + //在这里书写代码,构建个性右键化菜单 + return false; + }); + + $(document).mousemove( function(e){ + MousePosX=e.pageX; + MousePosY=e.pageY; + + let ContextMenuWidth=$('#recnet_context_menu').width(); + let ContextMenuHeight=$('#recnet_context_menu').height(); + + let DocumentWidth=$(document).width(); + let DocumentHeight=$(document).height(); + + //$("#DebugText").text( ContextMenuWidth+' - '+ContextMenuHeight+'
'+ + // DocumentWidth+' - '+DocumentHeight+'
'+ + // MousePosX+' - '+MousePosY +'
' ); + } ); + + + $(document).click( function(){ + var e = e || window.event; +        var elem = e.target || e.srcElement; +        while (elem) { + if (elem.id && elem.id == 'recnet_context_menu') { +                    return; + } + elem = elem.parentNode; + } + + $("#recnet_context_menu").hide(); + } ); + + +} + function HandleStudio( pVal ) { @@ -123,7 +185,7 @@ function ShowRecentFileList( pList ) //let index=sPath.lastIndexOf('\\')>0?sPath.lastIndexOf('\\'):sPath.lastIndexOf('\/'); //let sShortName=sPath.substring(index+1,sPath.length); - let TmpHtml='
'+ + let TmpHtml='
'+ ''+ '
No Image
'+ ''+sName+''+ @@ -134,10 +196,33 @@ function ShowRecentFileList( pList ) } $("#FileList").html(strHtml); + + Set_RecentFile_MouseRightBtn_Event(); + UpdateRecentClearBtnDisplay(); } +function ShowRecnetFileContextMenu() +{ + $('#recnet_context_menu').show(); + + let ContextMenuWidth=$('#recnet_context_menu').width(); + let ContextMenuHeight=$('#recnet_context_menu').height(); + + let DocumentWidth=$(document).width(); + let DocumentHeight=$(document).height(); -/*-------MX Message------*/ + let RealX=MousePosX; + let RealY=MousePosY; + + if( MousePosX + ContextMenuWidth >DocumentWidth ) + RealX=MousePosX-ContextMenuWidth; + if( MousePosY+ContextMenuHeight>DocumentHeight ) + RealY=MousePosY-ContextMenuHeight; + + $("#recnet_context_menu").offset({top: RealY, left:RealX}); +} + +/*-------RecentFile MX Message------*/ function SendMsg_GetLoginInfo() { var tSend={}; @@ -197,6 +282,69 @@ function OnOpenRecentFile( strPath ) SendWXMessage( JSON.stringify(tSend) ); } +function OnDeleteRecentFile( ) +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="homepage_delete_recentfile"; + tSend['data']={}; + tSend['data']['path']=decodeURI(RightBtnFilePath); + + SendWXMessage( JSON.stringify(tSend) ); + + $("#recnet_context_menu").hide(); + + let AllFile=$(".FileItem"); + let nFile=AllFile.length; + for(let p=0;p0 ) + $("#RecentClearAllBtn").show(); + else + $("#RecentClearAllBtn").hide(); +} + + + + +function OnExploreRecentFile( ) +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="homepage_explore_recentfile"; + tSend['data']={}; + tSend['data']['path']=decodeURI(RightBtnFilePath); + + SendWXMessage( JSON.stringify(tSend) ); + + $("#recnet_context_menu").hide(); +} + function OnLogOut() { var tSend={}; @@ -227,4 +375,20 @@ function OutputKey(keyCode, isCtrlDown, isShiftDown, isCmdDown) { SendWXMessage(JSON.stringify(tSend)); } + +//-------------User Manual------------ + +function OpenWikiUrl( strUrl ) +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="userguide_wiki_open"; + tSend['data']={}; + tSend['data']['url']=strUrl; + + SendWXMessage( JSON.stringify(tSend) ); +} + + +//---------------Global----------------- window.postMessage = HandleStudio; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 041ce1fba2..bcd8af2254 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3002,6 +3002,31 @@ std::string GUI_App::handle_web_request(std::string cmd) this->request_open_project(path.value()); } } + } + else if (command_str.compare("homepage_delete_recentfile") == 0) { + if (root.get_child_optional("data") != boost::none) { + pt::ptree data_node = root.get_child("data"); + boost::optional path = data_node.get_optional("path"); + if (path.has_value()) { + this->request_remove_project(path.value()); + } + } + } + else if (command_str.compare("homepage_delete_all_recentfile") == 0) { + this->request_remove_project(""); + } + else if (command_str.compare("homepage_explore_recentfile") == 0) { + if (root.get_child_optional("data") != boost::none) { + pt::ptree data_node = root.get_child("data"); + boost::optional path = data_node.get_optional("path"); + if (path.has_value()) + { + boost::filesystem::path NowFile(path.value()); + + std::string FolderPath = NowFile.parent_path().make_preferred().string(); + desktop_open_any_folder(FolderPath); + } + } } else if (command_str.compare("homepage_open_hotspot") == 0) { if (root.get_child_optional("data") != boost::none) { @@ -3036,7 +3061,17 @@ std::string GUI_App::handle_web_request(std::string cmd) e.SetEventObject(mainframe); wxPostEvent(mainframe, e); } + } + else if (command_str.compare("userguide_wiki_open") == 0) { + if (root.get_child_optional("data") != boost::none) { + pt::ptree data_node = root.get_child("data"); + boost::optional path = data_node.get_optional("url"); + if (path.has_value()) { + wxLaunchDefaultBrowser(path.value()); + } + } } + } } catch (...) { @@ -3111,6 +3146,11 @@ void GUI_App::request_open_project(std::string project_id) CallAfter([this, project_id] { mainframe->open_recent_project(-1, wxString::FromUTF8(project_id)); }); } +void GUI_App::request_remove_project(std::string project_id) +{ + mainframe->remove_recent_project(-1, wxString::FromUTF8(project_id)); +} + void GUI_App::handle_http_error(unsigned int status, std::string body) { // tips body size must less than 1024 diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index aa2f31f671..17329a9eb1 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -372,6 +372,7 @@ public: void download_project(std::string project_id); void request_project_download(std::string project_id); void request_open_project(std::string project_id); + void request_remove_project(std::string project_id); void handle_http_error(unsigned int status, std::string body); void on_http_error(wxCommandEvent &evt); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index acbd9d1973..dfb4986ec3 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2611,6 +2611,28 @@ void MainFrame::open_recent_project(size_t file_id, wxString const & filename) } } +void MainFrame::remove_recent_project(size_t file_id, wxString const &filename) +{ + if (file_id == size_t(-1)) { + if (filename.IsEmpty()) + while (m_recent_projects.GetCount() > 0) + m_recent_projects.RemoveFileFromHistory(0); + else + file_id = m_recent_projects.FindFileInHistory(filename); + } + if (file_id != size_t(-1)) + m_recent_projects.RemoveFileFromHistory(file_id); + std::vector recent_projects; + size_t count = m_recent_projects.GetCount(); + for (size_t i = 0; i < count; ++i) + { + recent_projects.push_back(into_u8(m_recent_projects.GetHistoryFile(i))); + } + wxGetApp().app_config->set_recent_projects(recent_projects); + wxGetApp().app_config->save(); + m_webview->SendRecentList(""); +} + void MainFrame::load_url(wxString url) { BOOST_LOG_TRIVIAL(trace) << "load_url:" << url; diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 2eca15278e..0342c71d5f 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -296,6 +296,7 @@ public: void add_to_recent_projects(const wxString& filename); void get_recent_projects(boost::property_tree::wptree & tree); void open_recent_project(size_t file_id, wxString const & filename); + void remove_recent_project(size_t file_id, wxString const &filename); void technology_changed(); From 115995e46d1655abebfb88f72e62ed7dd1b20810 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 18 Aug 2022 11:29:08 +0800 Subject: [PATCH 072/137] ENH: export current preset configs Change-Id: I75642f9786ed14e4e6e2048f4a70e7bb49bff03f (cherry picked from commit 31886319c0a3f1adea301e01a9f49834c1c92670) --- resources/images/menu_export_config.svg | 3 + src/libslic3r/Preset.cpp | 4 + src/libslic3r/PresetBundle.cpp | 126 ++++++++++++++++++++++++ src/libslic3r/PresetBundle.hpp | 3 + src/slic3r/GUI/MainFrame.cpp | 113 +++++++++++++++------ 5 files changed, 217 insertions(+), 32 deletions(-) create mode 100644 resources/images/menu_export_config.svg diff --git a/resources/images/menu_export_config.svg b/resources/images/menu_export_config.svg new file mode 100644 index 0000000000..1f09490f1a --- /dev/null +++ b/resources/images/menu_export_config.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index c71f4b7710..14416cdef2 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1824,9 +1824,12 @@ std::pair PresetCollection::load_external_preset( Preset& PresetCollection::load_preset(const std::string &path, const std::string &name, DynamicPrintConfig &&config, bool select) { + lock(); auto it = this->find_preset_internal(name); if (it == m_presets.end() || it->name != name) { // The preset was not found. Create a new preset. + if (m_presets.begin() + m_idx_selected >= it) + ++m_idx_selected; it = m_presets.emplace(it, Preset(m_type, name, false)); } Preset &preset = *it; @@ -1836,6 +1839,7 @@ Preset& PresetCollection::load_preset(const std::string &path, const std::string preset.is_dirty = false; if (select) this->select_preset_by_name(name, true); + unlock(); //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", preset type %1%, name %2%, path %3%, is_system %4%, is_default %5% is_visible %6%")%Preset::get_type_string(m_type) %preset.name %preset.file %preset.is_system %preset.is_default %preset.is_visible; return preset; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 145535eb0c..716a8b0d4d 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -592,6 +592,102 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig &config, st return substitutions; } +PresetsConfigSubstitutions PresetBundle::import_presets(std::vector & files, + std::function override_confirm, + ForwardCompatibilitySubstitutionRule rule) +{ + PresetsConfigSubstitutions substitutions; + int overwrite = 0; + std::vector result; + for (auto &file : files) { + if (Slic3r::is_json_file(file)) { + try { + DynamicPrintConfig config; + // BBS: change to json format + // ConfigSubstitutions config_substitutions = config.load_from_ini(preset.file, substitution_rule); + std::map key_values; + std::string reason; + ConfigSubstitutions config_substitutions = config.load_from_json(file, rule, key_values, reason); + std::string name = key_values[BBL_JSON_KEY_NAME]; + std::string version_str = key_values[BBL_JSON_KEY_VERSION]; + boost::optional version = Semver::parse(version_str); + if (!version) continue; + Semver app_version = *(Semver::parse(SLIC3R_VERSION)); + if (version->maj() != app_version.maj()) { + BOOST_LOG_TRIVIAL(warning) << "Preset incompatibla, not loading: " << name; + continue; + } + + PresetCollection * collection = nullptr; + if (config.has("printer_settings_id")) + collection = &printers; + else if (config.has("print_settings_id")) + collection = &prints; + else if (config.has("filament_settings_id")) + collection = &filaments; + if (collection == nullptr) { + BOOST_LOG_TRIVIAL(warning) << "Preset type is unknown, not loading: " << name; + continue; + } + if (auto p = collection->find_preset(name, false)) { + if (p->is_default || p->is_system) { + BOOST_LOG_TRIVIAL(warning) << "Preset already present and is system preset, not loading: " << name; + continue; + } + overwrite = override_confirm(name); + if (overwrite == 0 || overwrite == 2) { + BOOST_LOG_TRIVIAL(warning) << "Preset already present, not loading: " << name; + continue; + } + } + + DynamicPrintConfig new_config; + Preset * inherit_preset = nullptr; + ConfigOption *inherits_config = config.option(BBL_JSON_KEY_INHERITS); + if (inherits_config) { + ConfigOptionString *option_str = dynamic_cast(inherits_config); + std::string inherits_value = option_str->value; + inherit_preset = collection->find_preset(inherits_value, false, true); + } + if (inherit_preset) { + new_config = inherit_preset->config; + } else { + // Find a default preset for the config. The PrintPresetCollection provides different default preset based on the "printer_technology" field. + // new_config = default_preset.config; + // we should skip this preset here + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", can not find inherit preset for user preset %1%, just skip") % name; + continue; + } + new_config.apply(std::move(config)); + + Preset &preset = collection->load_preset(collection->path_from_name(name), name, std::move(new_config), false); + preset.is_external = true; + preset.version = *version; + if (inherit_preset) + preset.base_id = inherit_preset->setting_id; + Preset::normalize(preset.config); + // Report configuration fields, which are misplaced into a wrong group. + const Preset &default_preset = collection->default_preset_for(new_config); + std::string incorrect_keys = Preset::remove_invalid_keys(preset.config, default_preset.config); + if (!incorrect_keys.empty()) + BOOST_LOG_TRIVIAL(error) << "Error in a preset file: The preset \"" << preset.file << "\" contains the following incorrect keys: " << incorrect_keys + << ", which were removed"; + if (!config_substitutions.empty()) + substitutions.push_back({name, collection->type(), PresetConfigSubstitutions::Source::UserFile, file, std::move(config_substitutions)}); + + preset.save(inherit_preset ? &inherit_preset->config : nullptr); + result.push_back(file); + } catch (const std::ifstream::failure &err) { + BOOST_LOG_TRIVIAL(error) << boost::format("The config cannot be loaded: %1%. Reason: %2%") % file % err.what(); + } catch (const std::runtime_error &err) { + BOOST_LOG_TRIVIAL(error) << boost::format("Failed importing config file: %1%. Reason: %2%") % file % err.what(); + } + } + } + files = result; + return substitutions; +} + //BBS save user preset to user_id preset folder void PresetBundle::save_user_presets(AppConfig& config, std::vector& need_to_delete_list) { @@ -3213,6 +3309,36 @@ void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_pri } }*/ +std::vector PresetBundle::export_current_configs(const std::string & path, + std::function override_confirm, + bool include_modify, + bool export_system_settings) +{ + const Preset &print_preset = include_modify ? prints.get_edited_preset() : prints.get_selected_preset(); + const Preset &printer_preset = include_modify ? printers.get_edited_preset() : printers.get_selected_preset(); + std::set presets { &print_preset, &printer_preset }; + for (auto &f : filament_presets) { + auto filament_preset = filaments.find_preset(f, include_modify); + if (filament_preset) presets.insert(filament_preset); + } + + int overwrite = 0; + std::vector result; + for (auto preset : presets) { + if ((preset->is_system && !export_system_settings) || preset->is_default) + continue; + std::string file = path + "/" + preset->name + ".json"; + if (boost::filesystem::exists(file) && overwrite < 2) { + overwrite = override_confirm(preset->name); + if (overwrite == 0 || overwrite == 2) + continue; + } + preset->config.save_to_json(file, preset->name, "", preset->version.to_string()); + result.push_back(file); + } + return result; +} + // Set the filament preset name. As the name could come from the UI selection box, // an optional "(modified)" suffix will be removed from the filament name. void PresetBundle::set_filament_preset(size_t idx, const std::string &name) diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index cb279f0044..c578bbfebf 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -46,6 +46,7 @@ public: // BBS Load user presets PresetsConfigSubstitutions load_user_presets(AppConfig &config, std::map>& my_presets, ForwardCompatibilitySubstitutionRule rule); + PresetsConfigSubstitutions import_presets(std::vector &files, std::function override_confirm, ForwardCompatibilitySubstitutionRule rule); void save_user_presets(AppConfig& config, std::vector& need_to_delete_list); void remove_users_preset(AppConfig &config); void update_user_presets_directory(const std::string preset_folder); @@ -164,6 +165,8 @@ public: //void export_current_configbundle(const std::string &path); //BBS: add a function to export system presets for cloud-slicer //void export_system_configs(const std::string &path); + std::vector export_current_configs(const std::string &path, std::function override_confirm, + bool include_modify, bool export_system_settings = false); // Enable / disable the "- default -" preset. void set_default_suppressed(bool default_suppressed); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index dfb4986ec3..8cd7452011 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1737,18 +1737,24 @@ void MainFrame::init_menubar_as_editor() fileMenu->AppendSeparator(); - //BBS + // BBS + wxMenu *import_menu = new wxMenu(); #ifdef __WINDOWS__ - append_menu_item(fileMenu, wxID_ANY, _L("Import 3MF/STL/STEP/OBJ/AMF") + dots + "\tCtrl+I", _L("Load a model"), + append_menu_item(import_menu, wxID_ANY, _L("Import 3MF/STL/STEP/OBJ/AMF") + dots + "\tCtrl+I", _L("Load a model"), [this](wxCommandEvent&) { if (m_plater) { m_plater->add_model(); } }, "menu_import", nullptr, [this](){return can_add_models(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Import 3MF/STL/STEP/OBJ/AMF") + dots + "\tCtrl+I", _L("Load a model"), + append_menu_item(import_menu, wxID_ANY, _L("Import 3MF/STL/STEP/OBJ/AMF") + dots + "\tCtrl+I", _L("Load a model"), [this](wxCommandEvent&) { if (m_plater) { m_plater->add_model(); } }, "", nullptr, [this](){return can_add_models(); }, this); #endif + append_menu_item(import_menu, wxID_ANY, _L("Import Configs") + dots /*+ "\tCtrl+I"*/, _L("Load configs"), + [this](wxCommandEvent&) { load_config_file(); }, "menu_import", nullptr, + [this](){return true; }, this); + + append_submenu(fileMenu, import_menu, wxID_ANY, _L("Import"), ""); wxMenu* export_menu = new wxMenu(); @@ -1763,6 +1769,11 @@ void MainFrame::init_menubar_as_editor() append_menu_item(export_menu, wxID_ANY, _L("Export G-code") + dots/* + "\tCtrl+G"*/, _L("Export current plate as G-code"), [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(false); }, "menu_export_gcode", nullptr, [this]() {return can_export_gcode(); }, this); + append_menu_item( + export_menu, wxID_ANY, _L("Export &Configs") + dots /* + "\tCtrl+E"*/, _L("Export current configuration to files"), + [this](wxCommandEvent &) { export_config(); }, + "menu_export_config", nullptr, + []() { return true; }, this); append_submenu(fileMenu, export_menu, wxID_ANY, _L("Export"), ""); @@ -2213,28 +2224,48 @@ void MainFrame::reslice_now() m_plater->reslice(); } +struct ConfigsOverwriteConfirmDialog : MessageDialog +{ + ConfigsOverwriteConfirmDialog(wxWindow *parent, wxString name, bool exported) + : MessageDialog(parent, + wxString::Format(exported ? _("A file exists with the same name: %s, do you wan't to override it.") : + _("A config exists with the same name: %s, do you wan't to override it."), + name), + _L(exported ? "Overwrite file" : "Overwrite config"), + wxYES_NO | wxNO_DEFAULT) + { + add_button(wxID_YESTOALL, false, _L("Yes to All")); + add_button(wxID_NOTOALL, false, _L("No to All")); + } +}; + void MainFrame::export_config() { // Generate a cummulative configuration for the selected print, filaments and printer. - auto config = wxGetApp().preset_bundle->full_config(); - // Validate the cummulative configuration. - auto valid = config.validate(); - if (! valid.empty()) { - show_error(this, valid); - return; - } - // Ask user for the file name for the config file. - wxFileDialog dlg(this, _L("Save configuration as:"), - !m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir(), - !m_last_config.IsEmpty() ? get_base_name(m_last_config) : "config.ini", - file_wildcards(FT_INI), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); - wxString file; + wxDirDialog dlg(this, _L("Choose a directory"), + from_u8(!m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir()), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); + wxString path; if (dlg.ShowModal() == wxID_OK) - file = dlg.GetPath(); - if (!file.IsEmpty()) { - wxGetApp().app_config->update_config_dir(get_dir_name(file)); - m_last_config = file; - config.save(file.ToUTF8().data()); + path = dlg.GetPath(); + if (!path.IsEmpty()) { + // Export the config bundle. + wxGetApp().app_config->update_config_dir(into_u8(path)); + try { + auto files = wxGetApp().preset_bundle->export_current_configs(into_u8(path), [this](std::string const & name) { + ConfigsOverwriteConfirmDialog dlg(this, from_u8(name), true); + int res = dlg.ShowModal(); + int ids[]{wxID_NO, wxID_YES, wxID_NOTOALL, wxID_YESTOALL}; + return std::find(ids, ids + 4, res) - ids; + }, false); + if (!files.empty()) + m_last_config = from_u8(files.back()); + MessageDialog dlg(this, wxString::Format(_L_PLURAL("There is %d config exported. (Only non-system configs)", + "There are %d configs exported. (Only non-system configs)", files.size()), files.size()), + _L("Export result"), wxOK); + dlg.ShowModal(); + } catch (const std::exception &ex) { + show_error(this, ex.what()); + } } } @@ -2244,16 +2275,34 @@ void MainFrame::load_config_file() //BBS do not load config file // if (!wxGetApp().check_and_save_current_preset_changes(_L("Loading profile file"), "", false)) // return; - // wxFileDialog dlg(this, _L("Select profile to load:"), - // !m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir(), - // "config.json", "INI files (*.ini, *.gcode)|*.json;;*.gcode;*.g", wxFD_OPEN | wxFD_FILE_MUST_EXIST); - // wxString file; - // if (dlg.ShowModal() == wxID_OK) - // file = dlg.GetPath(); - // if (! file.IsEmpty() && this->load_config_file(file.ToUTF8().data())) { - // wxGetApp().app_config->update_config_dir(get_dir_name(file)); - // m_last_config = file; - // } + wxFileDialog dlg(this, _L("Select profile to load:"), + !m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir(), + "config.json", "Config files (*.json)|*.json", wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); + wxArrayString files; + if (dlg.ShowModal() != wxID_OK) + return; + dlg.GetPaths(files); + std::vector cfiles; + for (auto file : files) { + cfiles.push_back(into_u8(file)); + m_last_config = file; + } + bool update = false; + wxGetApp().preset_bundle->import_presets(cfiles, [this](std::string const & name) { + ConfigsOverwriteConfirmDialog dlg(this, from_u8(name), false); + int res = dlg.ShowModal(); + int ids[]{wxID_NO, wxID_YES, wxID_NOTOALL, wxID_YESTOALL}; + return std::find(ids, ids + 4, res) - ids; + }, + ForwardCompatibilitySubstitutionRule::Enable); + if (!cfiles.empty()) { + wxGetApp().app_config->update_config_dir(get_dir_name(cfiles.back())); + wxGetApp().load_current_presets(); + } + MessageDialog dlg2(this, wxString::Format(_L_PLURAL("There is %d config imported. (Only non-system and compatible configs)", + "There are %d configs imported. (Only non-system and compatible configs)", cfiles.size()), cfiles.size()), + _L("Import result"), wxOK); + dlg2.ShowModal(); } // Load a config file containing a Print, Filament & Printer preset from command line. @@ -2737,7 +2786,7 @@ std::string MainFrame::get_base_name(const wxString &full_name, const char *exte std::string MainFrame::get_dir_name(const wxString &full_name) const { - return boost::filesystem::path(full_name.wx_str()).parent_path().string(); + return boost::filesystem::path(into_u8(full_name)).parent_path().string(); } From 966242b8dd12bef14daddac3b62ecfcfb876ffb9 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Fri, 26 Aug 2022 18:08:54 +0800 Subject: [PATCH 073/137] FIX:Coloring interface optimization Change-Id: I43f7f6e119374a5b2ec6a23ae7e0a6b11942b08f --- src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index af6fbaeb45..9fda59a991 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -391,7 +391,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott std::string item_text = std::to_string(extruder_idx + 1); const ImVec2 label_size = ImGui::CalcTextSize(item_text.c_str(), NULL, true); - const ImVec2 button_size(max_label_size.x + m_imgui->scaled(0.6f),max_label_size.y + m_imgui->scaled(0.55f)); + const ImVec2 button_size(max_label_size.x + m_imgui->scaled(0.5f),0.f); float button_offset = start_pos_x; if (extruder_idx % max_filament_items_per_line != 0) { From ed1870b3a56146419b74d611f9e9f056c4759634 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 26 Aug 2022 09:37:46 +0800 Subject: [PATCH 074/137] FIX: wxTE_PROCESS_ENTER flag for wxTextCtrl Change-Id: I23b43997f080ed173676c2582148b8db6e83b701 --- src/slic3r/GUI/Widgets/TextInput.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index abed10c94e..823dd5512d 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -55,7 +55,7 @@ void TextInput::Create(wxWindow * parent, style &= ~wxRIGHT; state_handler.attach({&label_color, & text_color}); state_handler.update_binds(); - text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {4, 4}, wxDefaultSize, style | wxBORDER_NONE); + text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {4, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER); text_ctrl->SetFont(Label::Body_14); text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states())); From 1337498efa570851e13197522b93f5dff63186a3 Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Mon, 29 Aug 2022 15:31:54 +0800 Subject: [PATCH 075/137] FIX:fix the device interface button adaptation problem Change-Id: Ide49dce78dd83cdb87e13dc93fb128e554d36871 --- src/slic3r/CMakeLists.txt | 4 ++-- src/slic3r/GUI/StatusPanel.cpp | 6 +++--- src/slic3r/GUI/StatusPanel.hpp | 4 ++-- .../{wxStaticText2.cpp => ErrorMsgStaticText.cpp} | 10 +++++----- .../{wxStaticText2.hpp => ErrorMsgStaticText.hpp} | 12 ++++++------ 5 files changed, 18 insertions(+), 18 deletions(-) rename src/slic3r/GUI/Widgets/{wxStaticText2.cpp => ErrorMsgStaticText.cpp} (83%) rename src/slic3r/GUI/Widgets/{wxStaticText2.hpp => ErrorMsgStaticText.hpp} (51%) diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index e310808ff8..2b6a3bb7b7 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -68,8 +68,8 @@ set(SLIC3R_GUI_SOURCES GUI/Widgets/SideTools.hpp GUI/Widgets/WebView.cpp GUI/Widgets/WebView.hpp - GUI/Widgets/wxStaticText2.cpp - GUI/Widgets/wxStaticText2.hpp + GUI/Widgets/ErrorMsgStaticText.cpp + GUI/Widgets/ErrorMsgStaticText.hpp GUI/AboutDialog.cpp GUI/AboutDialog.hpp GUI/NetworkTestDialog.cpp diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index a7f4dd82bb..4f6db5f70e 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -517,7 +517,7 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) wxBoxSizer *static_text_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *text_sizer = new wxBoxSizer(wxHORIZONTAL); - m_error_text = new wxStaticText2(m_panel_error_txt); + m_error_text = new ErrorMsgStaticText(m_panel_error_txt); m_error_text->SetForegroundColour(wxColour(255, 0, 0)); text_sizer->Add(m_error_text, 1, wxEXPAND|wxLEFT, FromDIP(17)); @@ -535,9 +535,9 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent) m_button_clean->SetFont(Label::Body_10); m_button_clean->SetMinSize(TASK_BUTTON_SIZE2); - static_text_sizer->Add(text_sizer, 1, wxEXPAND|wxTOP, FromDIP(7)); + static_text_sizer->Add(text_sizer, 1, wxEXPAND, 0); static_text_sizer->Add( FromDIP(10), 0, 0, 0, 0 ); - static_text_sizer->Add(m_button_clean, 0, wxALIGN_CENTRE_VERTICAL|wxRIGHT,FromDIP(5)); + static_text_sizer->Add(m_button_clean, 0, wxALIGN_CENTRE_VERTICAL|wxRIGHT, FromDIP(5)); m_panel_error_txt->SetSizer(static_text_sizer); m_panel_error_txt->Hide(); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 4d95d1c9a4..23f53915ef 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -28,7 +28,7 @@ #include "Widgets/ImageSwitchButton.hpp" #include "Widgets/AMSControl.hpp" #include "HMS.hpp" -#include "Widgets/wxStaticText2.hpp" +#include "Widgets/ErrorMsgStaticText.hpp" class StepIndicator; #define COMMAND_TIMEOUT_U0 15 @@ -177,7 +177,7 @@ protected: wxBoxSizer * m_tasklist_caption_sizer; wxPanel* m_panel_error_txt; wxPanel* m_staticline; - wxStaticText2 * m_error_text; + ErrorMsgStaticText * m_error_text; wxStaticText* m_staticText_calibration_caption; wxStaticText* m_staticText_calibration_caption_top; wxStaticText* m_calibration_text; diff --git a/src/slic3r/GUI/Widgets/wxStaticText2.cpp b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.cpp similarity index 83% rename from src/slic3r/GUI/Widgets/wxStaticText2.cpp rename to src/slic3r/GUI/Widgets/ErrorMsgStaticText.cpp index 79bce893c5..cdcbf489c1 100644 --- a/src/slic3r/GUI/Widgets/wxStaticText2.cpp +++ b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.cpp @@ -1,17 +1,17 @@ -#include "wxStaticText2.hpp" +#include "ErrorMsgStaticText.hpp" -wxStaticText2::wxStaticText2() {} +ErrorMsgStaticText::ErrorMsgStaticText() {} -wxStaticText2::wxStaticText2(wxWindow * parent, +ErrorMsgStaticText::ErrorMsgStaticText(wxWindow * parent, wxWindowID id, const wxPoint & pos, const wxSize & size) { Create(parent, id, pos, size); - Bind(wxEVT_PAINT, &wxStaticText2::paintEvent, this); + Bind(wxEVT_PAINT, &ErrorMsgStaticText::paintEvent, this); } -void wxStaticText2::paintEvent(wxPaintEvent &evt) +void ErrorMsgStaticText::paintEvent(wxPaintEvent &evt) { auto size = GetSize(); wxPaintDC dc(this); diff --git a/src/slic3r/GUI/Widgets/wxStaticText2.hpp b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp similarity index 51% rename from src/slic3r/GUI/Widgets/wxStaticText2.hpp rename to src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp index ce5220377d..6a455b208b 100644 --- a/src/slic3r/GUI/Widgets/wxStaticText2.hpp +++ b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp @@ -1,18 +1,18 @@ -#ifndef _WX_STATTEXT2_H_ -#define _WX_STATTEXT2_H_ +#ifndef _WX_ERRORMSGSTATTEXT_H_ +#define _WX_ERRORMSGSTATTEXT_H_ #include "wx/stattext.h" -class WXDLLIMPEXP_CORE wxStaticText2 : public wxPanel +class WXDLLIMPEXP_CORE ErrorMsgStaticText : public wxPanel { public: wxString m_msg; - wxStaticText2(); - wxStaticText2(wxWindow *parent, + ErrorMsgStaticText(); + ErrorMsgStaticText(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxSize(200,200)); + const wxSize& size = wxSize(0,0)); void paintEvent(wxPaintEvent &evt); From e016f522fd9557005b555947432065873aa9d729 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 29 Aug 2022 09:48:24 +0800 Subject: [PATCH 076/137] FIX: clear ams filament list on user logout Change-Id: I27417caa3dbcf7bb46bcb1b0182033ffb3b8825f --- src/slic3r/GUI/GUI_App.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index bcd8af2254..738e6c76e3 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2906,6 +2906,7 @@ void GUI_App::request_user_logout() m_agent->set_user_selected_machine(""); /* delete old user settings */ m_device_manager->clean_user_info(); + GUI::wxGetApp().sidebar().load_ams_list({}); GUI::wxGetApp().remove_user_presets(); GUI::wxGetApp().stop_sync_user_preset(); } From d9ad79e922e788e2112572c18eeda41bf4f136ea Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Mon, 29 Aug 2022 17:50:58 +0800 Subject: [PATCH 077/137] ENH: add back random seam As title. Random is useless in some cases. Signed-off-by: salt.wei Change-Id: I169edb005574c43fae5aafbdbe4b6e901b8d0c74 --- src/libslic3r/PrintConfig.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e2c6e46773..f72a71b703 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1897,9 +1897,11 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("nearest"); def->enum_values.push_back("aligned"); def->enum_values.push_back("back"); + def->enum_values.push_back("random"); def->enum_labels.push_back(L("Nearest")); def->enum_labels.push_back(L("Aligned")); def->enum_labels.push_back(L("Back")); + def->enum_labels.push_back(L("Random")); def->mode = comSimple; def->set_default_value(new ConfigOptionEnum(spAligned)); From 3c8d9be77e38abd0335a5cfca228f73b757c9eb4 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 29 Aug 2022 17:14:08 +0800 Subject: [PATCH 078/137] FIX: fix crash when exiting studio Change-Id: I91f6cde208e044aae20b40e4b79159f6cd46356c Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 4 ++++ src/slic3r/GUI/SelectMachine.cpp | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index c3c226b76a..27f5c9e5cf 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2981,11 +2981,15 @@ std::map DeviceManager::get_my_machine_list() std::map result; for (auto it = userMachineList.begin(); it != userMachineList.end(); it++) { + if (!it->second) + continue; if (!it->second->is_lan_mode_printer()) result.insert(std::make_pair(it->first, it->second)); } for (auto it = localMachineList.begin(); it != localMachineList.end(); it++) { + if (!it->second) + continue; if (it->second->has_access_right() && it->second->is_avaliable() && it->second->is_lan_mode_printer()) { // remove redundant in userMachineList if (result.find(it->first) == result.end()) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 62481fb110..cddc637a2a 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -279,7 +279,9 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } else { - wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); + if (m_info) { + wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); + } //wxGetApp().mainframe->SetFocus(); wxCommandEvent event(EVT_DISSMISS_MACHINE_LIST); event.SetEventObject(this->GetParent()); @@ -287,7 +289,7 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) } return; } - if (m_info->is_lan_mode_printer()) { + if (m_info && m_info->is_lan_mode_printer()) { if (m_info->has_access_right() && m_info->is_avaliable()) { wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); } else { @@ -299,7 +301,7 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt) wxGetApp().mainframe->jump_to_monitor(m_info->dev_id); } } else { - if (m_info->is_lan_mode_printer()) { + if (m_info && m_info->is_lan_mode_printer()) { wxCommandEvent event(EVT_CONNECT_LAN_PRINT); event.SetEventObject(this); wxPostEvent(this, event); @@ -2233,7 +2235,8 @@ EditDevNameDialog::~EditDevNameDialog() {} void EditDevNameDialog::set_machine_obj(MachineObject *obj) { m_info = obj; - m_textCtr->GetTextCtrl()->SetValue(from_u8(m_info->dev_name)); + if (m_info) + m_textCtr->GetTextCtrl()->SetValue(from_u8(m_info->dev_name)); } void EditDevNameDialog::on_dpi_changed(const wxRect &suggested_rect) @@ -2291,7 +2294,8 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) if (dev) { auto utf8_str = new_dev_name.ToUTF8(); auto name = std::string(utf8_str.data(), utf8_str.length()); - dev->modify_device_name(m_info->dev_id, name); + if (m_info) + dev->modify_device_name(m_info->dev_id, name); } DPIDialog::EndModal(wxID_CLOSE); } From 2ecdf43ca1737bd9db5e1c3546c9c2e6c36ac7ed Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 26 Aug 2022 09:39:45 +0800 Subject: [PATCH 079/137] FIX: media play state conflict when switch device Change-Id: I95680159a50b2085cb6de5b7cd612d6b444a6446 --- src/slic3r/GUI/MediaPlayCtrl.cpp | 41 ++++++++++++++++------------- src/slic3r/GUI/PresetComboBoxes.cpp | 4 ++- src/slic3r/GUI/Widgets/Button.cpp | 7 ++++- src/slic3r/GUI/Widgets/Button.hpp | 9 +++++-- 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 2d7c2088ef..f254e17c2d 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -17,6 +17,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w m_media_ctrl->Bind(wxEVT_MEDIA_STATECHANGED, &MediaPlayCtrl::onStateChanged, this); m_button_play = new Button(this, "", "media_play", wxBORDER_NONE); + m_button_play->SetCanFocus(false); m_label_status = new Label(this); @@ -27,12 +28,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w Bind(wxEVT_RIGHT_UP, [this](auto & e) { wxClipboard & c = *wxTheClipboard; if (c.Open()) { c.SetData(new wxTextDataObject(m_url)); c.Close(); } }); wxBoxSizer * sizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(m_button_play, 0, wxEXPAND | wxALL, 0) -#if BBL_RELEASE_TO_PUBLIC - ->Show(false); -#else - ; -#endif + sizer->Add(m_button_play, 0, wxEXPAND | wxALL, 0); sizer->AddStretchSpacer(1); sizer->Add(m_label_status, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(25)); SetSizer(sizer); @@ -40,6 +36,10 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w m_thread = boost::thread([this] { media_proc(); }); + +#if BBL_RELEASE_TO_PUBLIC + m_next_retry = wxDateTime::Now(); +#endif } MediaPlayCtrl::~MediaPlayCtrl() @@ -64,16 +64,16 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj) m_failed_retry = 0; if (m_last_state != MEDIASTATE_IDLE) Stop(); -#if BBL_RELEASE_TO_PUBLIC - Play(); -#else - SetStatus(""); -#endif + if (m_next_retry.IsValid()) + Play(); + else + SetStatus(""); } void MediaPlayCtrl::Play() { if (m_machine.empty()) { + Stop(); SetStatus(_L("Initialize failed (No Device)!")); return; } @@ -121,21 +121,24 @@ void MediaPlayCtrl::Stop() boost::unique_lock lock(m_mutex); m_tasks.push_back(""); m_cond.notify_all(); + m_last_state = MEDIASTATE_IDLE; + SetStatus(_L("Stopped.")); } - m_last_state = MEDIASTATE_IDLE; - SetStatus(_L("Stopped.")); ++m_failed_retry; -#if BBL_RELEASE_TO_PUBLIC - m_next_retry = wxDateTime::Now() + wxTimeSpan::Seconds(5 * m_failed_retry); -#endif + if (m_next_retry.IsValid()) + m_next_retry = wxDateTime::Now() + wxTimeSpan::Seconds(5 * m_failed_retry); } void MediaPlayCtrl::TogglePlay() { - if (m_last_state != MEDIASTATE_IDLE) + if (m_last_state != MEDIASTATE_IDLE) { + m_next_retry = wxDateTime(); Stop(); - else + } else { + m_failed_retry = 0; + m_next_retry = wxDateTime::Now(); Play(); + } } void MediaPlayCtrl::SetStatus(wxString const& msg2) @@ -203,7 +206,6 @@ void MediaPlayCtrl::onStateChanged(wxMediaEvent& event) if (last_state == MEDIASTATE_IDLE && state == wxMEDIASTATE_STOPPED) { return; } - m_last_state = state; if ((last_state == wxMEDIASTATE_PAUSED || last_state == wxMEDIASTATE_PLAYING) && state == wxMEDIASTATE_STOPPED) { Stop(); @@ -214,6 +216,7 @@ void MediaPlayCtrl::onStateChanged(wxMediaEvent& event) BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::onStateChanged: size: " << size.x << "x" << size.y; m_failed_code = m_media_ctrl->GetLastError(); if (size.GetWidth() > 1000) { + m_last_state = state; SetStatus(_L("Playing...")); m_failed_retry = 0; boost::unique_lock lock(m_mutex); diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index debce40c28..6bfe8a4849 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -390,8 +390,10 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) std::string setting_id = f.opt_string("filament_settings_id", 0u); auto iter = std::find_if(filaments.begin(), filaments.end(), [&setting_id](auto &f) { return f.is_compatible && f.is_system && f.filament_id == setting_id; }); - if (iter == filaments.end()) + if (iter == filaments.end()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % setting_id; continue; + } const_cast(*iter).is_visible = true; auto color = f.opt_string("filament_colour", 0u); wxColour clr(color); diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 8773e0315c..6874644928 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -122,6 +122,8 @@ bool Button::Enable(bool enable) return result; } +void Button::SetCanFocus(bool canFocus) { this->canFocus = canFocus; } + void Button::Rescale() { if (this->active_icon.bmp().IsOk()) @@ -230,7 +232,8 @@ void Button::mouseDown(wxMouseEvent& event) { event.Skip(); pressedDown = true; - SetFocus(); + if (canFocus) + SetFocus(); CaptureMouse(); } @@ -286,3 +289,5 @@ WXLRESULT Button::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) } #endif + +bool Button::AcceptsFocus() const { return canFocus; } diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 3b3233e5a3..5ab6e4cd9a 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -15,7 +15,8 @@ class Button : public StaticBox StateColor text_color; bool pressedDown = false; - bool m_selected = true; + bool m_selected = true; + bool canFocus = true; static const int buttonWidth = 200; static const int buttonHeight = 50; @@ -43,7 +44,9 @@ public: void SetSelected(bool selected = true) { m_selected = selected; } - bool Enable(bool enable = true); + bool Enable(bool enable = true) override; + + void SetCanFocus(bool canFocus) override; void Rescale(); @@ -52,6 +55,8 @@ protected: WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) override; #endif + bool AcceptsFocus() const override; + private: void paintEvent(wxPaintEvent& evt); From 71d81ad78b4f6e8326286360789b8d99108f8bec Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 26 Aug 2022 18:12:41 +0800 Subject: [PATCH 080/137] FIX: save backup mesh with temp file safely Change-Id: I39ed281e271add443c41cb177d203f0b0decf2b6 --- src/libslic3r/Format/bbs_3mf.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 789895a707..697a07730f 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -3863,18 +3863,38 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto filename = boost::format("3D/Objects/%s_%d.model") % object.name % obj_id; std::string filepath = temp_path + "/" + filename.str(); - if (!open_zip_writer(&archive, filepath)) { + std::string filepath_tmp = filepath + ".tmp"; + boost::system::error_code ec; + boost::filesystem::remove(filepath_tmp, ec); + if (!open_zip_writer(&archive, filepath_tmp)) { add_error("Unable to open the file"); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":" << __LINE__ << boost::format(", Unable to open the file\n"); return false; } + struct close_lock + { + mz_zip_archive & archive; + std::string const * filename; + void close() { + close_zip_writer(&archive); + filename = nullptr; + } + ~close_lock() { + if (filename) { + close_zip_writer(&archive); + boost::filesystem::remove(*filename); + } + } + } lock{archive, &filepath_tmp}; + IdToObjectDataMap objects_data; objects_data.insert({obj_id, {&object, obj_id}}); _add_model_file_to_archive(filename.str(), archive, model, objects_data); mz_zip_writer_finalize_archive(&archive); - close_zip_writer(&archive); + lock.close(); + boost::filesystem::rename(filepath_tmp, filepath, ec); return true; } From c7b698f4f1c6d02bd6d0c22122c0730043f2e4b4 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 16 Aug 2022 20:32:47 +0800 Subject: [PATCH 081/137] ENH: modify default view to current plate view Change-Id: I32cecfe20e01011089928e24058c4ff89aca074a Signed-off-by: Stone Li --- src/slic3r/GUI/Camera.cpp | 3 +++ src/slic3r/GUI/GLCanvas3D.cpp | 10 ++++++++-- src/slic3r/GUI/MainFrame.cpp | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Camera.cpp b/src/slic3r/GUI/Camera.cpp index 3a56d52a8f..ca37795489 100644 --- a/src/slic3r/GUI/Camera.cpp +++ b/src/slic3r/GUI/Camera.cpp @@ -93,6 +93,9 @@ void Camera::select_view(const std::string& direction) look_at(m_target + m_distance * Vec3d::UnitY(), m_target, Vec3d::UnitZ()); else if (direction == "topfront") look_at(m_target - 0.707 * m_distance * Vec3d::UnitY() + 0.707 * m_distance * Vec3d::UnitZ(), m_target, Vec3d::UnitY() + Vec3d::UnitZ()); + else if (direction == "plate") { + look_at(m_target - 0.707 * m_distance * Vec3d::UnitY() + 0.707 * m_distance * Vec3d::UnitZ(), m_target, Vec3d::UnitY() + Vec3d::UnitZ()); + } } double Camera::get_fov() const diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e1f13aee50..6334d6edb1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2369,7 +2369,10 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) break; // BBS - case '0': { select_view("topfront"); break; } + case '0': { + select_view("plate"); + zoom_to_bed(); + break; } case '1': { select_view("top"); break; } case '2': { select_view("bottom"); break; } case '3': { select_view("front"); break; } @@ -2712,7 +2715,10 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) switch (keyCode) { case '0': case WXK_NUMPAD0: //0 on numpad - { select_view("topfront"); break; } + { select_view("plate"); + zoom_to_bed(); + break; + } case '1': case WXK_NUMPAD1: //1 on numpad { select_view("top"); break; } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8cd7452011..fb1173e18b 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1647,7 +1647,10 @@ static wxMenu* generate_help_menu() static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, std::function can_change_view) { // The camera control accelerators are captured by GLCanvas3D::on_char(). - append_menu_item(view_menu, wxID_ANY, _L("Default View") + "\tCtrl+0", _L("Default View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("topfront"); }, + append_menu_item(view_menu, wxID_ANY, _L("Default View") + "\tCtrl+0", _L("Default View"), [mainFrame](wxCommandEvent&) { + mainFrame->select_view("plate"); + mainFrame->plater()->get_current_canvas3D()->zoom_to_bed(); + }, "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); //view_menu->AppendSeparator(); //TRN To be shown in the main menu View->Top From 29267b58d33b15b3981a33597979ab5c7fd0ea64 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Fri, 26 Aug 2022 21:04:13 +0800 Subject: [PATCH 082/137] Fix the export_3mf failed issue caused by filename Change-Id: I54709b9f92af34c9459f2befb68759ee6d03d85b --- src/slic3r/GUI/Plater.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2e5253bec7..70bb83460f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8033,8 +8033,12 @@ void Plater::export_gcode_3mf() GUI::file_wildcards(FT_3MF, ext), wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); - if (dlg.ShowModal() == wxID_OK) + if (dlg.ShowModal() == wxID_OK) { output_path = into_path(dlg.GetPath()); + ext = output_path.extension().string(); + if (ext != ".3mf") + output_path = output_path.string() + ".3mf"; + } } if (!output_path.empty()) { From 0fa82b5e18b09a8323c220c7442f052f8c67e4e6 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 26 Aug 2022 17:13:14 +0800 Subject: [PATCH 083/137] ENH: expor core spec 3mf Change-Id: I97ccd87f29668833881b9327b251c2ca110ecd31 --- src/slic3r/GUI/MainFrame.cpp | 3 +++ src/slic3r/GUI/Plater.cpp | 8 ++++++++ src/slic3r/GUI/Plater.hpp | 1 + 3 files changed, 12 insertions(+) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index fb1173e18b..3cb41de8b6 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1765,6 +1765,9 @@ void MainFrame::init_menubar_as_editor() append_menu_item(export_menu, wxID_ANY, _L("Export all objects as STL") + dots, _L("Export all objects as STL"), [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, "menu_export_stl", nullptr, [this](){return can_export_model(); }, this); + append_menu_item(export_menu, wxID_ANY, _L("Export Generic 3MF") + dots/* + "\tCtrl+G"*/, _L("Export 3mf file without using some 3mf-extensions"), + [this](wxCommandEvent&) { if (m_plater) m_plater->export_core_3mf(); }, "menu_export_sliced_file", nullptr, + [this](){return can_export_model(); }, this); // BBS export .gcode.3mf append_menu_item(export_menu, wxID_ANY, _L("Export Sliced File") + dots/* + "\tCtrl+G"*/, _L("Export current Sliced file"), [this](wxCommandEvent&) { if (m_plater) wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_EXPORT_SLICED_FILE)); }, "menu_export_sliced_file", nullptr, diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 70bb83460f..64e21ea61f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8057,6 +8057,14 @@ void Plater::export_gcode_3mf() } } +void Plater::export_core_3mf() +{ + wxString path = p->get_export_file(FT_3MF); + if (path.empty()) { return; } + const std::string path_u8 = into_u8(path); + export_3mf(path_u8, SaveStrategy::Silence); +} + void Plater::export_stl(bool extended, bool selection_only) { if (p->model.objects.empty()) { return; } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 8becdd94e8..724520787c 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -297,6 +297,7 @@ public: void export_gcode(bool prefer_removable); void export_gcode_3mf(); + void export_core_3mf(); void export_stl(bool extended = false, bool selection_only = false); //BBS: remove amf //void export_amf(); From a5774c19028714c17b5608bbaeacc5a211a43169 Mon Sep 17 00:00:00 2001 From: tao wang Date: Mon, 29 Aug 2022 18:18:53 +0800 Subject: [PATCH 084/137] FIX:fixed send printjob page can not show full page size Change-Id: I1d9120c4eabf69e9510f9f64d378eab3adf6b7a9 --- src/slic3r/GUI/SelectMachine.cpp | 76 +++++++++++++++++++++++++------- src/slic3r/GUI/SelectMachine.hpp | 7 +++ 2 files changed, 67 insertions(+), 16 deletions(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index cddc637a2a..8b79f8f011 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -799,7 +799,13 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); - m_panel_image = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + m_scrollable_view = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize); + m_sizer_scrollable_view = new wxBoxSizer(wxVERTICAL); + + m_scrollable_region = new wxPanel(m_scrollable_view, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + m_sizer_scrollable_region = new wxBoxSizer(wxVERTICAL); + + m_panel_image = new wxPanel(m_scrollable_region, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); m_panel_image->SetBackgroundColour(m_colour_def_color); sizer_thumbnail = new wxBoxSizer(wxVERTICAL); @@ -815,16 +821,16 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) wxBoxSizer *m_sizer_basic_weight = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_basic_time = new wxBoxSizer(wxHORIZONTAL); - auto timeimg = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("print-time", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); + auto timeimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, create_scaled_bitmap("print-time", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); m_sizer_basic_weight->Add(timeimg, 1, wxEXPAND | wxALL, FromDIP(5)); - m_stext_time = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); + m_stext_time = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); m_sizer_basic_weight->Add(m_stext_time, 0, wxALL, FromDIP(5)); m_sizer_basic->Add(m_sizer_basic_weight, 0, wxALIGN_CENTER, 0); m_sizer_basic->Add(0, 0, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); - auto weightimg = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("print-weight", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); + auto weightimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, create_scaled_bitmap("print-weight", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); m_sizer_basic_time->Add(weightimg, 1, wxEXPAND | wxALL, FromDIP(5)); - m_stext_weight = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); + m_stext_weight = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); m_sizer_basic_time->Add(m_stext_weight, 0, wxALL, FromDIP(5)); m_sizer_basic->Add(m_sizer_basic_time, 0, wxALIGN_CENTER, 0); @@ -947,12 +953,22 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) Bind(EVT_PRINT_JOB_CANCEL, &SelectMachineDialog::on_print_job_cancel, this); Bind(EVT_SET_FINISH_MAPPING, &SelectMachineDialog::on_set_finish_mapping, this); + + m_sizer_scrollable_region->Add(m_panel_image, 0, wxALIGN_CENTER_HORIZONTAL, 0); + m_sizer_scrollable_region->Add(0, 0, 0, wxTOP, FromDIP(10)); + m_sizer_scrollable_region->Add(m_sizer_basic, 0, wxALIGN_CENTER_HORIZONTAL, 0); + m_sizer_scrollable_region->Add(m_sizer_material, 0, wxALIGN_CENTER_HORIZONTAL); + + m_scrollable_region->SetSizer(m_sizer_scrollable_region); + m_scrollable_region->Layout(); + + m_scrollable_view->SetSizer(m_sizer_scrollable_view); + m_scrollable_view->Layout(); + m_sizer_scrollable_view->Add(m_scrollable_region, 0, wxEXPAND, 0); + m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0); m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(22)); - m_sizer_main->Add(m_panel_image, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(10)); - m_sizer_main->Add(m_sizer_basic, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_main->Add(m_sizer_material, 0, wxALIGN_CENTER_HORIZONTAL); + m_sizer_main->Add(m_scrollable_view, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(8)); m_sizer_main->Add(m_statictext_ams_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(8)); @@ -2073,7 +2089,7 @@ void SelectMachineDialog::set_default() auto colour_rgb = wxColour((int) rgb[0], (int) rgb[1], (int) rgb[2]); if (extruder >= materials.size() || extruder < 0 || extruder >= display_materials.size()) continue; - MaterialItem *item = new MaterialItem(this, colour_rgb, _L(display_materials[extruder])); + MaterialItem *item = new MaterialItem(m_scrollable_region, colour_rgb, _L(display_materials[extruder])); m_sizer_material->Add(item, 0, wxALL, FromDIP(4)); item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) { @@ -2133,14 +2149,43 @@ void SelectMachineDialog::set_default() if (extruders.size() <= 4) { m_sizer_material->SetCols(extruders.size()); - Layout(); - Fit(); } else { m_sizer_material->SetCols(4); - Layout(); - Fit(); } + m_scrollable_region->Layout(); + m_scrollable_region->Fit(); + + //m_scrollable_view->Layout(); + //m_scrollable_view->Fit(); + + m_scrollable_view->SetSize(m_scrollable_region->GetSize()); + m_scrollable_view->SetMinSize(m_scrollable_region->GetSize()); + m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize()); + + Layout(); + Fit(); + + + wxSize screenSize = wxGetDisplaySize(); + auto dialogSize = this->GetSize(); + + #ifdef __WINDOWS__ + if (screenSize.y < dialogSize.y) { + m_need_adaptation_screen = true; + m_scrollable_view->SetScrollRate(0, 5); + m_scrollable_view->SetSize(wxSize(-1, FromDIP(220))); + m_scrollable_view->SetMinSize(wxSize(-1, FromDIP(220))); + m_scrollable_view->SetMaxSize(wxSize(-1, FromDIP(220))); + } else { + /* m_scrollable_view->SetSize(m_scrollable_region->GetSize()); + m_scrollable_view->SetMinSize(m_scrollable_region->GetSize()); + m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize());*/ + m_scrollable_view->SetScrollRate(0, 0); + } + #endif // __WXOSX_MAC__ + + reset_ams_material(); // basic info @@ -2175,10 +2220,9 @@ bool SelectMachineDialog::Show(bool show) m_refresh_timer->Stop(); } - if (show) { CenterOnParent(); } - Layout(); Fit(); + if (show) { CenterOnParent(); } return DPIDialog::Show(show); } diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 0c8f24d730..20a33e4544 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -306,6 +306,13 @@ protected: wxBoxSizer * m_sizer_main; wxBoxSizer * m_sizer_bottom; + bool m_need_adaptation_screen {false}; + wxScrolledWindow * m_scrollable_view; + wxBoxSizer * m_sizer_scrollable_view; + + wxPanel* m_scrollable_region; + wxBoxSizer* m_sizer_scrollable_region; + wxWindow *select_bed{nullptr}; wxWindow *select_flow{nullptr}; From 4c619aeaa07ed3de25236e144e5527495ae419ba Mon Sep 17 00:00:00 2001 From: tao wang Date: Mon, 29 Aug 2022 19:01:07 +0800 Subject: [PATCH 085/137] FIX:print slice infon will be obtained from the cloud Change-Id: I7e05787baf1bb1cbca5ff956e371e67bc3f8c7d7 --- src/slic3r/GUI/StatusPanel.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 4f6db5f70e..8d3a1897b4 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1725,17 +1725,10 @@ void StatusPanel::update_left_time(int mc_left_time) void StatusPanel::update_basic_print_data(bool def) { if (def) { - auto aprint_stats = wxGetApp().plater()->get_partplate_list().get_current_fff_print().print_statistics(); - wxString time; - PartPlate *plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); - if (plate) { - if (plate->get_slice_result()) { time = wxString::Format("%s", get_bbl_monitor_time_dhm(plate->get_slice_result()->print_statistics.modes[0].time)); } - } + wxString prediction = wxString::Format("%s", get_bbl_time_dhms(obj->slice_info->prediction)); + wxString weight = wxString::Format("%.2fg", obj->slice_info->weight); - char weight[64]; - ::sprintf(weight, " %.2f g", aprint_stats.total_weight); - - m_staticText_consumption_of_time->SetLabelText(time); + m_staticText_consumption_of_time->SetLabelText(prediction); m_staticText_consumption_of_weight->SetLabelText(weight); } else { m_staticText_consumption_of_time->SetLabelText("0m"); From 0f8ad6d5e691bc0f5115b8705f105128194a207c Mon Sep 17 00:00:00 2001 From: Stone Li Date: Fri, 19 Aug 2022 15:53:56 +0800 Subject: [PATCH 086/137] ENH: add log in request_user_unbind for debuging Change-Id: I9540080713ac848302b788797005b28a5938f547 --- src/slic3r/GUI/GUI_App.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 738e6c76e3..a04ff5ff51 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2916,7 +2916,9 @@ int GUI_App::request_user_unbind(std::string dev_id) { int result = -1; if (m_agent) { - return m_agent->unbind(dev_id); + result = m_agent->unbind(dev_id); + BOOST_LOG_TRIVIAL(info) << "request_user_unbind, dev_id = " << dev_id << ", result = " << result; + return result; } return result; } From 56a61bfcf5eb31bd87c178a1e4311ef79a03f3ee Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 26 Aug 2022 15:24:02 +0800 Subject: [PATCH 087/137] FIX: record dialog stack and EndModal on system session end Change-Id: Ie0a7de7cf467f5b9e88881d3894dbb7a0790d500 --- src/slic3r/GUI/GUI_App.cpp | 5 +++++ src/slic3r/GUI/GUI_Utils.cpp | 2 ++ src/slic3r/GUI/GUI_Utils.hpp | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index a04ff5ff51..70d24430ad 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1835,6 +1835,11 @@ bool GUI_App::on_init_inner() //BBS set crash log folder CBaseException::set_log_folder(data_dir()); #endif + + wxGetApp().Bind(wxEVT_QUERY_END_SESSION, [](auto & e) { + for (auto d : dialogStack) + d->EndModal(1); + }); std::map extra_headers = get_extra_header(); Slic3r::Http::set_extra_headers(extra_headers); diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index 1c472f420d..3d579a3634 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -469,5 +469,7 @@ bool generate_image(const std::string &filename, wxImage &image, wxSize img_size return true; } +std::vector dialogStack; + } } diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index 6daa308c28..9ea6d33dc7 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -104,6 +104,8 @@ struct DpiChangedEvent : public wxEvent { wxDECLARE_EVENT(EVT_DPI_CHANGED_SLICER, DpiChangedEvent); #endif // !wxVERSION_EQUAL_OR_GREATER_THAN +extern std::vector dialogStack; + template class DPIAware : public P { public: @@ -221,6 +223,14 @@ public: on_sys_color_changed(); } #endif + + int ShowModal() + { + dialogStack.push_back(this); + int r = wxDialog::ShowModal(); + dialogStack.pop_back(); + return r; + } protected: virtual void on_dpi_changed(const wxRect &suggested_rect) = 0; From ee84510736099c188e128cd69b12b7e199485f30 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Mon, 29 Aug 2022 21:54:30 +0800 Subject: [PATCH 088/137] Version: Update version to 01.01.02.00 Change-Id: If5a1addf08ae16c5b8d524682a5100b4b390ce41 --- resources/profiles/BBL.json | 2 +- version.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 479f114906..bf33fe5bce 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.01.07", + "version": "01.01.02.00", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/version.inc b/version.inc index e756fa67a9..5a2cb96141 100644 --- a/version.inc +++ b/version.inc @@ -7,4 +7,4 @@ set(SLIC3R_APP_KEY "BambuStudio") if(NOT DEFINED BBL_RELEASE_TO_PUBLIC) set(BBL_RELEASE_TO_PUBLIC "0") endif() -set(SLIC3R_VERSION "01.01.01.01") +set(SLIC3R_VERSION "01.01.02.00") From 7e01006db7d46888a499e44e5e9f0c419508deee Mon Sep 17 00:00:00 2001 From: arthur Date: Thu, 11 Aug 2022 14:27:59 +0800 Subject: [PATCH 089/137] FIX: cocentric interface in tree support may be floating 1. fix floating cocentric interface 2. fix missing 1st roof layer with 0.12 & 0.08 layer height Change-Id: I6cdbe99dabb711c650900d35aead7f7aa0fdb8f7 --- src/libslic3r/TreeSupport.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index bbd641f0ae..69b250be22 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -1421,6 +1421,15 @@ void TreeSupport::generate_toolpaths() bool obj_is_vertical = obj_size.x() < obj_size.y(); int num_layers_to_change_infill_direction = int(HEIGHT_TO_SWITCH_INFILL_DIRECTION / object_config.layer_height.value); // change direction every 30mm + std::shared_ptr filler_interface = std::shared_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); + std::shared_ptr filler_Roof1stLayer = std::shared_ptr(Fill::new_from_type(ipRectilinear)); + std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); + filler_interface->set_bounding_box(bbox_object); + filler_Roof1stLayer->set_bounding_box(bbox_object); + filler_support->set_bounding_box(bbox_object); + filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);//(1 - obj_is_vertical) * M_PI_2;//((1-obj_is_vertical) + int(layer_id / num_layers_to_change_infill_direction)) * M_PI_2;;//layer_id % 2 ? 0 : M_PI_2; + filler_Roof1stLayer->angle = Geometry::deg2rad(object_config.support_angle.value + 90.); + // generate tree support tool paths tbb::parallel_for( tbb::blocked_range(m_raft_layers, m_object->tree_support_layer_count()), @@ -1434,12 +1443,7 @@ void TreeSupport::generate_toolpaths() TreeSupportLayer* ts_layer = m_object->get_tree_support_layer(layer_id); Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - std::unique_ptr filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); - std::unique_ptr filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_interface->set_bounding_box(bbox_object); - filler_support->set_bounding_box(bbox_object); - filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);//(1 - obj_is_vertical) * M_PI_2;//((1-obj_is_vertical) + int(layer_id / num_layers_to_change_infill_direction)) * M_PI_2;;//layer_id % 2 ? 0 : M_PI_2; for (auto& area_group : ts_layer->area_groups) { ExPolygon& poly = *area_group.first; @@ -1465,9 +1469,9 @@ void TreeSupport::generate_toolpaths() // roof_1st_layer fill_params.density = interface_density; // Note: spacing means the separation between two lines as if they are tightly extruded - filler_interface->spacing = m_support_material_interface_flow.spacing(); - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), filler_interface.get(), fill_params, erSupportMaterial, - m_support_material_interface_flow); + filler_Roof1stLayer->spacing = m_support_material_interface_flow.spacing(); + fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), filler_Roof1stLayer.get(), fill_params, erSupportMaterial, + m_support_material_interface_flow); } else if (area_group.second == TreeSupportLayer::FloorType) { // floor_areas fill_params.density = bottom_interface_density; @@ -2670,7 +2674,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { std::vector& curr_layer_nodes = contact_nodes[layer_nr]; for (Node* node : curr_layer_nodes) { - if (node->support_roof_layers_below == top_intf_layers || node->support_floor_layers_above == bot_intf_layers) { + if (node->support_roof_layers_below >0 || node->support_floor_layers_above == bot_intf_layers) { extremes.push_back(layer_nr); break; } From 1e0301dbde247698263aae3170dc437503db89ab Mon Sep 17 00:00:00 2001 From: arthur Date: Tue, 9 Aug 2022 21:46:21 +0800 Subject: [PATCH 090/137] FIX: fix slicing error of more than 1 empty first layers Jira: STUDIO-656 Change-Id: I582e432ac14b823656780147ec585ae7a7499517 --- src/libslic3r/GCode/ToolOrdering.cpp | 3 +- src/libslic3r/PrintObjectSlice.cpp | 55 +++++++++++++--------------- 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 1c4b45466a..f20b3091fa 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -474,7 +474,8 @@ void ToolOrdering::reorder_extruders(std::vector tool_order_layer0 if (m_layer_tools.empty()) return; - assert(!tool_order_layer0.empty()); + if (tool_order_layer0.empty()) + return; // Reorder the extruders of first layer { diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 73acda3b4f..8c11723750 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -474,9 +474,7 @@ std::string fix_slicing_errors(PrintObject* object, LayerPtrs &layers, const std if (layers[idx_layer]->slicing_errors) { buggy_layers.push_back(idx_layer); - //BBS - error_msg = L("Empty layers around bottom are replaced by nearest normal layers."); - } + } else break; // only detect empty layers near bed } @@ -484,14 +482,15 @@ std::string fix_slicing_errors(PrintObject* object, LayerPtrs &layers, const std BOOST_LOG_TRIVIAL(debug) << "Slicing objects - fixing slicing errors in parallel - begin"; tbb::parallel_for( tbb::blocked_range(0, buggy_layers.size()), - [&layers, &throw_if_canceled, &buggy_layers](const tbb::blocked_range& range) { + [&layers, &throw_if_canceled, &buggy_layers, &error_msg](const tbb::blocked_range& range) { for (size_t buggy_layer_idx = range.begin(); buggy_layer_idx < range.end(); ++ buggy_layer_idx) { throw_if_canceled(); size_t idx_layer = buggy_layers[buggy_layer_idx]; - // BBS: only replace empty first layer - if (idx_layer > 0) + // BBS: only replace empty layers lower than 1mm + const coordf_t thresh_empty_layer_height = 1; + Layer* layer = layers[idx_layer]; + if (layer->print_z>= thresh_empty_layer_height) continue; - Layer *layer = layers[idx_layer]; assert(layer->slicing_errors); // Try to repair the layer surfaces by merging all contours and all holes from neighbor layers. // BOOST_LOG_TRIVIAL(trace) << "Attempting to repair layer" << idx_layer; @@ -500,42 +499,39 @@ std::string fix_slicing_errors(PrintObject* object, LayerPtrs &layers, const std // Find the first valid layer below / above the current layer. const Surfaces *upper_surfaces = nullptr; const Surfaces *lower_surfaces = nullptr; - //BBS: only repair first layer if the 2nd layer is Good - for (size_t j = idx_layer + 1; j < /*layers.size()*/2; ++ j) - if (! layers[j]->slicing_errors) { + //BBS: only repair empty layers lowers than 1mm + for (size_t j = idx_layer + 1; j < layers.size(); ++j) { + if (!layers[j]->slicing_errors) { upper_surfaces = &layers[j]->regions()[region_id]->slices.surfaces; break; } - for (int j = /*int(idx_layer) -*/ 1; j >= 0; -- j) - if (! layers[j]->slicing_errors) { + if (layers[j]->print_z >= thresh_empty_layer_height) break; + } + for (int j = int(idx_layer) - 1; j >= 0; --j) { + if (layers[j]->print_z >= thresh_empty_layer_height) continue; + if (!layers[j]->slicing_errors) { lower_surfaces = &layers[j]->regions()[region_id]->slices.surfaces; break; } + } // Collect outer contours and holes from the valid layers above & below. - Polygons outer; - outer.reserve( + ExPolygons expolys; + expolys.reserve( ((upper_surfaces == nullptr) ? 0 : upper_surfaces->size()) + ((lower_surfaces == nullptr) ? 0 : lower_surfaces->size())); - size_t num_holes = 0; if (upper_surfaces) for (const auto &surface : *upper_surfaces) { - outer.push_back(surface.expolygon.contour); - num_holes += surface.expolygon.holes.size(); + expolys.emplace_back(surface.expolygon); } if (lower_surfaces) for (const auto &surface : *lower_surfaces) { - outer.push_back(surface.expolygon.contour); - num_holes += surface.expolygon.holes.size(); + expolys.emplace_back(surface.expolygon); } - Polygons holes; - holes.reserve(num_holes); - if (upper_surfaces) - for (const auto &surface : *upper_surfaces) - polygons_append(holes, surface.expolygon.holes); - if (lower_surfaces) - for (const auto &surface : *lower_surfaces) - polygons_append(holes, surface.expolygon.holes); - layerm->slices.set(diff_ex(union_(outer), holes), stInternal); + if (!expolys.empty()) { + //BBS + error_msg = L("Empty layers around bottom are replaced by nearest normal layers."); + layerm->slices.set(union_ex(expolys), stInternal); + } } // Update layer slices after repairing the single regions. layer->make_slices(); @@ -555,8 +551,7 @@ std::string fix_slicing_errors(PrintObject* object, LayerPtrs &layers, const std //BBS if(error_msg.empty() && !buggy_layers.empty()) - error_msg = L("The model has overlapping or self-intersecting facets. I tried to repair it, " - "however you might want to check the results or repair the input file and retry."); + error_msg = L("The model has too many empty layers."); return error_msg; } From 35d6e048ff0cc5cee81038c3205e60d268138657 Mon Sep 17 00:00:00 2001 From: arthur Date: Tue, 9 Aug 2022 01:52:15 +0800 Subject: [PATCH 091/137] FIX: auto-arrange fails in several cases Jira: STUDIO-644, STUDIO-661 Change-Id: I3cd1fcd4e1fabf9a401c9fd536e8f55592775fbd --- .../include/libnest2d/placers/nfpplacer.hpp | 4 +-- src/libslic3r/Arrange.cpp | 25 +++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index 2cf356401f..29de288b9a 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -67,7 +67,7 @@ struct NfpPConfig { * the already packed items. * */ - std::function&)> object_function; + std::function&, const ItemGroup&)> object_function; /** * @brief The quality of search for an optimal placement. @@ -666,7 +666,7 @@ private: // This is the kernel part of the object function that is // customizable by the library client std::function _objfunc; - if(config_.object_function) _objfunc = config_.object_function; + if (config_.object_function) _objfunc = [this](const Item& item) {return config_.object_function(item, this->items_); }; else { // Inside check has to be strict if no alignment was enabled diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index e08a3c2086..cc2f1721a3 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -447,7 +447,7 @@ protected: return std::make_tuple(score, fullbb); } - std::function get_objfn(); + std::function get_objfn(); public: AutoArranger(const TBin & bin, @@ -508,7 +508,8 @@ public: bin_poly.contour.points.emplace_back(c0.x(), c1.y()); return bin_poly; }; - + + // preload fixed items (and excluded regions) on plate m_pconf.on_preload = [this](const ItemGroup &items, PConfig &cfg) { if (items.empty()) return; @@ -527,8 +528,12 @@ public: } } - cfg.object_function = [this, bb, starting_point](const Item& item) { - return fixed_overfit_topright_sliding(objfunc(item, starting_point), bb); + cfg.object_function = [this, bb, starting_point](const Item& item, const ItemGroup& packed_items) { + bool packed_are_excluded_region = std::all_of(packed_items.begin(), packed_items.end(), [](Item& itm) { return itm.is_virt_object && !itm.is_wipe_tower; }); + if(packed_are_excluded_region) + return fixed_overfit_topright_sliding(objfunc(item, starting_point), bb); + else + return fixed_overfit(objfunc(item, starting_point), bb); }; }; @@ -597,11 +602,11 @@ public: } }; -template<> std::function AutoArranger::get_objfn() +template<> std::function AutoArranger::get_objfn() { auto origin_pack = m_pconf.starting_point == PConfig::Alignment::CENTER ? m_bin.center() : m_bin.minCorner(); - return [this, origin_pack](const Item &itm) { + return [this, origin_pack](const Item &itm, const ItemGroup&) { auto result = objfunc(itm, origin_pack); double score = std::get<0>(result); @@ -623,11 +628,11 @@ template<> std::function AutoArranger::get_objfn() }; } -template<> std::function AutoArranger::get_objfn() +template<> std::function AutoArranger::get_objfn() { auto bb = sl::boundingBox(m_bin); auto origin_pack = m_pconf.starting_point == PConfig::Alignment::CENTER ? bb.center() : bb.minCorner(); - return [this, origin_pack](const Item &item) { + return [this, origin_pack](const Item &item, const ItemGroup&) { auto result = objfunc(item, origin_pack); @@ -653,11 +658,11 @@ template<> std::function AutoArranger::get_objfn() // Specialization for a generalized polygon. // Warning: this is much slower than with Box bed. Need further speedup. template<> -std::function AutoArranger::get_objfn() +std::function AutoArranger::get_objfn() { auto bb = sl::boundingBox(m_bin); auto origin_pack = m_pconf.starting_point == PConfig::Alignment::CENTER ? bb.center() : bb.minCorner(); - return [this, origin_pack](const Item &itm) { + return [this, origin_pack](const Item &itm, const ItemGroup&) { auto result = objfunc(itm, origin_pack); double score = std::get<0>(result); From 02f35c161736a3223b69f834aa4bd695269f1a1d Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 30 Aug 2022 13:30:58 +0800 Subject: [PATCH 092/137] ENH: add contents to user guide Signed-off-by: yifan.wu Change-Id: I46e943ce40049a80715ba67c4e73a3587991fe82 --- resources/web/homepage/index.html | 74 ++++++++++++------------------- 1 file changed, 28 insertions(+), 46 deletions(-) diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html index 944c9411b6..bb729adc70 100644 --- a/resources/web/homepage/index.html +++ b/resources/web/homepage/index.html @@ -161,66 +161,48 @@
-
-
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
-
-
-
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
-
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
Quick Start
+
This article instroduces the most basic usage of Bambu Studio. It guides users to configure software, create projects, and complete the first printing task step by step.
-
-
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
-
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
Project Based Workflow
+
Bambu Studio has put forward a leading workflow to truly achieve an “all in one” project. Based on the mainstream 3MF project format, it provides a series of revolutionary new features, such as Multi-Plate Support, a Project Resource Manager, and Assembly/Part View. It greatly improves the efficiency of both creators and regular users.
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
High Speed Print at Quality
+
It is challenging to print at high speed while maintaining high quality. Bambu Studio makes this happen. + "Arch Move" makes the toolhead move smoothly and reduces the machine's vibration. The smart cooling is based on fine-tunned cooling parameters for each filament type. + Auto slow down for overhang walls works to prevent deformation at high speeds.
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
Multi-Color Printing
+
Bambu Studio provides versatile colorizing tools to make a colorful model. You can freely add/remove filaments in a project and colorize your model with different brushes. Before printing, each filament will be auto-mapped to an AMS slot, not needing to manually change the spool placement in the AMS.
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
Setting Guide of Slicing Parameters
+
The parameter management features in Bambu Studio provide very flexible and powerful control over the slicing process. This article introduces the organization of parameters and provides some skills on taking full advantage of these capabilities.
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
Remote Control & Monitoring
+
We support sending G-code to your printer over WAN/LAN network, controlling & monitoring every aspect of your 3D printer and printing jobs, and updating firmware over the air. If you have more than one printer, you can easily switch between them in the device list.
-
+
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
+
STEP Format
+
Compared with STL, STEP brings more effective information. Thanks to the high accuracy of STEP, a lot of extrusion paths can be generated as arcs. STEP also includes the assembly relationship of each parts of a model, which can be used to identify the exterior surface and restore the assembly view after a model is split.
+
+
+
+
3D Text
+
With 3D Text tool, users can easily create any 3D text shape in a project. Users can freely create 3D text content to make modles more personalized. Bambu Studio provides dozens of fonts and supports bold and italic styles to give text greater flexibility.
-
-
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
-
-
-
-
Wiki Title XXXXXXX XXXXXX XXXXX XXXXX XXXXXX
-
This is a long long long long long longlong long long long long longlong long long long long longlong long long long long longlong long long long long long text
-
From db435bc7043de9a812f72f3639899d34cd847641 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 30 Aug 2022 11:13:40 +0800 Subject: [PATCH 093/137] FIX:fixed wxwidget assert(amsmappingpop) Change-Id: Ie97e6c0bdea9af713eb7088311dfc3df97d74239 --- src/slic3r/GUI/AmsMappingPopup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 13886fb9ee..03efacdf9c 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -393,7 +393,7 @@ void AmsMapingPopup::add_ams_mapping(std::vector tray_data) sizer_mapping_item->Add(number, 0, wxALIGN_CENTER_HORIZONTAL, 0); sizer_mapping_item->Add(m_filament_name, 0, wxALIGN_CENTER_HORIZONTAL, 0); - sizer_mapping_list->Add(sizer_mapping_item, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(5)); + sizer_mapping_list->Add(sizer_mapping_item, 0, wxALL, FromDIP(5)); m_amsmapping_sizer_list.push_back(sizer_mapping_list); } m_sizer_list->Add(sizer_mapping_list, 0, wxALIGN_CENTER_HORIZONTAL, 0); From a8d91531b30bba9e43f0c37912a7680108f9d285 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 30 Aug 2022 12:24:32 +0800 Subject: [PATCH 094/137] FIX:Turn on the Release switch of HMS Change-Id: I67fe615aec0e18cc8fd0a1e6992b6dc38a03fc88 --- src/slic3r/GUI/HMSPanel.cpp | 5 ++--- src/slic3r/GUI/Monitor.cpp | 25 +++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/slic3r/GUI/HMSPanel.cpp b/src/slic3r/GUI/HMSPanel.cpp index 45a3c7a683..07e0bdce5e 100644 --- a/src/slic3r/GUI/HMSPanel.cpp +++ b/src/slic3r/GUI/HMSPanel.cpp @@ -83,9 +83,8 @@ HMSNotifyItem::HMSNotifyItem(wxWindow *parent, HMSItem& item) } }); m_hms_content->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent &e) { - if(!m_url.empty()) - wxLaunchDefaultBrowser(get_hms_wiki_url(m_hms_item.get_long_error_code())); - }); + if (!m_url.empty()) wxLaunchDefaultBrowser(m_url); + }); } HMSNotifyItem ::~HMSNotifyItem() { ; diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index d39fa897c9..c3c37af09e 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -198,18 +198,22 @@ MonitorPanel::~MonitorPanel() }); //m_status_add_machine_panel = new AddMachinePanel(m_tabpanel); - m_status_info_panel = new StatusPanel(m_tabpanel); - m_media_file_panel = new MediaFilePanel(m_tabpanel); + m_status_info_panel = new StatusPanel(m_tabpanel); m_tabpanel->AddPage(m_status_info_panel, _L("Status"), "", true); -#if !BBL_RELEASE_TO_PUBLIC + m_media_file_panel = new MediaFilePanel(m_tabpanel); m_tabpanel->AddPage(m_media_file_panel, _L("Media"), "", false); m_upgrade_panel = new UpgradePanel(m_tabpanel); m_tabpanel->AddPage(m_upgrade_panel, _L("Update"), "", false); m_hms_panel = new HMSPanel(m_tabpanel); - m_tabpanel->AddPage(m_hms_panel, _L("HMS"), "", false); + m_tabpanel->AddPage(m_hms_panel, _L("HMS"),"", false); + + +#if !BBL_RELEASE_TO_PUBLIC + m_debug_panel = new DebugPanel(m_tabpanel); + m_tabpanel->AddPage(m_debug_panel, _L("Debug"), "", false); #endif m_initialized = true; @@ -258,10 +262,8 @@ void MonitorPanel::msw_rescale() //m_status_add_machine_panel->msw_rescale(); m_status_info_panel->msw_rescale(); m_media_file_panel->Rescale(); -#if !BBL_RELEASE_TO_PUBLIC m_upgrade_panel->msw_rescale(); m_hms_panel->msw_rescale(); -#endif m_connection_info->SetCornerRadius(0); m_connection_info->SetSize(wxSize(FromDIP(220), FromDIP(25))); @@ -394,16 +396,11 @@ void MonitorPanel::update_all() } m_status_info_panel->obj = obj; - -#if !BBL_RELEASE_TO_PUBLIC m_upgrade_panel->update(obj); -#endif m_status_info_panel->m_media_play_ctrl->SetMachineObject(IsShown() ? obj : nullptr); -#if !BBL_RELEASE_TO_PUBLIC m_media_file_panel->SetMachineObject(obj); -#endif update_status(obj); if (!obj) { @@ -433,13 +430,17 @@ void MonitorPanel::update_all() m_status_info_panel->update(obj); } -#if !BBL_RELEASE_TO_PUBLIC if (m_hms_panel->IsShown()) { m_hms_panel->update(obj); } if (m_upgrade_panel->IsShown()) { m_upgrade_panel->update(obj); } + +#if !BBL_RELEASE_TO_PUBLIC + if (m_debug_panel->IsShown()) { + m_debug_panel->update(obj); + } #endif } From 06af15f60ca1f28e2f42f64affd5717031a9063d Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 30 Aug 2022 14:16:03 +0800 Subject: [PATCH 095/137] FIX: disable the dual graphics card option Change-Id: I76967e5e87abc1c55920bcf31b196c3ab588bd58 --- src/BambuStudio_app_msvc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BambuStudio_app_msvc.cpp b/src/BambuStudio_app_msvc.cpp index 9c9014a8e6..5dfc4c4635 100644 --- a/src/BambuStudio_app_msvc.cpp +++ b/src/BambuStudio_app_msvc.cpp @@ -14,8 +14,8 @@ extern "C" { // Let the NVIDIA and AMD know we want to use their graphics card // on a dual graphics card system. - __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; - __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; + __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000000; + __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 0; } #endif /* SLIC3R_GUI */ From 8319ef604c22f12a7efc663d4d2ab50e94d49a11 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 26 Aug 2022 11:07:14 +0800 Subject: [PATCH 096/137] FIX: report an error when slice in painting Change-Id: I55ba3687e3988ae96d33833c03efd66ea3f607d8 --- src/slic3r/GUI/MainFrame.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 3cb41de8b6..a0123df25e 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1224,6 +1224,7 @@ wxBoxSizer* MainFrame::create_side_tools() m_slice_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event) { //this->m_plater->select_view_3D("Preview"); + m_plater->update(); if (m_slice_select == eSliceAll) wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SLICE_ALL)); else From de712b08f11138f650f5cf506899606a7782bb7d Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 30 Aug 2022 10:57:12 +0800 Subject: [PATCH 097/137] FIX: crash on MacOS when system logout, not really Close mainframe Change-Id: I0e7cc73c1b4bbc663105034e82dcd7a51998e244 --- src/slic3r/GUI/GUI_App.cpp | 11 ++++++++++- src/slic3r/GUI/GUI_Utils.cpp | 2 +- src/slic3r/GUI/GUI_Utils.hpp | 6 +++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 70d24430ad..c103c7709a 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1836,7 +1836,16 @@ bool GUI_App::on_init_inner() CBaseException::set_log_folder(data_dir()); #endif - wxGetApp().Bind(wxEVT_QUERY_END_SESSION, [](auto & e) { + wxGetApp().Bind(wxEVT_QUERY_END_SESSION, [this](auto & e) { + if (mainframe) { + wxCloseEvent e2(wxEVT_CLOSE_WINDOW); + e2.SetCanVeto(true); + mainframe->GetEventHandler()->ProcessEvent(e2); + if (e2.GetVeto()) { + e.Veto(); + return; + } + } for (auto d : dialogStack) d->EndModal(1); }); diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index 3d579a3634..0667e164cc 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -469,7 +469,7 @@ bool generate_image(const std::string &filename, wxImage &image, wxSize img_size return true; } -std::vector dialogStack; +std::deque dialogStack; } } diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index 9ea6d33dc7..a93009129f 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -104,7 +104,7 @@ struct DpiChangedEvent : public wxEvent { wxDECLARE_EVENT(EVT_DPI_CHANGED_SLICER, DpiChangedEvent); #endif // !wxVERSION_EQUAL_OR_GREATER_THAN -extern std::vector dialogStack; +extern std::deque dialogStack; template class DPIAware : public P { @@ -226,9 +226,9 @@ public: int ShowModal() { - dialogStack.push_back(this); + dialogStack.push_front(this); int r = wxDialog::ShowModal(); - dialogStack.pop_back(); + dialogStack.pop_front(); return r; } From 346480005ad3ebb02feb57ebf0367191dfad8dc1 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 29 Aug 2022 11:28:06 +0800 Subject: [PATCH 098/137] NEW: add comments for print job Change-Id: Ie7a65a76d535dc210268842704fdaf4a7475135a Signed-off-by: Stone Li --- src/slic3r/GUI/Jobs/PrintJob.cpp | 17 +++++++++++++++++ src/slic3r/Utils/bambu_networking.hpp | 1 + 2 files changed, 18 insertions(+) diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index db760503ad..715bbdf20e 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -221,9 +221,19 @@ void PrintJob::process() return was_canceled(); }; + NetworkAgent* m_agent = wxGetApp().getAgent(); if (params.connection_type != "lan") { + if (params.dev_ip.empty()) + params.comments = "no_ip"; + else if (this->cloud_print_only) + params.comments = "low_version"; + else if (!this->has_sdcard) + params.comments = "no_sdcard"; + else if (params.password.empty()) + params.comments = "no_password"; + if (!this->cloud_print_only && !params.password.empty() && !params.dev_ip.empty() @@ -232,6 +242,13 @@ void PrintJob::process() BOOST_LOG_TRIVIAL(info) << "print_job: try to start local print with record"; this->update_status(curr_percent, _L("Sending print job over LAN")); result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn); + if (result == BAMBU_NETWORK_ERR_FTP_LOGIN_DENIED) { + params.comments = "wrong_code"; + } else if (result == BAMBU_NETWORK_ERR_FTP_UPLOAD_FAILED) { + params.comments = "upload_failed"; + } else { + params.comments = (boost::format("failed(%1%)") % result).str(); + } if (result < 0) { // try to send with cloud BOOST_LOG_TRIVIAL(warning) << "print_job: try to send with cloud"; diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index da246a10b7..0df84d2038 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -113,6 +113,7 @@ struct PrintParams { std::string ftp_file_md5; std::string ams_mapping; std::string connection_type; + std::string comments; /* access options */ std::string dev_ip; From 11c24053ddce05cab33b7f2a507e338941068bb8 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 30 Aug 2022 14:50:18 +0800 Subject: [PATCH 099/137] FIX: remove user preset folder when logout Change-Id: I64f0e46de7a91264c3c50188bbad2ac1409bcc0d --- src/libslic3r/PresetBundle.cpp | 11 +++++++++++ src/libslic3r/PresetBundle.hpp | 3 ++- src/slic3r/GUI/GUI_App.cpp | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 716a8b0d4d..28dd90097c 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -722,6 +722,17 @@ void PresetBundle::update_user_presets_directory(const std::string preset_folder BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished"); } +void PresetBundle::remove_user_presets_directory(const std::string preset_folder) +{ + const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + preset_folder; + + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, delete directory : %1%") % dir_user_presets; + fs::path folder(dir_user_presets); + if (fs::exists(folder)) { + fs::remove_all(folder); + } +} + void PresetBundle::update_system_preset_setting_ids(std::map>& system_presets) { for (auto iterator: system_presets) diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index c578bbfebf..0cd7aef994 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -49,7 +49,8 @@ public: PresetsConfigSubstitutions import_presets(std::vector &files, std::function override_confirm, ForwardCompatibilitySubstitutionRule rule); void save_user_presets(AppConfig& config, std::vector& need_to_delete_list); void remove_users_preset(AppConfig &config); - void update_user_presets_directory(const std::string preset_folder); + void update_user_presets_directory(const std::string preset_folder); + void remove_user_presets_directory(const std::string preset_folder); void update_system_preset_setting_ids(std::map>& system_presets); //BBS: add API to get previous machine diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index c103c7709a..b08509b96d 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3387,6 +3387,10 @@ void GUI_App::remove_user_presets() { if (preset_bundle && m_agent) { preset_bundle->remove_users_preset(*app_config); + + std::string user_id = m_agent->get_user_id(); + preset_bundle->remove_user_presets_directory(user_id); + //update ui mainframe->update_side_preset_ui(); } From ba286fedbd3cb7e4e3b95f6ac5bb56c8463d038b Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 30 Aug 2022 15:25:44 +0800 Subject: [PATCH 100/137] FIX:fixed camera button cant not adaptation Change-Id: I208d7ca31e77e6cb7a0674e9794fd4eefecca840 --- src/slic3r/GUI/StatusPanel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 8d3a1897b4..5d45d28681 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -221,11 +221,11 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page() m_bitmap_sdcard_on_img->Hide(); m_timelapse_button = new CameraItem(m_panel_monitoring_title, "timelapse_off_normal", "timelapse_on_normal", "timelapse_off_hover", "timelapse_on_hover"); - m_timelapse_button->SetMinSize(wxSize(38, 24)); + m_timelapse_button->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); m_timelapse_button->SetBackgroundColour(STATUS_TITLE_BG); m_recording_button = new CameraItem(m_panel_monitoring_title, "recording_off_normal", "recording_on_normal", "recording_off_hover", "recording_on_hover"); - m_recording_button->SetMinSize(wxSize(38, 24)); + m_recording_button->SetMinSize(wxSize(FromDIP(38), FromDIP(24))); m_recording_button->SetBackgroundColour(STATUS_TITLE_BG); m_timelapse_button->SetToolTip(_L("Timelapse")); From 63bd77caf9141e9d5384636d40a3db358b6a7292 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 30 Aug 2022 18:04:44 +0800 Subject: [PATCH 101/137] ENH: save hms file to hms folder Change-Id: I20ff7317c689eefc684c44e6509a45f5911de7fe --- src/slic3r/GUI/HMS.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/HMS.cpp b/src/slic3r/GUI/HMS.cpp index 203b2d3217..63ce64cb21 100644 --- a/src/slic3r/GUI/HMS.cpp +++ b/src/slic3r/GUI/HMS.cpp @@ -83,7 +83,11 @@ int HMSQuery::load_from_local(std::string &version_info) return -1; } std::string filename = get_hms_file(); - std::string dir_str = (boost::filesystem::path(data_dir()) / filename).make_preferred().string(); + auto hms_folder = (boost::filesystem::path(data_dir()) / "hms"); + if (!fs::exists(hms_folder)) + fs::create_directory(hms_folder); + + std::string dir_str = (hms_folder / filename).make_preferred().string(); std::ifstream json_file(encode_path(dir_str.c_str())); try { if (json_file.is_open()) { @@ -111,7 +115,10 @@ int HMSQuery::save_to_local() return -1; } std::string filename = get_hms_file(); - std::string dir_str = (boost::filesystem::path(data_dir()) / filename).make_preferred().string(); + auto hms_folder = (boost::filesystem::path(data_dir()) / "hms"); + if (!fs::exists(hms_folder)) + fs::create_directory(hms_folder); + std::string dir_str = (hms_folder / filename).make_preferred().string(); std::ofstream json_file(encode_path(dir_str.c_str())); if (json_file.is_open()) { json_file << std::setw(4) << m_hms_json << std::endl; From e11c3549991e9415cba96e6ba1cb5350a22ba32b Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 30 Aug 2022 17:17:31 +0800 Subject: [PATCH 102/137] FIX:fixed machine list crash when after logout account Change-Id: Ic71fe459032de97943c28f92319a56a47f6430ac --- src/slic3r/GUI/SelectMachine.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 8b79f8f011..31bf025f5a 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -369,7 +369,7 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMachinePopup::on_dissmiss_win, this); } -SelectMachinePopup::~SelectMachinePopup() { delete m_refresh_timer; } +SelectMachinePopup::~SelectMachinePopup() { delete m_refresh_timer;} void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) { @@ -429,7 +429,20 @@ bool SelectMachinePopup::ProcessLeftDown(wxMouseEvent &event) { return wxPopupTransientWindow::ProcessLeftDown(event); } -bool SelectMachinePopup::Show(bool show) { return wxPopupTransientWindow::Show(show); } +bool SelectMachinePopup::Show(bool show) { + if (show) { + for (int i = 0; i < m_user_list_machine_panel.size(); i++) { + m_user_list_machine_panel[i]->mPanel->update_machine_info(nullptr); + m_user_list_machine_panel[i]->mPanel->Hide(); + } + + for (int j = 0; j < m_other_list_machine_panel.size(); j++) { + m_other_list_machine_panel[j]->mPanel->update_machine_info(nullptr); + m_other_list_machine_panel[j]->mPanel->Hide(); + } + } + return wxPopupTransientWindow::Show(show); +} wxWindow *SelectMachinePopup::create_title_panel(wxString text) { From b510e94e0661a1558edfcdebb08d82038e37a922 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 30 Aug 2022 17:46:19 +0800 Subject: [PATCH 103/137] FIX:add code protection when updating print basic info Change-Id: If64c24e394276c3c127bb12039353ae478481192 --- src/slic3r/GUI/StatusPanel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 5d45d28681..fe4fc54acf 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1725,6 +1725,7 @@ void StatusPanel::update_left_time(int mc_left_time) void StatusPanel::update_basic_print_data(bool def) { if (def) { + if (!obj) return; wxString prediction = wxString::Format("%s", get_bbl_time_dhms(obj->slice_info->prediction)); wxString weight = wxString::Format("%.2fg", obj->slice_info->weight); From 3b9801f1470dc98b96bc98832fe9e405b062baca Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Fri, 2 Sep 2022 13:12:50 +0800 Subject: [PATCH 104/137] NEW: add config file to store functional compatibility Change-Id: I9831cef9d57642fe7709eef87e74a64e21857e18 --- src/slic3r/GUI/Auxiliary.cpp | 20 +-- src/slic3r/GUI/Auxiliary.hpp | 8 +- src/slic3r/GUI/DeviceManager.cpp | 177 +++++++++++++++++--------- src/slic3r/GUI/DeviceManager.hpp | 40 ++++-- src/slic3r/GUI/GUI_App.cpp | 3 + src/slic3r/GUI/PrintOptionsDialog.cpp | 24 +++- src/slic3r/GUI/PrintOptionsDialog.hpp | 2 + src/slic3r/GUI/SelectMachine.cpp | 28 ++-- src/slic3r/GUI/SelectMachine.hpp | 2 +- src/slic3r/GUI/StatusPanel.cpp | 44 ++++++- 10 files changed, 232 insertions(+), 116 deletions(-) diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index ffec3279b1..680bcbb6ce 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -73,11 +73,11 @@ AuFile::AuFile(wxWindow *parent, fs::path file_path, wxString file_name, Auxilia } image->Rescale(size.x, size.y); - m_file_bitmap = wxBitmap(*image); + m_file_bitmap.bmp() = wxBitmap(*image); } else { - m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 168); - m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 168); - m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 168); + m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); + m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); + m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); if (m_type == OTHERS) {m_file_bitmap = m_bitmap_txt;} if (m_type == BILL_OF_MATERIALS) { @@ -210,7 +210,7 @@ void AuFile::PaintBackground(wxDC &dc) dc.SetPen(AUFILE_GREY200); dc.SetBrush(AUFILE_GREY200); dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); - dc.DrawBitmap(m_file_bitmap, (size.x - m_file_bitmap.GetSize().x) / 2, (size.y - m_file_bitmap.GetSize().y) / 2); + dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); } } @@ -328,7 +328,7 @@ void AuFile::on_input_enter(wxCommandEvent &evt) wxString new_fullname_path = dir.wstring() + "/" + new_fullname; - fs::path new_dir_path(new_fullname_path); + fs::path new_dir_path(new_fullname_path.c_str()); if (fs::exists(new_dir_path)) existing = true; @@ -540,11 +540,11 @@ void AuFile::msw_rescale() } image->Rescale(size.x, size.y); - m_file_bitmap = wxBitmap(*image); + m_file_bitmap.bmp() = wxBitmap(*image); } else { - m_bitmap_excel = create_scaled_bitmap("placeholder_excel", nullptr, 168); - m_bitmap_pdf = create_scaled_bitmap("placeholder_pdf", nullptr, 168); - m_bitmap_txt = create_scaled_bitmap("placeholder_txt", nullptr, 168); + m_bitmap_excel = ScalableBitmap(this, "placeholder_excel", 168); + m_bitmap_pdf = ScalableBitmap(this, "placeholder_pdf", 168); + m_bitmap_txt = ScalableBitmap(this, "placeholder_txt", 168); if (m_type == OTHERS) { m_file_bitmap = m_bitmap_txt; } if (m_type == BILL_OF_MATERIALS) { m_file_bitmap = m_bitmap_excel; } diff --git a/src/slic3r/GUI/Auxiliary.hpp b/src/slic3r/GUI/Auxiliary.hpp index f2cc491c38..b9ef3332dd 100644 --- a/src/slic3r/GUI/Auxiliary.hpp +++ b/src/slic3r/GUI/Auxiliary.hpp @@ -91,14 +91,14 @@ public: wxString cover_text_left; wxString cover_text_right; wxString cover_text_cover; - wxBitmap m_file_bitmap; + ScalableBitmap m_file_bitmap; ScalableBitmap m_file_cover; ScalableBitmap m_file_edit_mask; ScalableBitmap m_file_delete; - wxBitmap m_bitmap_excel; - wxBitmap m_bitmap_pdf; - wxBitmap m_bitmap_txt; + ScalableBitmap m_bitmap_excel; + ScalableBitmap m_bitmap_pdf; + ScalableBitmap m_bitmap_txt; public: AuFile(wxWindow *parent, fs::path file_path, wxString file_name, AuxiliaryFolderType type, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxTAB_TRAVERSAL); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 27f5c9e5cf..353b46eaa7 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -11,7 +11,6 @@ #include "MsgDialog.hpp" #include "Plater.hpp" #include "GUI_App.hpp" -#include "nlohmann/json.hpp" #include #include #include @@ -21,7 +20,6 @@ #include #include -using namespace nlohmann; namespace pt = boost::property_tree; @@ -259,63 +257,34 @@ wxString HMSItem::get_hms_msg_level_str(HMSMessageLevel level) return ""; } -PRINTER_TYPE MachineObject::parse_printer_type(std::string type_str) +std::string MachineObject::parse_printer_type(std::string type_str) { - if (type_str.compare("3DPrinter-P1") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_P1; - } else if (type_str.compare("3DPrinter-X1") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_X1; + if (type_str.compare("3DPrinter-X1") == 0) { + return "BL-P002"; } else if (type_str.compare("3DPrinter-X1-Carbon") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon; - } - - BOOST_LOG_TRIVIAL(trace) << "unknown printer type: " << type_str; - return PRINTER_TYPE::PRINTER_3DPrinter_UKNOWN; -} - -PRINTER_TYPE MachineObject::parse_iot_printer_type(std::string type_str) -{ - if (type_str.compare("BL-P003") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_P1; - } else if (type_str.compare("BL-P002") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_X1; + return "BL-P001"; } else if (type_str.compare("BL-P001") == 0) { - return PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon; - } - - BOOST_LOG_TRIVIAL(trace) << "unknown printer type: " << type_str; - return PRINTER_TYPE::PRINTER_3DPrinter_UKNOWN; -} - -PRINTER_TYPE MachineObject::parse_preset_printer_type(std::string type_str) -{ - return parse_iot_printer_type(type_str); -} - -std::string MachineObject::get_preset_printer_model_name(PRINTER_TYPE printer_type) -{ - if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_P1) { - return "Bambu Lab P1"; - } else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1) { - return "Bambu Lab X1"; - } else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon) { - return "Bambu Lab X1 Carbon"; + return type_str; + } else if (type_str.compare("BL-P003") == 0) { + return type_str; } else { - return ""; + return DeviceManager::parse_printer_type(type_str); } + return ""; } - +std::string MachineObject::get_preset_printer_model_name(std::string printer_type) +{ + return DeviceManager::get_printer_display_name(printer_type); +} wxString MachineObject::get_printer_type_display_str() { - if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_P1) - return "Bambu Lab P1"; - else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1) - return "Bambu Lab X1"; - else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon) - return "Bambu Lab X1 Carbon"; - return _L("Unknown"); + std::string display_name = get_preset_printer_model_name(printer_type); + if (!display_name.empty()) + return display_name; + else + return _L("Unknown"); } void MachineObject::set_access_code(std::string code) @@ -335,17 +304,6 @@ bool MachineObject::is_lan_mode_printer() return result; } -std::string MachineObject::get_printer_type_string() -{ - if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_P1) - return "3DPrinter-P1"; - else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1) - return "3DPrinter-X1"; - else if (printer_type == PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon) - return "3DPrinter-X1-Carbon"; - return "3DPrinter"; -} - MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string id, std::string ip) :dev_name(name), dev_id(id), @@ -1695,6 +1653,40 @@ bool MachineObject::is_info_ready() return false; } +bool MachineObject::is_function_supported(PrinterFunction func) +{ + std::string func_name; + switch (func) { + case FUNC_MONITORING: + func_name = "FUNC_MONITORING"; + break; + case FUNC_TIMELAPSE: + func_name = "FUNC_TIMELAPSE"; + break; + case FUNC_RECORDING: + func_name = "FUNC_RECORDING"; + break; + case FUNC_FIRSTLAYER_INSPECT: + func_name = "FUNC_FIRSTLAYER_INSPECT"; + break; + case FUNC_SPAGHETTI: + func_name = "FUNC_SPAGHETTI"; + break; + case FUNC_FLOW_CALIBRATION: + func_name = "FUNC_FLOW_CALIBRATION"; + break; + case FUNC_AUTO_LEVELING: + func_name = "FUNC_AUTO_LEVELING"; + break; + case FUNC_CHAMBER_TEMP: + func_name = "FUNC_CHAMBER_TEMP"; + break; + default: + return true; + } + return DeviceManager::is_function_supported(printer_type, func_name); +} + int MachineObject::publish_json(std::string json_str, int qos) { if (is_lan_mode_printer()) { @@ -3058,7 +3050,7 @@ void DeviceManager::parse_user_print_info(std::string body) if (!elem["dev_online"].is_null()) obj->m_is_online = elem["dev_online"].get(); if (elem.contains("dev_model_name") && !elem["dev_model_name"].is_null()) - obj->printer_type = MachineObject::parse_iot_printer_type(elem["dev_model_name"].get()); + obj->printer_type = elem["dev_model_name"].get(); if (!elem["task_status"].is_null()) obj->iot_print_status = elem["task_status"].get(); if (elem.contains("dev_product_name") && !elem["dev_product_name"].is_null()) @@ -3137,4 +3129,67 @@ void DeviceManager::load_last_machine() } } +json DeviceManager::function_table = json::object(); + +std::string DeviceManager::parse_printer_type(std::string type_str) +{ + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("printer_type")) { + return printer["printer_type"].get(); + } + } + } + } + return ""; +} + +std::string DeviceManager::get_printer_display_name(std::string type_str) +{ + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("display_name")) { + return printer["display_name"].get(); + } + } + } + } + return ""; +} + +bool DeviceManager::is_function_supported(std::string type_str, std::string function_name) +{ + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("func")) { + if (printer["func"].contains(function_name)) + return printer["func"][function_name].get(); + } + } + } + } + return true; +} + +bool DeviceManager::load_functional_config(std::string config_file) +{ + std::ifstream json_file(config_file.c_str()); + try { + if (json_file.is_open()) { + json_file >> DeviceManager::function_table; + return true; + } else { + BOOST_LOG_TRIVIAL(error) << "load functional config failed, file = " << config_file; + } + } + catch(...) { + BOOST_LOG_TRIVIAL(error) << "load functional config failed, file = " << config_file; + return false; + } + return true; +} + } // namespace Slic3r diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index e2759981f0..a78f7a1895 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -7,6 +7,7 @@ #include #include #include +#include "nlohmann/json.hpp" #include "libslic3r/ProjectTask.hpp" #include "slic3r/Utils/json_diff.hpp" #include "slic3r/Utils/NetworkAgent.hpp" @@ -32,17 +33,10 @@ inline int correct_filament_temperature(int filament_temp) wxString get_stage_string(int stage); +using namespace nlohmann; namespace Slic3r { -enum PRINTER_TYPE { - PRINTER_3DPrinter_UKNOWN, - PRINTER_3DPrinter_NONE, - PRINTER_3DPrinter_X1_Carbon, // BL-P001 - PRINTER_3DPrinter_X1, // BL-P002 - PRINTER_3DPrinter_P1, // BL-P003 -}; - enum PRINTING_STAGE { PRINTING_STAGE_PRINTING = 0, PRINTING_STAGE_BED_LEVELING, @@ -62,6 +56,18 @@ enum PRINTING_STAGE { PRINTING_STAGE_COUNT }; +enum PrinterFunction { + FUNC_MONITORING = 0, + FUNC_TIMELAPSE, + FUNC_RECORDING, + FUNC_FIRSTLAYER_INSPECT, + FUNC_SPAGHETTI, + FUNC_FLOW_CALIBRATION, + FUNC_AUTO_LEVELING, + FUNC_CHAMBER_TEMP, + FUNC_MAX +}; + enum PrintingSpeedLevel { SPEED_LEVEL_INVALID = 0, @@ -301,10 +307,8 @@ public: /* static members and functions */ static inline int m_sequence_id = 20000; - static PRINTER_TYPE parse_printer_type(std::string type_str); - static PRINTER_TYPE parse_iot_printer_type(std::string type_str); - static PRINTER_TYPE parse_preset_printer_type(std::string type_str); - static std::string get_preset_printer_model_name(PRINTER_TYPE printer_type); + static std::string parse_printer_type(std::string type_str); + static std::string get_preset_printer_model_name(std::string printer_type); static bool is_bbl_filament(std::string tag_uid); typedef std::function UploadedFn; @@ -322,8 +326,8 @@ public: bool has_access_right() { return !access_code.empty(); } void set_access_code(std::string code); bool is_lan_mode_printer(); - PRINTER_TYPE printer_type = PRINTER_3DPrinter_UKNOWN; - std::string get_printer_type_string(); + //PRINTER_TYPE printer_type = PRINTER_3DPrinter_UKNOWN; + std::string printer_type; /* model_id */ wxString get_printer_type_display_str(); std::string product_name; // set by iot service, get /user/print @@ -574,6 +578,7 @@ public: void set_online_state(bool on_off); bool is_online() { return m_is_online; } bool is_info_ready(); + bool is_function_supported(PrinterFunction func); /* Msg for display MsgFn */ @@ -636,6 +641,13 @@ public: // get alive machine std::map get_local_machine_list(); void load_last_machine(); + + static json function_table; + static std::string parse_printer_type(std::string type_str); + static std::string get_printer_display_name(std::string type_str); + static bool is_function_supported(std::string type_str, std::string function_name); + + static bool load_functional_config(std::string config_file); }; } // namespace Slic3r diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index b08509b96d..572215d7d9 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1092,6 +1092,9 @@ void GUI_App::post_init() if (hms_query) hms_query->check_hms_info(); }); + + std::string functional_config_file = Slic3r::resources_dir() + "/config.json"; + DeviceManager::load_functional_config(encode_path(functional_config_file.c_str())); BOOST_LOG_TRIVIAL(info) << "finished post_init"; //BBS: remove the single instance currently diff --git a/src/slic3r/GUI/PrintOptionsDialog.cpp b/src/slic3r/GUI/PrintOptionsDialog.cpp index 2b43c0864d..3c84646e58 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.cpp +++ b/src/slic3r/GUI/PrintOptionsDialog.cpp @@ -75,6 +75,26 @@ void PrintOptionsDialog::update_spaghetti() void PrintOptionsDialog::update_options(MachineObject *obj_) { if (!obj_) return; + if (obj_->is_function_supported(PrinterFunction::FUNC_FIRSTLAYER_INSPECT)) { + text_first_layer->Show(); + m_cb_first_layer->Show(); + } else { + text_first_layer->Hide(); + m_cb_first_layer->Hide(); + } + + if (obj_->is_function_supported(PrinterFunction::FUNC_SPAGHETTI)) { + text_spaghetti->Show(); + m_cb_spaghetti->Show(); + m_cb_spaghetti_print_halt->Show(); + text_spaghetti_print_halt->Show(); + }else { + text_spaghetti->Hide(); + m_cb_spaghetti->Hide(); + m_cb_spaghetti_print_halt->Hide(); + text_spaghetti_print_halt->Hide(); + } + this->Freeze(); m_cb_spaghetti->SetValue(obj_->xcam_spaghetti_detector); m_cb_spaghetti_print_halt->SetValue(obj_->xcam_spaghetti_print_halt); @@ -88,7 +108,7 @@ wxBoxSizer* PrintOptionsDialog::create_settings_group(wxWindow* parent) auto sizer = new wxBoxSizer(wxVERTICAL); auto line_sizer = new wxBoxSizer(wxHORIZONTAL); m_cb_spaghetti = new CheckBox(parent); - auto text_spaghetti = new wxStaticText(parent, wxID_ANY, _L("Spaghetti Detection")); + text_spaghetti = new wxStaticText(parent, wxID_ANY, _L("Spaghetti Detection")); text_spaghetti->SetFont(Label::Body_14); line_sizer->Add(FromDIP(5), 0, 0, 0); line_sizer->Add(m_cb_spaghetti, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); @@ -112,7 +132,7 @@ wxBoxSizer* PrintOptionsDialog::create_settings_group(wxWindow* parent) line_sizer = new wxBoxSizer(wxHORIZONTAL); m_cb_first_layer = new CheckBox(parent); - auto text_first_layer = new wxStaticText(parent, wxID_ANY, _L("First Layer Inspection")); + text_first_layer = new wxStaticText(parent, wxID_ANY, _L("First Layer Inspection")); text_first_layer->SetFont(Label::Body_14); line_sizer->Add(FromDIP(5), 0, 0, 0); line_sizer->Add(m_cb_first_layer, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); diff --git a/src/slic3r/GUI/PrintOptionsDialog.hpp b/src/slic3r/GUI/PrintOptionsDialog.hpp index 21fa1843b1..14fb97e9ca 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.hpp +++ b/src/slic3r/GUI/PrintOptionsDialog.hpp @@ -24,6 +24,8 @@ protected: CheckBox* m_cb_first_layer; CheckBox* m_cb_spaghetti; CheckBox* m_cb_spaghetti_print_halt; + wxStaticText* text_first_layer; + wxStaticText* text_spaghetti; wxStaticText* text_spaghetti_print_halt; wxBoxSizer* create_settings_group(wxWindow* parent); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 31bf025f5a..2c1bec16dc 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1043,26 +1043,18 @@ wxWindow *SelectMachineDialog::create_item_checkbox(wxString title, wxWindow *pa return checkbox; } -void SelectMachineDialog::update_select_layout(PRINTER_TYPE type) +void SelectMachineDialog::update_select_layout(MachineObject *obj) { - if (type == PRINTER_TYPE::PRINTER_3DPrinter_UKNOWN) { - select_bed->Show(); + if (obj && obj->is_function_supported(PrinterFunction::FUNC_FLOW_CALIBRATION)) { select_flow->Show(); - } else if (type == PRINTER_TYPE::PRINTER_3DPrinter_X1) { - select_bed->Show(); - select_flow->Show(); - } else if (type == PRINTER_TYPE::PRINTER_3DPrinter_X1_Carbon) { - select_bed->Show(); - select_flow->Show(); - } else if (type == PRINTER_TYPE::PRINTER_3DPrinter_P1) { - select_bed->Show(); - select_flow->Show(false); - } else if (type == PRINTER_TYPE::PRINTER_3DPrinter_NONE) { - select_bed->Hide(); - select_flow->Hide(); } else { + select_flow->Hide(); + } + + if (obj && obj->is_function_supported(PrinterFunction::FUNC_AUTO_LEVELING)) { select_bed->Show(); - select_flow->Show(); + } else { + select_bed->Hide(); } Fit(); @@ -1753,7 +1745,7 @@ void SelectMachineDialog::update_user_printer() } else { m_printer_last_select = ""; - update_select_layout(PRINTER_TYPE::PRINTER_3DPrinter_NONE); + update_select_layout(nullptr); m_comboBox_printer->SetTextLabel(""); } @@ -1798,7 +1790,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) if (obj) { obj->command_get_version(); dev->set_selected_machine(m_printer_last_select); - update_select_layout(obj->printer_type); + update_select_layout(obj); } else { BOOST_LOG_TRIVIAL(error) << "on_selection_changed dev_id not found"; return; diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 20a33e4544..b41e1a69e0 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -328,7 +328,7 @@ public: ~SelectMachineDialog(); wxWindow *create_item_checkbox(wxString title, wxWindow *parent, wxString tooltip, std::string param); - void update_select_layout(PRINTER_TYPE type); + void update_select_layout(MachineObject *obj); void prepare_mode(); void sending_mode(); void finish_mode(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index fe4fc54acf..00f0644ea5 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1313,14 +1313,41 @@ void StatusPanel::update(MachineObject *obj) } calibration_dlg->update_cali(obj); - if (print_options_dlg == nullptr) { - print_options_dlg = new PrintOptionsDialog(this); - print_options_dlg->update_machine_obj(obj); + + if (obj->is_function_supported(PrinterFunction::FUNC_FIRSTLAYER_INSPECT) + || obj->is_function_supported(PrinterFunction::FUNC_SPAGHETTI)) { + m_options_btn->Show(); + if (print_options_dlg == nullptr) { + print_options_dlg = new PrintOptionsDialog(this); + print_options_dlg->update_machine_obj(obj); + } else { + print_options_dlg->update_machine_obj(obj); + } + print_options_dlg->update_options(obj); } else { - print_options_dlg->update_machine_obj(obj); + m_options_btn->Hide(); } - print_options_dlg->update_options(obj); - + + if (obj->is_function_supported(PrinterFunction::FUNC_TIMELAPSE)) { + m_timelapse_button->Show(); + } else { + m_timelapse_button->Hide(); + } + + if (obj->is_function_supported(PrinterFunction::FUNC_RECORDING)) { + m_recording_button->Show(); + } else { + m_recording_button->Hide(); + } + + if (obj->is_function_supported(PrinterFunction::FUNC_CHAMBER_TEMP)) { + m_tempCtrl_frame->Enable(); + } else { + m_tempCtrl_frame->SetLabel(TEMP_BLANK_STR); + m_tempCtrl_frame->GetTextCtrl()->SetLabel(TEMP_BLANK_STR); + m_tempCtrl_frame->Disable(); + } + update_error_message(); } @@ -2362,6 +2389,11 @@ void StatusPanel::set_default() m_show_ams_group = false; reset_printing_values(); + m_timelapse_button->Show(); + m_recording_button->Show(); + m_tempCtrl_frame->Show(); + m_options_btn->Show(); + reset_temp_misc_control(); m_ams_control->Hide(); m_ams_control_box->Hide(); From 1569909cc3098ee07b0c9dbda2f4eafb9ed6ea8b Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 30 Aug 2022 19:49:04 +0800 Subject: [PATCH 105/137] ENH: refine the guide pages 1. remove editable status of pages 2. refine the user manual text Signed-off-by: yifan.wu Change-Id: I39ca064e15f5c7c58e491b1929eb69e4a6692a08 --- resources/web/data/text.js | 2 +- resources/web/homepage/index.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/web/data/text.js b/resources/web/data/text.js index b4589dc746..e267a7b2ca 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -79,7 +79,7 @@ var LangText={ "t84":"3, Delete all files under the plug-in directory", "t85":"4, Reopen Bambu studio and install the plug-in again", "t86":"Close", - "t87":"User manual", + "t87":"User Manual", "t88":"clear", "t89":"show in explorer" }, diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html index bb729adc70..9f562225b8 100644 --- a/resources/web/homepage/index.html +++ b/resources/web/homepage/index.html @@ -171,7 +171,7 @@
Project Based Workflow
Bambu Studio has put forward a leading workflow to truly achieve an “all in one” project. Based on the mainstream 3MF project format, it provides a series of revolutionary new features, such as Multi-Plate Support, a Project Resource Manager, and Assembly/Part View. It greatly improves the efficiency of both creators and regular users.
-
+
High Speed Print at Quality
It is challenging to print at high speed while maintaining high quality. Bambu Studio makes this happen. @@ -193,7 +193,7 @@
Remote Control & Monitoring
We support sending G-code to your printer over WAN/LAN network, controlling & monitoring every aspect of your 3D printer and printing jobs, and updating firmware over the air. If you have more than one printer, you can easily switch between them in the device list.
-
+
STEP Format
Compared with STL, STEP brings more effective information. Thanks to the high accuracy of STEP, a lot of extrusion paths can be generated as arcs. STEP also includes the assembly relationship of each parts of a model, which can be used to identify the exterior surface and restore the assembly view after a model is split.
From 83010a0d85912d31fa332554cd3c937ee9adf18a Mon Sep 17 00:00:00 2001 From: "xiangdong.yang" Date: Tue, 30 Aug 2022 11:55:53 +0800 Subject: [PATCH 106/137] ENH: Optimize the overall Gizmo layout Change-Id: Ic773fa45d163d598f4510d981c11d4f9f5858495 --- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 32 ++++++++-------- .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 38 ++++++++++--------- src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp | 31 +++++---------- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 7 ++-- src/slic3r/GUI/ImGuiWrapper.cpp | 3 +- 5 files changed, 50 insertions(+), 61 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 35ff22d6b6..5aa5f2c6b9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -209,6 +209,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: + const float space_size = m_imgui->get_style_scaling() * 8; const float clipping_slider_left = m_imgui->calc_text_size(m_desc.at("clipping_of_view")).x + m_imgui->scaled(1.5f); const float cursor_slider_left = m_imgui->calc_text_size(m_desc.at("cursor_size")).x + m_imgui->scaled(1.5f); const float gap_fill_slider_left = m_imgui->calc_text_size(m_desc.at("gap_fill")).x + m_imgui->scaled(1.5f); @@ -220,7 +221,6 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float tips_width = m_imgui->calc_text_size(_L("Auto support threshold angle: ") + " 90 ").x + m_imgui->scaled(1.5f); const float minimal_slider_width = m_imgui->scaled(4.f); - float slider_width_times = 1.5; float caption_max = 0.f; float total_text_max = 0.f; @@ -233,12 +233,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float sliders_left_width = std::max(std::max(cursor_slider_left, clipping_slider_left), std::max(highlight_slider_left, gap_fill_slider_left)); const float slider_icon_width = m_imgui->get_slider_icon_size().x; - float window_width = minimal_slider_width + sliders_left_width + slider_icon_width; const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; - window_width = std::max(window_width, total_text_max); - window_width = std::max(window_width, buttons_width); - window_width = std::max(window_width, tips_width); + const float sliders_width = m_imgui->scaled(7.0f); + const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_left_width + sliders_width - space_size; float drag_pos_times = 0.7; @@ -294,9 +292,9 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("cursor_size")); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); m_imgui->bbl_slider_float_style("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##cursor_radius_input", &m_cursor_radius, 0.05f, 0.0f, 0.0f, "%.2f"); } else if (m_current_tool == ImGui::SphereButtonIcon) { @@ -306,9 +304,9 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("cursor_size")); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); m_imgui->bbl_slider_float_style("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##cursor_radius_input", &m_cursor_radius, 0.05f, 0.0f, 0.0f, "%.2f"); } else if (m_current_tool == ImGui::FillButtonIcon) { @@ -319,13 +317,13 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l m_imgui->text(m_desc.at("smart_fill_angle")); std::string format_str = std::string("%.f") + I18N::translate_utf8("", "Face angle threshold, placed after the number with no whitespace in between."); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); if (m_imgui->bbl_slider_float_style("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true)) for (auto& triangle_selector : m_triangle_selectors) { triangle_selector->seed_fill_unselect_all_triangles(); triangle_selector->request_update_render_data(); } - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##smart_fill_angle_input", &m_smart_fill_angle, 0.05f, 0.0f, 0.0f, "%.2f"); } else if (m_current_tool == ImGui::GapFillIcon) { @@ -335,10 +333,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["gap_area"] + ":"); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); std::string format_str = std::string("%.2f") + I18N::translate_utf8("", "Triangle patch area threshold,""triangle patch will be merged to neighbor if its area is less than threshold"); m_imgui->bbl_slider_float_style("##gap_area", &TriangleSelectorPatch::gap_area, TriangleSelectorPatch::GapAreaMin, TriangleSelectorPatch::GapAreaMax, format_str.data(), 1.0f, true); - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##gap_area_input", &TriangleSelectorPatch::gap_area, 0.05f, 0.0f, 0.0f, "%.2f"); } @@ -356,7 +354,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::SetCursorPosY(slider_start_position_y); std::string format_str = std::string("%.f"); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); wxString tooltip = _L("Highlight faces according to overhang angle."); if (m_imgui->bbl_slider_float_style("##angle_threshold_deg", &m_highlight_by_angle_threshold_deg, 0.f, 90.f, format_str.data(), 1.0f, true, tooltip)) { m_parent.set_slope_normal_angle(90.f - m_highlight_by_angle_threshold_deg); @@ -376,7 +374,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l } ImGui::EndTooltip(); } - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##angle_threshold_deg_input", &m_highlight_by_angle_threshold_deg, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -387,10 +385,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool b_bbl_slider_float = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - drag_pos_times * slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_drag_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 9fda59a991..ed717f0cdb 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -331,7 +331,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: - float space_size = m_imgui->get_style_scaling() * 8; + const float space_size = m_imgui->get_style_scaling() * 8; const float clipping_slider_left = m_imgui->calc_text_size(m_desc.at("clipping_of_view")).x + m_imgui->scaled(1.5f); const float cursor_slider_left = m_imgui->calc_text_size(m_desc.at("cursor_size")).x + m_imgui->scaled(1.5f); const float smart_fill_slider_left = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); @@ -369,8 +369,10 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott window_width = std::max(window_width, buttons_width); window_width = std::max(window_width, max_filament_items_per_line * filament_item_width + +m_imgui->scaled(0.5f)); + const float sliders_width = m_imgui->scaled(7.0f); + const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_width - space_size; + const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; - float slider_width_times = 1.5; ImDrawList * draw_list = ImGui::GetWindowDrawList(); ImVec2 pos = ImGui::GetCursorScreenPos(); static float color_button_high = 25.0; @@ -490,9 +492,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("cursor_size")); ImGui::SameLine(circle_max_width); - ImGui::PushItemWidth(window_width - circle_max_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); m_imgui->bbl_slider_float_style("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + circle_max_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##cursor_radius_input", &m_cursor_radius, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -503,9 +505,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(circle_max_width); - ImGui::PushItemWidth(window_width - circle_max_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool slider_clp_dist = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + circle_max_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -520,9 +522,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(clipping_slider_left); - ImGui::PushItemWidth(window_width - clipping_slider_left - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool slider_clp_dist = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + clipping_slider_left); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -539,13 +541,13 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott std::string format_str = std::string("%.f") + I18N::translate_utf8("°", "Face angle threshold," "placed after the number with no whitespace in between."); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); if (m_imgui->bbl_slider_float_style("##smart_fill_angle", &m_smart_fill_angle, SmartFillAngleMin, SmartFillAngleMax, format_str.data(), 1.0f, true)) for (auto &triangle_selector : m_triangle_selectors) { triangle_selector->seed_fill_unselect_all_triangles(); triangle_selector->request_update_render_data(); } - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + sliders_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##smart_fill_angle_input", &m_smart_fill_angle, 0.05f, 0.0f, 0.0f, "%.2f"); } else { @@ -559,9 +561,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool slider_clp_dist = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + sliders_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -573,10 +575,10 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["height_range"] + ":"); ImGui::SameLine(height_max_width); - ImGui::PushItemWidth(window_width - height_max_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); std::string format_str = std::string("%.2f") + I18N::translate_utf8("mm", "Heigh range," "Facet in [cursor z, cursor z + height] will be selected."); m_imgui->bbl_slider_float_style("##cursor_height", &m_cursor_height, CursorHeightMin, CursorHeightMax, format_str.data(), 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + height_max_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##cursor_height_input", &m_cursor_height, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -587,9 +589,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(height_max_width); - ImGui::PushItemWidth(window_width - height_max_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool slider_clp_dist = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + height_max_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -601,10 +603,10 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["gap_area"] + ":"); ImGui::SameLine(gap_area_slider_left); - ImGui::PushItemWidth(window_width - gap_area_slider_left - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); std::string format_str = std::string("%.2f") + I18N::translate_utf8("", "Triangle patch area threshold,""triangle patch will be merged to neighbor if its area is less than threshold"); m_imgui->bbl_slider_float_style("##gap_area", &TriangleSelectorPatch::gap_area, TriangleSelectorPatch::GapAreaMin, TriangleSelectorPatch::GapAreaMax, format_str.data(), 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width + gap_area_slider_left); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##gap_area_input", &TriangleSelectorPatch::gap_area, 0.05f, 0.0f, 0.0f, "%.2f"); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 5e2c280864..a1bdd80dd4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -178,17 +178,11 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: + const float space_size = m_imgui->get_style_scaling() * 8; const float clipping_slider_left = std::max(m_imgui->calc_text_size(m_desc.at("clipping_of_view")).x, m_imgui->calc_text_size(m_desc.at("reset_direction")).x) + m_imgui->scaled(1.5f); const float cursor_size_slider_left = m_imgui->calc_text_size(m_desc.at("cursor_size")).x + m_imgui->scaled(1.f); - - const float cursor_type_radio_left = m_imgui->calc_text_size(m_desc["cursor_type"]).x + m_imgui->scaled(1.f); - const float cursor_type_radio_sphere = m_imgui->calc_text_size(m_desc["sphere"]).x + m_imgui->scaled(2.5f); - const float cursor_type_radio_circle = m_imgui->calc_text_size(m_desc["circle"]).x + m_imgui->scaled(2.5f); - - const float button_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.f); - const float minimal_slider_width = m_imgui->scaled(4.f); const float empty_button_width = m_imgui->calc_button_size("").x; float caption_max = 0.f; @@ -197,19 +191,12 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) caption_max = std::max(caption_max, m_imgui->calc_text_size(m_desc[t + "_caption"]).x); total_text_max = std::max(total_text_max, m_imgui->calc_text_size(m_desc[t]).x); } - total_text_max += caption_max + m_imgui->scaled(1.f); - caption_max += m_imgui->scaled(1.f); - float slider_width_times = 1.5; + const float sliders_left_width = std::max(cursor_size_slider_left, clipping_slider_left); -#if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT const float slider_icon_width = m_imgui->get_slider_icon_size().x; - float window_width = minimal_slider_width + sliders_left_width + slider_icon_width; -#else - float window_width = minimal_slider_width + sliders_left_width; -#endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT - window_width = std::max(window_width, total_text_max); - window_width = std::max(window_width, button_width); - window_width = std::max(window_width, cursor_type_radio_left + cursor_type_radio_sphere + cursor_type_radio_circle); + + const float sliders_width = m_imgui->scaled(7.0f); + const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_left_width + sliders_width - space_size; const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; @@ -268,9 +255,9 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(m_desc.at("cursor_size")); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); m_imgui->bbl_slider_float_style("##cursor_radius", &m_cursor_radius, CursorRadiusMin, CursorRadiusMax, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##cursor_radius_input", &m_cursor_radius, 0.05f, 0.0f, 0.0f, "%.2f"); @@ -280,10 +267,10 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) auto clp_dist = float(m_c->object_clipper()->get_position()); ImGui::SameLine(sliders_left_width); - ImGui::PushItemWidth(window_width - sliders_left_width - slider_width_times * slider_icon_width); + ImGui::PushItemWidth(sliders_width); bool slider_clp_dist = m_imgui->bbl_slider_float_style("##clp_dist", &clp_dist, 0.f, 1.f, "%.2f", 1.0f, true); - ImGui::SameLine(window_width - slider_icon_width); + ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##clp_dist_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); if (slider_clp_dist || b_clp_dist_input) { m_c->object_clipper()->set_position(clp_dist, true); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 7d8e386131..61763b1970 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -110,7 +110,7 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) float caption_size = std::max(std::max(font_cap, size_cap), std::max(thickness_cap, input_cap)) + space_size + ImGui::GetStyle().WindowPadding.x; float input_text_size = m_imgui->scaled(12.0f); - float button_size = m_imgui->scaled(1.4f); + float button_size = ImGui::GetFrameHeight(); float input_size = input_text_size - button_size * 2 - ImGui::GetStyle().ItemSpacing.x * 4; ImTextureID normal_B = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TEXT_B); @@ -158,8 +158,8 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) ImGui::EndCombo(); } - ImGui::AlignTextToFramePadding(); pop_combo_style(); + ImGui::AlignTextToFramePadding(); m_imgui->text(_L("Size")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(input_size); @@ -168,10 +168,11 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) ImGui::SameLine(); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0.0,0.0}); ImGui::BBLImageButton(normal_B,press_B_hover,press_B_press,{button_size,button_size},m_bold); ImGui::SameLine(); ImGui::BBLImageButton(normal_T,press_T_hover,press_T_press,{button_size,button_size},m_italic); - ImGui::PopStyleVar(); + ImGui::PopStyleVar(2); ImGui::AlignTextToFramePadding(); m_imgui->text(_L("Thickness")); diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 55c29b9d40..b78cacde0b 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -1643,6 +1643,7 @@ void ImGuiWrapper::push_toolbar_style(const float scale) ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 10.0f) * scale); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 3.0f * scale); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 2.0f * scale); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f) * scale); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(50/255.0f, 58/255.0f, 61/255.0f, 1.00f)); // 1 ImGui::PushStyleColor(ImGuiCol_WindowBg, ImGuiWrapper::COL_WINDOW_BG); // 2 @@ -1665,7 +1666,7 @@ void ImGuiWrapper::pop_toolbar_style() { // size in push toolbar style ImGui::PopStyleColor(15); - ImGui::PopStyleVar(5); + ImGui::PopStyleVar(6); } void ImGuiWrapper::push_menu_style(const float scale) From b1e934c71b1cfa496350b503eb6ea767f939e689 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 30 Aug 2022 20:22:08 +0800 Subject: [PATCH 107/137] NEW: add printer config file Change-Id: I2683338ede7ff48c3ee5936c422574d6a588635d --- resources/config.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 resources/config.json diff --git a/resources/config.json b/resources/config.json new file mode 100644 index 0000000000..767235566b --- /dev/null +++ b/resources/config.json @@ -0,0 +1,14 @@ +{ + "printers": [ + { + "display_name": "Bambu Lab X1", + "model_id": "BL-P002", + "printer_type": "3DPrinter-X1" + }, + { + "display_name": "Bambu Lab X1 Carbon", + "model_id": "BL-P001", + "printer_type": "3DPrinter-X1-Carbon" + } + ] +} From cd1daa66a0618afb2f06bb2dd25cf682b87bb998 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 30 Aug 2022 14:43:18 +0800 Subject: [PATCH 108/137] FIX: languge text of Media file panel & import/export configs Change-Id: I4519fd34329e045f2ef76933d4d7169a68a5c957 --- bbl/i18n/BambuStudio.pot | 159 +++- bbl/i18n/de/BambuStudio_de.po | 929 +++++++++++---------- bbl/i18n/en/BambuStudio_en.po | 679 ++++++++------- bbl/i18n/es/BambuStudio_es.po | 661 ++++++++------- bbl/i18n/fr/BambuStudio_fr.po | 296 ++++--- bbl/i18n/hu/BambuStudio_hu.po | 1196 +++++++++++---------------- bbl/i18n/list.txt | 3 + bbl/i18n/nl/BambuStudio_nl.po | 629 ++++++++------ bbl/i18n/sv/BambuStudio_sv.po | 775 +++++++++-------- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 278 +++++-- resources/i18n/de/BambuStudio.mo | Bin 161791 -> 160175 bytes resources/i18n/en/BambuStudio.mo | Bin 148579 -> 148714 bytes resources/i18n/es/BambuStudio.mo | Bin 162532 -> 160882 bytes resources/i18n/fr/BambuStudio.mo | Bin 162738 -> 162810 bytes resources/i18n/hu/BambuStudio.mo | Bin 164253 -> 120524 bytes resources/i18n/nl/BambuStudio.mo | Bin 160368 -> 159906 bytes resources/i18n/sv/BambuStudio.mo | Bin 151624 -> 151016 bytes resources/i18n/zh_cn/BambuStudio.mo | Bin 149534 -> 151107 bytes 18 files changed, 3092 insertions(+), 2513 deletions(-) diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index 38a3bfa51a..41a2718628 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -336,6 +336,9 @@ msgstr "" msgid "Perform Recognition" msgstr "" +msgid "Clipping of view" +msgstr "" + msgid "Reset direction" msgstr "" @@ -1213,6 +1216,9 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" msgstr "" @@ -2040,6 +2046,15 @@ msgstr "" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "" + +msgid "Online" +msgstr "" + +msgid "Offline" +msgstr "" + msgid "Application is closing" msgstr "" @@ -2061,6 +2076,9 @@ msgstr "" msgid "Project" msgstr "" +msgid "Debug" +msgstr "" + msgid "Slice" msgstr "" @@ -2098,6 +2116,9 @@ msgstr "" msgid "&About %s" msgstr "" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2172,9 +2193,24 @@ msgstr "" msgid "Load a model" msgstr "" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "" @@ -2184,6 +2220,12 @@ msgstr "" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "" @@ -2296,7 +2338,38 @@ msgstr "" msgid "&Help" msgstr "" -msgid "Save configuration as:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" msgstr "" msgid "File is missing" @@ -2342,6 +2415,58 @@ msgstr "" msgid "Load failed [%d]!" msgstr "" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "" + msgid "Speed:" msgstr "" @@ -2366,9 +2491,6 @@ msgstr "" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "" @@ -2447,9 +2569,6 @@ msgstr "" msgid "Failed to connect to the printer" msgstr "" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "" @@ -2483,9 +2602,6 @@ msgstr "" msgid "%s information" msgstr "" -msgid "Download" -msgstr "" - msgid "Skip" msgstr "" @@ -2706,7 +2822,7 @@ msgstr "" msgid "Loading file: %s" msgstr "" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2736,7 +2852,7 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" +msgid "the 3mf is not compatible, load geometry data only!" msgstr "" msgid "Incompatible 3mf" @@ -3250,12 +3366,6 @@ msgstr "" msgid "Simply switch to \"%1%\"" msgstr "" -msgid "Online" -msgstr "" - -msgid "Offline" -msgstr "" - msgid "My Device" msgstr "" @@ -3748,9 +3858,6 @@ msgstr "" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -5498,6 +5605,9 @@ msgstr "" msgid "Back" msgstr "" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "" @@ -6002,10 +6112,7 @@ msgstr "" msgid "Empty layers around bottom are replaced by nearest normal layers." msgstr "" -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" msgid "Slicing mesh" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index a383eceaa3..67d8922bb7 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,13 +2,16 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.1\n" msgid "Supports Painting" msgstr "Supports aufmalen" @@ -74,7 +77,7 @@ msgid "Sphere" msgstr "Kugel" msgid "Fill" -msgstr "Ausfüllen" +msgstr "Fill" msgid "Gap Fill" msgstr "" @@ -96,9 +99,9 @@ msgid "" "Filament count exceeds the maximum number that painting tool supports. only " "the first %1% filaments will be available in painting tool." msgstr "" -"Die Anzahl der Filamente übersteigt die maximale Anzahl, die das Malwerkzeug " -"unterstützt. Nur die ersten %1% der Filamente werden im Malwerkzeug " -"verfügbar sein." +"Die Anzahl der Materialien übersteigt die maximale Anzahl, die das " +"Malwerkzeug unterstützt. Nur die ersten %1% der Materialien werden im " +"Malwerkzeug verfügbar sein." msgid "Color Painting" msgstr "Farben malen" @@ -116,7 +119,7 @@ msgid "Key 1~9" msgstr "Schlüssel 1~9" msgid "Choose filament" -msgstr "Filament wählen" +msgstr "Wähle Material" msgid "Edge detection" msgstr "Kantenerkennung" @@ -125,7 +128,7 @@ msgid "Triangles" msgstr "Dreiecke" msgid "Filaments" -msgstr "Filamente" +msgstr "Materialien" msgid "Brush" msgstr "Pinsel" @@ -143,17 +146,17 @@ msgid "Shortcut Key " msgstr "Shortcut Taste " msgid "Triangle" -msgstr "Dreieck" +msgstr "Triangle" msgid "Height Range" -msgstr "Höhenreichweite" +msgstr "Height Range" msgid "Remove painted color" msgstr "Gemalte Farbe entfernen" #, boost-format msgid "Painted using: Filament %1%" -msgstr "Gemalt mit: Filament %1%" +msgstr "Gemalt mit: Material %1%" msgid "Move" msgstr "Bewegen" @@ -186,7 +189,7 @@ msgid "Position" msgstr "Position" msgid "Rotation" -msgstr "Drehung" +msgstr "Rotation" msgid "Scale ratios" msgstr "Skalierungsverhältnisse" @@ -240,7 +243,7 @@ msgid "Movement:" msgstr "Bewegung:" msgid "Rotation:" -msgstr "Drehung:" +msgstr "Rotation:" msgid "Height:" msgstr "Höhe:" @@ -301,7 +304,7 @@ msgid "High" msgstr "Hoch" msgid "Medium" -msgstr "Mittel" +msgstr "Medium" msgid "Low" msgstr "Niedrig" @@ -330,10 +333,13 @@ msgid "Operation already cancelling. Please wait few seconds." msgstr "Operation wird bereits abgebrochen. Bitte warten Sie einige Sekunden." msgid "Face recognition" -msgstr "Gesichtserkennung" +msgstr "Face recognition" msgid "Perform Recognition" -msgstr "Erkennung durchführen" +msgstr "Perform Recognition" + +msgid "Clipping of view" +msgstr "" msgid "Reset direction" msgstr "" @@ -405,7 +411,7 @@ msgid "Process" msgstr "Prozess" msgid "Filament" -msgstr "Filament" +msgstr "Material" msgid "Machine" msgstr "Maschine" @@ -495,7 +501,7 @@ msgid "This is the newest version." msgstr "Das ist die aktuellste Version." msgid "Info" -msgstr "Infos" +msgstr "Info" msgid "Loading user presets..." msgstr "Nutzervoreistellungen laden..." @@ -541,8 +547,8 @@ msgid "" "The version of Bambu studio is too low and needs to be updated to the latest " "version before it can be used normally" msgstr "" -"Die Version von Bambu Studio ist zu niedrig und muss auf die neueste Version " -"aktualisiert werden, bevor sie normal verwendet werden kann" +"The version of Bambu Studio is too low and needs to be updated to the latest " +"version before it can be used normally" msgid "Login information expired. Please login again." msgstr "Login abgelaufen. Bitte neu einloggen." @@ -551,7 +557,7 @@ msgid "Loading" msgstr "Lade" msgid "Loading user preset" -msgstr "Benutzervoreinstellung wird geladen" +msgstr "Loading user preset" msgid "Switching application language" msgstr "Wechsel der Sprache" @@ -569,7 +575,7 @@ msgid "Select a G-code file:" msgstr "Wähle eine G-Code Datei:" msgid "Bambu Studio GUI initialization failed" -msgstr "Initialisierung der Bambu Studio GUI ist fehlgeschlagen" +msgstr "Bambu Studio GUI initialization failed" #, boost-format msgid "Fatal error, exception catched: %1%" @@ -582,7 +588,7 @@ msgid "Shell" msgstr "Schale" msgid "Infill" -msgstr "Füllung" +msgstr "Infill" msgid "Support" msgstr "Support" @@ -606,7 +612,7 @@ msgid "Bottom Minimum Shell Thickness" msgstr "Minimale Dicke der unteren Schichten" msgid "Ironing" -msgstr "glätten" +msgstr "Ironing" msgid "Fuzzy Skin" msgstr "Fuzzy Skin" @@ -693,17 +699,17 @@ msgid "Reload items" msgstr "Elemente neu laden" msgid "Change filament" -msgstr "Filament wechseln" +msgstr "Material wechseln" msgid "Set filament for selected items" -msgstr "Filament für ausgewählte Elemente festlegen" +msgstr "Material für ausgewählte Objekte festlegen" msgid "Default" msgstr "Standard" #, c-format, boost-format msgid "Filament %d" -msgstr "Filament %d" +msgstr "Material %d" msgid "active" msgstr "aktiv" @@ -837,10 +843,10 @@ msgid "Edit print parameters for a single object" msgstr "Druckparameter für ein einzelnes Objekt bearbeiten" msgid "Change Filament" -msgstr "Filament wechseln" +msgstr "Material ändern" msgid "Set Filament for selected items" -msgstr "Filament für ausgewählte Elemente festlegen" +msgstr "Materialfür ausgewählte Teile festlegen" msgid "current" msgstr "aktuell" @@ -1042,7 +1048,7 @@ msgid "Wall loops" msgstr "Wandschleifen" msgid "Infill density(%)" -msgstr "Füllungsdichte(%)" +msgstr "Infill-Dichte(%)" msgid "Auto Brim" msgstr "Automatische Umrandung" @@ -1075,16 +1081,16 @@ msgid "Heat the nozzle to target temperature" msgstr "" msgid "Cut filament" -msgstr "Material abschneiden" +msgstr "Material schneiden" msgid "Pull back current filament" -msgstr "Ziehen Sie das aktuelle Filament zurück" +msgstr "Aktuelles Material zurückziehen" msgid "Push new filament into extruder" msgstr "" msgid "Purge old filament" -msgstr "Altes Filament entfernen" +msgstr "Purge old filament" msgid "?" msgstr "?" @@ -1093,13 +1099,13 @@ msgid "Empty" msgstr "Leer" msgid "Click the pencil icon to edit the filament." -msgstr "Das Stift-Symbol drücken um das Filament zu bearbeiten." +msgstr "Das Stift-Symbol drücken um das Material zu bearbeiten." msgid "Load Filament" -msgstr "Laden" +msgstr "Load" msgid "Unload Filament" -msgstr "Entladen" +msgstr "Unload" msgid "Tips" msgstr "Tipps" @@ -1126,7 +1132,7 @@ msgid "" "load or unload filiament." msgstr "" "Wählen Sie einen AMS-Slot und drücken Sie dann die Taste \"Laden\" oder " -"\"Entladen\", um automatisch Filament zu laden oder zu entladen." +"\"Entladen\", um automatisch Material zu laden oder zu entladen." msgid "Edit" msgstr "Bearbeiten" @@ -1209,65 +1215,62 @@ msgid "Exception" msgstr "Ausnahme" msgid "Logging in" -msgstr "Einloggen" +msgstr "Logging in" msgid "Login failed" -msgstr "Anmeldung fehlgeschlagen" +msgstr "Login failed" msgid "The region parameter is incorrrect" -msgstr "Der Regionsparameter ist falsch." +msgstr "The region parameter is incorrrect." msgid "Failure of printer login" -msgstr "Druckeranmeldung fehlgeschlagen" +msgstr "Printer login failure" msgid "Failed to get ticket" -msgstr "Ticket konnte nicht abgerufen werden" +msgstr "Failed to get ticket" msgid "User authorization timeout" -msgstr "Zeitüberschreitung der Benutzerautorisierung" +msgstr "User authorization timeout" msgid "Failure of bind" -msgstr "Bindungsfehler" +msgstr "Binding failure" msgid "Unknown Failure" -msgstr "Unbekannter Fehler" +msgstr "Unknown Failure" msgid "Abnormal print file data. Please slice again" -msgstr "Abnormale Daten in der Druckdatei. Bitte slicen Sie erneut" +msgstr "Abnormal print file data. Please slice again" msgid "Task canceled" -msgstr "Auftrag abgebrochen" +msgstr "Task canceled" msgid "Upload task timed out. Please check the network problem and try again" -msgstr "" -"Upload-Aufgabe wurde abgebrochen. Bitte überprüfen Sie das Netzwerkproblem " -"und versuchen Sie es erneut" +msgstr "Upload task timed out. Please check the network and try again" msgid "Cloud service connection failed. Please try again." -msgstr "" -"Die Verbindung zum Cloud-Dienst ist fehlgeschlagen. Bitte versuche es erneut." +msgstr "Cloud service connection failed. Please try again." msgid "Print file not found, please slice again" -msgstr "Druckdatei nicht gefunden, bitte noch einmal probieren (erneut Slicen)" +msgstr "Print file not found, please slice again" msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again" msgstr "" -"Die Druckdatei überschreitet die maximal zulässige Größe (1 GB). Bitte " -"vereinfachen Sie das Modell und slicen Sie es erneut" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again" msgid "Failed uploading print file" -msgstr "Fehler beim Hochladen der Druckdatei" +msgstr "Failed uploading print file" msgid "Wrong Access code" -msgstr "Falscher Zugangscode" +msgstr "Wrong Access code" msgid "Sending print job over LAN" -msgstr "Druckauftrag über LAN senden" +msgstr "Sending print job over LAN" msgid "Sending print job through cloud service" -msgstr "Druckauftrag über den Cloud-Dienst senden" +msgstr "Sending print job through cloud service" msgid "Service Unavailable" msgstr "" @@ -1275,8 +1278,11 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" -msgstr "Druckkonfiguration senden" +msgstr "Sending print configuration" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %s s" @@ -1313,7 +1319,7 @@ msgid "License" msgstr "Lizenz" msgid "Bambu Studio is licensed under " -msgstr "Bambu Studio ist lizenziert unter " +msgstr "Bambu Studio is licensed under " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, Version 3" @@ -1322,18 +1328,18 @@ msgid "" "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " "by Alessandro Ranellucci and the RepRap community" msgstr "" -"Bambu Studio basiert auf PrusaSlicer von Prusa Research, das von Slic3r von " -"Alessandro Ranellucci und der RepRap Community stammt." +"Bambu Studio is based on PrusaSlicer by Prusa Research, which is based on " +"Slic3r by Alessandro Ranellucci and the RepRap community" msgid "Libraries" -msgstr "Bibliotheken" +msgstr "Libraries" msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Diese Software verwendet Open-Source-Komponenten, deren Urheberrechte und " -"andere Eigentumsrechte den jeweiligen Eigentümern gehören." +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" #, c-format, boost-format msgid "About %s" @@ -1365,12 +1371,14 @@ msgid "AMSMaterialsSetting" msgstr "" msgid "Colour" -msgstr "Farbe" +msgstr "Color" msgid "" "Nozzle\n" "Temperature" -msgstr "Druckdüsentemperatur" +msgstr "" +"Nozzle\n" +"Temperature" msgid "max" msgstr "max" @@ -1380,7 +1388,7 @@ msgstr "min" #, boost-format msgid "The input value should be greater than %1% and less than %2%" -msgstr "Der Eingabewert sollte größer als %1% und kleiner als %2% sein" +msgstr "The input value should be greater than %1% and less than %2%" msgid "SN" msgstr "SN" @@ -1399,51 +1407,49 @@ msgid "" msgstr "" msgid "Insertion update" -msgstr "Update einfügen" +msgstr "Insertion update" msgid "" "The AMS will automatically read the filament information when inserting a " "new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"Die AMS liest automatisch die Filamentinformationen, wenn ein neues Bambu " -"Lab Filament eingesetzt wird. Dies dauert etwa 20 Sekunden." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament spool. This takes about 20 seconds." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" -"Hinweis: Wenn während des Drucks neues Filament eingelegt wird, liest das " -"AMS nicht automatisch Informationen ein, bis der Druckvorgang abgeschlossen " -"ist." +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing has finished." msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"Hinweis: Wenn während des Drucks neues Filament eingelegt wird, liest das " -"AMS nicht automatisch Informationen ein, bis der Druckvorgang abgeschlossen " -"ist." +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." msgid "Power on update" -msgstr "Update beim einschalten" +msgstr "Power on update" msgid "" "The AMS will automatically read the information of inserted filament on " "start-up. It will take about 1 minute.The reading process will roll filament " "spools." msgstr "" -"Das AMS liest beim Einschalten automatisch die Informationen über das " -"eingelegte Filament. Der Lesevorgang dauert ca. 1 Minute und lässt die " -"Filamentspulen rotieren." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will rotate the " +"filament spools." msgid "" "The AMS will not automatically read information from inserted filament " "during startup and will continue to use the information recorded before the " "last shutdown." msgstr "" -"Das AMS liest beim Start nicht automatisch Informationen vom eingesetzten " -"Filament und verwendet weiterhin die vor dem letzten Herunterfahren " -"aufgezeichneten Informationen." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgid "File" msgstr "Datei" @@ -1621,7 +1627,7 @@ msgid "" "This may cause nozzle blocked and printing failure" msgstr "" "Die Temperatur des Druckbett ist höher als die Verglasungstemperatur dieses " -"Filaments.\n" +"Materials.\n" "Dies kann zu einer Verstopfung der Düse und zu Druckfehlern führen" msgid "" @@ -1688,9 +1694,10 @@ msgid "" "Spiral mode only works when wall loops is 1, \n" "support is disabled, top shell layers is 0 and sparse infill density is 0\n" msgstr "" -"Der Spiralmodus funktioniert nur, wenn die Wand 1 Linienweite breit sind, \n" -"Support ist deaktiviert, die oberen Schalenschichten sind 0 und die Dichte " -"der Füllung ist 0\n" +"Der Spiralmodus funktioniert nur, wenn die Wandschleifen 1 Linienweite breit " +"sind, \n" +"Support idt deaktiviert, die oberen Schalenschichten sind 0 und die Dichte " +"der dünnen Füllung ist 0\n" msgid "" "Change these settings automatically? \n" @@ -1752,67 +1759,67 @@ msgstr "" "zurück\n" msgid "Auto bed leveling" -msgstr "Automatische Druckbettnivellierung" +msgstr "Auto bed leveling" msgid "Heatbed preheating" -msgstr "Heizbett vorheitzen" +msgstr "Heatbed preheating" msgid "Sweeping XY mech mode" -msgstr "Säubern von XY mechanisch Modus" +msgstr "Sweeping XY mech mode" msgid "Changing filament" -msgstr "Filament wechseln" +msgstr "Changing filament" msgid "M400 pause" -msgstr "M400 Pause" +msgstr "M400 pause" msgid "Paused due to filament runout" -msgstr "Angehalten wegen Filament-Auslauf" +msgstr "Paused due to filament runout" msgid "Heating hotend" -msgstr "Heizen des Hotend" +msgstr "Heating hotend" msgid "Calibrating extrusion" -msgstr "Kalibrierung der Extrusion" +msgstr "Calibrating extrusion" msgid "Scanning bed surface" -msgstr "Scan der Druckbettoberfläche" +msgstr "Scanning bed surface" msgid "Inspecting first layer" -msgstr "Überprüfung der ersten Schicht" +msgstr "Inspecting first layer" msgid "Identifying build plate type" -msgstr "Identifikation der Bauplatte" +msgstr "Identifying build plate type" msgid "Calibrating Micro Lidar" -msgstr "Kalibrierung des Mikro-Lidars" +msgstr "Calibrating Micro Lidar" msgid "Homing toolhead" -msgstr "Homing des Werkzeugkopfes" +msgstr "Homing toolhead" msgid "Cleaning nozzle tip" -msgstr "Reinigen der Druckdüsenspitze" +msgstr "Cleaning nozzle tip" msgid "Checking extruder temperature" -msgstr "Überprüfen der Extruder Temperatur" +msgstr "Checking extruder temperature" msgid "Printing was paused by the user" -msgstr "Der Druckvorgang wurde vom Benutzer angehalten" +msgstr "Printing was paused by the user" msgid "Pause of front cover falling" -msgstr "Pause, da die Abdeckung des Werkzeugkopfes abgefallen ist" +msgstr "Pause of front cover falling" msgid "Calibrating the micro lida" -msgstr "Kalibrierung des Mikro-Lidars" +msgstr "Calibrating the micro lidar" msgid "Calibrating extrusion flow" -msgstr "Kalibrieren des Materialflusses" +msgstr "Calibrating extrusion flow" msgid "Paused due to nozzle temperature malfunction" -msgstr "Pausiert aufgrund einer Fehlfunktion der Düsentemperatur" +msgstr "Paused due to nozzle temperature malfunction" msgid "Paused due to heat bed temperature malfunction" -msgstr "Pausiert aufgrund einer Fehlfunktion der Heizbetttemperatur" +msgstr "Paused due to heat bed temperature malfunction" msgid "MC" msgstr "MC" @@ -1945,7 +1952,7 @@ msgid "Time" msgstr "Zeit" msgid "Display" -msgstr "Anzeigen" +msgstr "Display" msgid "Layer Height (mm)" msgstr "Schichthöhe (mm)" @@ -1966,10 +1973,10 @@ msgid "Volumetric flow rate (mm³/s)" msgstr "Volumetrische Flussrate (mm³/s)" msgid "Used filament" -msgstr "Genutztes Filament" +msgstr "Genutztes Material" msgid "Filament N XX" -msgstr "Filament N XX" +msgstr "Material N XX" msgid "Color Print" msgstr "Farbdruck" @@ -1990,7 +1997,7 @@ msgid "Unretract" msgstr "Auseinzug" msgid "Filament Changes" -msgstr "Filamentwechsel" +msgstr "Materialwechsel" msgid "Wipe" msgstr "Reinigen" @@ -2005,13 +2012,13 @@ msgid "Extruder" msgstr "Extruder" msgid "Filament 1" -msgstr "Filament 1" +msgstr "Material 1" msgid "Flushed filament" -msgstr "gereinigtes Filament" +msgstr "Flushed filament" msgid "Filament change times" -msgstr "Filamentwechselzeiten" +msgstr "Filament change times" msgid "Color change" msgstr "Farbwechsel" @@ -2119,7 +2126,7 @@ msgid "Assembly Return" msgstr "Zurücksetzen der Montage" msgid "return" -msgstr "Zurück" +msgstr "return" msgid "Paint Toolbar" msgstr "Malwerkzeuge" @@ -2165,8 +2172,9 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Das Kalibrierungsprogramm erkennt den Status Ihres Geräts automatisch, um " -"Abweichungen zu minimieren. Es sorgt für eine optimale Leistung des Geräts." +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" +"It keeps the device performing optimally." msgid "Calibration Flow" msgstr "Flusskalibrierung" @@ -2184,24 +2192,33 @@ msgid "Timelapse" msgstr "Zeitraffer" msgid "Monitoring Recording" -msgstr "Überwachung der Aufzeichnung" +msgstr "Monitoring Recording" msgid "ConnectPrinter(LAN)" -msgstr "Drucker anschließen (LAN)" +msgstr "Connect Printer (LAN)" msgid "Please input the printer access code:" -msgstr "Bitte geben Sie den Zugangscode zum Drucker ein:" +msgstr "Please input the printer access code:" msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" msgstr "" -"Sie finden ihn unter \"Einstellungen > Netzwerk > Verbindungscode\".\n" -"auf dem Drucker, wie in der Abbildung gezeigt:" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Suchbegriff eingeben" + +msgid "Online" +msgstr "Online" + +msgid "Offline" +msgstr "Offline" + msgid "Application is closing" msgstr "Anwendung schließt" @@ -2219,11 +2236,14 @@ msgid "Preview" msgstr "Vorschau" msgid "Device" -msgstr "Gerät" +msgstr "Device" msgid "Project" msgstr "Projekt" +msgid "Debug" +msgstr "Debuggen" + msgid "Slice" msgstr "Slice" @@ -2261,6 +2281,9 @@ msgstr "Prüfen auf Update" msgid "&About %s" msgstr "&Über %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2335,9 +2358,24 @@ msgstr "Importiere 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Lade ein Modell" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "Alle Objekte als STL exportieren" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Aktuelle geslicete Datei exportieren" @@ -2347,6 +2385,12 @@ msgstr "Exportiere G-Code" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exportieren" @@ -2459,8 +2503,39 @@ msgstr "&Anzeige" msgid "&Help" msgstr "&Hilfe" -msgid "Save configuration as:" -msgstr "Konfiguration speichern unter:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Datei fehlt" @@ -2469,7 +2544,7 @@ msgid "The project is no longer available." msgstr "Das Projekt ist nicht mehr verfügbar." msgid "Filament Settings" -msgstr "Filamenteinstellungen" +msgstr "Materialeinstellungen" msgid "" "Do you want to synchronize your personal data from Bambu Cloud? \n" @@ -2505,6 +2580,58 @@ msgstr "Laufend..." msgid "Load failed [%d]!" msgstr "Laden fehlgeschlagen [%d]!" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Download" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Waiting" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Fertig" + msgid "Speed:" msgstr "Geschwindigkeit:" @@ -2515,7 +2642,7 @@ msgid "Options:" msgstr "Optionen:" msgid "Zoom" -msgstr "Vergrößern" +msgstr "Zoom" msgid "Translation/Zoom" msgstr "" @@ -2529,9 +2656,6 @@ msgstr "Y/Z-Achsen vertauschen" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Druckprozess" @@ -2548,7 +2672,7 @@ msgid "Clean" msgstr "" msgid "Control" -msgstr "Steuerung" +msgstr "Control" msgid "Print Options" msgstr "" @@ -2610,9 +2734,6 @@ msgstr "Verbindung zum Server fehlgeschlagen" msgid "Failed to connect to the printer" msgstr "Verbindung zum Drucker fehlgeschlagen" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "OK" @@ -2646,9 +2767,6 @@ msgstr "%s Info" msgid "%s information" msgstr "%s Information" -msgid "Download" -msgstr "Herunterladen" - msgid "Skip" msgstr "Überspringen" @@ -2719,7 +2837,7 @@ msgid "Warning:" msgstr "Warnung:" msgid "Export ok." -msgstr "Exportieren ok." +msgstr "Export ok." msgid " (Repair)" msgstr " (Reparatur)" @@ -2807,7 +2925,7 @@ msgid "Objects" msgstr "Objekte" msgid "Advance" -msgstr "Fortgeschritten" +msgstr "Fortfahren" msgid "Compare presets" msgstr "Voreinstellungen vergleichen" @@ -2816,7 +2934,7 @@ msgid "View all object's settings" msgstr "Alle Einstellungen des Objekts anzeigen" msgid "Filament settings" -msgstr "Filamenteinstellungen" +msgstr "Material-Einstellungen" msgid "Printer settings" msgstr "Drucker-Einstellungen" @@ -2832,13 +2950,13 @@ msgid "Sliced Info" msgstr "Slice-Info" msgid "Used Filament (m)" -msgstr "Filamentbedarf (Meter)" +msgstr "Materialbedarf (Meter)" msgid "Used Filament (mm³)" -msgstr "Filamentbedarf (mm³)" +msgstr "Materialbedarf (mm³)" msgid "Used Filament (g)" -msgstr "Filamentbedarf (g)" +msgstr "Materialbedarf (g)" msgid "Used Materials" msgstr "Genutztes Material" @@ -2847,7 +2965,7 @@ msgid "Estimated time" msgstr "Geschätzte Zeit" msgid "Filament changes" -msgstr "Filamentwechsel" +msgstr "Materialwechsel" msgid "Click to edit preset" msgstr "Klicken zum Bearbeiten der Voreinstellung" @@ -2856,7 +2974,7 @@ msgid "Bed type" msgstr "Druckbetttyp" msgid "Flushing volumes" -msgstr "Säuberungsvolumen" +msgstr "Spülvolumen" msgid "Untitled" msgstr "Unbenannt" @@ -2877,7 +2995,7 @@ msgstr "Wiederherstellen" msgid "Loading file: %s" msgstr "Datei wird geladen: %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2909,8 +3027,8 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgid "the 3mf is not compatible, load geometry data only!" +msgstr "die 3mf ist nicht kompatibel, laden Sie nur Geometriedaten!" msgid "Incompatible 3mf" msgstr "Inkompatible 3mf" @@ -2955,7 +3073,7 @@ msgid "Object with multiple parts was detected" msgstr "Objekt mit mehreren Teilen wurde entdeckt" msgid "The file does not contain any geometry data." -msgstr "Die Datei enthält keine Geometriedaten." +msgstr "The file does not contain any geometry data." msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " @@ -3050,10 +3168,10 @@ msgid "G-code files can not be loaded with models together!" msgstr "G-Code-Dateien können nicht mit Modellen zusammen geladen werden!" msgid "Can not add models when in preview mode!" -msgstr "Modelle können im Vorschaumodus nicht hinzugefügt werden" +msgstr "Unable to add models in preview mode" msgid "Add Models" -msgstr "Modelle hinzufügen" +msgstr "Add Models" msgid "All objects will be removed, continue?" msgstr "Alle Objekte werden entfernt, fortfahren?" @@ -3118,7 +3236,7 @@ msgstr "Größe: %1% x %2% x %3% mm\n" #, boost-format msgid "Volume: %1% in³\n" -msgstr "Volumen: %1% in³\n" +msgstr "Volume: %1% in³\n" #, boost-format msgid "Volume: %1% mm³\n" @@ -3146,34 +3264,34 @@ msgid "Changing application language" msgstr "Wechsel der Sprache der Anwendung" msgid "Changing the region will log out your account.\n" -msgstr "Wenn Sie die Region ändern, werden Sie von Ihrem Konto abgemeldet.\n" +msgstr "Changing the region will log you out of your account.\n" msgid "Region selection" -msgstr "Auswahl der Region" +msgstr "Region selection" msgid "Second" msgstr "Sekunde" msgid "General Settings" -msgstr "Allgemeine Einstellungen" +msgstr "General Settings" msgid "Asia-Pacific" -msgstr "Asien-Pazifik" +msgstr "Asia-Pacific" msgid "China" msgstr "China" msgid "Europe" -msgstr "Europa" +msgstr "Europe" msgid "North America" -msgstr "Nordamerika" +msgstr "North America" msgid "Others" msgstr "Sonstige" msgid "Login Region" -msgstr "Login-Region" +msgstr "Login Region" msgid "Metric" msgstr "Metrisch" @@ -3188,12 +3306,10 @@ msgid "User sync" msgstr "Benutzer-Synchronisation" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Benutzervoreinstellungen automatisch synchronisieren (Drucker/Filament/" -"Prozess)" +msgstr "Auto sync user presets (Printer/Filament/Process)" msgid "User Sync" -msgstr "Benutzer-Synchronisation" +msgstr "User Sync" msgid "Associate files to BambuStudio" msgstr "Dateien mit BambuStudio verknüpfen" @@ -3215,7 +3331,7 @@ msgstr "" "Dateien festgelegt" msgid "Associate .step/.stp files to BambuStudio" -msgstr "Verknüpfen Sie .step/.stp-Dateien mit BambuStudio" +msgstr "Associate .step/.stp files to Bambu Studio" msgid "If enabled, sets BambuStudio as default application to open .step files" msgstr "" @@ -3292,7 +3408,7 @@ msgid "trace" msgstr "Spurensuche" msgid "Host Setting" -msgstr "Host-Einstellung" +msgstr "Host Setting" msgid "DEV host: api-dev.bambu-lab.com/v1" msgstr "DEV host: api-dev.bambu-lab.com/v1" @@ -3328,10 +3444,10 @@ msgid "Incompatible presets" msgstr "Inkompatible Voreinstellungen" msgid "AMS filaments" -msgstr "AMS Filament" +msgstr "AMS Materialien" msgid "Click to pick filament color" -msgstr "Klicken, um die Farbe des Filaments auszuwählen" +msgstr "Pressen um Materialfarbe zu wählen" msgid "Add/Remove presets" msgstr "Voreinstellungen hinzufügen/entfernen" @@ -3343,8 +3459,7 @@ msgid "Project-inside presets" msgstr "Projektinterne Voreinstellungen" msgid "Slice all plate to obtain time and filament estimation" -msgstr "" -"Slicen Sie alle Druckplatten, um Zeit- und Filamentschätzungen zu erhalten" +msgstr "Alle Bauplatten für Zeit- und Materialvorhersage slicen" msgid "Packing project data into 3mf file" msgstr "Packen der Projektdaten in eine 3mf-Datei" @@ -3456,12 +3571,6 @@ msgstr "Für \"%1%\", fügen Sie \"%2%\" als neue Voreinstellung hinzu" msgid "Simply switch to \"%1%\"" msgstr "Wechseln Sie einfach zu \"%1%\"" -msgid "Online" -msgstr "Online" - -msgid "Offline" -msgstr "Offline" - msgid "My Device" msgstr "Mein Gerät" @@ -3469,13 +3578,13 @@ msgid "Other Device" msgstr "Anderes Gerät" msgid "Input access code" -msgstr "Zugangscode eingeben" +msgstr "Input access code" msgid "Log out successful." msgstr "Abmeldung erfolgreich." msgid "Busy" -msgstr "Beschäftigt" +msgstr "Busy" msgid "Bambu Cool Plate" msgstr "Bambu kalte Druckplatte" @@ -3484,13 +3593,13 @@ msgid "Bamabu Engineering Plate" msgstr "Bambu technische Druckplatte" msgid "Bamabu High Temperature Plate" -msgstr "Bambu Hochtemperaturdruckplatte" +msgstr "Bambu Hochtemperatur-Druckplatte" msgid "Send print job to" msgstr "Druckauftrag senden an" msgid "Refresh" -msgstr "Aktualisieren" +msgstr "Refresh" msgid "Bed Leveling" msgstr "Druckbettnivellierung" @@ -3505,30 +3614,27 @@ msgid "send completed" msgstr "senden abgeschlossen" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Kein Anmeldekonto, nur Drucker im LAN-Modus werden angezeigt" +msgstr "No login account, only printers in LAN mode are displayed" msgid "Connecting to server" -msgstr "Verbindung zum Server wird hergestellt" +msgstr "Connecting to server" msgid "Synchronizing device information" -msgstr "Geräteinformationen synchronisieren" +msgstr "Synchronizing device information" msgid "Synchronizing device information time out" -msgstr "Zeitüberschreitung bei der Synchronisierung von Geräteinformationen" +msgstr "Synchronizing device information time out" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"Die Druckaufgabe kann nicht gesendet werden, während das Upgrade ausgeführt " -"wird" +msgstr "Cannot send the print task when the upgrade is in progress" msgid "" "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"Der Drucker führt gerade Anweisungen aus. Bitte starten Sie den Druckvorgang " -"nach deren Beendigung erneut" +"The printer is executing instructions. Please restart printing after it ends" msgid "The printer is busy on other print job" -msgstr "Der Drucker ist mit einem anderen Druckauftrag beschäftigt." +msgstr "The printer is busy with another print job." #, c-format, boost-format msgid "" @@ -3545,15 +3651,15 @@ msgid "" "Filaments to AMS slots mappings have been established. You can click a " "filament above to change its mapping AMS slot" msgstr "" -"Die Zuordnung von Filament zu AMS-Slots wurde eingerichtet. Sie können oben " -"auf ein Filament klicken, um dessen Zuordnung zum AMS-Steckplatz zu ändern" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgid "" "Please click each filament above to specify its mapping AMS slot before " "sending the print job" msgstr "" -"Bitte klicken Sie oben auf jedes Filament, um den zugehörigen AMS-Slot " -"anzugeben, bevor Sie den Druckauftrag abschicken." +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" #, c-format, boost-format msgid "" @@ -3572,10 +3678,10 @@ msgid "" msgstr "" msgid "Preparing print job" -msgstr "Druckauftrag vorbereiten" +msgstr "Preparing print job" msgid "Modifying the device name" -msgstr "Den Gerätenamen ändern" +msgstr "Modifying the device name" msgid "Log in printer" msgstr "Drucker anmelden" @@ -3669,13 +3775,13 @@ msgid "Acceleration" msgstr "Beschleunigung" msgid "Support filament" -msgstr "Supportfilament" +msgstr "Supportmaterial" msgid "Prime tower" msgstr "Prime-Turm" msgid "Flush options" -msgstr "Optionen für die Druckdüsensäuberung" +msgstr "Flush options" msgid "Special mode" msgstr "Spezialmodus" @@ -3708,7 +3814,7 @@ msgid "Reserved keywords found" msgstr "Reservierte Schlüsselwörter gefunden" msgid "Setting Overrides" -msgstr "überschreiben der Einstellungen" +msgstr "Setting Overrides" msgid "Retraction" msgstr "Einzug" @@ -3743,9 +3849,8 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Dies ist die Betttemperatur, wenn die cool plate installiert ist. Ein Wert " -"von 0 bedeutet, dass das Filament das Drucken auf der cool plate nicht " -"unterstützt." +"This is the bed temperature when the cool plate is installed. A value of 0 " +"means the filament does not support printing on the Cool Plate." msgid "Engineering plate" msgstr "technische Druckplatte" @@ -3754,9 +3859,8 @@ msgid "" "Bed temperature when engineering plate is installed. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Dies ist die Betttemperatur, wenn die technische Druckplatte installiert " -"wird. Ein Wert von 0 bedeutet, dass das Filament das Drucken auf der " -"technischen Druckplatte nicht unterstützt." +"This is the bed temperature when the engineering plate is installed. A value " +"of 0 means the filament does not support printing on the Engineering Plate." msgid "High Temp Plate" msgstr "Hochtemperaturdruckplatte" @@ -3765,9 +3869,9 @@ msgid "" "Bed temperature when high temperature plate is installed. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Dies ist die Betttemperatur, wenn die Hochtemperaturdruckplatte installiert " -"ist. Ein Wert von 0 bedeutet, dass das Filament das Drucken auf der " -"Hochtemperaturdruckplatte nicht unterstützt." +"This is the bed temperature when the high temperature plate is installed. A " +"value of 0 means the filament does not support printing on the High Temp " +"Plate." msgid "Textured PEI Plate" msgstr "" @@ -3818,10 +3922,10 @@ msgid "Auxiliary part cooling fan" msgstr "Hilfslüfter" msgid "Filament start G-code" -msgstr "Filament Start G-Code" +msgstr "Material Start G-Code" msgid "Filament end G-code" -msgstr "Filament End G-Code" +msgstr "Material Ende G-Code" msgid "Printable space" msgstr "Druckbarer Raum" @@ -3845,7 +3949,7 @@ msgid "Layer change G-code" msgstr "Schichtwechsel G-Code" msgid "Change filament G-code" -msgstr "Filamentwechsel G-Code" +msgstr "Materialwechsel G-Code" msgid "Pause G-code" msgstr "Pausen G-Code" @@ -3926,7 +4030,7 @@ msgid "New Value" msgstr "Neuer Wert" msgid "Transfer" -msgstr "Übertragen" +msgstr "Transfer" msgid "Don't save" msgstr "Nicht sichern" @@ -4013,9 +4117,6 @@ msgstr "Fähigkeiten" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -4030,7 +4131,7 @@ msgid "The name \"%1%\" already exists." msgstr "Der Name \"%1%\" existiert bereits." msgid "Basic Info" -msgstr "Basis-Info" +msgstr "Basic Info" msgid "Pictures" msgstr "Bilder" @@ -4052,7 +4153,7 @@ msgstr "Modellname" #, c-format, boost-format msgid "%s Update" -msgstr "%s Aktualisieren" +msgstr "%s Update" msgid "A new version is available" msgstr "Eine neue Version ist verfügbar" @@ -4100,16 +4201,16 @@ msgid "The configuration is up to date." msgstr "Die Konfiguration ist auf dem neuesten Stand." msgid "Auto-Calc" -msgstr "Automatisch berechnen" +msgstr "Auto-Calc" msgid "Flushing volumes for filament change" -msgstr "Säuberungsvolumen für Filamentwechsel" +msgstr "Spülvolumen für Materialwechsel" msgid "Flushing volume (mm³) for each filament pair." -msgstr "Säuberungvolumen (mm³) für jedes Filamentpaar." +msgstr "Spülvolumen (mm³) für jedes Materialpaar." msgid "Flush multiplier" -msgstr "Multiplikator der Druckdüsensäuberung" +msgstr "Flush multiplier" msgid "unloaded" msgstr "entladen wird" @@ -4118,7 +4219,7 @@ msgid "loaded" msgstr "geladen wird" msgid "Filament #" -msgstr "Filament #" +msgstr "Material #" msgid "From" msgstr "Von" @@ -4127,7 +4228,7 @@ msgid "To" msgstr "Zu" msgid "Login" -msgstr "Anmelden" +msgstr "Login" msgid "The configuration package is changed in previous Config Guide" msgstr "Das Konfigurationspaket wurde im vorherigen Config Guide geändert" @@ -4235,7 +4336,7 @@ msgid "Movement step set to 1 mm" msgstr "Bewegungsschritt auf 1 mm eingestellt" msgid "keyboard 1-9: set filament for object/part" -msgstr "Tastatur 1-9: Filament für Objekt/Teil einstellen" +msgstr "Tastatur 1-9: Material für Objekt/Teil einstellen" msgid "Camera view - Default" msgstr "Kameraperspektive - Standard" @@ -4486,7 +4587,7 @@ msgid "Overhang wall" msgstr "Überhang Wand" msgid "Sparse infill" -msgstr "Füllung" +msgstr "Spärliche Füllung" msgid "Internal solid infill" msgstr "Interne massive Füllung" @@ -4627,12 +4728,11 @@ msgstr "" #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "" -"%1% ist zu nah an anderen, und es können Kollisionen verursacht werden." +msgstr "%1% is too close to others, and collisions may be caused." #, boost-format msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% ist zu hoch und es kommt zu Kollisionen." +msgstr "%1% is too tall, and collisions will be caused." msgid " is too close to others, there will be collisions when printing.\n" msgstr " zu nahe an anderen, es kommt beim Drucken zu Kollisionen.\n" @@ -4645,17 +4745,17 @@ msgid "Prime Tower" msgstr "Prime Turm" msgid " is too close to others, and collisions may be caused.\n" -msgstr " ist zu nah an anderen und es können Kollisionen verursacht werden.\n" +msgstr " is too close to others, and collisions may be caused.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " ist zu nahe am Sperrgebiet und es werden Kollisionen verursacht.\n" +msgstr " is too close to an exclusion area, and collisions will be caused.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " "together. Otherwise, the extruder and nozzle may be blocked or damaged " "during printing" msgstr "" -"Es können nicht mehrere Filamente mit einem großen Temperaturunterschied " +"Es können nicht mehrere Materialien mit einem großen Temperaturunterschied " "zusammen gedruckt werden. Andernfalls können der Extruder und die Druckdüse " "während des Drucks blockiert oder beschädigt werden" @@ -4732,7 +4832,7 @@ msgstr "Schichthöhe kann Druckdüsendurchmesser nicht überschreiten" #, c-format, boost-format msgid "Plate %d: %s does not support filament %s.\n" -msgstr "Druckplatte %d: %s unterstützt kein Filament %s.\n" +msgstr "Druckplatte %d: %s unterstützt kein Material %s.\n" msgid "Generating skirt & brim" msgstr "Erzeugen von Schürze und Rand (skirt & brim)" @@ -4811,9 +4911,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Cool Plate" msgstr "" -"Dies ist die Betttemperatur für Schichten mit Ausnahme der Ersten. Ein Wert " -"von 0 bedeutet, dass das Filament das Drucken auf der kalten Druckplatte " -"nicht unterstützt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Cool Plate." msgid "°C" msgstr "°C" @@ -4825,17 +4924,15 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Dies ist die Betttemperatur für Schichten mit Ausnahme der Ersten. Ein Wert " -"von 0 bedeutet, dass das Filament das Drucken auf der technischen " -"Druckplatte nicht unterstützt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Engineering Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Dies ist die Betttemperatur für Schichten mit Ausnahme der Ersten. Ein Wert " -"von 0 bedeutet, dass das Filament das Drucken auf der " -"Hochtemperaturdruckplatte nicht unterstützt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the High Temp Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -4852,24 +4949,22 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate" msgstr "" -"Dies ist die Betttemperatur der Ausgangsschicht. Ein Wert von 0 bedeutet, " -"dass das Filament das Drucken auf der kalten Druckplatte nicht unterstützt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Cool Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Engineering Plate" msgstr "" -"Dies ist die Betttemperatur der Ausgangsschicht. Ein Wert von 0 bedeutet, " -"dass das Filament das Drucken auf der technischen Druckplatte nicht " -"unterstützt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Engineering Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the High Temp Plate" msgstr "" -"Dies ist die Betttemperatur der Ausgangsschicht. Ein Wert von 0 bedeutet, " -"dass das Filament das Drucken auf der Hochtemperaturdruckplatte nicht " -"unterstützt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the High Temp Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -4966,14 +5061,14 @@ msgstr "" "die Brücke zu verringern und den Durchhang zu verbessern" msgid "Only one wall on top surfaces" -msgstr "Nur eine Wand auf den oberen Flächen" +msgstr "Only one wall on top surfaces" msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"Verwenden Sie nur eine Wand auf der flachen Oberseite, um mehr Platz für das " -"obere Füllungsmuster zu schaffen." +"Use only one wall on flat top surfaces, to give more space to the top infill " +"pattern" msgid "Slow down for overhang" msgstr "Verlangsamen bei Überhängen" @@ -5071,10 +5166,10 @@ msgid "mm/s²" msgstr "mm/s²" msgid "Default filament profile" -msgstr "Standard-Filamentprofil" +msgstr "Standard-Materialprofil" msgid "Default filament profile when switch to this machine profile" -msgstr "Standard-Filamentprofil beim Wechsel zu diesem Maschinenprofil" +msgstr "Standard-Materialprofil beim Wechsel zu diesem Maschinenprofil" msgid "Default process profile" msgstr "Standard-Prozessprofil" @@ -5127,9 +5222,9 @@ msgid "" "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"Maximale Länge der Brücken, die keine Unterstützung benötigen. Setzen Sie " -"den Wert auf 0, wenn alle Brücken unterstützt werden sollen und legen Sie " -"einen sehr großen Wert fest, wenn keine Brücken unterstützt werden sollen." +"This is the maximum length of bridges that don't need support. Set it to 0 " +"if you want all bridges to be supported, and set it to a very large value if " +"you don't want any bridges to be supported." msgid "End G-code" msgstr "G-Code am Ende" @@ -5138,8 +5233,7 @@ msgid "End G-code when finish the whole printing" msgstr "End G-Code nach dem fertigstellen des kompletten Drucks" msgid "End G-code when finish the printing of this filament" -msgstr "" -"Fügen Sie den End-G-Code hinzu, wenn Sie den Druck dieses Filaments beenden." +msgstr "End G-Code nach Beendigung des Druckvorgangs mit diesem Material" msgid "Top surface pattern" msgstr "Muster der oberen Oberfläche" @@ -5157,7 +5251,7 @@ msgid "Monotonic" msgstr "Monotonisch" msgid "Monotonic line" -msgstr "Monotone Linie" +msgstr "Monotonic line" msgid "Bottom surface pattern" msgstr "Muster der unteren Oberfläche" @@ -5177,7 +5271,7 @@ msgstr "" "Qualität zu erzielen." msgid "Order of inner wall/outer wall/infil" -msgstr "Reihenfolge Innenwand/Außenwand/Füllung" +msgstr "Reihenfolge Innenwand/Außenwand/Infil" msgid "Print sequence of inner wall, outer wall and infill. " msgstr "Druckreihenfolge von Innenwand, Außenwand und Füllung. " @@ -5289,7 +5383,7 @@ msgstr "" "Diese Einstellung gibt an, wie viel Volumen an Material pro Sekunde " "geschmolzen und extrudiert werden kann. Die Druckgeschwindigkeit wird durch " "die maximale volumetrische Geschwindigkeit begrenzt, falls die Einstellung " -"zu hoch und unangemessen ist. Null bedeutet keine Begrenzung." +"zu hoch und unangemessen ist. Null bedeutet keine Begrenzung" msgid "mm³/s" msgstr "mm³/s" @@ -5301,33 +5395,33 @@ msgid "mm³" msgstr "mm³" msgid "Filament load time" -msgstr "Ladedauer des Filaments" +msgstr "Material Ladezeit" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Zeit zum Laden des neuen Filaments beim Wechseln des Filaments, nur für " -"statistische Zwecke." +"Zeit zum Laden eines neuen Materials beim Wechsel des Materials. Nur für " +"Statistiken" msgid "Filament unload time" -msgstr "Entladezeit des Filaments" +msgstr "Material Entladezeit" msgid "Time to unload old filament when switch filament. For statistics only" msgstr "" -"Zeit zum Entladen des alten Filaments beim Wechseln des Filaments, nur für " -"statistische Zwecke." +"Zeit zum Entladen des alten Materials beim Wechsel des Materials. Nur für " +"Statistiken" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " "and should be accurate" msgstr "" -"Der Filamentdurchmesser wird für die Berechnung der Extrusion im G-Code " +"Der Materialdurchmesser wird für die Berechnung der Extrusion im G-Code " "verwendet, er ist also wichtig und sollte genau sein" msgid "Density" msgstr "Dichte" msgid "Filament density. For statistics only" -msgstr "Filamentdichte. Nur für die Statistik" +msgstr "Materialdichte. Nur für die Statistik" msgid "g/cm³" msgstr "g/cm³" @@ -5336,7 +5430,7 @@ msgid "Type" msgstr "Typ" msgid "The material type of filament" -msgstr "Material des Filaments." +msgstr "Der Materialtyp des Materials" msgid "Soluble material" msgstr "Lösliches Material" @@ -5353,8 +5447,7 @@ msgstr "Stützmaterial" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"Stützmaterial wird üblicherweise zum Drucken von Stützen und " -"Stützschnittstellen verwendet." +"Support material is commonly used to print support and support interfaces." msgid "Temperature of vitrificaiton" msgstr "Verglasungstemperatur" @@ -5370,7 +5463,7 @@ msgid "Price" msgstr "Preis" msgid "Filament price. For statistics only" -msgstr "Filamentpreis, nur für statistische Zwecke." +msgstr "Preis des Materials. Nur für die Statistik" msgid "money/kg" msgstr "Kosten/kg" @@ -5385,21 +5478,22 @@ msgid "" "Angle for sparse infill pattern, which controls the start or main direction " "of line" msgstr "" -"Winkel für das Infill-Muster, das die Anfangs- oder Hauptrichtung der Linie " -"bestimmt" +"Winkel für das spärliche Infill-Muster, das die Anfangs- oder Hauptrichtung " +"der Linie bestimmt" msgid "Sparse infill density" -msgstr "Dichte der Füllung" +msgstr "Dichte der spärlichen Füllung" -#, fuzzy, c-format +#, c-format msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Dichte des internen Infill, 100% bedeutet durchgehend fest" +msgstr "" +"Dichte der internen spärlichen Füllung, 100%% bedeutet durchgehend fest" msgid "Sparse infill pattern" -msgstr "Muster der Füllung" +msgstr "Muster der spärlichen Füllung" msgid "Line pattern for internal sparse infill" -msgstr "Linienmuster für interne Füllung." +msgstr "Linienmuster für interne spärliche Füllung" msgid "Grid" msgstr "Gitternetz" @@ -5426,9 +5520,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Dies ist die Beschleunigung der Füllung der oberen Oberfläche. Die " -"Verwendung eines niedrigeren Werts kann die Qualität der oberen Oberfläche " -"verbessern." +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgid "" "Acceleration of initial layer. Using a lower value can improve build plate " @@ -5481,7 +5574,7 @@ msgstr "Druckdüsentemperatur für die erste Schicht" msgid "Nozzle temperature to print initial layer when using this filament" msgstr "" "Druckdüsentemperatur zum Drucken der ersten Schicht bei Verwendung dieses " -"Filaments" +"Materials" msgid "Full fan speed at layer" msgstr "Volle Lüfterdrehzahl ab Schicht" @@ -5527,7 +5620,7 @@ msgstr "" "unregelmäßige Linienbreite und sollte langsamer gedruckt werden" msgid "Arc fitting" -msgstr "Bogenanpassung" +msgstr "Arc fitting" msgid "" "Enable this to get a G-code file which has G2 and G3 moves. And the fitting " @@ -5562,7 +5655,7 @@ msgid "" "nozzle, and what kind of filament can be printed" msgstr "" "Das metallische Material der Druckdüse. Dies bestimmt die Abriebfestigkeit " -"der Druckdüse und welche Art von Filament gedruckt werden kann" +"der Druckdüse und welche Art von Material gedruckt werden kann" msgid "Hardened steel" msgstr "Gehärteter Stahl" @@ -5591,18 +5684,18 @@ msgid "" "Automatically Combine sparse infill of several layers to print together to " "reduce time. Wall is still printed with original layer height." msgstr "" -"Kombinieren Sie automatisch das Infill aus mehreren Schichten, um gemeinsam " -"zu drucken und die Zeit zu reduzieren. Die Wand wird weiterhin mit der " -"ursprünglichen Schichthöhe gedruckt." +"Kombinieren Sie automatisch spärliche Füllung aus mehreren Schichten, um " +"gemeinsam zu drucken und die Zeit zu reduzieren. Die Wand wird weiterhin mit " +"der ursprünglichen Schichthöhe gedruckt." msgid "Filament to print internal sparse infill." -msgstr "Filament für den Druck von Infill." +msgstr "Filament für den Druck von spärlicher interner Füllung." msgid "Line width of internal sparse infill" -msgstr "Linienbreite der internen Füllung" +msgstr "Linienbreite der internen spärlichen Ausfüllung" msgid "Infill/Wall overlap" -msgstr "Überstand Füllung/Wand" +msgstr "Füllung/Wand überstand" msgid "" "Infill area is enlarged slightly to overlap with wall for better bonding. " @@ -5610,10 +5703,10 @@ msgid "" msgstr "" "Der Bereich der Füllung wird leicht vergrößert, damit er sich mit der Wand " "überschneidet, um eine bessere Haftung zu erreichen. Der Prozentwert bezieht " -"sich auf die Linienbreite der Füllung." +"sich auf die Linienbreite der spärlichen Füllung" msgid "Speed of internal sparse infill" -msgstr "Geschwindigkeit der internen Füllung." +msgstr "Geschwindigkeit der internen spärlichen Füllung" msgid "Ironing Type" msgstr "Glätten-Typ" @@ -5793,7 +5886,7 @@ msgstr "" "Teilelüfter" msgid "Max" -msgstr "Maximal" +msgstr "Max" msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " @@ -5839,10 +5932,10 @@ msgid "Diameter of nozzle" msgstr "Druckdüsendurchmesser" msgid "Nozzle volume" -msgstr "Volumen der Druckdüse" +msgstr "Nozzle volume" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Volumen der Düse zwischen dem Messer und dem Ende der Düse" +msgstr "Volume of nozzle between the filament cutter and the end of the nozzle" msgid "Reduce infill retraction" msgstr "Rückzug bei der Füllung verringern" @@ -6012,6 +6105,9 @@ msgstr "Ausgerichtet" msgid "Back" msgstr "Rückseite" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Abstand der Schürze" @@ -6034,14 +6130,14 @@ msgstr "" "für diese Schichten zu erreichen" msgid "Minimum sparse infill threshold" -msgstr "Mindestschwelle für Füllung" +msgstr "Mindestschwelle für spärliche Füllung" msgid "" "Sparse infill area which is smaller than threshold value is replaced by " "internal solid infill" msgstr "" -"Füllbereiche, die kleiner als der Schwellenwert sind, werden durch interne " -"massive Füllungen ersetzt" +"Spärliche Füllbereiche, die kleiner als der Schwellenwert sind, werden durch " +"interne massive Füllungen ersetzt" msgid "mm²" msgstr "mm²" @@ -6084,7 +6180,7 @@ msgid "Start G-code when start the whole printing" msgstr "G-Code starten, wenn der gesamte Druckvorgang beginnt" msgid "Start G-code when start the printing of this filament" -msgstr "G-Code starten, wenn der Druck dieses Filaments beginnt" +msgstr "G-Code starten, wenn der Druck dieses Materials beginnt" msgid "Enable support" msgstr "Support aktivieren" @@ -6147,7 +6243,7 @@ msgid "" "Filament to print support and skirt. 0 means no specific filament for " "support and current filament is used" msgstr "" -"Filament für den Druck der Supports und der Umrandung. 0 bedeutet, dass kein " +"Material für den Druck der Supports und der Schürze. 0 bedeutet, dass kein " "spezielles Filament für den Support und das aktuelle Filament wird verwendet" msgid "Line width of support" @@ -6166,9 +6262,9 @@ msgid "" "Filament to print support interface. 0 means no specific filament for " "support interface and current filament is used" msgstr "" -"Filament zum Drucken der Support-Schnittstelle. 0 bedeutet, dass kein " -"spezielles Filament für die Support-Schnittstelle vorhanden ist und das " -"aktuelle Filament verwendet wird" +"Material zum Drucken der Support-Schnittstelle. 0 bedeutet, dass kein " +"spezielles Material für die Support-Schnittstelle vorhanden ist und das " +"aktuelle Material verwendet wird" msgid "Top interface layers" msgstr "Obere Schnittstellenschichten" @@ -6329,7 +6425,7 @@ msgid "" "This gcode is inserted when change filament, including T command to trigger " "tool change" msgstr "" -"Dieser G-Code wird beim Filamentwechsel eingefügt, einschließlich des T-" +"Dieser G-Code wird beim Materialwechsel eingefügt, einschließlich des T-" "Befehls zum Auslösen des Werkzeugwechsels" msgid "Line width for top surfaces" @@ -6416,7 +6512,7 @@ msgid "Width of prime tower" msgstr "Breite des Prime-Turms" msgid "Flush into objects' infill" -msgstr "Druckdüse in der Füllung der Objekte säubern" +msgstr "Flush into objects' infill" msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -6424,33 +6520,31 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside" msgstr "" -"Die Spülung der Druckdüse nach dem Filamentwechsel erfolgt innerhalb der " -"Füllungen der Objekte. Dies kann die Abfallmenge verringern und die " -"Druckzeit verkürzen. Wenn die Wände mit transparentem Filament gedruckt " -"werden, ist die gemischte Farbe der Füllung sichtbar." +"Purging after filament change will be done inside objects' infills. This may " +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be visible." msgid "Flush into objects' support" -msgstr "Druckdüse in der Supportstruktur des Objekts säubern" +msgstr "Flush into objects' support" msgid "" "Purging after filament change will be done inside objects' support. This may " "lower the amount of waste and decrease the print time" msgstr "" -"Die Reinigung der Druckdüse nach dem Filamentwechsel erfolgt innerhalb des " -"Objektsupport. Dies kann die Abfallmenge verringern und die Druckzeit " -"verkürzen." +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time." msgid "Flush into this object" -msgstr "Druckdüse in diesem Objekt säubern" +msgstr "Flush into this object" msgid "" "This object will be used to purge the nozzle after a filament change to save " "filament and decrease the print time. Colours of the objects will be mixed " "as a result" msgstr "" -"Dieses Objekt wird verwendet, um die Düse nach einem Filamentwechsel zu " -"säubern, um Filament zu sparen und die Druckzeit zu verkürzen. Die Farben " -"der Objekte werden als Ergebnis gemischt" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colors of the objects will be mixed as " +"a result." msgid "X-Y hole compensation" msgstr "X-Y-Loch-Kompensation" @@ -6527,10 +6621,10 @@ msgid "Arrange options: 0-disable, 1-enable, others-auto" msgstr "Anordnungsoptionen: 0-deaktiviert; 1-aktiviert; andere-automatisch" msgid "Convert Unit" -msgstr "Einheit umrechnen" +msgstr "Convert Unit" msgid "Convert the units of model" -msgstr "Einheiten des Modells umrechnen" +msgstr "Convert the units of model" msgid "Orient the model" msgstr "Das Modell ausrichten" @@ -6553,10 +6647,10 @@ msgid "Load process/machine settings from the specified file" msgstr "Laden von Prozess-/Maschineneinstellungen aus der angegebenen Datei" msgid "Load Filament Settings" -msgstr "Filamenteinstellungen laden" +msgstr "Lade Materialeinstellungen" msgid "Load filament settings from the specified file list" -msgstr "Filamenteinstellungen aus der angegebenen Dateiliste laden" +msgstr "Materialeinstellungen aus der angegebenen Dateiliste laden" msgid "Output directory" msgstr "Ausgabeverzeichnis" @@ -6581,7 +6675,7 @@ msgid "Generating walls" msgstr "Erzeugen von Wänden" msgid "Generating infill regions" -msgstr "Generierung von Füllbereichen" +msgstr "Erzeugung von Füllregionen" msgid "Generating infill toolpath" msgstr "Füllwerkzeugweg generieren" @@ -6611,14 +6705,8 @@ msgstr "" "Die leeren Ebenen im unteren Bereich werden durch die nächstgelegenen " "normalen Ebenen ersetzt." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"Das Modell hat überlappende oder sich selbst überschneidende Facetten. Ich " -"habe versucht, es zu reparieren, aber vielleicht möchten Sie die Ergebnisse " -"überprüfen oder die Eingabedatei reparieren und es erneut versuchen." msgid "Slicing mesh" msgstr "Slicen des Netzes" @@ -6632,34 +6720,37 @@ msgstr "Fehler auf Zeile %1%:\n" #, c-format, boost-format msgid "Support: generate toolpath at layer %d" -msgstr "Support: Werkzeugpfad auf Ebene %d erzeugen" +msgstr "Support: generate toolpath at layer %d" msgid "Support: detect overhangs" -msgstr "Support: Überhänge erkennen" +msgstr "Support: detect overhangs" msgid "Support: generate contact points" -msgstr "Support: Kontaktstellen erstellen" +msgstr "Support: generate contact points" msgid "Support: propagate branches" -msgstr "Support: Zweige vermehren" +msgstr "Support: propagate branches" msgid "Support: draw polygons" -msgstr "Support: Polygone zeichnen" +msgstr "Support: draw polygons" msgid "Support: generate toolpath" -msgstr "Support: Werkzeugweg generieren" +msgstr "Support: generate toolpath" #, c-format, boost-format msgid "Support: generate polygons at layer %d" -msgstr "Support: Polygone auf Ebene %d erzeugen" +msgstr "Support: generate polygons at layer %d" #, c-format, boost-format msgid "Support: fix holes at layer %d" -msgstr "Support: Löcher in Schicht %d repairieren" +msgstr "Support: fix holes at layer %d" #, c-format, boost-format msgid "Support: propagate branches at layer %d" -msgstr "Support: Verbreiten von Zweigen auf Ebene %d" +msgstr "Support: propagate branches at layer %d" + +#~ msgid "Save configuration as:" +#~ msgstr "Konfiguration speichern unter:" #~ msgid "Line type" #~ msgstr "Linientyp" @@ -6674,7 +6765,7 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgstr "0%" #~ msgid "Timelapse Wipe Tower" -#~ msgstr "Zeitraffer-Wischturm" +#~ msgstr "Timelapse Wipe Tower" #~ msgid "Device:" #~ msgstr "Gerät:" @@ -6689,6 +6780,55 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ "Es scheint, dass Objekt %s Support zum Drucken benötigt. Bitte aktivieren " #~ "Sie die Support-Generierung." +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "Das Modell hat überlappende oder sich selbst überschneidende Facetten. " +#~ "Ich habe versucht, es zu reparieren, aber vielleicht möchten Sie die " +#~ "Ergebnisse überprüfen oder die Eingabedatei reparieren und es erneut " +#~ "versuchen." + +#~ msgid "" +#~ "Auto orientates selected objects or all objects.If there are selected " +#~ "objects, it just orientates the selected ones.Otherwise, it will " +#~ "orientates all objects in the project." +#~ msgstr "" +#~ "Wenn es ausgewählte Objekte gibt, werden nur die ausgewählten Objekte " +#~ "ausgerichtet, ansonsten werden alle Objekte im Projekt ausgerichtet." + +#~ msgid "The Config is not compatible and can not be loaded." +#~ msgstr "" +#~ "Die Konfiguration ist nicht kompatibel und kann nicht geladen werden." + +#~ msgid "Creating" +#~ msgstr "Creating" + +#~ msgid "Uploading" +#~ msgstr "Lade hoch" + +#~ msgid "Sending" +#~ msgstr "Sending" + +#~ msgid "Please fill report first." +#~ msgstr "Bitte füllen Sie zuerst den Bericht aus." + +#~ msgid "Unable to create zip file" +#~ msgstr "Unable to create zip file" + +#~ msgid "Filaments Selection" +#~ msgstr "Auswahl der Materialien" + +#~ msgid "Printer Selection" +#~ msgstr "Auswahl der Drucker" + +#~ msgid "Auto arrange" +#~ msgstr "Automatische Anordnung" + +#~ msgid "Spiral mode" +#~ msgstr "Spiralförmiger Modus" + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Mausrad" @@ -6700,31 +6840,14 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ "Lösen Sie das Problem, indem Sie es vollständig innerhalb oder außerhalb " #~ "der Druckplatte verschieben." -#~ msgid "Auto arrange" -#~ msgstr "Automatische Anordnung" - -#~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." -#~ msgstr "" -#~ "Wenn es ausgewählte Objekte gibt, werden nur die ausgewählten Objekte " -#~ "ausgerichtet, ansonsten werden alle Objekte im Projekt ausgerichtet." - #~ msgid "Clear all" #~ msgstr "Alles löschen" -#~ msgid "Creating" -#~ msgstr "Wird erstellt..." - #~ msgid "Ctrl + Any arrow" #~ msgstr "Strg + beliebiger Pfeil" #~ msgid "Ctrl + Left mouse button" -#~ msgstr "Strg + Linke Maustaste" - -#~ msgid "Debug" -#~ msgstr "Debuggen" +#~ msgstr "Ctrl + Left mouse button" #~ msgid "Display printable box" #~ msgstr "Bedruckbare Box anzeigen" @@ -6742,12 +6865,11 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ "2. The Filament presets\n" #~ "3. The Printer presets\n" #~ msgstr "" -#~ "Möchten Sie Ihre persönlichen Daten aus der Bambu Cloud " -#~ "synchronisieren? \n" -#~ "Enthält die folgenden Informationen:\n" -#~ "1. Prozess-Voreinstellungen\n" -#~ "2. Filament-Voreinstellungen\n" -#~ "3. Drucker-Voreinstellungen\n" +#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" +#~ "Contains the following information:\n" +#~ "1. Process presets\n" +#~ "2. Filament presets\n" +#~ "3. Printer presets\n" #~ msgid "" #~ "Don't retract when the travel is in infill area absolutely. That means " @@ -6756,15 +6878,6 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ "Ziehen Sie nicht zurück, wenn sich der Weg im Füllbereich befindet. Das " #~ "bedeutet, dass man die Quellung nicht sehen kann" -#~ msgid "Enter a search term" -#~ msgstr "Suchbegriff eingeben" - -#~ msgid "Filaments Selection" -#~ msgstr "Auswahl der Filamente" - -#~ msgid "Finished" -#~ msgstr "Fertig" - #~ msgid "Fix model locally" #~ msgstr "Modell lokal reparieren" @@ -6772,13 +6885,13 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgstr "Modell durch die Cloud reparieren" #~ msgid "Fragment Filter" -#~ msgstr "Fragment-Filter" +#~ msgstr "Fragment Filter" #~ msgid "Fragment area" -#~ msgstr "Fragment-Bereich" +#~ msgstr "Fragment area" #~ msgid "Fragment filter" -#~ msgstr "Fragment-Filter" +#~ msgstr "Fragment filter" #~ msgid "" #~ "Heat the nozzle to target \n" @@ -6786,10 +6899,10 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgstr "Die Druckdüse auf die Zieltemperatur heitzen" #~ msgid "In the calibration of extrusion flow" -#~ msgstr "Kalibrierung des Materialflusses" +#~ msgstr "In the calibration of extrusion flow" #~ msgid "In the calibration of laser scanner" -#~ msgstr "Kalibrierung des Laser-Scanner" +#~ msgstr "In the calibration of laser scanner" #~ msgid "Module" #~ msgstr "Modul" @@ -6801,19 +6914,16 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgstr "Ausgabedatei" #~ msgid "Pause(heated bed temperature error)" -#~ msgstr "Pause (Temperaturfehler beim Heizbett)" +#~ msgstr "Pause(heated bed temperature error)" #~ msgid "Pause(hotend temperature error)" -#~ msgstr "Pause (Temperaturfehler im Hotend)" +#~ msgstr "Pause(hotend temperature error)" #~ msgid "Pause(toolhead shell off)" -#~ msgstr "Pause (Werkzeugkopfabdeckung abgefallen)" - -#~ msgid "Please fill report first." -#~ msgstr "Bitte füllen Sie zuerst den Bericht aus." +#~ msgstr "Pause(toolhead shell off)" #~ msgid "Please upgrade your printer first" -#~ msgstr "Bitte aktualisieren Sie zuerst Ihren Drucker" +#~ msgstr "Please upgrade your printer first" #~ msgid "Position:" #~ msgstr "Position:" @@ -6822,23 +6932,17 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ "Preview only mode:\n" #~ "The loaded file contains gcode only." #~ msgstr "" -#~ "Nur Vorschaumodus:\n" -#~ "Die geladene Datei enthält nur G-Code." +#~ "Preview only mode:\n" +#~ "The loaded file contains G-code only." #~ msgid "Preview only mode for gcode file." -#~ msgstr "Nur Vorschaumodus für Gcode-Datei." - -#~ msgid "Printer Selection" -#~ msgstr "Auswahl der Drucker" +#~ msgstr "Preview only mode for G-code file." #~ msgid "" #~ "Push new filament \n" #~ "into extruder" #~ msgstr "Neues Filament in den Extruder drücken" -#~ msgid "Sending" -#~ msgstr "Senden" - #~ msgid "Shift + Any arrow" #~ msgstr "Umschalttaste + beliebiger Pfeil" @@ -6854,38 +6958,19 @@ msgstr "Support: Verbreiten von Zweigen auf Ebene %d" #~ msgid "Show Printable Box(TODO)" #~ msgstr "Druckbare Box anzeigen(TODO)" -#~ msgid "Spiral mode" -#~ msgstr "Spiralförmiger Modus" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" -#~ msgstr "Erfolgreich gesendet, springt automatisch zur Geräteseite in %s" +#~ msgstr "" +#~ "Successfully sent. Will automatically jump to the device page in %s s" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Cloud-Umgebung wechseln, bitte erneut anmelden!" -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "" -#~ "Die Konfiguration ist nicht kompatibel und kann nicht geladen werden." - #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" #~ msgstr "" -#~ "Die Firmware-Versionen von Drucker und AMS sind zu niedrig. Bitte " -#~ "aktualisieren Sie auf die neueste Version, bevor Sie den Druckauftrag " -#~ "senden" - -#~ msgid "Unable to create zip file" -#~ msgstr "ZIP-Datei kann nicht erstellt werden" - -#~ msgid "Uploading" -#~ msgstr "Lade hoch" +#~ "The firmware versions of the printer and AMS are too low. Please update " +#~ "them to the latest version before sending any print jobs." #~ msgid "User pause" -#~ msgstr "Benutzerpause" - -#~ msgid "Waiting" -#~ msgstr "Warten" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "die 3mf ist nicht kompatibel, laden Sie nur Geometriedaten!" +#~ msgstr "User pause" diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index 8e779334bf..ee6668b09a 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,16 +2,13 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.0.1\n" msgid "Supports Painting" msgstr "Support Painting" @@ -50,7 +47,7 @@ msgid "Gap fill" msgstr "" msgid "Perform" -msgstr "Perform" +msgstr "Apply" msgid "Gap area" msgstr "" @@ -99,7 +96,7 @@ msgid "" "Filament count exceeds the maximum number that painting tool supports. only " "the first %1% filaments will be available in painting tool." msgstr "" -"Filament count exceeds the maximum number that painting tool supports. only " +"Filament count exceeds the maximum number that painting tool supports. Only " "the first %1% filaments will be available in painting tool." msgid "Color Painting" @@ -336,6 +333,9 @@ msgstr "Face recognition" msgid "Perform Recognition" msgstr "Perform Recognition" +msgid "Clipping of view" +msgstr "" + msgid "Reset direction" msgstr "" @@ -431,7 +431,7 @@ msgid "" "It will be appreciated if you report the issue to our team." msgstr "" "Bambu Studio has run out of memory and will close. This may be a bug. Please " -"report this issue to our team." +"report this error to Technical Support." msgid "Fatal error" msgstr "Fatal error" @@ -462,8 +462,8 @@ msgid "" "BambuStudio configuration file may be corrupted and is not abled to be " "parsed.Please delete the file and try again." msgstr "" -"Bambu Studio configuration file may be corrupted and is not abled to be " -"parsed. Please delete the file and try again." +"Bambu Studio configuration file is not able to be parsed and may be " +"corrupted. Please delete the file and try again." #, c-format, boost-format msgid "" @@ -536,7 +536,7 @@ msgid "" "The version of Bambu studio is too low and needs to be updated to the latest " "version before it can be used normally" msgstr "" -"The version of Bambu studio is too low and needs to be updated to the latest " +"The version of Bambu Studio is too low and needs to be updated to the latest " "version before it can be used normally" msgid "Login information expired. Please login again." @@ -568,7 +568,7 @@ msgstr "Bambu Studio GUI initialization failed" #, boost-format msgid "Fatal error, exception catched: %1%" -msgstr "Fatal error, exception catched: %1%" +msgstr "Fatal error, exception: %1%" msgid "Quality" msgstr "Quality" @@ -725,13 +725,13 @@ msgid "Assemble" msgstr "Assemble" msgid "Assemble the selected objects to an object with multiple parts" -msgstr "Assemble the selected objects to an object with multiple parts" +msgstr "Assemble the selected objects into an object with multiple parts" msgid "Assemble the selected objects to an object with single part" -msgstr "Assemble the selected objects to an object with single part" +msgstr "Assemble the selected objects into an object with single part" msgid "Assemble the selected parts to a single part" -msgstr "Assemble the selected parts to a single part" +msgstr "Assemble the selected parts into a single part" msgid "Along X axis" msgstr "Along X Axis" @@ -794,13 +794,13 @@ msgid "Select All" msgstr "Select All" msgid "select all objects on current plate" -msgstr "Select all objects on current plate" +msgstr "Select all objects on the current plate" msgid "Delete All" msgstr "Delete All" msgid "delete all objects on current plate" -msgstr "Delete all objects on current plate" +msgstr "Delete all objects on the current plate" msgid "Arrange" msgstr "Arrange" @@ -881,13 +881,13 @@ msgid "Right click the icon to fix model object" msgstr "Right click the icon to fix model object" msgid "Right button click the icon to drop the object settings" -msgstr "Right button click the icon to drop the object settings" +msgstr "Right click the icon to drop the object settings" msgid "Click the icon to reset all settings of the object" msgstr "Click the icon to reset all settings of the object" msgid "Right button click the icon to drop the object printable property" -msgstr "Right button click the icon to drop the object printable property" +msgstr "Right click the icon to drop the object printable property" msgid "Click the icon to toggle printable property of the object" msgstr "Click the icon to toggle printable property of the object" @@ -914,7 +914,7 @@ msgid "Deleting the last solid part is not allowed." msgstr "Deleting the last solid part is not allowed." msgid "The target object contains only one part and can not be splited." -msgstr "The target object contains only one part and can not be split." +msgstr "The target object contains only one part and cannot be split." msgid "Assembly" msgstr "Assembly" @@ -976,13 +976,13 @@ msgstr "Repairing model object" msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" -msgstr[0] "Following model object has been repaired" -msgstr[1] "Following model objects have been repaired" +msgstr[0] "The following model object has been repaired" +msgstr[1] "The following model objects have been repaired" msgid "Failed to repair folowing model object" msgid_plural "Failed to repair folowing model objects" -msgstr[0] "Failed to repair folowing model object" -msgstr[1] "Failed to repair folowing model objects" +msgstr[0] "Failed to repair the following model object" +msgstr[1] "Failed to repair the following model objects" msgid "Repairing was canceled" msgstr "Repairing was canceled" @@ -1058,7 +1058,7 @@ msgid "Cut filament" msgstr "Cut filament" msgid "Pull back current filament" -msgstr "Pull back current filament" +msgstr "Pull back the current filament" msgid "Push new filament into extruder" msgstr "" @@ -1124,7 +1124,7 @@ msgid "" "We can not do auto-arrange on this plate." msgstr "" "This plate is locked.\n" -"We can not auto-arrange this plate." +"We cannot auto-arrange this plate." msgid "Arranging..." msgstr "Arranging..." @@ -1163,15 +1163,15 @@ msgid "" "All the selected objects are on the locked plate,\n" "We can not do auto-orient on these objects." msgstr "" -"All the selected objects are on the locked plate,\n" -"We can not do auto-orient on these objects." +"All the selected objects are on a locked plate,\n" +"We cannot auto-orient these objects." msgid "" "This plate is locked,\n" "We can not do auto-orient on this plate." msgstr "" "This plate is locked.\n" -"We can not auto-orient this plate." +"We cannot auto-orient this plate." msgid "Orienting..." msgstr "Orienting..." @@ -1195,7 +1195,7 @@ msgid "The region parameter is incorrrect" msgstr "The region parameter is incorrrect." msgid "Failure of printer login" -msgstr "Failure of printer login" +msgstr "Printer login failure" msgid "Failed to get ticket" msgstr "Failed to get ticket" @@ -1204,7 +1204,7 @@ msgid "User authorization timeout" msgstr "User authorization timeout" msgid "Failure of bind" -msgstr "Failure of bind" +msgstr "Binding failure" msgid "Unknown Failure" msgstr "Unknown Failure" @@ -1216,7 +1216,7 @@ msgid "Task canceled" msgstr "Task canceled" msgid "Upload task timed out. Please check the network problem and try again" -msgstr "Upload task timed out. Please check the network problem and try again" +msgstr "Upload task timed out. Please check the network and try again" msgid "Cloud service connection failed. Please try again." msgstr "Cloud service connection failed. Please try again." @@ -1249,6 +1249,9 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" msgstr "Sending print configuration" @@ -1296,8 +1299,8 @@ msgid "" "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " "by Alessandro Ranellucci and the RepRap community" msgstr "" -"Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " -"by Alessandro Ranellucci and the RepRap community" +"Bambu Studio is based on PrusaSlicer by Prusa Research, which is based on " +"Slic3r by Alessandro Ranellucci and the RepRap community" msgid "Libraries" msgstr "Libraries" @@ -1339,7 +1342,7 @@ msgid "AMSMaterialsSetting" msgstr "" msgid "Colour" -msgstr "Colour" +msgstr "Color" msgid "" "Nozzle\n" @@ -1382,14 +1385,14 @@ msgid "" "new Bambu Lab filament. This takes about 20 seconds." msgstr "" "The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"new Bambu Lab filament spool. This takes about 20 seconds." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" "Note: if new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." +"automatically read any information until printing has finished." msgid "" "When inserting a new filament, the AMS will not automatically read its " @@ -1407,8 +1410,8 @@ msgid "" "spools." msgstr "" "The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"start-up. It will take about 1 minute.The reading process will rotate the " +"filament spools." msgid "" "The AMS will not automatically read information from inserted filament " @@ -1468,7 +1471,7 @@ msgid "" "Error message: %1%.\n" "Source file %2%." msgstr "" -"Failed to save gcode file.\n" +"Failed to save G-code file.\n" "Error message: %1%.\n" "Source file %2%." @@ -1560,8 +1563,9 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"Nozzle may be blocked when the temperature is out of recommended range.\n" -"Please make sure whether to use the temperature to print.\n" +"The nozzle may become clogged when the temperature is out of the recommended " +"range.\n" +"Please make sure whether to use this temperature to print.\n" "\n" #, c-format, boost-format @@ -1569,7 +1573,7 @@ msgid "" "Recommended nozzle temperature of this filament type is [%d, %d] degree " "centigrade" msgstr "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"The recommended nozzle temperature for this filament type is [%d, %d] degree " "centigrade" #, c-format, boost-format @@ -1578,8 +1582,8 @@ msgid "" "layer for more than %d degree centigrade.\n" "This may cause model broken free from build plate during printing" msgstr "" -"The bed temperature of other layers is lower than bed temperature of initial " -"layer by more than %d degree centigrade.\n" +"The bed temperature of other layers is lower than the bed temperature of the " +"first layer by more than %d degree centigrade.\n" "This may cause models to break free from the build plate during printing." msgid "" @@ -1609,7 +1613,7 @@ msgid "" "Reset to 0.1" msgstr "" "Ironing spacing too small\n" -"Reset to 0.1" +"It has been reset to 0.1" msgid "" "Zero initial layer height is invalid.\n" @@ -1628,10 +1632,9 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" -"For example, when model size has small error and hard to be assembled.\n" -"For large size tuning, please use model scale function.\n" +"This setting is only used for tuning model size by small amounts.\n" +"For example, when the model size has small errors or when tolerances are " +"incorrect. For large adjustments, please use the model scale function.\n" "\n" "The value will be reset to 0." @@ -1642,9 +1645,9 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"Too large elefant foot compensation is unreasonable.\n" -"If really have serious elephant foot effect, please check other settings.\n" -"For example, whether bed temperature is too high.\n" +"The elephant foot compensation value is too large.\n" +"If there are significant elephant foot issues, please check other settings.\n" +"The bed temperature may be too high, for example.\n" "\n" "The value will be reset to 0." @@ -1652,8 +1655,8 @@ msgid "" "Spiral mode only works when wall loops is 1, \n" "support is disabled, top shell layers is 0 and sparse infill density is 0\n" msgstr "" -"Spiral mode only works when wall loops is 1, \n" -"support is disabled, top shell layers is 0 and sparse infill density is 0\n" +"Spiral mode only works when wall loops is set to 1, \n" +"support is disabled, top shell layers is 0, and sparse infill density is 0\n" msgid "" "Change these settings automatically? \n" @@ -1662,7 +1665,7 @@ msgid "" msgstr "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" -"No - Give up using spiral mode this time" +"No - Cancel enabling spiral mode" msgid "" "Prime tower does not work when Adaptive Layer Height or Independent Support " @@ -2149,7 +2152,7 @@ msgid "Monitoring Recording" msgstr "Monitoring Recording" msgid "ConnectPrinter(LAN)" -msgstr "ConnectPrinter(LAN)" +msgstr "Connect Printer (LAN)" msgid "Please input the printer access code:" msgstr "Please input the printer access code:" @@ -2164,6 +2167,15 @@ msgstr "" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Enter a search term" + +msgid "Online" +msgstr "Online" + +msgid "Offline" +msgstr "Offline" + msgid "Application is closing" msgstr "Closing application" @@ -2185,6 +2197,9 @@ msgstr "Device" msgid "Project" msgstr "Project" +msgid "Debug" +msgstr "Debug" + msgid "Slice" msgstr "Slice" @@ -2207,7 +2222,7 @@ msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" msgid "Show the list of the keyboard shortcuts" -msgstr "Show the list of the keyboard shortcuts" +msgstr "Show the list of keyboard shortcuts" msgid "Setup Wizard" msgstr "Setup Wizard" @@ -2222,6 +2237,9 @@ msgstr "Check for Updates" msgid "&About %s" msgstr "&About %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2296,11 +2314,26 @@ msgstr "Import 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Load a model" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" -msgstr "Export All Object as STL" +msgstr "Export All Objects as STL" + +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" msgid "Export current Sliced file" -msgstr "Export current Sliced file" +msgstr "Export Sliced File" msgid "Export G-code" msgstr "Export G-code" @@ -2308,6 +2341,12 @@ msgstr "Export G-code" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Export" @@ -2420,8 +2459,39 @@ msgstr "&View" msgid "&Help" msgstr "&Help" -msgid "Save configuration as:" -msgstr "Save configuration as:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "File is missing" @@ -2466,6 +2536,58 @@ msgstr "Playing..." msgid "Load failed [%d]!" msgstr "Loading failed [%d]!" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Download" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Waiting" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Finished" + msgid "Speed:" msgstr "Speed:" @@ -2490,9 +2612,6 @@ msgstr "Swap Y/Z axes" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Printing progress" @@ -2571,9 +2690,6 @@ msgstr "Failed to connect to the server" msgid "Failed to connect to the printer" msgstr "Failed to connect to the printer" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "OK" @@ -2607,9 +2723,6 @@ msgstr "%s info" msgid "%s information" msgstr "%s information" -msgid "Download" -msgstr "Download" - msgid "Skip" msgstr "Skip" @@ -2825,7 +2938,8 @@ msgid "Do you want to save changes to \"%1%\"?" msgstr "Do you want to save changes to \"%1%\"?" msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "Previously unsaved items have been detected. Do you want to restore?" +msgstr "" +"Previously unsaved items have been detected. Do you want to restore them?" msgid "Restore" msgstr "Restore" @@ -2834,7 +2948,7 @@ msgstr "Restore" msgid "Loading file: %s" msgstr "Loading file: %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2851,8 +2965,8 @@ msgid "" "The 3mf's version %s is newer than %s's version %s, Found following keys " "unrecognized:\n" msgstr "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:\n" +"The 3mf file's version %s is newer than %s's version %s, Found the following " +"unrecognized keys:\n" msgid "You'd better upgrade your software.\n" msgstr "You'd better upgrade your software.\n" @@ -2866,8 +2980,8 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgid "the 3mf is not compatible, load geometry data only!" +msgstr "The 3mf is not compatible, loading geometry data only!" msgid "Incompatible 3mf" msgstr "Incompatible 3mf" @@ -2961,8 +3075,6 @@ msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" -"Preview only mode:\n" -"The loaded file contains G-code only and can not enter the Prepare page" msgid "You can keep the modified presets to the new project or discard them" msgstr "You can keep the modified presets for the new project or discard them" @@ -3037,7 +3149,7 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Print By Object: \n" -"Suggest to use auto-arrange to avoid collisions when printing." +"We suggest using auto-arrange to avoid collisions when printing." msgid "Send G-code" msgstr "Send G-code" @@ -3137,7 +3249,7 @@ msgid "User sync" msgstr "User sync" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Auto sync user presets(Printer/Filament/Process)" +msgstr "Auto sync user presets (Printer/Filament/Process)" msgid "User Sync" msgstr "User Sync" @@ -3162,7 +3274,7 @@ msgstr "" "files." msgid "Associate .step/.stp files to BambuStudio" -msgstr "Associate .step/.stp files to BambuStudio" +msgstr "Associate .step/.stp files to Bambu Studio" msgid "If enabled, sets BambuStudio as default application to open .step files" msgstr "" @@ -3209,7 +3321,7 @@ msgid "Other" msgstr "Other" msgid "Mouse wheel reverses when zooming" -msgstr "Reverse Scroll Direction while Zooming" +msgstr "Reverse scroll direction while zooming" msgid "Develop mode" msgstr "Developer mode" @@ -3278,7 +3390,7 @@ msgid "AMS filaments" msgstr "AMS filament" msgid "Click to pick filament color" -msgstr "Click to pick filament color" +msgstr "Click to select filament color" msgid "Add/Remove presets" msgstr "Add/Remove presets" @@ -3351,7 +3463,7 @@ msgstr "Preset \"%1%\" already exists." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." msgstr "" -"Preset \"%1%\" already exists and is incompatible with current printer." +"Preset \"%1%\" already exists and is incompatible with the current printer." msgid "Please note that saving action will replace this preset" msgstr "Please note that saving will overwrite the current preset." @@ -3395,12 +3507,6 @@ msgstr "For \"%1%\", add \"%2%\" as a new preset" msgid "Simply switch to \"%1%\"" msgstr "Simply switch to \"%1%\"" -msgid "Online" -msgstr "Online" - -msgid "Offline" -msgstr "Offline" - msgid "My Device" msgstr "My Device" @@ -3629,12 +3735,12 @@ msgid_plural "" "estimation." msgstr[0] "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will break G-code visualization and printing time " -"estimation." +"Please remove it, or G-code visualization and print time estimation will be " +"broken." msgstr[1] "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will break G-code visualization and printing time " -"estimation." +"Please remove them, or G-code visualization and print time estimation will " +"be broken." msgid "Reserved keywords found" msgstr "Reserved keywords found" @@ -3652,7 +3758,7 @@ msgid "Recommended nozzle temperature" msgstr "Recommended nozzle temperature" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "Recommended nozzle temperature range of this filament. 0 means no set" +msgstr "Recommended nozzle temperature range of this filament. 0 means not set" msgid "Recommended temperature range" msgstr "Recommended temperature range" @@ -3726,10 +3832,10 @@ msgid "" "shorter than threshold, fan speed is interpolated between the minimum and " "maximum fan speed according to layer printing time" msgstr "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" +"The part cooling fan will run at the minimum fan speed when the estimated " +"layer time is longer than the threshold value. When the layer time is " +"shorter than the threshold, the fan speed will be interpolated between the " +"minimum and maximum fan speed according to layer printing time." msgid "Max fan speed threshold" msgstr "Max fan speed threshold" @@ -3738,8 +3844,8 @@ msgid "" "Part cooling fan speed will be max when the estimated layer time is shorter " "than the setting value" msgstr "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the set value." +"The part cooling fan will run at maximum speed when the estimated layer time " +"is shorter than the threshold value." msgid "Auxiliary part cooling fan" msgstr "Auxiliary part cooling fan" @@ -3803,12 +3909,12 @@ msgstr "Detached" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." -msgstr[0] "Following preset will be deleted too." -msgstr[1] "Following presets will be deleted too." +msgstr[0] "The following preset will be deleted too:" +msgstr[1] "The following presets will be deleted too:" #, boost-format msgid "Are you sure to %1% the selected preset?" -msgstr "Are you sure to %1% the selected preset?" +msgstr "Are you sure you want to %1% the selected preset?" #. TRN Remove/Delete #, boost-format @@ -3828,7 +3934,7 @@ msgid "Click to reset current value and attach to the global value." msgstr "Click to reset current value and attach to the global value." msgid "Click to drop current modify and reset to saved value." -msgstr "Click to drop current modify and reset to saved value." +msgstr "Click to drop current modifications and reset to saved value." msgid "Process Settings" msgstr "Process Settings" @@ -3840,7 +3946,7 @@ msgid "Unsaved Changes" msgstr "unsaved changes" msgid "Discard or Keep changes" -msgstr "Discard or Keep changes" +msgstr "Discard or keep changes" msgid "Old Value" msgstr "Old value" @@ -3916,10 +4022,10 @@ msgid "" "Would you like to keep these changed settings after switching preset?" msgstr "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings after switching preset?" +"Would you like to keep these changed settings after switching presets?" msgid "Extruders count" -msgstr "Extruders count" +msgstr "Extruder count" msgid "General" msgstr "General" @@ -3930,9 +4036,6 @@ msgstr "Capabilities" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -3987,16 +4090,16 @@ msgid "Configuration incompatible" msgstr "Configuration incompatible" msgid "the configuration package is incompatible with current application." -msgstr "the configuration package is incompatible with current application." +msgstr "" +"the configuration package is incompatible with the current application." #, c-format, boost-format msgid "" "The configuration package is incompatible with current application.\n" "%s will update the configuration package, Otherwise it won't be able to start" msgstr "" -"The configuration package is incompatible with current application.\n" -"%s will update the configuration package. Otherwise, it won’t be able to " -"start." +"The configuration package is incompatible with the current application.\n" +"%s will update the configuration package to allow the application to start." #, c-format, boost-format msgid "Exit %s" @@ -4081,9 +4184,9 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." +"Auto orients selected objects or all objects.If there are selected objects, " +"it just orients the selected ones.Otherwise, it will orient all objects in " +"the current disk." msgid "Collapse/Expand the sidebar" msgstr "Collapse/Expand the sidebar" @@ -4125,34 +4228,34 @@ msgid "Arrow Up" msgstr "Arrow Up" msgid "Move selection 10 mm in positive Y direction" -msgstr "Move selection 10 mm in positive Y direction" +msgstr "Move selection 10mm in positive Y direction" msgid "Arrow Down" msgstr "Arrow Down" msgid "Move selection 10 mm in negative Y direction" -msgstr "Move selection 10 mm in negative Y direction" +msgstr "Move selection 10mm in negative Y direction" msgid "Arrow Left" msgstr "Arrow Left" msgid "Move selection 10 mm in negative X direction" -msgstr "Move selection 10 mm in negative X direction" +msgstr "Move selection 10mm in negative X direction" msgid "Arrow Right" msgstr "Arrow Right" msgid "Move selection 10 mm in positive X direction" -msgstr "Move selection 10 mm in positive X direction" +msgstr "Move selection 10mm in positive X direction" msgid "Shift+Any arrow" msgstr "" msgid "Movement step set to 1 mm" -msgstr "Movement step set to 1 mm" +msgstr "Movement step set to 1mm" msgid "keyboard 1-9: set filament for object/part" -msgstr "keyboard 1-9: set filament for object/part" +msgstr "Keyboard 1-9: set filament for object/part" msgid "Camera view - Default" msgstr "Camera view - Default" @@ -4230,7 +4333,7 @@ msgid "Set extruder number for the objects and parts" msgstr "Set extruder number for the objects and parts" msgid "Delete objects, parts, modifiers " -msgstr "Delete objects, parts, modifiers " +msgstr "Delete objects, parts, modifiers" msgid "Space" msgstr "Space" @@ -4429,7 +4532,7 @@ msgid "too many files" msgstr "too many files" msgid "file too large" -msgstr "file too large" +msgstr "File too large" msgid "unsupported method" msgstr "unsupported method" @@ -4498,7 +4601,7 @@ msgid "invalid filename" msgstr "invalid filename" msgid "buffer too small" -msgstr "buffer too small" +msgstr "Buffer too small" msgid "internal error" msgstr "internal error" @@ -4507,7 +4610,7 @@ msgid "file not found" msgstr "file not found" msgid "archive too large" -msgstr "archive too large" +msgstr "Archive too large" msgid "validation failed" msgstr "validation failed" @@ -4519,7 +4622,8 @@ msgstr "write callback failed" msgid "" "%1% is too close to exclusion area, there will be collisions when printing." msgstr "" -"%1% is too close to exclusion area, there will be collisions when printing." +"%1% is too close to an exclusion area; there will be collisions when " +"printing." #, boost-format msgid "" @@ -4527,7 +4631,8 @@ msgid "" "%1% is too close to exclusion area, there will be collisions when printing." msgstr "" "\n" -"%1% is too close to exclusion area, there will be collisions when printing." +"%1% is too close to an exclusion area; there will be collisions when " +"printing." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -4543,7 +4648,7 @@ msgstr " is too close to others, there will be collisions when printing.\n" msgid "" " is too close to exclusion area, there will be collisions when printing.\n" msgstr "" -" is too close to exclusion area, there will be collisions when printing.\n" +" is too close to an exclusion area, there will be collisions when printing.\n" msgid "Prime Tower" msgstr "Prime Tower" @@ -4552,7 +4657,7 @@ msgid " is too close to others, and collisions may be caused.\n" msgstr " is too close to others, and collisions may be caused.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " is too close to exclusion area, and collisions will be caused.\n" +msgstr " is too close to an exclusion area, and collisions will be caused.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " @@ -4612,10 +4717,10 @@ msgstr "" "height." msgid "Too small line width" -msgstr "Too small line width" +msgstr "Line width too small" msgid "Too large line width" -msgstr "Too large line width" +msgstr "Line width too large" msgid "" "The prime tower requires that support has the same layer height with object." @@ -4680,7 +4785,8 @@ msgstr "Printable height" msgid "Maximum printable height which is limited by mechanism of printer" msgstr "" -"This is the maximum printable height which is limited by printer mechanisms." +"This is the maximum printable height which is limited by the height of the " +"build area." msgid "Printer preset names" msgstr "Printer preset names" @@ -4710,8 +4816,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Cool Plate" msgstr "" -"This is the bed temperature for layers except for the initial one. A value " -"of 0 means the filament does not support printing on the Cool Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Cool Plate." msgid "°C" msgstr "°C" @@ -4723,15 +4829,15 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"This is the bed temperature for layers except for the initial one. A value " -"of 0 means the filament does not support printing on the Engineering Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Engineering Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"This is the bed temperature for layers except for the initial one. A value " -"of 0 means the filament does not support printing on the High Temp Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the High Temp Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -4748,21 +4854,21 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate" msgstr "" -"This is the bed temperature of the initial layer. A value of 0 means the " +"This is the bed temperature of the first layer. A value of 0 means the " "filament does not support printing on the Cool Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Engineering Plate" msgstr "" -"This is the bed temperature of the initial layer. A value of 0 means the " +"This is the bed temperature of the first layer. A value of 0 means the " "filament does not support printing on the Engineering Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the High Temp Plate" msgstr "" -"This is the bed temperature of the initial layer. A value of 0 means the " +"This is the bed temperature of the first layer. A value of 0 means the " "filament does not support printing on the High Temp Plate." msgid "" @@ -4806,12 +4912,12 @@ msgid "" msgstr "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"having too thin a shell when layer height is small. 0 means that this " +"setting is disabled and the thickness of the bottom shell is determined " +"simply by the number of bottom shell layers." msgid "Force cooling for overhang and bridge" -msgstr "Force cooling for overhang and bridge" +msgstr "Force cooling for overhangs and bridges" msgid "" "Enable this option to optimize part cooling fan speed for overhang and " @@ -4821,16 +4927,16 @@ msgstr "" "bridges to get better cooling" msgid "Fan speed for overhang" -msgstr "Fan speed for overhang" +msgstr "Fan speed for overhangs" msgid "" "Force part cooling fan to be this speed when printing bridge or overhang " "wall which has large overhang degree. Forcing cooling for overhang and " "bridge can get better quality for these part" msgstr "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridges or overhang " +"walls which have a large overhang degree. Forcing cooling for overhangs and " +"bridges can achieve better quality for these parts." msgid "Cooling overhang threshold" msgstr "Cooling overhang threshold" @@ -4840,9 +4946,9 @@ msgid "" "exceeds this value. Expressed as percentage which indicides how much width " "of the line without support from lower layer" msgstr "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer" +"This forces the cooling fan to use a specific speed when overhang degrees of " +"parts exceed the set value. It is expressed as percentage which indicates " +"how much line is acceptable without support from lower layers." msgid "Bridge flow" msgstr "Bridge flow" @@ -4851,8 +4957,8 @@ msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag" msgstr "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridges, to avoid sagging." +"Decrease this value slightly (for example 0.9) to reduce the amount of " +"material extruded for bridges to avoid sagging." msgid "Only one wall on top surfaces" msgstr "Only one wall on top surfaces" @@ -4861,14 +4967,16 @@ msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"Use only one wall on flat top surface, to give more space to the top infill " +"Use only one wall on flat top surfaces, to give more space to the top infill " "pattern" msgid "Slow down for overhang" -msgstr "Slow down for overhang" +msgstr "Slow down for overhangs" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "Enable this option to slow printing down for different overhang degree" +msgstr "" +"Enable this option to slow down when printing overhangs. The speeds for " +"different overhang percentages are set below." msgid "mm/s" msgstr "mm/s" @@ -4891,8 +4999,8 @@ msgid "" "and calculated automatically" msgstr "" "This controls brim position including outer side of models, inner side of " -"holes or both. Auto means both the brim position and brim width are analyzed " -"and calculated automatically." +"holes, or both. Auto means both the brim position and brim width are " +"analyzed and calculated automatically." msgid "Brim-object gap" msgstr "Brim-object gap" @@ -4942,7 +5050,7 @@ msgstr "" "Enable this option to slow printing speed down to ensure that the final " "layer time is not shorter than the layer time threshold in \"Max fan speed " "threshold\", so that the layer can be cooled for a longer time. This can " -"improve the cooling quality for needle and small details" +"improve the quality for small details." msgid "Normal printing" msgstr "Normal printing" @@ -4976,8 +5084,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" +"Turn off all cooling fans for the first few layers. This can be used to " +"improve bed adhesion." msgid "layers" msgstr "layers" @@ -4989,9 +5097,9 @@ msgid "" "Don't support the whole bridge area which make support very large. Bridge " "usually can be printing directly without support if not very long" msgstr "" -"This disables supporting bridge areas, which can make support very large. " -"Bridges can usually be printed directly without support if they are not very " -"long." +"This disables supporting bridges, which decreasing the mount of support " +"required. Bridges can usually be printed directly without support for a " +"reasonable distance." msgid "Thick bridges" msgstr "" @@ -5013,9 +5121,9 @@ msgid "" "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." +"This is the maximum length of bridges that don't need support. Set it to 0 " +"if you want all bridges to be supported, and set it to a very large value if " +"you don't want any bridges to be supported." msgid "End G-code" msgstr "End G-code" @@ -5049,7 +5157,8 @@ msgstr "Bottom surface pattern" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"This is the line pattern of bottom surface infill, but not bridge infill." +"This is the line pattern of bottom surface infill, not including bridge " +"infill." msgid "Line width of outer wall" msgstr "Line width of outer wall" @@ -5058,8 +5167,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." +"This is the printing speed for the outer walls of parts. These are generally " +"printed slower than inner walls for higher quality." msgid "Order of inner wall/outer wall/infil" msgstr "Order of inner wall/outer wall/infill" @@ -5137,8 +5246,9 @@ msgid "" "If enable this setting, part cooling fan will never be stoped and will run " "at least at minimum speed to reduce the frequency of starting and stoping" msgstr "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"Enabling this setting means that part cooling fan will never stop entirely " +"and will instead run at least at minimum speed to reduce the frequency of " +"starting and stopping." msgid "Layer time" msgstr "Layer time" @@ -5148,7 +5258,7 @@ msgid "" "shorter than this value. Fan speed is interpolated between the minimum and " "maximum fan speeds according to layer printing time" msgstr "" -"Part cooling fan will be enabled for layers where the estimated time is " +"The part cooling fan will be enabled for layers where the estimated time is " "shorter than this value. Fan speed is interpolated between the minimum and " "maximum fan speeds according to layer printing time." @@ -5166,9 +5276,9 @@ msgid "" "extruded per second. Printing speed is limited by max volumetric speed, in " "case of too high and unreasonable speed setting. Zero means no limit" msgstr "" -"This setting stands for the volume of filament that can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed in " -"case of too high and unreasonable speed setting. 0 means no limit." +"Use this to set the maximum volume of filament that can be melted and " +"extruded per second. Printing speed is limited by maximum volumetric speed " +"if settings are unreasonably high. 0 means there is no limit." msgid "mm³/s" msgstr "mm³/s" @@ -5199,8 +5309,8 @@ msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " "and should be accurate" msgstr "" -"Filament diameter is used to calculate extrusion in G-code, so it is " -"important and should be accurate" +"Filament diameter is used to calculate extrusion variables in G-code, so it " +"is important that this is accurate and precise." msgid "Density" msgstr "Density" @@ -5215,7 +5325,7 @@ msgid "Type" msgstr "Type" msgid "The material type of filament" -msgstr "Filament material." +msgstr "Filament material type" msgid "Soluble material" msgstr "Soluble material" @@ -5231,10 +5341,10 @@ msgstr "Support material" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"Support material is commonly used to print support and support interface" +"Support material is commonly used to print support and support interfaces." msgid "Temperature of vitrificaiton" -msgstr "Temperature of vitrificaiton" +msgstr "Temperature of vitrification" msgid "" "Material becomes soft at this temperature. Thus the heatbed cannot be hotter " @@ -5316,7 +5426,7 @@ msgstr "" "acceleration can improve build plate adhesion." msgid "Line width of initial layer" -msgstr "Line width of initial layer" +msgstr "Line width of first layer" msgid "Initial layer height" msgstr "First layer height" @@ -5325,7 +5435,7 @@ msgid "" "Height of initial layer. Making initial layer height to be thick slightly " "can improve build plate adhension" msgstr "" -"This is the height of the first layer. Making the first layer hight higher " +"This is the height of the first layer. Making the first layer height thicker " "can improve build plate adhesion." msgid "Adaptive layer height" @@ -5341,7 +5451,7 @@ msgstr "" "Enabling this option means that the height of each layer after the first " "will be automatically calculated according to the slope of the model’s " "surface.\n" -"Please not that this option only takes effect if there is no prime tower " +"Please note that this option only takes effect if there is no prime tower " "generated on the current plate." msgid "Speed of initial layer except the solid infill part" @@ -5358,7 +5468,7 @@ msgid "Initial layer nozzle temperature" msgstr "First layer nozzle temperature" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Nozzle temperature to print first layer when using this filament" +msgstr "Nozzle temperature for printing the first layer with this filament" msgid "Full fan speed at layer" msgstr "Full fan speed at layer" @@ -5368,7 +5478,8 @@ msgid "" "look. This setting controls the fuzzy position" msgstr "" "This setting makes the toolhead randomly jitter while printing walls so that " -"the surface has a rough look. This setting controls the fuzzy position." +"the surface has a rough textured look. This setting controls the fuzzy " +"position." msgid "None" msgstr "None" @@ -5534,7 +5645,7 @@ msgid "Print speed of ironing lines" msgstr "This is the print speed for ironing lines." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "This G-code is inserted at every layer change after lift z." +msgstr "This G-code is inserted at every layer change after the z lift." msgid "Supports silent mode" msgstr "Silent Mode" @@ -5543,8 +5654,8 @@ msgid "" "Whether the machine supports silent mode in which machine use lower " "acceleration to print" msgstr "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" +"Whether the machine supports silent mode in which machine uses lower " +"acceleration to print more quietly" msgid "Maximum speed X" msgstr "Maximum speed X" @@ -5658,8 +5769,8 @@ msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " "is the maximum speed limitation of part cooling fan" msgstr "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of the part cooling fan." +"The part cooling fan speed may be increased when auto cooling is enabled. " +"This is the maximum speed for the part cooling fan." msgid "Max" msgstr "Max" @@ -5679,9 +5790,9 @@ msgid "" "during printing except the first several layers which is defined by no " "cooling layers" msgstr "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers" +"This is the speed of auxiliary part cooling fan. The auxiliary fan will run " +"at this speed during printing except for during the first several layers " +"which may be set to have no part cooling." msgid "Min" msgstr "Min" @@ -5690,8 +5801,8 @@ msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " "layer hight when enable adaptive layer height" msgstr "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" +"The lowest printable layer height for the extruder. This is used to limit " +"the minimum layer height when adaptive layer height is enabled." msgid "Min print speed" msgstr "Min print speed" @@ -5709,7 +5820,7 @@ msgid "Nozzle volume" msgstr "Nozzle volume" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Volume of nozzle between the cutter and the end of nozzle" +msgstr "Volume of nozzle between the filament cutter and the end of the nozzle" msgid "Reduce infill retraction" msgstr "Reduce infill retraction" @@ -5730,7 +5841,7 @@ msgid "User can self-define the project file name when export" msgstr "Users can decide project file names when exporting." msgid "Detect overhang wall" -msgstr "Detect overhang wall" +msgstr "Detect overhang walls" #, c-format, boost-format msgid "" @@ -5741,7 +5852,7 @@ msgstr "" "different speed to print. For 100%% overhang, bridging speed is used." msgid "Line width of inner wall" -msgstr "Line width of inner wall" +msgstr "Line width of inner walls" msgid "Speed of inner wall" msgstr "This is the speed for inner walls." @@ -5832,8 +5943,8 @@ msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " "travel. Set zero to disable retraction" msgstr "" -"Some amount of the material in the extruder is pulled back to avoid oozing " -"during long travel. Set to 0 to disable retraction." +"This is the amount of filament in the extruder that is pulled back to avoid " +"oozing during long travel distances. Set to 0 to disable retraction." msgid "Z hop when retract" msgstr "Z hop when retracting" @@ -5879,6 +5990,9 @@ msgstr "Aligned" msgid "Back" msgstr "Back" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Skirt distance" @@ -5918,7 +6032,7 @@ msgstr "Line width of internal solid infill" msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"This is the speed for internal solid infill, but not the top or bottom " +"This is the speed for internal solid infill, not including the top or bottom " "surface." msgid "Spiral vase" @@ -5949,10 +6063,10 @@ msgid "Start G-code" msgstr "Start G-code" msgid "Start G-code when start the whole printing" -msgstr "Start G-code when starting a print" +msgstr "G-code added when starting a print" msgid "Start G-code when start the printing of this filament" -msgstr "Start G-code when starting printing with this filament" +msgstr "G-code added when the printer starts using this filament" msgid "Enable support" msgstr "Enable support" @@ -6006,15 +6120,14 @@ msgid "Top Z distance" msgstr "Top Z distance" msgid "The z gap between the top support interface and object" -msgstr "" -"This determines the Z gap between the top support interface and the object." +msgstr "This determines the Z gap between top support interfaces and objects." msgid "" "Filament to print support and skirt. 0 means no specific filament for " "support and current filament is used" msgstr "" -"Filament to print support and skirt. 0 means no specific filament for " -"support and current filament is used" +"This is the filament used to print supports and skirts. 0 means no specific " +"filament for support and the current filament is used." msgid "Line width of support" msgstr "Line width of support" @@ -6032,8 +6145,8 @@ msgid "" "Filament to print support interface. 0 means no specific filament for " "support interface and current filament is used" msgstr "" -"Filament to print support interface. 0 means no specific filament for " -"support interface and current filament is used" +"This is the filament to print support interfaces. 0 means no specific " +"filament for support interfaces and the current filament is used" msgid "Top interface layers" msgstr "Top interface layers" @@ -6080,9 +6193,9 @@ msgid "" "interface is Rectilinear, while default pattern for soluble support " "interface is Concentric" msgstr "" -"This is the line pattern for support interface. The default pattern for non-" -"soluble support interface is Rectilinear while the default pattern for " -"soluble support interface is Concentric." +"This is the line pattern for support interfaces. The default pattern for non-" +"soluble support interfaces is Rectilinear while the default pattern for " +"soluble support interfaces is Concentric." msgid "Base pattern spacing" msgstr "Base pattern spacing" @@ -6174,8 +6287,8 @@ msgid "" "may cause the model broken free from build plate" msgstr "" "It is not recommended to have the bed temperature of other layers to be " -"lower than initial layer for more than this threshold. Bed temperatures that " -"are too low may cause models to break free from the build plate." +"lower than the first layer by more than this threshold. Bed temperatures " +"that are too low may cause models to break free from the build plate." msgid "Detect thin wall" msgstr "Detect thin walls" @@ -6209,8 +6322,8 @@ msgid "" "thickness, the top shell layers will be increased" msgstr "" "This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" +"layer. When the thickness calculated by this value is thinner than the top " +"shell thickness, the top shell layers will be increased" msgid "Top solid layers" msgstr "Top solid layers" @@ -6227,9 +6340,9 @@ msgid "" msgstr "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"having too thin a shell when layer height is small. 0 means that this " +"setting is disabled and thickness of top shell is determined simply by the " +"number of top shell layers." msgid "Speed of travel which is faster and without extrusion" msgstr "This is the speed at which traveling is done." @@ -6267,7 +6380,8 @@ msgid "Prime volume" msgstr "Prime volume" msgid "The volume of material to prime extruder on tower." -msgstr "This is the volume of material to prime the extruder on the tower." +msgstr "" +"This is the volume of material to prime the extruder with on the tower." msgid "Width" msgstr "Width" @@ -6307,8 +6421,8 @@ msgid "" "as a result" msgstr "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result" +"filament and decrease the print time. Colors of the objects will be mixed as " +"a result." msgid "X-Y hole compensation" msgstr "X-Y hole compensation" @@ -6353,7 +6467,7 @@ msgid "Export 3MF" msgstr "Export 3mf" msgid "Export project as 3MF." -msgstr "This exports the project as a 3mf." +msgstr "This exports the project as a 3mf file." msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" msgstr "Slice the plates: 0-all plates, i-plate i, others-invalid" @@ -6460,14 +6574,8 @@ msgstr "Optimizing toolpath" msgid "Empty layers around bottom are replaced by nearest normal layers." msgstr "Empty layers around bottom are replaced by nearest normal layers." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." msgid "Slicing mesh" msgstr "Slicing mesh" @@ -6510,6 +6618,9 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Save configuration as:" +#~ msgstr "Save configuration as:" + #~ msgid "Line type" #~ msgstr "Line type" @@ -6538,38 +6649,26 @@ msgstr "Support: propagate branches at layer %d" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "The 3mf is not compatible, loading geometry data only!" +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "The model has overlapping or self-intersecting facets. Repair was " +#~ "attempted, however we recommend checking the results or repairing the " +#~ "input file and retrying." #~ msgid "" #~ "Auto orientates selected objects or all objects.If there are selected " #~ "objects, it just orientates the selected ones.Otherwise, it will " #~ "orientates all objects in the project." #~ msgstr "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." +#~ "Auto orients selected objects or all objects.If there are selected " +#~ "objects, it just orients the selected ones.Otherwise, it will orient all " +#~ "objects in the project." #~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "The configuration is not compatible; it cannot be loaded!" - -#~ msgid "Auto arrange" -#~ msgstr "Auto Arrange" - -#~ msgid "Filaments Selection" -#~ msgstr "Filaments selection" - -#~ msgid "Printer Selection" -#~ msgstr "Printer Selection" - -#~ msgid "Spiral mode" -#~ msgstr "Spiral mode" - -#~ msgid "Fragment area" -#~ msgstr "Fragment area" - -#~ msgid "Clear all" -#~ msgstr "Clear all" +#~ msgstr "The configuration is not compatible and cannot be loaded!" #~ msgid "Creating" #~ msgstr "Creating" @@ -6577,38 +6676,26 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Uploading" #~ msgstr "Uploading" -#~ msgid "Waiting" -#~ msgstr "Waiting" - #~ msgid "Sending" #~ msgstr "Sending" -#~ msgid "Finished" -#~ msgstr "Finished" - #~ msgid "Please fill report first." #~ msgstr "Please fill report first." #~ msgid "Unable to create zip file" #~ msgstr "Unable to create zip file" -#~ msgid "Enter a search term" -#~ msgstr "Enter a search term" +#~ msgid "Filaments Selection" +#~ msgstr "Filaments selection" -#~ msgid "Debug" -#~ msgstr "Debug" +#~ msgid "Printer Selection" +#~ msgstr "Printer Selection" -#~ msgid "Monitoring" -#~ msgstr "Monitoring" +#~ msgid "Auto arrange" +#~ msgstr "Auto Arrange" -#~ msgid "Fragment filter" -#~ msgstr "Fragment filter" - -#~ msgid "Fragment Filter" -#~ msgstr "Fragment Filter" - -#~ msgid "Position:" -#~ msgstr "Position:" +#~ msgid "Spiral mode" +#~ msgstr "Spiral mode" #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Mouse wheel" @@ -6622,6 +6709,9 @@ msgstr "Support: propagate branches at layer %d" #~ "Please solve the problem by moving it totally on or off the plate, and " #~ "confirming that the height is within the build volume." +#~ msgid "Clear all" +#~ msgstr "Clear all" + #~ msgid "Ctrl + Any arrow" #~ msgstr "Ctrl + Any arrow" @@ -6663,11 +6753,20 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Fix model through cloud" #~ msgstr "Fix model through cloud" +#~ msgid "Fragment Filter" +#~ msgstr "Fragment Filter" + +#~ msgid "Fragment area" +#~ msgstr "Fragment area" + +#~ msgid "Fragment filter" +#~ msgstr "Fragment filter" + #~ msgid "" #~ "Heat the nozzle to target \n" #~ "temperature" #~ msgstr "" -#~ "Heat the nozzle to target \n" +#~ "Heat the nozzle to the target \n" #~ "temperature" #~ msgid "In the calibration of extrusion flow" @@ -6679,6 +6778,9 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Module" #~ msgstr "Module" +#~ msgid "Monitoring" +#~ msgstr "Monitoring" + #~ msgid "Output file" #~ msgstr "Output file" @@ -6694,15 +6796,18 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Please upgrade your printer first" #~ msgstr "Please upgrade your printer first" +#~ msgid "Position:" +#~ msgstr "Position:" + #~ msgid "" #~ "Preview only mode:\n" #~ "The loaded file contains gcode only." #~ msgstr "" #~ "Preview only mode:\n" -#~ "The loaded file contains gcode only." +#~ "The loaded file contains G-code only." #~ msgid "Preview only mode for gcode file." -#~ msgstr "Preview only mode for gcode file." +#~ msgstr "Preview only mode for G-code file." #~ msgid "" #~ "Push new filament \n" @@ -6728,17 +6833,17 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" -#~ "Successfully sent.Will automatically jump to the device page in %s s" +#~ "Successfully sent. Will automatically jump to the device page in %s s" #~ msgid "Swith cloud environment, Please login again!" -#~ msgstr "Swith cloud environment, Please login again!" +#~ msgstr "Switch cloud environment, Please login again!" #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" #~ msgstr "" -#~ "The firmware versions of printer and AMS are too low.Please update to the " -#~ "latest version before sending the print job" +#~ "The firmware versions of the printer and AMS are too low. Please update " +#~ "them to the latest version before sending any print jobs." #~ msgid "User pause" #~ msgstr "User pause" diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index 465f60c147..203096fa2e 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,13 +2,16 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.1\n" msgid "Supports Painting" msgstr "Pintando Soportes" @@ -74,7 +77,7 @@ msgid "Sphere" msgstr "Esfera" msgid "Fill" -msgstr "Llenar" +msgstr "Fill" msgid "Gap Fill" msgstr "" @@ -143,10 +146,10 @@ msgid "Shortcut Key " msgstr "Tecla de acceso directo " msgid "Triangle" -msgstr "Triángulo" +msgstr "Triangle" msgid "Height Range" -msgstr "Rango de altura" +msgstr "Height Range" msgid "Remove painted color" msgstr "Eliminar color pintado" @@ -331,10 +334,13 @@ msgid "Operation already cancelling. Please wait few seconds." msgstr "Operación ya cancelada. Por favor, espere unos segundos." msgid "Face recognition" -msgstr "Reconocimiento facial" +msgstr "Face recognition" msgid "Perform Recognition" -msgstr "Realizar el reconocimiento" +msgstr "Perform Recognition" + +msgid "Clipping of view" +msgstr "" msgid "Reset direction" msgstr "" @@ -543,8 +549,8 @@ msgid "" "The version of Bambu studio is too low and needs to be updated to the latest " "version before it can be used normally" msgstr "" -"La versión de Bambu Studio es una versión demasiado antigua y necesita ser " -"actualizada a la última versión antes de poder utilizarla con normalidad" +"The version of Bambu Studio is too low and needs to be updated to the latest " +"version before it can be used normally" msgid "Login information expired. Please login again." msgstr "Los datos de acceso han caducado. Por favor, inicie sesión de nuevo." @@ -553,7 +559,7 @@ msgid "Loading" msgstr "Cargando" msgid "Loading user preset" -msgstr "Cargando la preselección del usuario" +msgstr "Loading user preset" msgid "Switching application language" msgstr "Cambio de idioma de la aplicación" @@ -1079,7 +1085,7 @@ msgid "Push new filament into extruder" msgstr "" msgid "Purge old filament" -msgstr "Purgar el filamento viejo" +msgstr "Purge old filament" msgid "?" msgstr "?" @@ -1091,10 +1097,10 @@ msgid "Click the pencil icon to edit the filament." msgstr "Haga clic en el icono del lápiz para editar el filamento." msgid "Load Filament" -msgstr "Cargar filamento" +msgstr "Load" msgid "Unload Filament" -msgstr "Descargar" +msgstr "Unload" msgid "Tips" msgstr "Consejos" @@ -1204,67 +1210,62 @@ msgid "Exception" msgstr "Excepción" msgid "Logging in" -msgstr "Iniciando sesión" +msgstr "Logging in" msgid "Login failed" -msgstr "Fallo en el inicio de sesión" +msgstr "Login failed" msgid "The region parameter is incorrrect" -msgstr "El parámetro de región es incorrecto." +msgstr "The region parameter is incorrrect." msgid "Failure of printer login" -msgstr "Fallo en el inicio de sesión de la impresora" +msgstr "Printer login failure" msgid "Failed to get ticket" -msgstr "No se ha podido conseguir el ticket" +msgstr "Failed to get ticket" msgid "User authorization timeout" -msgstr "Límite de tiempo de espera de la autorización del usuario" +msgstr "User authorization timeout" msgid "Failure of bind" -msgstr "Fallo en la vinculación" +msgstr "Binding failure" msgid "Unknown Failure" -msgstr "Error desconocido" +msgstr "Unknown Failure" msgid "Abnormal print file data. Please slice again" -msgstr "Datos anormales del archivo de impresión. Por favor, procese de nuevo" +msgstr "Abnormal print file data. Please slice again" msgid "Task canceled" -msgstr "Tarea cancelada" +msgstr "Task canceled" msgid "Upload task timed out. Please check the network problem and try again" -msgstr "" -"La tarea de carga ha terminado. Por favor, compruebe el problema de red e " -"inténtelo de nuevo" +msgstr "Upload task timed out. Please check the network and try again" msgid "Cloud service connection failed. Please try again." -msgstr "" -"Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de " -"nuevo." +msgstr "Cloud service connection failed. Please try again." msgid "Print file not found, please slice again" -msgstr "" -"No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" +msgstr "Print file not found, please slice again" msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again" msgstr "" -"El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, " -"simplifique el modelo y vuelva a procesarlo" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again" msgid "Failed uploading print file" -msgstr "Fallo al cargar el archivo de impresión" +msgstr "Failed uploading print file" msgid "Wrong Access code" -msgstr "Código de acceso incorrecto" +msgstr "Wrong Access code" msgid "Sending print job over LAN" -msgstr "Enviando el trabajo de impresión a través de la LAN" +msgstr "Sending print job over LAN" msgid "Sending print job through cloud service" -msgstr "Enviando trabajo de impresión a través del servicio en la nube" +msgstr "Sending print job through cloud service" msgid "Service Unavailable" msgstr "" @@ -1272,8 +1273,11 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" -msgstr "Enviando la configuración de impresión" +msgstr "Sending print configuration" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %s s" @@ -1310,7 +1314,7 @@ msgid "License" msgstr "Licencia" msgid "Bambu Studio is licensed under " -msgstr "Bambu Studio tiene licencia bajo " +msgstr "Bambu Studio is licensed under " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" @@ -1319,18 +1323,18 @@ msgid "" "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " "by Alessandro Ranellucci and the RepRap community" msgstr "" -"Bambu Studio se basa en PrusaSlicer de Prusa Research, que proviene de " -"Slic3r de Alessandro Ranellucci y la comunidad RepRap" +"Bambu Studio is based on PrusaSlicer by Prusa Research, which is based on " +"Slic3r by Alessandro Ranellucci and the RepRap community" msgid "Libraries" -msgstr "Librerías" +msgstr "Libraries" msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Este software utiliza componentes de código abierto cuyos derechos de autor " -"y otros derechos de propiedad pertenecen a sus respectivos propietarios" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" #, c-format, boost-format msgid "About %s" @@ -1368,8 +1372,8 @@ msgid "" "Nozzle\n" "Temperature" msgstr "" -"Boquilla\n" -"Temperatura" +"Nozzle\n" +"Temperature" msgid "max" msgstr "max" @@ -1379,7 +1383,7 @@ msgstr "min" #, boost-format msgid "The input value should be greater than %1% and less than %2%" -msgstr "El valor de entrada debe ser mayor que %1% y menor que %2%" +msgstr "The input value should be greater than %1% and less than %2%" msgid "SN" msgstr "SN" @@ -1398,49 +1402,49 @@ msgid "" msgstr "" msgid "Insertion update" -msgstr "Actualización de la inserción" +msgstr "Insertion update" msgid "" "The AMS will automatically read the filament information when inserting a " "new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"El AMS leerá automáticamente la información del filamento al insertar un " -"nuevo filamento de Bambu Lab. Esto tardara unos 20 segundos." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament spool. This takes about 20 seconds." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" -"Nota: si se inserta un nuevo filamento durante la impresión, el AMS no leerá " -"automáticamente ninguna información hasta que la impresión haya finalizado." +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing has finished." msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"Al insertar un nuevo filamento, el AMS no leerá automáticamente su " -"información, dejándola en blanco para que usted la introduzca manualmente." +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." msgid "Power on update" -msgstr "Actualización de encendido" +msgstr "Power on update" msgid "" "The AMS will automatically read the information of inserted filament on " "start-up. It will take about 1 minute.The reading process will roll filament " "spools." msgstr "" -"El AMS leerá automáticamente la información del filamento insertado al " -"arrancar. Tomará aproximadamente 1 minuto. El proceso de lectura hará rodar " -"las bobinas de filamento." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will rotate the " +"filament spools." msgid "" "The AMS will not automatically read information from inserted filament " "during startup and will continue to use the information recorded before the " "last shutdown." msgstr "" -"El AMS no leerá automáticamente la información del filamento insertado " -"durante el arranque y seguirá utilizando la información registrada antes del " -"último apagado." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgid "File" msgstr "Archivo" @@ -1747,70 +1751,67 @@ msgstr "" "del 100%.\n" msgid "Auto bed leveling" -msgstr "Nivelación de cama automática" +msgstr "Auto bed leveling" msgid "Heatbed preheating" -msgstr "Precalentamiento de la cama caliente" +msgstr "Heatbed preheating" msgid "Sweeping XY mech mode" -msgstr "Barrido en XY modo mecánico" +msgstr "Sweeping XY mech mode" msgid "Changing filament" -msgstr "Cambiando el filamento" +msgstr "Changing filament" msgid "M400 pause" -msgstr "Pausa M400" +msgstr "M400 pause" msgid "Paused due to filament runout" -msgstr "Pausa por agotamiento del filamento" +msgstr "Paused due to filament runout" msgid "Heating hotend" -msgstr "Calentando boquilla" +msgstr "Heating hotend" msgid "Calibrating extrusion" -msgstr "Calibrando la extrusión" +msgstr "Calibrating extrusion" msgid "Scanning bed surface" -msgstr "Escaneando la superficie de la cama" +msgstr "Scanning bed surface" msgid "Inspecting first layer" -msgstr "Inspeccionando la primera capa" +msgstr "Inspecting first layer" msgid "Identifying build plate type" -msgstr "Identificando el tipo de placa de impresión" +msgstr "Identifying build plate type" msgid "Calibrating Micro Lidar" -msgstr "Calibrando el Micro Lidar" +msgstr "Calibrating Micro Lidar" msgid "Homing toolhead" -msgstr "Homing del Cabezal" +msgstr "Homing toolhead" msgid "Cleaning nozzle tip" -msgstr "Limpiando la boquilla" +msgstr "Cleaning nozzle tip" msgid "Checking extruder temperature" -msgstr "Comprobando la temperatura del extrusor" +msgstr "Checking extruder temperature" msgid "Printing was paused by the user" -msgstr "El usuario ha interrumpido la impresión" +msgstr "Printing was paused by the user" msgid "Pause of front cover falling" -msgstr "Pausa al caer la cubierta frontal" +msgstr "Pause of front cover falling" msgid "Calibrating the micro lida" -msgstr "Calibrando el micro lidar" +msgstr "Calibrating the micro lidar" msgid "Calibrating extrusion flow" -msgstr "Calibrando el flujo de extrusión" +msgstr "Calibrating extrusion flow" msgid "Paused due to nozzle temperature malfunction" -msgstr "" -"Pausado debido a un mal funcionamiento de la temperatura de la boquilla" +msgstr "Paused due to nozzle temperature malfunction" msgid "Paused due to heat bed temperature malfunction" -msgstr "" -"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la " -"cama caliente" +msgstr "Paused due to heat bed temperature malfunction" msgid "MC" msgstr "MC" @@ -2006,10 +2007,10 @@ msgid "Filament 1" msgstr "Filamento 1" msgid "Flushed filament" -msgstr "Filamento limpiado" +msgstr "Flushed filament" msgid "Filament change times" -msgstr "Tiempos de cambio de filamento" +msgstr "Filament change times" msgid "Color change" msgstr "Cambio de color" @@ -2163,9 +2164,9 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"El programa de calibración detecta el estado de su dispositivo " -"automáticamente para minimizar la desviación.\n" -"Mantiene el dispositivo con un rendimiento óptimo." +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" +"It keeps the device performing optimally." msgid "Calibration Flow" msgstr "Calibración del flujo" @@ -2183,24 +2184,33 @@ msgid "Timelapse" msgstr "Timelapse" msgid "Monitoring Recording" -msgstr "Monitoreo de grabación" +msgstr "Monitoring Recording" msgid "ConnectPrinter(LAN)" -msgstr "Conectar Impresora (LAN)" +msgstr "Connect Printer (LAN)" msgid "Please input the printer access code:" -msgstr "Por favor, introduzca el código de acceso a la impresora:" +msgstr "Please input the printer access code:" msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" msgstr "" -"Puede encontrarse en \"Configuración > Red > Código de conexión\"\n" -"en la impresora, como se muestra en la figura:" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Teclea un término de búsqueda" + +msgid "Online" +msgstr "En línea" + +msgid "Offline" +msgstr "Fuera de línea" + msgid "Application is closing" msgstr "La aplicación se está cerrando" @@ -2217,11 +2227,14 @@ msgid "Preview" msgstr "Previsualización" msgid "Device" -msgstr "Dispositivo" +msgstr "Device" msgid "Project" msgstr "Proyecto" +msgid "Debug" +msgstr "Depurar" + msgid "Slice" msgstr "Laminar" @@ -2259,6 +2272,9 @@ msgstr "Comprobar Actualicaciones" msgid "&About %s" msgstr "&Acerca de %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2333,9 +2349,24 @@ msgstr "Importar 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Cargar un modelo" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "Exportar todos los objetos como STL" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Exportar el archivo rebanado actual" @@ -2345,6 +2376,12 @@ msgstr "Exportar código G" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exportar" @@ -2457,8 +2494,39 @@ msgstr "Ve&r" msgid "&Help" msgstr "Ayu&da" -msgid "Save configuration as:" -msgstr "Guardar la configuración como:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Falta el archivo" @@ -2503,6 +2571,58 @@ msgstr "Reproduciendo..." msgid "Load failed [%d]!" msgstr "¡La carga ha fallado [%d]!" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Descargar" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Esperando" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Terminado" + msgid "Speed:" msgstr "Velocidad:" @@ -2527,9 +2647,6 @@ msgstr "Intercambiar los ejes Y/Z" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Progreso de impresión" @@ -2608,9 +2725,6 @@ msgstr "No se ha podido conectar con el servidor" msgid "Failed to connect to the printer" msgstr "No se ha podido conectar a la impresora" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "OK" @@ -2644,9 +2758,6 @@ msgstr "%s info" msgid "%s information" msgstr "%s información" -msgid "Download" -msgstr "Descargar" - msgid "Skip" msgstr "Saltar" @@ -2876,7 +2987,7 @@ msgstr "Restaurar" msgid "Loading file: %s" msgstr "Cargando archivo: %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2908,8 +3019,8 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgid "the 3mf is not compatible, load geometry data only!" +msgstr "el 3mf no es compatible, ¡cargue sólo los datos geométricos!" msgid "Incompatible 3mf" msgstr "3mf Incompatible " @@ -2956,7 +3067,7 @@ msgid "Object with multiple parts was detected" msgstr "Se ha detectado un objeto con varias partes" msgid "The file does not contain any geometry data." -msgstr "El archivo no contiene ninguna información geométrica." +msgstr "The file does not contain any geometry data." msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " @@ -3051,10 +3162,10 @@ msgid "G-code files can not be loaded with models together!" msgstr "¡Los archivos de código G no pueden cargarse con los modelos juntos!" msgid "Can not add models when in preview mode!" -msgstr "No se pueden añadir modelos en el modo de vista previa" +msgstr "Unable to add models in preview mode" msgid "Add Models" -msgstr "Añadir Modelos" +msgstr "Add Models" msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" @@ -3117,9 +3228,7 @@ msgstr "Tamaño: %1% x %2% x %3% mm\n" #, boost-format msgid "Volume: %1% in³\n" -msgstr "" -"Volumen: %1% pulgadas³\n" -" \n" +msgstr "Volume: %1% in³\n" #, boost-format msgid "Volume: %1% mm³\n" @@ -3147,34 +3256,34 @@ msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" msgid "Changing the region will log out your account.\n" -msgstr "Si cambias de región, saldrás de tu cuenta.\n" +msgstr "Changing the region will log you out of your account.\n" msgid "Region selection" -msgstr "Selección de región" +msgstr "Region selection" msgid "Second" msgstr "Segundo" msgid "General Settings" -msgstr "Configuración General" +msgstr "General Settings" msgid "Asia-Pacific" -msgstr "Asia-Pacífico" +msgstr "Asia-Pacific" msgid "China" msgstr "China" msgid "Europe" -msgstr "Europa" +msgstr "Europe" msgid "North America" -msgstr "América del Norte" +msgstr "North America" msgid "Others" msgstr "Otros" msgid "Login Region" -msgstr "Región de inicio de sesión" +msgstr "Login Region" msgid "Metric" msgstr "Métrico" @@ -3189,12 +3298,10 @@ msgid "User sync" msgstr "Sincronización del usuario" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Sincronización automática de los preajustes del usuario (Impresora/Filamento/" -"Proceso)" +msgstr "Auto sync user presets (Printer/Filament/Process)" msgid "User Sync" -msgstr "Sincronización de usuario" +msgstr "User Sync" msgid "Associate files to BambuStudio" msgstr "Asociar archivos a BambuStudio" @@ -3216,7 +3323,7 @@ msgstr "" "archivos .stl" msgid "Associate .step/.stp files to BambuStudio" -msgstr "Asociar archivos .step/.stp a BambuStudio" +msgstr "Associate .step/.stp files to Bambu Studio" msgid "If enabled, sets BambuStudio as default application to open .step files" msgstr "" @@ -3293,7 +3400,7 @@ msgid "trace" msgstr "traza" msgid "Host Setting" -msgstr "Ajuste del Host" +msgstr "Host Setting" msgid "DEV host: api-dev.bambu-lab.com/v1" msgstr "DEV host: api-dev.bambu-lab.com/v1" @@ -3453,12 +3560,6 @@ msgstr "Para \"%1%\", añada \"%2%\" como un nuevo preajuste" msgid "Simply switch to \"%1%\"" msgstr "Simplemente cambia a \"%1%\"" -msgid "Online" -msgstr "En línea" - -msgid "Offline" -msgstr "Fuera de línea" - msgid "My Device" msgstr "Mi dispositivo" @@ -3466,13 +3567,13 @@ msgid "Other Device" msgstr "Otro dispositivo" msgid "Input access code" -msgstr "Introducir el código de acceso" +msgstr "Input access code" msgid "Log out successful." msgstr "Cierre de sesión con éxito." msgid "Busy" -msgstr "Ocupado" +msgstr "Busy" msgid "Bambu Cool Plate" msgstr "Placa frío Bambu" @@ -3487,7 +3588,7 @@ msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" msgid "Refresh" -msgstr "Actualizar" +msgstr "Refresh" msgid "Bed Leveling" msgstr "Nivelación de la cama" @@ -3502,31 +3603,27 @@ msgid "send completed" msgstr "envío completo" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Sin cuenta de acceso, sólo se muestran las impresoras en modo LAN" +msgstr "No login account, only printers in LAN mode are displayed" msgid "Connecting to server" -msgstr "Conectando al servidor" +msgstr "Connecting to server" msgid "Synchronizing device information" -msgstr "Sincronizando la información del dispositivo" +msgstr "Synchronizing device information" msgid "Synchronizing device information time out" -msgstr "" -"Finalización del tiempo de sincronización de la información del dispositivo" +msgstr "Synchronizing device information time out" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"No se puede enviar la tarea de impresión cuando la actualización está en " -"curso" +msgstr "Cannot send the print task when the upgrade is in progress" msgid "" "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión " -"cuando termine" +"The printer is executing instructions. Please restart printing after it ends" msgid "The printer is busy on other print job" -msgstr "La impresora está ocupada con otro trabajo de impresión." +msgstr "The printer is busy with another print job." #, c-format, boost-format msgid "" @@ -3543,15 +3640,15 @@ msgid "" "Filaments to AMS slots mappings have been established. You can click a " "filament above to change its mapping AMS slot" msgstr "" -"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en " -"un filamento de arriba para cambiar su asignación de ranura AMS" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgid "" "Please click each filament above to specify its mapping AMS slot before " "sending the print job" msgstr "" -"Por favor, haga clic en cada filamento de arriba para especificar su " -"asignación de ranura AMS antes de enviar el trabajo de impresión" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" #, c-format, boost-format msgid "" @@ -3570,10 +3667,10 @@ msgid "" msgstr "" msgid "Preparing print job" -msgstr "Preparando el trabajo de impresión" +msgstr "Preparing print job" msgid "Modifying the device name" -msgstr "Modificar el nombre del dispositivo" +msgstr "Modifying the device name" msgid "Log in printer" msgstr "Iniciar sesión en la impresora" @@ -3705,7 +3802,7 @@ msgid "Reserved keywords found" msgstr "Palabras clave utilizadas y encontradas" msgid "Setting Overrides" -msgstr "Anulaciones de configuración" +msgstr "Setting Overrides" msgid "Retraction" msgstr "Retracción" @@ -3740,9 +3837,8 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa fría está instalada. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"This is the bed temperature when the cool plate is installed. A value of 0 " +"means the filament does not support printing on the Cool Plate." msgid "Engineering plate" msgstr "Placa de ingeniería" @@ -3751,9 +3847,8 @@ msgid "" "Bed temperature when engineering plate is installed. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa de ingeniería está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de ingeniería." +"This is the bed temperature when the engineering plate is installed. A value " +"of 0 means the filament does not support printing on the Engineering Plate." msgid "High Temp Plate" msgstr "Placa de alta temperatura" @@ -3762,9 +3857,9 @@ msgid "" "Bed temperature when high temperature plate is installed. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa de alta temperatura está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de alta temperatura." +"This is the bed temperature when the high temperature plate is installed. A " +"value of 0 means the filament does not support printing on the High Temp " +"Plate." msgid "Textured PEI Plate" msgstr "" @@ -3884,7 +3979,7 @@ msgstr "¿Está seguro de %1% el preajuste seleccionado?" #. TRN Remove/Delete #, boost-format msgid "%1% Preset" -msgstr "%1% Preestablecido" +msgstr "%1% Preset" msgid "All" msgstr "Todo" @@ -4004,9 +4099,6 @@ msgstr "Capacidades" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -4021,7 +4113,7 @@ msgid "The name \"%1%\" already exists." msgstr "El nombre \"%1%\" ya existe." msgid "Basic Info" -msgstr "Información Básica" +msgstr "Basic Info" msgid "Pictures" msgstr "Fotos" @@ -4498,7 +4590,7 @@ msgid "Support transition" msgstr "Apoyo a la transición" msgid "Multiple" -msgstr "Múltiple" +msgstr "Multiple" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " @@ -4615,11 +4707,11 @@ msgstr "" #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% está demasiado cerca de otros, y pueden producirse colisiones." +msgstr "%1% is too close to others, and collisions may be caused." #, boost-format msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% es demasiado alto, y se producirán colisiones." +msgstr "%1% is too tall, and collisions will be caused." msgid " is too close to others, there will be collisions when printing.\n" msgstr " está demasiado cerca de otros, habrá colisiones al imprimir.\n" @@ -4633,11 +4725,10 @@ msgid "Prime Tower" msgstr "Torre principal" msgid " is too close to others, and collisions may be caused.\n" -msgstr "está demasiado cerca de otros, y se pueden producir colisiones.\n" +msgstr " is too close to others, and collisions may be caused.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" está demasiado cerca del área de exclusión, y se producirán colisiones.\n" +msgstr " is too close to an exclusion area, and collisions will be caused.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " @@ -4799,9 +4890,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Cool Plate." msgid "°C" msgstr "°C" @@ -4813,17 +4903,15 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"ingeniería." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Engineering Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"alta temperatura." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the High Temp Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -4840,23 +4928,22 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa fría." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Cool Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de ingeniería." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Engineering Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de alta " -"temperatura." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the High Temp Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -5112,9 +5199,9 @@ msgid "" "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo " -"a 0 si quieres que todos los puentes sean soportados, y ajústalo a un valor " -"muy grande si no quieres que ningún puente sea soportado." +"This is the maximum length of bridges that don't need support. Set it to 0 " +"if you want all bridges to be supported, and set it to a very large value if " +"you don't want any bridges to be supported." msgid "End G-code" msgstr "Código G final" @@ -5338,8 +5425,7 @@ msgstr "Material de soporte" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"El material de soporte se utiliza habitualmente para imprimir el soporte y " -"interficies de soporte" +"Support material is commonly used to print support and support interfaces." msgid "Temperature of vitrificaiton" msgstr "Temperatura de vitrificación" @@ -5496,7 +5582,7 @@ msgstr "" "de la anchura de la línea de la pared exterior" msgid "Fuzzy skin point distance" -msgstr "Distancia al punto de superficie irregular" +msgstr "Fuzzy skin point distance" msgid "" "The average diatance between the random points introducded on each line " @@ -6002,6 +6088,9 @@ msgstr "Alineado" msgid "Back" msgstr "Volver" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Distancia de la falda" @@ -6419,27 +6508,26 @@ msgstr "" "mezclado se podrá ver en el exterior." msgid "Flush into objects' support" -msgstr "Depositar en el soporte de los objetos" +msgstr "Flush into objects' support" msgid "" "Purging after filament change will be done inside objects' support. This may " "lower the amount of waste and decrease the print time" msgstr "" -"La purga después del cambio de filamento se hará dentro del soporte de los " -"objetos. Esto puede reducir la cantidad de residuos y disminuir el tiempo de " -"impresión." +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time." msgid "Flush into this object" -msgstr "Descarga en este objeto" +msgstr "Flush into this object" msgid "" "This object will be used to purge the nozzle after a filament change to save " "filament and decrease the print time. Colours of the objects will be mixed " "as a result" msgstr "" -"Este objeto se utilizará para purgar la boquilla después de un cambio de " -"filamento para ahorrar filamento y disminuir el tiempo de impresión. Los " -"colores de los objetos se mezclarán como resultado" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colors of the objects will be mixed as " +"a result." msgid "X-Y hole compensation" msgstr "Compensación de huecos X-Y" @@ -6595,14 +6683,8 @@ msgid "Empty layers around bottom are replaced by nearest normal layers." msgstr "" "Las capas vacías del fondo se sustituyen por las capas normales más cercanas." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"El modelo tiene facetas superpuestas o auto-intersecadas. He intentado " -"repararlo, sin embargo, es posible que desee comprobar los resultados o " -"reparar el archivo de entrada y volver a intentarlo." msgid "Slicing mesh" msgstr "Malla de corte" @@ -6645,6 +6727,9 @@ msgstr "Soporte: arreglar huecos en la capa %d" msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" +#~ msgid "Save configuration as:" +#~ msgstr "Guardar la configuración como:" + #~ msgid "Line type" #~ msgstr "Tipo de línea" @@ -6658,7 +6743,7 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ msgstr "0%" #~ msgid "Timelapse Wipe Tower" -#~ msgstr "Timelapse Torre de limpieza" +#~ msgstr "Timelapse Wipe Tower" #~ msgid "Device:" #~ msgstr "Dispositivo:" @@ -6673,6 +6758,54 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active " #~ "la generación de soporte." +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado " +#~ "repararlo, sin embargo, es posible que desee comprobar los resultados o " +#~ "reparar el archivo de entrada y volver a intentarlo." + +#~ msgid "" +#~ "Auto orientates selected objects or all objects.If there are selected " +#~ "objects, it just orientates the selected ones.Otherwise, it will " +#~ "orientates all objects in the project." +#~ msgstr "" +#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si " +#~ "hay objetos seleccionados, sólo orienta los seleccionados.En caso " +#~ "contrario, orienta todos los objetos del proyecto." + +#~ msgid "The Config is not compatible and can not be loaded." +#~ msgstr "La configuración no es compatible y no se puede cargar." + +#~ msgid "Creating" +#~ msgstr "Creando" + +#~ msgid "Uploading" +#~ msgstr "Subiendo" + +#~ msgid "Sending" +#~ msgstr "Enviando" + +#~ msgid "Please fill report first." +#~ msgstr "Por favor, rellene primero el informe." + +#~ msgid "Unable to create zip file" +#~ msgstr "Unable to create zip file" + +#~ msgid "Filaments Selection" +#~ msgstr "Selección de filamentos" + +#~ msgid "Printer Selection" +#~ msgstr "Selección de la impresora" + +#~ msgid "Auto arrange" +#~ msgstr "Auto posicionamiento" + +#~ msgid "Spiral mode" +#~ msgstr "Modo espiral" + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + Rueda del ratón" @@ -6684,32 +6817,14 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de " #~ "la placa." -#~ msgid "Auto arrange" -#~ msgstr "Auto posicionamiento" - -#~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." -#~ msgstr "" -#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si " -#~ "hay objetos seleccionados, sólo orienta los seleccionados.En caso " -#~ "contrario, orienta todos los objetos del proyecto." - #~ msgid "Clear all" #~ msgstr "Borrar todo" -#~ msgid "Creating" -#~ msgstr "Creando" - #~ msgid "Ctrl + Any arrow" #~ msgstr "Ctrl + Cualquier tecla" #~ msgid "Ctrl + Left mouse button" -#~ msgstr "Ctrl + Botón izquierdo del ratón" - -#~ msgid "Debug" -#~ msgstr "Depurar" +#~ msgstr "Ctrl + Left mouse button" #~ msgid "Display printable box" #~ msgstr "Caja de visualización imprimible " @@ -6727,11 +6842,11 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "2. The Filament presets\n" #~ "3. The Printer presets\n" #~ msgstr "" -#~ "¿Quieres sincronizar tus datos personales desde Bambu Cloud? \n" -#~ "Contiene la siguiente información:\n" -#~ "1. Preajustes del proceso\n" -#~ "2. Preajustese de filamentos\n" -#~ "3. Preajustes de la impresora\n" +#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" +#~ "Contains the following information:\n" +#~ "1. Process presets\n" +#~ "2. Filament presets\n" +#~ "3. Printer presets\n" #~ msgid "" #~ "Don't retract when the travel is in infill area absolutely. That means " @@ -6740,15 +6855,6 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "No se repliegue cuando el recorrido esté en zona de relleno " #~ "absolutamente. Eso significa que el rezago no puede ser visto" -#~ msgid "Enter a search term" -#~ msgstr "Teclea un término de búsqueda" - -#~ msgid "Filaments Selection" -#~ msgstr "Selección de filamentos" - -#~ msgid "Finished" -#~ msgstr "Terminado" - #~ msgid "Fix model locally" #~ msgstr "Fijar el modelo localmente" @@ -6756,13 +6862,13 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ msgstr "Fijar el modelo a través de la nube" #~ msgid "Fragment Filter" -#~ msgstr "Filtro de fragmentos" +#~ msgstr "Fragment Filter" #~ msgid "Fragment area" -#~ msgstr "Zona de fragmentos" +#~ msgstr "Fragment area" #~ msgid "Fragment filter" -#~ msgstr "Filtro de Fragmentos" +#~ msgstr "Fragment filter" #~ msgid "" #~ "Heat the nozzle to target \n" @@ -6772,10 +6878,10 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "temperatura" #~ msgid "In the calibration of extrusion flow" -#~ msgstr "En la calibración del flujo de extrusión" +#~ msgstr "In the calibration of extrusion flow" #~ msgid "In the calibration of laser scanner" -#~ msgstr "En la calibración del escáner láser" +#~ msgstr "In the calibration of laser scanner" #~ msgid "Module" #~ msgstr "Módulo" @@ -6787,19 +6893,16 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ msgstr "Archivo de salida" #~ msgid "Pause(heated bed temperature error)" -#~ msgstr "Pausa (error de temperatura de la cama caliente)" +#~ msgstr "Pause(heated bed temperature error)" #~ msgid "Pause(hotend temperature error)" -#~ msgstr "Pausa (error de temperatura del hotend)" +#~ msgstr "Pause(hotend temperature error)" #~ msgid "Pause(toolhead shell off)" -#~ msgstr "Pausa (cabezal apagado)" - -#~ msgid "Please fill report first." -#~ msgstr "Por favor, rellene primero el informe." +#~ msgstr "Pause(toolhead shell off)" #~ msgid "Please upgrade your printer first" -#~ msgstr "Por favor, actualice su impresora primero" +#~ msgstr "Please upgrade your printer first" #~ msgid "Position:" #~ msgstr "Posición:" @@ -6808,14 +6911,11 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "Preview only mode:\n" #~ "The loaded file contains gcode only." #~ msgstr "" -#~ "Modo de vista previa solamente:\n" -#~ "El archivo cargado sólo contiene gcode." +#~ "Preview only mode:\n" +#~ "The loaded file contains G-code only." #~ msgid "Preview only mode for gcode file." -#~ msgstr "Modo de vista previa sólo para el archivo gcode." - -#~ msgid "Printer Selection" -#~ msgstr "Selección de la impresora" +#~ msgstr "Preview only mode for G-code file." #~ msgid "" #~ "Push new filament \n" @@ -6824,9 +6924,6 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ "Empujar el nuevo filamento \n" #~ "en el extrusor" -#~ msgid "Sending" -#~ msgstr "Enviando" - #~ msgid "Shift + Any arrow" #~ msgstr "Mayúsculas + Cualquier flecha" @@ -6842,39 +6939,19 @@ msgstr "Soporte: propagar ramas en la capa %d" #~ msgid "Show Printable Box(TODO)" #~ msgstr "Mostrar caja imprimible(TODO)" -#~ msgid "Spiral mode" -#~ msgstr "Modo espiral" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" -#~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " -#~ "%s s" +#~ "Successfully sent. Will automatically jump to the device page in %s s" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Cambiar el entorno de la nube, ¡Por favor, inicie sesión de nuevo!" -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "La configuración no es compatible y no se puede cargar." - #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" #~ msgstr "" -#~ "Las versiones del firmware de la impresora y del AMS son demasiado " -#~ "antiguas, por favor, actualice a la última versión antes de enviar el " -#~ "trabajo de impresión." - -#~ msgid "Unable to create zip file" -#~ msgstr "No se puede crear un archivo zip" - -#~ msgid "Uploading" -#~ msgstr "Subiendo" +#~ "The firmware versions of the printer and AMS are too low. Please update " +#~ "them to the latest version before sending any print jobs." #~ msgid "User pause" -#~ msgstr "Pausa de usuario" - -#~ msgid "Waiting" -#~ msgstr "Esperando" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "el 3mf no es compatible, ¡cargue sólo los datos geométricos!" +#~ msgstr "User pause" diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index 9ae9e70d71..3b1d4eb20f 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,13 +2,16 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.1\n" msgid "Supports Painting" msgstr "Prend en charge la peinture" @@ -335,6 +338,9 @@ msgstr "Face recognition" msgid "Perform Recognition" msgstr "Perform Recognition" +msgid "Clipping of view" +msgstr "" + msgid "Reset direction" msgstr "" @@ -869,11 +875,13 @@ msgstr "" msgid "%1$d error repaired" msgid_plural "%1$d errors repaired" msgstr[0] "%1$d erreur réparée" +msgstr[1] "" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." msgid_plural "Error: %1$d non-manifold edges." msgstr[0] "Erreur : %1$d arête non multiple." +msgstr[1] "" msgid "Remaining errors" msgstr "Erreurs restantes" @@ -882,6 +890,7 @@ msgstr "Erreurs restantes" msgid "%1$d non-manifold edge" msgid_plural "%1$d non-manifold edges" msgstr[0] "%1$d arête non multiple" +msgstr[1] "" msgid "Right click the icon to fix model object" msgstr "Cliquez avec le bouton droit sur l'icône pour fixer l'objet modèle" @@ -989,10 +998,12 @@ msgstr "Réparer l'objet modèle" msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "L'objet modèle suivant a été réparé" +msgstr[1] "" msgid "Failed to repair folowing model object" msgid_plural "Failed to repair folowing model objects" msgstr[0] "Échec de la réparation de l'objet modèle suivant" +msgstr[1] "" msgid "Repairing was canceled" msgstr "La réparation a été annulée" @@ -1087,7 +1098,7 @@ msgid "Click the pencil icon to edit the filament." msgstr "Cliquez sur l'icône du crayon pour modifier le filament." msgid "Load Filament" -msgstr "Charger le filament" +msgstr "Load" msgid "Unload Filament" msgstr "Unload" @@ -1262,6 +1273,9 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" msgstr "Sending print configuration" @@ -1754,7 +1768,7 @@ msgid "Identifying build plate type" msgstr "Identifying build plate type" msgid "Calibrating Micro Lidar" -msgstr "Calibrage du Micro-Lidar" +msgstr "Calibrating Micro Lidar" msgid "Homing toolhead" msgstr "Homing toolhead" @@ -2169,6 +2183,15 @@ msgstr "" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Entrer un terme de recherche" + +msgid "Online" +msgstr "En ligne" + +msgid "Offline" +msgstr "Hors ligne" + msgid "Application is closing" msgstr "L'application se ferme" @@ -2191,6 +2214,9 @@ msgstr "Device" msgid "Project" msgstr "Projet" +msgid "Debug" +msgstr "Déboguer" + msgid "Slice" msgstr "Découper" @@ -2228,6 +2254,9 @@ msgstr "Vérifier la mise à jour" msgid "&About %s" msgstr "&Au sujet de %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2302,9 +2331,24 @@ msgstr "Importer 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Charger un modèle" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "Exporter tous les objets au format STL" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Exporter le fichier en tranches actuel" @@ -2314,6 +2358,12 @@ msgstr "Exporter le G-code" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exporter" @@ -2426,8 +2476,39 @@ msgstr "&View" msgid "&Help" msgstr "&Help" -msgid "Save configuration as:" -msgstr "Enregistrer la configuration sous :" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Le fichier est manquant" @@ -2472,6 +2553,58 @@ msgstr "En jouant..." msgid "Load failed [%d]!" msgstr "Le chargement a échoué [%d] !" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Télécharger" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Waiting" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Terminé" + msgid "Speed:" msgstr "Vitesse:" @@ -2496,9 +2629,6 @@ msgstr "Permuter les axes Y/Z" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Progression de l'impression" @@ -2577,9 +2707,6 @@ msgstr "Impossible de se connecter au serveur" msgid "Failed to connect to the printer" msgstr "Échec de la connexion à l'imprimante" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "OK" @@ -2613,9 +2740,6 @@ msgstr "%s infos" msgid "%s information" msgstr "Information de %s" -msgid "Download" -msgstr "Télécharger" - msgid "Skip" msgstr "Sauter" @@ -2659,11 +2783,13 @@ msgstr "Ouvrir un répertoire." msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." msgstr[0] "L'objet %1$d a des supports personnalisés." +msgstr[1] "" #, c-format, boost-format msgid "%1$d Object has color painting." msgid_plural "%1$d Objects have color painting." msgstr[0] "%1$d L'objet est peint en couleur." +msgstr[1] "" msgid "Slice ok." msgstr "Slice complete" @@ -2839,7 +2965,7 @@ msgstr "Restaurer" msgid "Loading file: %s" msgstr "Chargement du fichier : %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2871,8 +2997,9 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" +msgid "the 3mf is not compatible, load geometry data only!" msgstr "" +"le 3mf n'est pas compatible, chargez uniquement les données de géométrie !" msgid "Incompatible 3mf" msgstr "Incompatible 3mf" @@ -3416,12 +3543,6 @@ msgstr "Pour \"%1%\", ajoutez \"%2%\" comme nouveau préréglage" msgid "Simply switch to \"%1%\"" msgstr "Passez simplement à \"%1%\"" -msgid "Online" -msgstr "En ligne" - -msgid "Offline" -msgstr "Hors ligne" - msgid "My Device" msgstr "Mon appareil" @@ -3656,6 +3777,7 @@ msgstr[0] "" "La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " "ou il battra la visualisation du code G et l'estimation du temps " "d'impression." +msgstr[1] "" msgid "Reserved keywords found" msgstr "Mots clés réservés trouvés" @@ -3829,6 +3951,7 @@ msgstr "Détaché" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "Le préréglage suivant sera également supprimé." +msgstr[1] "" #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -3960,9 +4083,6 @@ msgstr "Fonctionnalités" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -4575,12 +4695,11 @@ msgstr "" #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "" -"%1% est trop proche des autres, cela pourrait provoquer des collisions." +msgstr "%1% is too close to others, and collisions may be caused." #, boost-format msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% est trop grand, cela pourrait provoquer des collisions." +msgstr "%1% is too tall, and collisions will be caused." msgid " is too close to others, there will be collisions when printing.\n" msgstr "" @@ -5374,8 +5493,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"This is the acceleration of top surface infill. Using a lower value may " -"improve top surface quality." +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgid "" "Acceleration of initial layer. Using a lower value can improve build plate " @@ -5969,6 +6088,9 @@ msgstr "Aligné" msgid "Back" msgstr "Retour" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Distance jupe" @@ -6565,13 +6687,8 @@ msgstr "" "Les calques vides autour du bas sont remplacés par les calques normaux les " "plus proches." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"La vitesse d'impression minimale lors du ralentissement pour le " -"refroidissement" msgid "Slicing mesh" msgstr "Maillage de tranchage" @@ -6614,6 +6731,9 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Save configuration as:" +#~ msgstr "Enregistrer la configuration sous :" + #~ msgid "Line type" #~ msgstr "Type de ligne" @@ -6642,6 +6762,53 @@ msgstr "Support: propagate branches at layer %d" #~ "Il semble que l'objet %s ait besoin d'aide pour imprimer. Veuillez " #~ "activer la génération de support." +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "La vitesse d'impression minimale lors du ralentissement pour le " +#~ "refroidissement" + +#~ msgid "" +#~ "Auto orientates selected objects or all objects.If there are selected " +#~ "objects, it just orientates the selected ones.Otherwise, it will " +#~ "orientates all objects in the project." +#~ msgstr "" +#~ "Oriente automatiquement les objets sélectionnés ou tous les objets. S'il " +#~ "y a des objets sélectionnés, il oriente uniquement ceux qui sont " +#~ "sélectionnés. Sinon, il oriente tous les objets du projet." + +#~ msgid "The Config is not compatible and can not be loaded." +#~ msgstr "La Config n'est pas compatible et ne peut pas être chargée." + +#~ msgid "Creating" +#~ msgstr "Creating" + +#~ msgid "Uploading" +#~ msgstr "Téléchargement" + +#~ msgid "Sending" +#~ msgstr "Sending" + +#~ msgid "Please fill report first." +#~ msgstr "Veuillez d'abord remplir le rapport." + +#~ msgid "Unable to create zip file" +#~ msgstr "Unable to create zip file" + +#~ msgid "Filaments Selection" +#~ msgstr "Sélection de filaments" + +#~ msgid "Printer Selection" +#~ msgstr "Sélection de l'imprimante" + +#~ msgid "Auto arrange" +#~ msgstr "Organisation automatique" + +#~ msgid "Spiral mode" +#~ msgstr "Mode spirale" + #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + molette de la souris" @@ -6653,33 +6820,15 @@ msgstr "Support: propagate branches at layer %d" #~ "problème en le déplaçant totalement à l'intérieur ou à l'extérieur de la " #~ "plaque." -#~ msgid "Auto arrange" -#~ msgstr "Organisation automatique" - -#~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." -#~ msgstr "" -#~ "Oriente automatiquement les objets sélectionnés ou tous les objets. S'il " -#~ "y a des objets sélectionnés, il oriente uniquement ceux qui sont " -#~ "sélectionnés. Sinon, il oriente tous les objets du projet." - #~ msgid "Clear all" #~ msgstr "Tout effacer" -#~ msgid "Creating" -#~ msgstr "Creating" - #~ msgid "Ctrl + Any arrow" #~ msgstr "Ctrl + n'importe quelle flèche" #~ msgid "Ctrl + Left mouse button" #~ msgstr "Ctrl + Left mouse button" -#~ msgid "Debug" -#~ msgstr "Déboguer" - #~ msgid "Display printable box" #~ msgstr "Afficher la boîte imprimable" @@ -6709,15 +6858,6 @@ msgstr "Support: propagate branches at layer %d" #~ "Ne vous rétractez absolument pas lorsque le déplacement est dans la zone " #~ "de remplissage. Cela signifie que le suintement ne peut pas être vu" -#~ msgid "Enter a search term" -#~ msgstr "Entrer un terme de recherche" - -#~ msgid "Filaments Selection" -#~ msgstr "Sélection de filaments" - -#~ msgid "Finished" -#~ msgstr "Terminé" - #~ msgid "Fix model locally" #~ msgstr "Corriger le modèle localement" @@ -6762,9 +6902,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Pause(toolhead shell off)" #~ msgstr "Pause(toolhead shell off)" -#~ msgid "Please fill report first." -#~ msgstr "Veuillez d'abord remplir le rapport." - #~ msgid "Please upgrade your printer first" #~ msgstr "Please upgrade your printer first" @@ -6781,17 +6918,11 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Preview only mode for gcode file." #~ msgstr "Preview only mode for G-code file." -#~ msgid "Printer Selection" -#~ msgstr "Sélection de l'imprimante" - #~ msgid "" #~ "Push new filament \n" #~ "into extruder" #~ msgstr "Poussez le nouveau filament dans l'extruder" -#~ msgid "Sending" -#~ msgstr "Sending" - #~ msgid "Shift + Any arrow" #~ msgstr "Maj + n'importe quelle flèche" @@ -6807,9 +6938,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Show Printable Box(TODO)" #~ msgstr "Afficher la boîte imprimable (TODO)" -#~ msgid "Spiral mode" -#~ msgstr "Mode spirale" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" #~ "Successfully sent. Will automatically jump to the device page in %s s" @@ -6817,9 +6945,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Changez d'environnement cloud, veuillez vous reconnecter !" -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "La Config n'est pas compatible et ne peut pas être chargée." - #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" @@ -6827,18 +6952,5 @@ msgstr "Support: propagate branches at layer %d" #~ "The firmware versions of the printer and AMS are too low. Please update " #~ "them to the latest version before sending any print jobs." -#~ msgid "Unable to create zip file" -#~ msgstr "Unable to create zip file" - -#~ msgid "Uploading" -#~ msgstr "Téléchargement" - #~ msgid "User pause" #~ msgstr "User pause" - -#~ msgid "Waiting" -#~ msgstr "Waiting" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "" -#~ "le 3mf n'est pas compatible, chargez uniquement les données de géométrie !" diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index 15bb112e25..bde02a5c8f 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -1,14 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: Bambu Studio\n" +"Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: 2022-07-27 22:05+0100\n" +"Last-Translator: \n" +"Language-Team: \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" -"Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.1.1\n" msgid "Supports Painting" msgstr "Támaszok festése" @@ -172,8 +180,9 @@ msgstr "Átméretezés" msgid "Error: Please close all toolbar menus first" msgstr "Hiba: Kérjük, először zárd be az összes eszköztár menüt" +# d msgid "Tool-Lay on Face" -msgstr "Tool-Lay on Face" +msgstr "" msgid "in" msgstr "in" @@ -196,8 +205,9 @@ msgstr "Objektum műveletek" msgid "Volume Operations" msgstr "Térfogat műveletek" +# d msgid "Translate" -msgstr "Translate" +msgstr "" msgid "Group Operations" msgstr "Csoportos műveletek" @@ -208,6 +218,7 @@ msgstr "Pozíció beállítása" msgid "Set Orientation" msgstr "Orientáció beállítása" +# d msgid "Set Scale" msgstr "Méretarány beállítása" @@ -254,7 +265,7 @@ msgid "Cut to parts" msgstr "Részekre darabolás" msgid "Auto Segment" -msgstr "Auto Segment" +msgstr "" msgid "Perform cut" msgstr "Vágás" @@ -330,11 +341,14 @@ msgstr "" "A művelet törlése már folyamatban van. Kérjük, várj néhány másodpercet." msgid "Face recognition" -msgstr "Face recognition" +msgstr "" msgid "Perform Recognition" msgstr "Felismerés" +msgid "Clipping of view" +msgstr "" + msgid "Reset direction" msgstr "" @@ -524,8 +538,6 @@ msgid "" "You can keep the modifield presets to the new project, discard or save " "changes as new presets." msgstr "" -"You can keep the modified presets for the new project, discard, or save " -"changes as new presets." msgid "User logged out" msgstr "" @@ -956,7 +968,7 @@ msgstr "" "lennie." msgid "The type of the last solid object part is not to be changed." -msgstr "The type of the last solid object part cannot be changed." +msgstr "" msgid "Negative Part" msgstr "Negatív tárgy" @@ -1025,7 +1037,7 @@ msgid "No-brim" msgstr "Nincs perem" msgid " " -msgstr "" +msgstr " " msgid "Layer height" msgstr "Rétegmagasság" @@ -1195,7 +1207,7 @@ msgid "Orienting" msgstr "Orientáció" msgid "Error! Unable to create thread!" -msgstr "Error. Unable to create thread." +msgstr "" msgid "Exception" msgstr "Kivétel" @@ -1213,7 +1225,7 @@ msgid "Failure of printer login" msgstr "Sikertelen bejelentkezés a nyomtatóra" msgid "Failed to get ticket" -msgstr "Failed to get ticket" +msgstr "" msgid "User authorization timeout" msgstr "Felhasználó hitelesítési időtúllépés" @@ -1267,6 +1279,9 @@ msgstr "Szolgáltatás nem elérhető" msgid "Unkown Error." msgstr "Ismeretlen hiba." +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" msgstr "Nyomtatási konfiguráció küldése" @@ -1404,7 +1419,7 @@ msgid "" msgstr "" msgid "Insertion update" -msgstr "Insertion update" +msgstr "" msgid "" "The AMS will automatically read the filament information when inserting a " @@ -1654,11 +1669,6 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"This setting is only used for tuning model size by small amounts.\n" -"For example, when the model size has small errors or when tolerances are " -"incorrect. For large adjustments, please use the model scale function.\n" -"\n" -"The value will be reset to 0." msgid "" "Too large elefant foot compensation is unreasonable.\n" @@ -1667,11 +1677,6 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"The elephant foot compensation value is too large.\n" -"If there are significant elephant foot issues, please check other settings.\n" -"The bed temperature may be too high, for example.\n" -"\n" -"The value will be reset to 0." msgid "" "Spiral mode only works when wall loops is 1, \n" @@ -1736,9 +1741,6 @@ msgid "" "Yes - switch to zig-zag pattern automaticlly\n" "No - reset density to default non 100% value automaticlly\n" msgstr "" -"Switch to zig-zag pattern?\n" -"Yes - Switch to zig-zag pattern automatically\n" -"No - Reset density to default non-100% value automatically\n" msgid "Auto bed leveling" msgstr "Automatikus asztalszintezés" @@ -1747,7 +1749,7 @@ msgid "Heatbed preheating" msgstr "Asztal előfűtése" msgid "Sweeping XY mech mode" -msgstr "Sweeping XY mech mode" +msgstr "" msgid "Changing filament" msgstr "Filament váltása" @@ -1789,7 +1791,7 @@ msgid "Printing was paused by the user" msgstr "Nyomtatás szüneteltetve a felhasználó által" msgid "Pause of front cover falling" -msgstr "Pause of front cover falling" +msgstr "" msgid "Calibrating the micro lida" msgstr "Micro Lidar kalibrálása" @@ -1807,16 +1809,16 @@ msgid "MC" msgstr "MC" msgid "MainBoard" -msgstr "MainBoard" +msgstr "" msgid "AMS" msgstr "AMS" msgid "TH" -msgstr "TH" +msgstr "" msgid "XCam" -msgstr "XCam" +msgstr "" msgid "Unknown" msgstr "Ismeretlen" @@ -1860,13 +1862,13 @@ msgstr "Érvénytelen számjegy." #, c-format, boost-format msgid "Value %s is out of range, continue?" -msgstr "Value %s is out of range, continue?" +msgstr "" msgid "Parameter validation" msgstr "Paraméter validáció" msgid "Value is out of range." -msgstr "Value is out of range." +msgstr "" #, c-format, boost-format msgid "" @@ -1874,13 +1876,10 @@ msgid "" "YES for %s%%, \n" "NO for %s %s." msgstr "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." #, boost-format msgid "Invalid format. Expected vector format: \"%1%\"" -msgstr "Invalid format. Expected vector format: \"%1%\"" +msgstr "" msgid "Layer Height" msgstr "Rétegmagasság" @@ -1892,19 +1891,19 @@ msgid "Fan Speed" msgstr "Ventilátor fordulatszám" msgid "Temperature" -msgstr "Temperature" +msgstr "" msgid "Flow" msgstr "Anyagáramlás" msgid "Tool" -msgstr "Tool" +msgstr "" msgid "Extruder position" msgstr "Extruder pozíció" msgid "Loading G-codes" -msgstr "Loading G-codes" +msgstr "" msgid "Generating geometry vertex data" msgstr "Geometriai vertex adatok generálása" @@ -1913,16 +1912,16 @@ msgid "Generating geometry index data" msgstr "Geometriai index adatok generálása" msgid "up to" -msgstr "up to" +msgstr "" msgid "above" -msgstr "above" +msgstr "" msgid "from" -msgstr "from" +msgstr "" msgid "to" -msgstr "to" +msgstr "" msgid "Color Scheme" msgstr "Színséma" @@ -1949,13 +1948,13 @@ msgid "Fan Speed (%)" msgstr "Ventilátor fordulatszám (%)" msgid "Temperature (°C)" -msgstr "Temperature (°C)" +msgstr "" msgid "Volumetric flow rate (mm³/s)" msgstr "Térfogatáramlás (mm³/s)" msgid "Used filament" -msgstr "Used filament" +msgstr "" msgid "Filament N XX" msgstr "Filament N XX" @@ -1976,13 +1975,13 @@ msgid "Retract" msgstr "Visszahúzás" msgid "Unretract" -msgstr "Unretract" +msgstr "" msgid "Filament Changes" msgstr "Filamentcserék" msgid "Wipe" -msgstr "Wipe" +msgstr "" msgid "Options" msgstr "Opciók" @@ -2021,7 +2020,7 @@ msgid "Total Estimation" msgstr "Összesített becslés" msgid "Normal mode" -msgstr "Normal mode" +msgstr "" msgid "Cost" msgstr "Költség" @@ -2036,22 +2035,22 @@ msgid "Total" msgstr "Összesen" msgid "Switch to silent mode" -msgstr "Switch to silent mode" +msgstr "" msgid "Switch to normal mode" -msgstr "Switch to normal mode" +msgstr "" msgid "Sequence" msgstr "Sorrend" msgid "Mirror Object" -msgstr "Mirror object" +msgstr "" msgid "Tool Move" -msgstr "Tool move" +msgstr "" msgid "Move Object" -msgstr "Move object" +msgstr "" msgid "Auto Orientation options" msgstr "Automatikus orientáció beállításai" @@ -2060,7 +2059,7 @@ msgid "Enable rotation" msgstr "Forgatás engedélyezése" msgid "Optimize support interface area" -msgstr "Optimize support interface area" +msgstr "" msgid "Orient" msgstr "Orientáció" @@ -2105,7 +2104,7 @@ msgid "Select Plate" msgstr "Tálca kiválasztása" msgid "Assembly Return" -msgstr "Assembly Return" +msgstr "" msgid "return" msgstr "vissza" @@ -2117,7 +2116,7 @@ msgid "Explosion Ratio" msgstr "Robbantási arány" msgid "Total Volume:" -msgstr "Total Volume:" +msgstr "" msgid "Assembly Info" msgstr "Összeállítási információ" @@ -2158,9 +2157,6 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" -"It keeps the device performing optimally." msgid "Calibration Flow" msgstr "Kalibrációs anyagáramlás" @@ -2178,7 +2174,7 @@ msgid "Timelapse" msgstr "Timelapse" msgid "Monitoring Recording" -msgstr "Monitoring Recording" +msgstr "" msgid "ConnectPrinter(LAN)" msgstr "Nyomtató csatlakoztatása (LAN)" @@ -2190,12 +2186,19 @@ msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" msgstr "" -"You can find it in \"Settings > Network > Connection code\"\n" -"on the printer, as shown in the figure:" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "" + +msgid "Online" +msgstr "" + +msgid "Offline" +msgstr "" + msgid "Application is closing" msgstr "Az alkalmazás bezárul" @@ -2203,7 +2206,7 @@ msgid "Closing Application while some presets are modified." msgstr "Alkalmazás bezárása egyes beállítások módosítása közben." msgid "Logging" -msgstr "Logging" +msgstr "" msgid "Prepare" msgstr "Előkészítés" @@ -2217,6 +2220,9 @@ msgstr "Nyomtató" msgid "Project" msgstr "Projekt" +msgid "Debug" +msgstr "Debug" + msgid "Slice" msgstr "Szeletelés" @@ -2254,6 +2260,9 @@ msgstr "Frissítés keresése" msgid "&About %s" msgstr "&%s névjegye" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2326,11 +2335,26 @@ msgid "Import 3MF/STL/STEP/OBJ/AMF" msgstr "3MF/STL/STEP/OBJ/AMF importálása" msgid "Load a model" -msgstr "Load a model" +msgstr "" + +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" msgid "Export all objects as STL" msgstr "Összes objektum exportálása STL-ként" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Jelenlegi szeletelt fájl exportálása" @@ -2340,6 +2364,12 @@ msgstr "G-kód exportálása" msgid "Export current plate as G-code" msgstr "Jelenlegi tálca exportálása G-kódként" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exportálás" @@ -2413,28 +2443,28 @@ msgid "Help" msgstr "Segítség" msgid "&Open G-code" -msgstr "&Open G-code" +msgstr "" msgid "Open a G-code file" msgstr "G-kód fájl megnyitása" msgid "Re&load from Disk" -msgstr "Re&load from Disk" +msgstr "" msgid "Reload the plater from disk" -msgstr "Reload the plater from disk" +msgstr "" msgid "Export &Toolpaths as OBJ" -msgstr "Export &Toolpaths as OBJ" +msgstr "" msgid "Export toolpaths as OBJ" msgstr "Szerszámút exportálása OBJ-ként" msgid "Open &PrusaSlicer" -msgstr "Open &PrusaSlicer" +msgstr "" msgid "Open PrusaSlicer" -msgstr "Open PrusaSlicer" +msgstr "" msgid "&Quit" msgstr "&Kilépés" @@ -2444,22 +2474,53 @@ msgid "Quit %s" msgstr "Kilépés %s" msgid "&File" -msgstr "&File" +msgstr "" msgid "&View" -msgstr "&View" +msgstr "" msgid "&Help" -msgstr "&Help" +msgstr "" -msgid "Save configuration as:" -msgstr "Konfiguráció mentése mint:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Hiányzik a fájl" msgid "The project is no longer available." -msgstr "The project is no longer available." +msgstr "" msgid "Filament Settings" msgstr "Filament beállítások" @@ -2478,20 +2539,20 @@ msgstr "" "3. Nyomtató beállítások\n" msgid "Synchronization" -msgstr "Synchronization" +msgstr "" msgid "Initialize failed (No Device)!" msgstr "Sikertelen inicializálás (Nincs eszköz)!" msgid "Initializing..." -msgstr "Initializing..." +msgstr "" #, c-format, boost-format msgid "Initialize failed [%d]!" -msgstr "Initalization failed [%d]!" +msgstr "" msgid "Loading..." -msgstr "Loading..." +msgstr "" msgid "Stopped." msgstr "Megállítva." @@ -2501,7 +2562,59 @@ msgstr "Lejátszás..." #, c-format, boost-format msgid "Load failed [%d]!" -msgstr "Loading failed [%d]!" +msgstr "" + +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Letöltés" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "Csatlakozás..." + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "" msgid "Speed:" msgstr "Sebesség:" @@ -2513,7 +2626,7 @@ msgid "Options:" msgstr "Opciók:" msgid "Zoom" -msgstr "Zoom" +msgstr "" msgid "Translation/Zoom" msgstr "" @@ -2522,14 +2635,11 @@ msgid "3Dconnexion settings" msgstr "3Dconnexion beállítások" msgid "Swap Y/Z axes" -msgstr "Swap Y/Z axes" +msgstr "" msgid "Camera" msgstr "Kamera" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Nyomtatás folyamata" @@ -2594,10 +2704,10 @@ msgid "Status" msgstr "Állapot" msgid "Media" -msgstr "Media" +msgstr "" msgid "Update" -msgstr "Update" +msgstr "" msgid "HMS" msgstr "HMS" @@ -2608,9 +2718,6 @@ msgstr "Nem sikerült csatlakozni a szerverhez" msgid "Failed to connect to the printer" msgstr "Nem sikerült csatlakozni a nyomtatóhoz" -msgid "Connecting..." -msgstr "Csatlakozás..." - msgid "OK" msgstr "OK" @@ -2644,9 +2751,6 @@ msgstr "%s infó" msgid "%s information" msgstr "%s információ" -msgid "Download" -msgstr "Letöltés" - msgid "Skip" msgstr "Kihagyás" @@ -2657,19 +2761,19 @@ msgid "Configuration can update now." msgstr "A konfiguráció már frissíthető." msgid "Detail." -msgstr "More" +msgstr "" msgid "Integration was successful." -msgstr "Integration was successful." +msgstr "" msgid "Integration failed." -msgstr "Integration failed." +msgstr "" msgid "Undo integration was successful." -msgstr "Undo integration was successful." +msgstr "" msgid "Undo integration failed." -msgstr "Undo integration failed." +msgstr "" msgid "Exporting." msgstr "Exportálás." @@ -2708,7 +2812,7 @@ msgid "Export." msgstr "Exportálás." msgid "Jump to" -msgstr "Jump to" +msgstr "" msgid "Error:" msgstr "Hiba:" @@ -2726,10 +2830,10 @@ msgid " Click here to install it." msgstr " Kattints ide a telepítéshez." msgid "WARNING:" -msgstr "WARNING:" +msgstr "" msgid "Your model needs support ! Please make support material enable." -msgstr "Your model needs support! Please enable support material." +msgstr "" msgid "Gcode path overlap" msgstr "G-kód útvonal átfedés" @@ -2741,7 +2845,7 @@ msgid "Color painting" msgstr "Színfestés" msgid "Layers" -msgstr "Layers" +msgstr "" msgid "Range" msgstr "Tartomány" @@ -2753,22 +2857,18 @@ msgid "" "The application cannot run normally because OpenGL version is lower than " "2.0.\n" msgstr "" -"The application cannot run normally because your OpenGL version is lower " -"than 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Kérjük, frissítsd a grafikus kártya illesztőprogramját." msgid "Unsupported OpenGL version" -msgstr "Unsupported OpenGL version" +msgstr "" #, c-format, boost-format msgid "" "Unable to load shaders:\n" "%s" msgstr "" -"Unable to load shaders:\n" -"%s" msgid "Error loading shaders" msgstr "Hiba a shaderek betöltésében" @@ -2791,7 +2891,7 @@ msgid "First Layer Inspection" msgstr "" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "Switch to per-object setting mode to edit modifier settings." +msgstr "" msgid "Don't show again" msgstr "Ne mutasd újra" @@ -2809,7 +2909,7 @@ msgid "Compare presets" msgstr "Beállítások összehasonlítása" msgid "View all object's settings" -msgstr "View all object's settings" +msgstr "" msgid "Filament settings" msgstr "Filament beállítások" @@ -2822,22 +2922,22 @@ msgid " plate %1%:" msgstr " %1% tálca:" msgid "Invalid name, the following characters are not allowed:" -msgstr "Invalid name, the following characters are not allowed:" +msgstr "" msgid "Sliced Info" msgstr "Szeletelési infó" msgid "Used Filament (m)" -msgstr "Used Filament (m)" +msgstr "" msgid "Used Filament (mm³)" -msgstr "Used Filament (mm³)" +msgstr "" msgid "Used Filament (g)" -msgstr "Used Filament (g)" +msgstr "" msgid "Used Materials" -msgstr "Used Materials" +msgstr "" msgid "Estimated time" msgstr "Becsült idő" @@ -2855,7 +2955,7 @@ msgid "Flushing volumes" msgstr "Öblítési mennyiségek" msgid "Untitled" -msgstr "Untitled" +msgstr "" #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -2869,9 +2969,9 @@ msgstr "Visszaállítás" #, c-format, boost-format msgid "Loading file: %s" -msgstr "Loading file: %s" +msgstr "" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2888,14 +2988,12 @@ msgid "" "The 3mf's version %s is newer than %s's version %s, Found following keys " "unrecognized:\n" msgstr "" -"The 3mf file's version %s is newer than %s's version %s, Found the following " -"unrecognized keys:\n" msgid "You'd better upgrade your software.\n" -msgstr "You'd better upgrade your software.\n" +msgstr "" msgid "Newer 3mf version" -msgstr "Newer 3mf version" +msgstr "" #, c-format, boost-format msgid "" @@ -2903,17 +3001,17 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" +msgid "the 3mf is not compatible, load geometry data only!" msgstr "" msgid "Incompatible 3mf" msgstr "Nem kompatibilis 3mf" msgid "Name of components inside step file is not UTF8 format!" -msgstr "Component name(s) inside step file not in UTF8 format!" +msgstr "" msgid "The name may show garbage characters!" -msgstr "Because of unsupported text encoding, garbage characters may appear!" +msgstr "" msgid "Attention!" msgstr "Figyelem!" @@ -2923,30 +3021,28 @@ msgid "Failed loading file \"%1%\". An invalid configuration was found." msgstr "Nem sikerült betölteni \"%1%\" fájlt. Érvénytelen konfiguráció." msgid "Objects with zero volume removed" -msgstr "Objects with zero volume removed" +msgstr "" msgid "The volume of the object is zero" -msgstr "The volume of the object is zero" +msgstr "" #, c-format, boost-format msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" msgid "Object too small" -msgstr "Object too small" +msgstr "" msgid "Load these files as a single object with multiple parts?\n" -msgstr "Load these files as a single object with multiple parts?\n" +msgstr "" msgid "Object with multiple parts was detected" -msgstr "An object with multiple parts was detected" +msgstr "" msgid "The file does not contain any geometry data." -msgstr "The file does not contain any geometry data." +msgstr "" msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " @@ -2963,7 +3059,7 @@ msgid "Save file as:" msgstr "Fájl mentése mint:" msgid "The selected object couldn't be split." -msgstr "The selected object couldn't be split." +msgstr "" msgid "Another export job is running." msgstr "Egy másik exportálási feladat is fut." @@ -2975,13 +3071,13 @@ msgid "Slicing" msgstr "Szeletelés" msgid "There are warnings after slicing models:" -msgstr "There are warnings after slicing models:" +msgstr "" msgid "warnings" -msgstr "warnings" +msgstr "" msgid "Invalid data" -msgstr "Invalid data" +msgstr "" #, c-format, boost-format msgid "Slicing Plate %d" @@ -3003,16 +3099,16 @@ msgstr "" "Előkészítés fülre" msgid "You can keep the modified presets to the new project or discard them" -msgstr "You can keep the modified presets for the new project or discard them" +msgstr "" msgid "Creating a new project" msgstr "Új projekt létrehozása" msgid "Load project" -msgstr "Load project" +msgstr "" msgid "The selected file" -msgstr "The selected file" +msgstr "" msgid "does not contain valid gcode." msgstr "nem tartalmaz érvényes G-kódot." @@ -3033,7 +3129,7 @@ msgid "Import geometry only" msgstr "Csak a geometria importálása" msgid "Only one G-code file can be opened at the same time." -msgstr "Only one G-code file can be opened at a time." +msgstr "" msgid "G-code loading" msgstr "G-code betöltése" @@ -3089,7 +3185,7 @@ msgstr "" "Az egyedi támaszok és a színfestés eltávolításra került a javítást előtt." msgid "Invalid number" -msgstr "Invalid number" +msgstr "" #, boost-format msgid "Part name: %1%\n" @@ -3120,16 +3216,16 @@ msgid "Triangles: %1%\n" msgstr "Háromszögek: %1%\n" msgid "Switching the language requires application restart.\n" -msgstr "Switching languages requires the application to restart.\n" +msgstr "" msgid "Do you want to continue?" msgstr "Szeretnéd folytatni?" msgid "Language selection" -msgstr "Language selection" +msgstr "" msgid "Switching application language while some presets are modified." -msgstr "Switching application language while some presets are modified." +msgstr "" msgid "Changing application language" msgstr "Alkalmazás nyelvének megváltoztatása" @@ -3182,7 +3278,7 @@ msgstr "" "Folyamat)" msgid "User Sync" -msgstr "User Sync" +msgstr "" msgid "Associate files to BambuStudio" msgstr "Fájlok társítása a BambuStudiohoz" @@ -3227,7 +3323,7 @@ msgid "Show home page on startup" msgstr "Kezdőlap megjelenítése indításkor" msgid "Sync settings" -msgstr "Sync settings" +msgstr "" msgid "Preset sync" msgstr "Beállítások szinkronizálása" @@ -3236,31 +3332,31 @@ msgid "Preferences sync" msgstr "Beállítások szinkronizálása" msgid "View control settings" -msgstr "View control settings" +msgstr "" msgid "Rotate of view" msgstr "Nézet elforgatása" msgid "Move of view" -msgstr "Pan View" +msgstr "" msgid "Zoom of view" -msgstr "Zoom View" +msgstr "" msgid "Other" msgstr "Egyéb" msgid "Mouse wheel reverses when zooming" -msgstr "Reverse scroll direction while zooming" +msgstr "" msgid "Develop mode" msgstr "Fejlesztői mód" msgid "Dump video" -msgstr "Dump video" +msgstr "" msgid "Log Level" -msgstr "Log Level" +msgstr "" msgid "fatal" msgstr "súlyos" @@ -3269,16 +3365,16 @@ msgid "error" msgstr "hiba" msgid "warning" -msgstr "warning" +msgstr "" msgid "info" -msgstr "info" +msgstr "" msgid "debug" msgstr "debug" msgid "trace" -msgstr "trace" +msgstr "" msgid "Host Setting" msgstr "Host beállítás" @@ -3308,10 +3404,10 @@ msgid "Switch cloud environment, Please login again!" msgstr "" msgid "System presets" -msgstr "System presets" +msgstr "" msgid "User presets" -msgstr "User presets" +msgstr "" msgid "Incompatible presets" msgstr "Nem kompatibilis beállítások" @@ -3338,13 +3434,13 @@ msgid "Packing project data into 3mf file" msgstr "Projektadatok csomagolása 3mf fájlba" msgid "Uploading 3mf" -msgstr "Uploading 3mf" +msgstr "" msgid "Jump to model publish web page" -msgstr "Jump to model publish web page" +msgstr "" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "Note: The preparation may take several minutes. Please be patient." +msgstr "" msgid "Publish" msgstr "Közzététel" @@ -3359,7 +3455,7 @@ msgid "Packing data to 3mf" msgstr "Adatok csomagolása 3mf-be" msgid "Jump to webpage" -msgstr "Jump to webpage" +msgstr "" #, c-format, boost-format msgid "Save %s as" @@ -3372,7 +3468,7 @@ msgid "Project Inside Preset" msgstr "Projekt a beállításon belül" msgid "Name is invalid;" -msgstr "Name is invalid;" +msgstr "" msgid "illegal characters:" msgstr "tiltott karakterek:" @@ -3381,7 +3477,7 @@ msgid "illegal suffix:" msgstr "tiltott utótag:" msgid "Name is unavailable." -msgstr "Name is unavailable." +msgstr "" msgid "Overwrite a system profile is not allowed" msgstr "A rendszerprofil felülírása nem engedélyezett" @@ -3398,16 +3494,16 @@ msgid "Please note that saving action will replace this preset" msgstr "Figyelem, a mentési művelet lecseréli ezt a beállítást" msgid "The name is not allowed to be empty." -msgstr "The name field is not allowed to be empty." +msgstr "" msgid "The name is not allowed to start with space character." -msgstr "The name is not allowed to start with a space." +msgstr "" msgid "The name is not allowed to end with space character." -msgstr "The name is not allowed to end with a space." +msgstr "" msgid "The name cannot be the same as a preset alias name." -msgstr "The name cannot be the same as a preset alias name." +msgstr "" msgid "Save preset" msgstr "Beállítás mentése" @@ -3426,22 +3522,16 @@ msgstr "Kérjük, válassz egy műveletet a(z) \"%1%\" beállítással a mentés #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " -msgstr "For \"%1%\", change \"%2%\" to \"%3%\" " +msgstr "" #, boost-format msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "For \"%1%\", add \"%2%\" as a new preset" +msgstr "" #, boost-format msgid "Simply switch to \"%1%\"" msgstr "Csak válts a(z) \"%1%\"-ra" -msgid "Online" -msgstr "Online" - -msgid "Offline" -msgstr "Offline" - msgid "My Device" msgstr "Saját eszköz" @@ -3449,10 +3539,10 @@ msgid "Other Device" msgstr "Egyéb eszköz" msgid "Input access code" -msgstr "Input access code" +msgstr "" msgid "Log out successful." -msgstr "Log out successful." +msgstr "" msgid "Busy" msgstr "Elfoglalt" @@ -3485,16 +3575,16 @@ msgid "send completed" msgstr "küldés befejezve" msgid "No login account, only printers in LAN mode are displayed" -msgstr "No login account, only printers in LAN mode are displayed" +msgstr "" msgid "Connecting to server" msgstr "Csatlakozás a szerverhez" msgid "Synchronizing device information" -msgstr "Synchronizing device information" +msgstr "" msgid "Synchronizing device information time out" -msgstr "Synchronizing device information time out" +msgstr "" msgid "Cannot send the print task when the upgrade is in progress" msgstr "" @@ -3504,10 +3594,9 @@ msgstr "" msgid "" "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"The printer is executing instructions. Please restart printing after it ends" msgid "The printer is busy on other print job" -msgstr "The printer is busy with another print job." +msgstr "" #, c-format, boost-format msgid "" @@ -3524,15 +3613,11 @@ msgid "" "Filaments to AMS slots mappings have been established. You can click a " "filament above to change its mapping AMS slot" msgstr "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" msgid "" "Please click each filament above to specify its mapping AMS slot before " "sending the print job" msgstr "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" #, c-format, boost-format msgid "" @@ -3554,28 +3639,28 @@ msgid "Preparing print job" msgstr "Nyomtatási feladat előkészítése" msgid "Modifying the device name" -msgstr "Modifying the device name" +msgstr "" msgid "Log in printer" -msgstr "Log in printer" +msgstr "" msgid "Would you like to log in this printer with current account?" -msgstr "Would you like to log in this printer with the current account?" +msgstr "" msgid "Log in successful." -msgstr "Log in successful." +msgstr "" msgid "Log out printer" -msgstr "Log out printer" +msgstr "" msgid "Would you like to log out the printer?" -msgstr "Would you like to log out the printer?" +msgstr "" msgid "Please log in first." msgstr "Kérjük, előbb jelentkezz be." msgid "There was a problem connecting to the printer. Please try again." -msgstr "There was a problem connecting to the printer. Please try again." +msgstr "" msgid "Failed to log out." msgstr "Sikertelen kijelentkezés." @@ -3633,9 +3718,6 @@ msgid "" "expressed as a percentage of line width. 0 speed means no slowing down for " "the overhang degree range and wall speed is used" msgstr "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" msgid "Travel speed" msgstr "Mozgás sebessége" @@ -3709,7 +3791,7 @@ msgid "Nozzle" msgstr "Fúvóka" msgid "Nozzle temperature when printing" -msgstr "Nozzle temperature when printing" +msgstr "" msgid "Cool plate" msgstr "Cool plate" @@ -3827,7 +3909,7 @@ msgid "Motion ability" msgstr "Géplimitek" msgid "Normal" -msgstr "Normal" +msgstr "" msgid "Speed limitation" msgstr "Sebesség limitek" @@ -3839,13 +3921,13 @@ msgid "Jerk limitation" msgstr "Jerk limitek" msgid "Layer height limits" -msgstr "Layer height limits" +msgstr "" msgid "Retraction when switching material" msgstr "Visszahúzás anyagváltáskor" msgid "Detached" -msgstr "Detached" +msgstr "" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." @@ -3854,7 +3936,7 @@ msgstr[1] "A következő beállítások szintén törlődni fognak." #, boost-format msgid "Are you sure to %1% the selected preset?" -msgstr "Are you sure you want to %1% the selected preset?" +msgstr "" #. TRN Remove/Delete #, boost-format @@ -3871,7 +3953,7 @@ msgid "Custom G-code" msgstr "Egyedi G-kód" msgid "Click to reset current value and attach to the global value." -msgstr "Click to reset current value and attach to the global value." +msgstr "" msgid "Click to drop current modify and reset to saved value." msgstr "" @@ -3882,10 +3964,10 @@ msgid "Process Settings" msgstr "Folyamatbeállítások" msgid "Undef" -msgstr "Undefined" +msgstr "" msgid "Unsaved Changes" -msgstr "unsaved changes" +msgstr "" msgid "Discard or Keep changes" msgstr "Változások elvetése vagy megtartása" @@ -3897,7 +3979,7 @@ msgid "New Value" msgstr "Új érték" msgid "Transfer" -msgstr "Transfer" +msgstr "" msgid "Don't save" msgstr "Ne mentsd" @@ -3918,10 +4000,10 @@ msgid "Save the selected options." msgstr "A kiválasztott beállítások mentése." msgid "Keep the selected options." -msgstr "Keep the selected options." +msgstr "" msgid "Transfer the selected options to the newly selected preset." -msgstr "Transfer the selected options to the newly selected preset." +msgstr "" #, boost-format msgid "" @@ -3936,8 +4018,6 @@ msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." msgstr "" -"Transfer the selected options to the newly selected preset \n" -"\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" @@ -3980,9 +4060,6 @@ msgstr "Képességek" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -3994,7 +4071,7 @@ msgstr "Lefedés" #, boost-format msgid "The name \"%1%\" already exists." -msgstr "The name \"%1%\" already exists." +msgstr "" msgid "Basic Info" msgstr "Alapinformáció" @@ -4015,7 +4092,7 @@ msgid "Author" msgstr "" msgid "Model Name" -msgstr "Model Name" +msgstr "" #, c-format, boost-format msgid "%s Update" @@ -4038,15 +4115,12 @@ msgstr "Nem kompatibilis konfiguráció" msgid "the configuration package is incompatible with current application." msgstr "" -"the configuration package is incompatible with the current application." #, c-format, boost-format msgid "" "The configuration package is incompatible with current application.\n" "%s will update the configuration package, Otherwise it won't be able to start" msgstr "" -"The configuration package is incompatible with the current application.\n" -"%s will update the configuration package to allow the application to start." #, c-format, boost-format msgid "Exit %s" @@ -4054,17 +4128,15 @@ msgstr "Kilépés %s" msgid "the Configuration package is incompatible with current APP." msgstr "" -"The configuration package is incompatible with the current version of Bambu " -"Studio." msgid "Configuration updates" msgstr "Konfiguráció frissítések" msgid "No updates available." -msgstr "No updates available." +msgstr "" msgid "The configuration is up to date." -msgstr "The configuration is up to date." +msgstr "" msgid "Auto-Calc" msgstr "Automatikus számítás" @@ -4079,34 +4151,34 @@ msgid "Flush multiplier" msgstr "Öblítési szorzó" msgid "unloaded" -msgstr "unloaded" +msgstr "" msgid "loaded" -msgstr "loaded" +msgstr "" msgid "Filament #" msgstr "Filament #" msgid "From" -msgstr "From" +msgstr "" msgid "To" -msgstr "To" +msgstr "" msgid "Login" msgstr "Bejelentkezés" msgid "The configuration package is changed in previous Config Guide" -msgstr "The configuration package is changed in previous Config Guide" +msgstr "" msgid "Configuration package changed" msgstr "Konfigurációs csomag megváltozott" msgid "Toolbar" -msgstr "Toolbar" +msgstr "" msgid "Objects list" -msgstr "Objects list" +msgstr "" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files." msgstr "Geometriai adatok importálása STL/STEP/3MF/OBJ/AMF fájlokból." @@ -4142,7 +4214,7 @@ msgid "⌘+Any arrow" msgstr "⌘+Bármilyen nyíl gomb" msgid "Movement in camera space" -msgstr "Movement in camera space" +msgstr "" msgid "⌥+Left mouse button" msgstr "" @@ -4175,31 +4247,31 @@ msgid "Arrow Up" msgstr "Felfelé nyíl" msgid "Move selection 10 mm in positive Y direction" -msgstr "Move selection 10mm in positive Y direction" +msgstr "" msgid "Arrow Down" msgstr "Lefelé nyíl" msgid "Move selection 10 mm in negative Y direction" -msgstr "Move selection 10mm in negative Y direction" +msgstr "" msgid "Arrow Left" msgstr "Balra nyíl" msgid "Move selection 10 mm in negative X direction" -msgstr "Move selection 10mm in negative X direction" +msgstr "" msgid "Arrow Right" msgstr "Jobbra nyíl" msgid "Move selection 10 mm in positive X direction" -msgstr "Move selection 10mm in positive X direction" +msgstr "" msgid "Shift+Any arrow" msgstr "Shift+Bármelyik nyílgomb" msgid "Movement step set to 1 mm" -msgstr "Movement step set to 1mm" +msgstr "" msgid "keyboard 1-9: set filament for object/part" msgstr "filament hozzárendelése az objektumhoz/tárgyhoz" @@ -4250,22 +4322,22 @@ msgid "Gizmo FDM paint-on seam" msgstr "" msgid "Plater" -msgstr "Plater" +msgstr "" msgid "Move: press to snap by 1mm" -msgstr "Move: press to snap by 1mm" +msgstr "" msgid "⌘+Mouse wheel" msgstr "⌘+Egérgörgő" msgid "Support/Color Painting: adjust pen radius" -msgstr "Support/Color Painting: adjust pen radius" +msgstr "" msgid "⌥+Mouse wheel" msgstr "" msgid "Support/Color Painting: adjust section position" -msgstr "Support/Color Painting: adjust section position" +msgstr "" msgid "Ctrl+Mouse wheel" msgstr "Ctrl+Egérgörgő" @@ -4283,7 +4355,7 @@ msgid "Delete objects, parts, modifiers " msgstr "Objektumok, tárgyak, módosítók törlése " msgid "Space" -msgstr "Space" +msgstr "" msgid "Select the object/part and press space to change the name" msgstr "" @@ -4291,7 +4363,7 @@ msgstr "" "megváltoztatásához" msgid "Mouse click" -msgstr "Mouse click" +msgstr "" msgid "Select the object/part and mouse click to change the name" msgstr "" @@ -4299,25 +4371,25 @@ msgstr "" "megváltoztatásához" msgid "Objects List" -msgstr "Objects List" +msgstr "" msgid "Vertical slider - Move active thumb Up" -msgstr "Vertical slider - Move active thumb Up" +msgstr "" msgid "Vertical slider - Move active thumb Down" -msgstr "Vertical slider - Move active thumb Down" +msgstr "" msgid "Horizontal slider - Move active thumb Left" -msgstr "Horizontal slider - Move active thumb Left" +msgstr "" msgid "Horizontal slider - Move active thumb Right" -msgstr "Horizontal slider - Move active thumb Right" +msgstr "" msgid "On/Off one layer mode of the vertical slider" -msgstr "On/Off one layer mode of the vertical slider" +msgstr "" msgid "Move slider 5x faster" -msgstr "Move slider 5x faster" +msgstr "" msgid "Shift+Mouse wheel" msgstr "Shift+Egérgörgő" @@ -4330,7 +4402,7 @@ msgid "version %s update information :" msgstr "" msgid "New version of Bambu Studio" -msgstr "New version of Bambu Studio" +msgstr "A Bambu Studio új verziója" msgid "Saving objects into the 3mf failed." msgstr "Az objektumok mentése a 3mf-be sikertelen volt." @@ -4354,7 +4426,7 @@ msgid "Repair failed." msgstr "Sikertelen javítás." msgid "Loading repaired objects" -msgstr "Loading repaired objects" +msgstr "" msgid "Exporting 3mf file failed" msgstr "3MF fájl exportálása sikertelen" @@ -4369,10 +4441,10 @@ msgid "Repaired 3mf file contains more than one object" msgstr "A megjavított 3mf fájl egynél több objektumot tartalmaz" msgid "Repaired 3mf file does not contain any volume" -msgstr "The repaired 3mf file does not contain any volume." +msgstr "" msgid "Repaired 3mf file contains more than one volume" -msgstr "The repaired 3mf file contains more than one volume." +msgstr "" msgid "Repair finished" msgstr "Javítás befejezve" @@ -4389,38 +4461,34 @@ msgid "Copying directory %1% to %2% failed: %3%" msgstr "%1% mappa másolása sikertelen a következő helyre: %2% Hiba: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "Please check any unsaved changes before updating the configuration." +msgstr "" msgid "Configuration package updated to " msgstr "Konfigurációs csomag frissítve a következőre " msgid "Open G-code file:" -msgstr "Open G-code file:" +msgstr "" msgid "" "One object has empty initial layer and can't be printed. Please Cut the " "bottom or enable supports." msgstr "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "The object has empty layers between %1% and %2% and can’t be printed." +msgstr "" #, boost-format msgid "Object: %1%" -msgstr "Object: %1%" +msgstr "" msgid "" "Maybe parts of the object at these height are too thin, or the object has " "faulty mesh" msgstr "" -"Parts of the object at these heights may be too thin or the object may have " -"a faulty mesh." msgid "No object can be printed. Maybe too small" -msgstr "No object can be printed. It may be too small." +msgstr "" msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -4469,44 +4537,44 @@ msgid "Support interface" msgstr "Támasz érintkező felület" msgid "Support transition" -msgstr "Support transition" +msgstr "" msgid "Multiple" -msgstr "Multiple" +msgstr "" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "Failed to calculate line width of %1%. Cannot get value of “%2%” " +msgstr "" msgid "undefined error" -msgstr "undefined error" +msgstr "" msgid "too many files" -msgstr "too many files" +msgstr "" msgid "file too large" msgstr "fájl túl nagy" msgid "unsupported method" -msgstr "unsupported method" +msgstr "" msgid "unsupported encryption" -msgstr "unsupported encryption" +msgstr "" msgid "unsupported feature" -msgstr "unsupported feature" +msgstr "" msgid "failed finding central directory" msgstr "nem sikerült megtalálni a központi könyvtárat" msgid "not a ZIP archive" -msgstr "not a ZIP archive" +msgstr "" msgid "invalid header or corrupted" -msgstr "invalid header or corrupted" +msgstr "" msgid "unsupported multidisk" -msgstr "Saving to RAID is not supported." +msgstr "" msgid "decompression failed" msgstr "sikertelen kicsomagolás" @@ -4515,13 +4583,13 @@ msgid "compression failed" msgstr "tömörítés sikertelen" msgid "unexpected decompressed size" -msgstr "unexpected decompressed size" +msgstr "" msgid "CRC check failed" msgstr "CRC-ellenőrzés sikertelen" msgid "unsupported central directory size" -msgstr "unsupported central directory size" +msgstr "" msgid "allocation failed" msgstr "sikertelen allokáció" @@ -4548,16 +4616,16 @@ msgid "file stat failed" msgstr "fájl stat sikertelen" msgid "invalid parameter" -msgstr "invalid parameter" +msgstr "" msgid "invalid filename" -msgstr "invalid filename" +msgstr "" msgid "buffer too small" msgstr "túl kicsi puffer" msgid "internal error" -msgstr "internal error" +msgstr "" msgid "file not found" msgstr "fájl nem található" @@ -4566,10 +4634,10 @@ msgid "archive too large" msgstr "archívum túl nagy" msgid "validation failed" -msgstr "validation failed" +msgstr "" msgid "write callback failed" -msgstr "write callback failed" +msgstr "" #, boost-format msgid "" @@ -4630,7 +4698,7 @@ msgstr "" "megsérülhet nyomtatás közben" msgid "No extrusions under current settings." -msgstr "No extrusions under current settings." +msgstr "" msgid "" "Please select \"By object\" print sequence to print multiple objects in " @@ -4643,58 +4711,47 @@ msgid "" "The spiral vase mode does not work when an object contains more than one " "materials." msgstr "" -"Spiral (vase) mode does not work when an object contains more than one " -"material." msgid "The prime tower is not supported in \"By object\" print." -msgstr "A prime tower is not supported in “By object” print." +msgstr "" msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"A prime tower is not supported when adaptive layer height is on. It requires " -"that all objects have the same layer height." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"A prime tower requires any “support gap” to be a multiple of layer height." msgid "The prime tower requires that all objects have the same layer heights" -msgstr "A prime tower requires that all objects have the same layer height." +msgstr "" msgid "" "The prime tower requires that all objects are printed over the same number " "of raft layers" msgstr "" -"A prime tower requires that all objects are printed over the same number of " -"raft layers." msgid "" "The prime tower requires that all objects are sliced with the same layer " "heights." msgstr "" -"A prime tower requires that all objects are sliced with the same layer " -"height." msgid "Too small line width" -msgstr "Line width too small" +msgstr "" msgid "Too large line width" -msgstr "Line width too large" +msgstr "" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"A prime tower requires that support has the same layer height as the object." msgid "" "Support enforcers are used but support is not enabled. Please enable support." msgstr "" -"Support enforcers are used but support is not enabled. Please enable support." msgid "Layer height cannot exceed nozzle diameter" -msgstr "Layer height cannot exceed nozzle diameter." +msgstr "" #, c-format, boost-format msgid "Plate %d: %s does not support filament %s.\n" @@ -4746,8 +4803,6 @@ msgstr "Nyomtatási magasság" msgid "Maximum printable height which is limited by mechanism of printer" msgstr "" -"This is the maximum printable height which is limited by the height of the " -"build area." msgid "Printer preset names" msgstr "Nyomtató beállítások neve" @@ -4766,8 +4821,6 @@ msgid "" "Maximum detour distance for avoiding crossing wall. Don't detour if the " "detour distance is large than this value" msgstr "" -"Maximum detour distance for avoiding travel across walls. If the distance is " -"larger than this value, there will be no detour." msgid "Other layers" msgstr "Többi réteg" @@ -4808,7 +4861,7 @@ msgid "Initial layer" msgstr "Kezdőréteg" msgid "Initial layer bed temperature" -msgstr "First layer bed temperature" +msgstr "" msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -4846,7 +4899,7 @@ msgid "Engineering Plate" msgstr "Engineering Plate" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "This G-code is inserted at every layer change before lifting z." +msgstr "" msgid "Bottom shell layers" msgstr "Alsó héj rétegek" @@ -4856,9 +4909,6 @@ msgid "" "surface layer. When the thickness calculated by this value is thinner than " "bottom shell thickness, the bottom shell layers will be increased" msgstr "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" msgid "Bottom shell thickness" msgstr "Alsó héj vastagság" @@ -4870,11 +4920,6 @@ msgid "" "is disabled and thickness of bottom shell is absolutely determained by " "bottom shell layers" msgstr "" -"The number of bottom solid layers is increased when slicing if the thickness " -"calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin a shell when layer height is small. 0 means that this " -"setting is disabled and the thickness of the bottom shell is determined " -"simply by the number of bottom shell layers." msgid "Force cooling for overhang and bridge" msgstr "Hűtés kényszerítése túlnyúlásoknál és áthidalásoknál" @@ -4894,9 +4939,6 @@ msgid "" "wall which has large overhang degree. Forcing cooling for overhang and " "bridge can get better quality for these part" msgstr "" -"Force part cooling fan to be this speed when printing bridges or overhang " -"walls which have a large overhang degree. Forcing cooling for overhangs and " -"bridges can achieve better quality for these parts." msgid "Cooling overhang threshold" msgstr "Túlnyúlás hűtésének küszöbértéke" @@ -4906,9 +4948,6 @@ msgid "" "exceeds this value. Expressed as percentage which indicides how much width " "of the line without support from lower layer" msgstr "" -"This forces the cooling fan to use a specific speed when overhang degrees of " -"parts exceed the set value. It is expressed as percentage which indicates " -"how much line is acceptable without support from lower layers." msgid "Bridge flow" msgstr "Áthidalás áramlási sebessége" @@ -4927,8 +4966,6 @@ msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"Use only one wall on flat top surfaces, to give more space to the top infill " -"pattern" msgid "Slow down for overhang" msgstr "Lassítás túlnyúlásoknál" @@ -4958,9 +4995,6 @@ msgid "" "holes or both. Auto means both the brim position and brim width is analysed " "and calculated automatically" msgstr "" -"This controls brim position including outer side of models, inner side of " -"holes, or both. Auto means both the brim position and brim width are " -"analyzed and calculated automatically." msgid "Brim-object gap" msgstr "Perem-tárgy közötti rés" @@ -5018,8 +5052,6 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"This is the default acceleration for both normal printing and travel after " -"the first layer." msgid "mm/s²" msgstr "mm/s²" @@ -5083,9 +5115,6 @@ msgid "" "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"This is the maximum length of bridges that don't need support. Set it to 0 " -"if you want all bridges to be supported, and set it to a very large value if " -"you don't want any bridges to be supported." msgid "End G-code" msgstr "Befejező G-kód" @@ -5100,7 +5129,7 @@ msgid "Top surface pattern" msgstr "Felső felület mintázata" msgid "Line pattern of top surface infill" -msgstr "This is the line pattern for top surface infill." +msgstr "" msgid "Concentric" msgstr "Koncentrikus" @@ -5119,11 +5148,9 @@ msgstr "Alsó felület mintázata" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"This is the line pattern of bottom surface infill, not including bridge " -"infill." msgid "Line width of outer wall" -msgstr "Line width of outer wall" +msgstr "" msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " @@ -5151,17 +5178,15 @@ msgid "infill/outer/inner" msgstr "kitöltés/külső/belső" msgid "Height to rod" -msgstr "Height to rod" +msgstr "" msgid "" "Height of the clearance cylinder around extruder. Used as input of auto-" "arrange to avoid collision when print object by object" msgstr "" -"Height of the clearance cylinder around extruder: used as input for auto-" -"arranging to avoid collisions when printing object by object" msgid "Height to lid" -msgstr "Height to lid" +msgstr "" msgid "Radius" msgstr "Radius" @@ -5178,7 +5203,7 @@ msgid "Extruder Color" msgstr "Extruder szín" msgid "Only used as a visual help on UI" -msgstr "Only used as a visual help on UI" +msgstr "" msgid "Extruder offset" msgstr "Extruder offszet" @@ -5193,11 +5218,6 @@ msgid "" "and 1.05. Maybe you can tune this value to get nice flat surface when there " "has slight overflow or underflow" msgstr "" -"The material may have volumetric change after switching between molten and " -"crystalline states. This setting changes all extrusion flow of this filament " -"in G-code proportionally. The recommended value range is between 0.95 and " -"1.05. You may be able to tune this value to get a nice flat surface if there " -"is slight overflow or underflow." msgid "Default line width if some line width is set to be zero" msgstr "" @@ -5242,15 +5262,12 @@ msgid "" "extruded per second. Printing speed is limited by max volumetric speed, in " "case of too high and unreasonable speed setting. Zero means no limit" msgstr "" -"Use this to set the maximum volume of filament that can be melted and " -"extruded per second. Printing speed is limited by maximum volumetric speed " -"if settings are unreasonably high. 0 means there is no limit." msgid "mm³/s" msgstr "mm³/s" msgid "Minimal purge on wipe tower" -msgstr "Minimal purge on wipe tower" +msgstr "" msgid "mm³" msgstr "mm³" @@ -5260,16 +5277,12 @@ msgstr "Filament betöltési idő" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Time to load new filament when switching filament, for statistical purposes " -"only." msgid "Filament unload time" msgstr "Filament kitöltési idő" msgid "Time to unload old filament when switch filament. For statistics only" msgstr "" -"Time to unload old filament when switching filament, for statistical " -"purposes only." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -5291,7 +5304,7 @@ msgid "Type" msgstr "Típus" msgid "The material type of filament" -msgstr "Filament material type" +msgstr "" msgid "Soluble material" msgstr "Oldható anyag" @@ -5303,12 +5316,11 @@ msgstr "" "használják" msgid "Support material" -msgstr "Support material" +msgstr "" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"Support material is commonly used to print support and support interfaces." msgid "Temperature of vitrificaiton" msgstr "Üvegesedési hőmérséklet" @@ -5317,8 +5329,6 @@ msgid "" "Material becomes soft at this temperature. Thus the heatbed cannot be hotter " "than this tempature" msgstr "" -"Material becomes soft at this temperature. Thus, the heat bed cannot be " -"hotter than this temperature." msgid "Price" msgstr "Költség" @@ -5327,7 +5337,7 @@ msgid "Filament price. For statistics only" msgstr "Filament költsége. Csak statisztikákhoz kerül felhasználásra" msgid "money/kg" -msgstr "money/kg" +msgstr "" msgid "(Undefined)" msgstr "(Undefined)" @@ -5348,14 +5358,12 @@ msgstr "Kitöltés sűrűsége" #, c-format msgid "Density of internal sparse infill, 100% means solid throughout" msgstr "" -"This is the density of internal sparse infill. 100% means that the object " -"will be solid throughout." msgid "Sparse infill pattern" msgstr "Kitöltési mintázat" msgid "Line pattern for internal sparse infill" -msgstr "This is the line pattern for internal sparse infill." +msgstr "" msgid "Grid" msgstr "Rács" @@ -5393,7 +5401,7 @@ msgstr "" "tárgyasztalhoz való tapadást" msgid "Line width of initial layer" -msgstr "Line width of first layer" +msgstr "" msgid "Initial layer height" msgstr "Kezdő rétegmagasság" @@ -5431,10 +5439,10 @@ msgid "Speed of solid infill part of initial layer" msgstr "A kezdőréteg szilárd kitöltési részének sebessége" msgid "Initial layer nozzle temperature" -msgstr "First layer nozzle temperature" +msgstr "" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Nozzle temperature for printing the first layer with this filament" +msgstr "" msgid "Full fan speed at layer" msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" @@ -5459,8 +5467,6 @@ msgid "" "The width within which to jitter. It's adversed to be below outer wall line " "width" msgstr "" -"The width of jittering: it’s recommended to keep this lower than the outer " -"wall line width." msgid "Fuzzy skin point distance" msgstr "Fuzzy skin pontok távolsága" @@ -5469,8 +5475,6 @@ msgid "" "The average diatance between the random points introducded on each line " "segment" msgstr "" -"The average diatance between the random points introducded on each line " -"segment" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -5494,7 +5498,6 @@ msgstr "Vonalszám hozzáadása" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Enable this to add line number(Nx) at the beginning of each G-Code line." msgid "Scan first layer" msgstr "Az első réteg szkennelése" @@ -5513,8 +5516,6 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"The metallic material of the nozzle: This determines the abrasive resistance " -"of the nozzle and what kind of filament can be printed." msgid "Hardened steel" msgstr "Edzett acél" @@ -5534,7 +5535,7 @@ msgid "G-code flavor" msgstr "G-kód változat" msgid "What kind of gcode the printer is compatible with" -msgstr "What kind of G-code the printer is compatible with." +msgstr "" msgid "Infill combination" msgstr "Kitöltés összevonása" @@ -5551,7 +5552,7 @@ msgid "Filament to print internal sparse infill." msgstr "Filament a belső ritkás kitöltésekhez." msgid "Line width of internal sparse infill" -msgstr "Line width of internal sparse infill" +msgstr "" msgid "Infill/Wall overlap" msgstr "Kitöltés/fal átfedés" @@ -5560,9 +5561,6 @@ msgid "" "Infill area is enlarged slightly to overlap with wall for better bonding. " "The percentage value is relative to line width of sparse infill" msgstr "" -"This allows the infill area to be enlarged slightly to overlap with walls " -"for better bonding. The percentage value is relative to line width of sparse " -"infill." msgid "Speed of internal sparse infill" msgstr "A belső ritkás kitöltés sebessége" @@ -5574,8 +5572,6 @@ msgid "" "Ironing is using small flow to print on same height of surface again to make " "flat surface more smooth. This setting controls which layer being ironed" msgstr "" -"Ironing uses a small flow to print at the same height of a surface to make " -"flat surfaces smoother. This setting controls which layers are being ironed." msgid "No ironing" msgstr "Nincs vasalás" @@ -5596,34 +5592,29 @@ msgid "" "The amount of material to extrude during ironing. Relative to flow of normal " "layer height. Too high value results in overextrusion on the surface" msgstr "" -"This is the amount of material to be extruded during ironing. It is relative " -"to the flow of normal layer height. Too high a value will result in " -"overextrusion on the surface." msgid "Ironing line spacing" msgstr "Vasalási vonalak közötti távolság" msgid "The distance between the lines of ironing" -msgstr "This is the distance between the lines used for ironing." +msgstr "" msgid "Ironing speed" -msgstr "Ironing speed" +msgstr "" msgid "Print speed of ironing lines" msgstr "A vasalási vonalak nyomtatási sebessége" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "This G-code is inserted at every layer change after the z lift." +msgstr "" msgid "Supports silent mode" -msgstr "Silent Mode" +msgstr "" msgid "" "Whether the machine supports silent mode in which machine use lower " "acceleration to print" msgstr "" -"Whether the machine supports silent mode in which machine uses lower " -"acceleration to print more quietly" msgid "Maximum speed X" msgstr "Maximális sebesség X" @@ -5689,46 +5680,46 @@ msgid "Maximum jerk E" msgstr "Maximális jerk E" msgid "Maximum jerk of the X axis" -msgstr "Maximum jerk of the X axis" +msgstr "" msgid "Maximum jerk of the Y axis" -msgstr "Maximum jerk of the Y axis" +msgstr "" msgid "Maximum jerk of the Z axis" -msgstr "Maximum jerk of the Z axis" +msgstr "" msgid "Maximum jerk of the E axis" -msgstr "Maximum jerk of the E axis" +msgstr "" msgid "Minimum speed for extruding" -msgstr "Minimum speed for extruding" +msgstr "" msgid "Minimum speed for extruding (M205 S)" -msgstr "Minimum speed for extruding (M205 S)" +msgstr "" msgid "Minimum travel speed" -msgstr "Minimum travel speed" +msgstr "" msgid "Minimum travel speed (M205 T)" -msgstr "Minimum travel speed (M205 T)" +msgstr "" msgid "Maximum acceleration for extruding" -msgstr "Maximum acceleration for extruding" +msgstr "" msgid "Maximum acceleration for extruding (M204 P)" -msgstr "Maximum acceleration for extruding (M204 P)" +msgstr "" msgid "Maximum acceleration for retracting" -msgstr "Maximum acceleration for retracting" +msgstr "" msgid "Maximum acceleration for retracting (M204 R)" -msgstr "Maximum acceleration for retracting (M204 R)" +msgstr "" msgid "Maximum acceleration for travel" -msgstr "Maximum acceleration for travel" +msgstr "" msgid "Maximum acceleration for travel (M204 T)" -msgstr "Maximum acceleration for travel (M204 T)" +msgstr "" msgid "Fan speed" msgstr "Ventilátor fordulatszám" @@ -5747,11 +5738,9 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"The highest printable layer height for the extruder: this is used to limit " -"the maximum layer height when adaptive layer height is enabled." msgid "Minimum speed for part cooling fan" -msgstr "Minimum speed for part cooling fan" +msgstr "" msgid "" "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " @@ -5769,26 +5758,24 @@ msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " "layer hight when enable adaptive layer height" msgstr "" -"The lowest printable layer height for the extruder. This is used to limit " -"the minimum layer height when adaptive layer height is enabled." msgid "Min print speed" -msgstr "Min print speed" +msgstr "" msgid "The minimum printing speed when slow down for cooling" -msgstr "The minimum printing speed when slowing down for cooling." +msgstr "" msgid "Nozzle diameter" -msgstr "Nozzle diameter" +msgstr "" msgid "Diameter of nozzle" msgstr "Fúvóka átmérője" msgid "Nozzle volume" -msgstr "Nozzle volume" +msgstr "" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Volume of nozzle between the filament cutter and the end of the nozzle" +msgstr "" msgid "Reduce infill retraction" msgstr "Csökkentett visszahúzás kitöltésnél" @@ -5811,7 +5798,7 @@ msgid "Filename format" msgstr "Fájlnév formátum" msgid "User can self-define the project file name when export" -msgstr "Users can decide project file names when exporting." +msgstr "" msgid "Detect overhang wall" msgstr "Túlnyúló fal felismerése" @@ -5826,21 +5813,19 @@ msgstr "" "beállított sebességet használja." msgid "Line width of inner wall" -msgstr "Line width of inner walls" +msgstr "" msgid "Speed of inner wall" msgstr "A belső fal nyomtatási sebessége" msgid "Number of walls of every layer" -msgstr "This is the number of walls per layer." +msgstr "" msgid "Raft contact Z distance" msgstr "Tutaj érintkezés Z távolság" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "" -"This is the Z gap between an object and a raft. It is ignored for soluble " -"interfaces." msgid "Raft expansion" msgstr "Tutaj kibővítése" @@ -5849,16 +5834,16 @@ msgid "Expand all raft layers in XY plane" msgstr "Összes tutaj réteg kiterjesztése az XY síkban" msgid "Initial layer density" -msgstr "First layer density" +msgstr "" msgid "Density of the first raft or support layer" msgstr "Az első tutaj vagy támasz réteg sűrűsége" msgid "Initial layer expansion" -msgstr "First layer expansion" +msgstr "" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "This expands the first raft or support layer to improve bed adhesion." +msgstr "" msgid "Raft layers" msgstr "Tutaj rétegek" @@ -5867,8 +5852,6 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Object will be raised by this number of support layers. Use this function to " -"avoid warping when printing ABS." msgid "Resolution" msgstr "Felbontás" @@ -5889,8 +5872,6 @@ msgid "" "Only trigger retraction when the travel distance is longer than this " "threshold" msgstr "" -"Only trigger retraction when the travel distance is longer than this " -"threshold." msgid "Retract amount before wipe" msgstr "Visszahúzott mennyiség törlés előtt" @@ -5898,8 +5879,6 @@ msgstr "Visszahúzott mennyiség törlés előtt" msgid "" "The length of fast retraction before wipe, relative to retraction length" msgstr "" -"This is the length of fast retraction before a wipe, relative to retraction " -"length." msgid "Retract when change layer" msgstr "Visszahúzás rétegváltáskor" @@ -5929,10 +5908,6 @@ msgid "" "clearance between nozzle and the print. It prevents nozzle from hitting the " "print when travel move. Using spiral line to lift z can prevent stringing" msgstr "" -"Whenever there is a retraction, the nozzle is lifted a little to create " -"clearance between the nozzle and the print. This prevents the nozzle from " -"hitting the print when traveling more. Using spiral lines to lift z can " -"prevent stringing." msgid "Retraction Speed" msgstr "Visszahúzás sebessége" @@ -5954,7 +5929,7 @@ msgid "Seam position" msgstr "Varrat pozíció" msgid "The start position to print each part of outer wall" -msgstr "This is the starting position for each part of the outer wall." +msgstr "" msgid "Nearest" msgstr "Legközelebbi" @@ -5965,6 +5940,9 @@ msgstr "Igazított" msgid "Back" msgstr "Hátul" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Szoknya távolsága" @@ -5987,9 +5965,6 @@ msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" msgstr "" -"The printing speed in exported G-code will be slowed down when the estimated " -"layer time is shorter than this value in order to get better cooling for " -"these layers." msgid "Minimum sparse infill threshold" msgstr "Ritkás kitöltés küszöbértéke" @@ -6005,7 +5980,7 @@ msgid "mm²" msgstr "mm²" msgid "Line width of internal solid infill" -msgstr "Line width of internal solid infill" +msgstr "" msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" @@ -6034,7 +6009,7 @@ msgid "" msgstr "" msgid "Temperature variation" -msgstr "Temperature variation" +msgstr "" msgid "Start G-code" msgstr "Kezdő G-kód" @@ -6055,9 +6030,6 @@ msgid "" "normal(auto) and tree(auto) is used to generate support automatically. If " "normal or tree is selected, only support enforcers are generated" msgstr "" -"normal(auto), hybrid(auto) and tree(auto) are used to generate support " -"automatically. If normal or tree is selected, only support enforcers are " -"generated." msgid "normal(auto)" msgstr "normál (auto)" @@ -6078,14 +6050,13 @@ msgid "Support/object xy distance" msgstr "Támasz/tárgy XY távolság" msgid "XY separation between an object and its support" -msgstr "This controls the XY separation between an object and its support." +msgstr "" msgid "Pattern angle" msgstr "Mintázat szöge" msgid "Use this setting to rotate the support pattern on the horizontal plane." msgstr "" -"Use this setting to rotate the support pattern on the horizontal plane." msgid "On build plate only" msgstr "Csak a tárgyasztaltól" @@ -6097,7 +6068,7 @@ msgid "Top Z distance" msgstr "Z távolság" msgid "The z gap between the top support interface and object" -msgstr "This determines the Z gap between top support interfaces and objects." +msgstr "" msgid "" "Filament to print support and skirt. 0 means no specific filament for " @@ -6107,10 +6078,10 @@ msgstr "" "külön kijelölt filament és a jelenleg használt kerül felhasználásra" msgid "Line width of support" -msgstr "Line width of support" +msgstr "" msgid "Interface use loop pattern" -msgstr "Loop pattern interface" +msgstr "" msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." @@ -6130,7 +6101,7 @@ msgid "Top interface layers" msgstr "Felső érintkező rétegek" msgid "Number of top interface layers" -msgstr "This is the number of top interface layers." +msgstr "" msgid "Bottom interface layers" msgstr "Alsó érintkező rétegek" @@ -6156,7 +6127,7 @@ msgid "Base pattern" msgstr "Alap mintázata" msgid "Line pattern of support" -msgstr "This is the line pattern for support." +msgstr "" msgid "Rectilinear" msgstr "Vonalak" @@ -6189,7 +6160,7 @@ msgid "Style" msgstr "Stílus" msgid "Snug" -msgstr "Snug" +msgstr "" msgid "Independent support layer height" msgstr "Független támasz rétegmagassága" @@ -6206,56 +6177,48 @@ msgid "" "Support will be generated for overhangs whose slope angle is below the " "threshold." msgstr "" -"Support will be generated for overhangs whose slope angle is below this " -"threshold." msgid "Tree support branch angle" -msgstr "Tree support branch angle" +msgstr "" msgid "" "This setting determines the maximum overhang angle that t he branches of " "tree support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" -"This setting determines the maximum overhang angle that the branches of tree " -"support are allowed to make. If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." msgid "Tree support branch distance" -msgstr "Tree support branch distance" +msgstr "" msgid "" "This setting determines the distance between neighboring tree support nodes." msgstr "" -"This setting determines the distance between neighboring tree support nodes." msgid "Tree support branch diameter" -msgstr "Tree support branch diameter" +msgstr "" msgid "This setting determines the initial diameter of support nodes." -msgstr "This setting determines the initial diameter of support nodes." +msgstr "" msgid "Tree support wall loops" -msgstr "Tree support wall loops" +msgstr "" msgid "This setting specify the count of walls around tree support" -msgstr "This setting specifies the wall count around tree support." +msgstr "" msgid "Tree support with infill" -msgstr "Tree support with infill" +msgstr "" msgid "" "This setting specifies whether to add infill inside large hollows of tree " "support" msgstr "" -"This setting specifies whether to add infill inside large hollows of tree " -"support." msgid "Nozzle temperature for layers after the initial one" -msgstr "Nozzle temperature after the first layer" +msgstr "" msgid "Nozzle temperature" -msgstr "Nozzle temperature" +msgstr "" msgid "Bed temperature difference" msgstr "Asztalhőmérséklet különbség" @@ -6284,11 +6247,9 @@ msgid "" "This gcode is inserted when change filament, including T command to trigger " "tool change" msgstr "" -"This G-code is inserted when filament is changed, including T commands to " -"trigger tool change." msgid "Line width for top surfaces" -msgstr "Line width for top surfaces" +msgstr "" msgid "Speed of top surface infill which is solid" msgstr "A felső felületi kitöltés sebessége, amely szilárd" @@ -6301,12 +6262,9 @@ msgid "" "layer. When the thickness calculated by this value is thinner than top shell " "thickness, the top shell layers will be increased" msgstr "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than the top " -"shell thickness, the top shell layers will be increased" msgid "Top solid layers" -msgstr "Top solid layers" +msgstr "" msgid "Top shell thickness" msgstr "Felső héj vastagság" @@ -6318,11 +6276,6 @@ msgid "" "is disabled and thickness of top shell is absolutely determained by top " "shell layers" msgstr "" -"The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin a shell when layer height is small. 0 means that this " -"setting is disabled and thickness of top shell is determined simply by the " -"number of top shell layers." msgid "Speed of travel which is faster and without extrusion" msgstr "Mozgási sebesség, amikor nem történik extrudálás" @@ -6334,9 +6287,6 @@ msgid "" "Move nozzle along the last extrusion path when retracting to clean leaked " "material on nozzle. This can minimize blob when print new part after travel" msgstr "" -"This moves the nozzle along the last extrusion path when retracting to clean " -"any leaked material on the nozzle. This can minimize blobs when printing a " -"new part after traveling." msgid "Wipe Distance" msgstr "Törlési távolság" @@ -6361,13 +6311,12 @@ msgstr "Öblítési mennyiség" msgid "The volume of material to prime extruder on tower." msgstr "" -"This is the volume of material to prime the extruder with on the tower." msgid "Width" msgstr "Szélesség" msgid "Width of prime tower" -msgstr "This is the width of prime towers." +msgstr "" msgid "Flush into objects' infill" msgstr "Öblítés a tárgyak kitöltésébe" @@ -6400,9 +6349,6 @@ msgid "" "filament and decrease the print time. Colours of the objects will be mixed " "as a result" msgstr "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colors of the objects will be mixed as " -"a result." msgid "X-Y hole compensation" msgstr "X-Y furatkompenzáció" @@ -6440,9 +6386,6 @@ msgid "" "concentric pattern will be used for the area to speed printing up. " "Otherwise, rectilinear pattern is used defaultly." msgstr "" -"This option will auto-detect narrow internal solid infill areas. If enabled, " -"the concentric pattern will be used for the area to speed up printing. " -"Otherwise, the rectilinear pattern will be used by default." msgid "Export 3MF" msgstr "3MF exportálása" @@ -6493,16 +6436,16 @@ msgid "Scale the model by a float factor" msgstr "A modell méretezése egy lebegő tényezővel" msgid "Load General Settings" -msgstr "Load General Settings" +msgstr "" msgid "Load process/machine settings from the specified file" -msgstr "Load process/machine settings from the specified file" +msgstr "" msgid "Load Filament Settings" -msgstr "Load Filament Settings" +msgstr "" msgid "Load filament settings from the specified file list" -msgstr "Load filament settings from the specified file list" +msgstr "" msgid "Output directory" msgstr "Kimeneti mappa" @@ -6553,16 +6496,10 @@ msgid "Optimizing toolpath" msgstr "Szerszámút optimalizálása" msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "Empty layers around bottom are replaced by nearest normal layers." - -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." msgstr "" -"The model has overlapping or self-intersecting facets. Repair was attempted, " -"however we recommend checking the results or repairing the input file and " -"retrying." + +msgid "The model has too many empty layers." +msgstr "" msgid "Slicing mesh" msgstr "Háló szeletelése" @@ -6576,34 +6513,37 @@ msgstr "Hiba a következő sorban %1%:\n" #, c-format, boost-format msgid "Support: generate toolpath at layer %d" -msgstr "Support: generate toolpath at layer %d" +msgstr "" msgid "Support: detect overhangs" -msgstr "Support: detect overhangs" +msgstr "" msgid "Support: generate contact points" -msgstr "Support: generate contact points" +msgstr "" msgid "Support: propagate branches" -msgstr "Support: propagate branches" +msgstr "" msgid "Support: draw polygons" -msgstr "Support: draw polygons" +msgstr "" msgid "Support: generate toolpath" -msgstr "Support: generate toolpath" +msgstr "" #, c-format, boost-format msgid "Support: generate polygons at layer %d" -msgstr "Support: generate polygons at layer %d" +msgstr "" #, c-format, boost-format msgid "Support: fix holes at layer %d" -msgstr "Support: fix holes at layer %d" +msgstr "" #, c-format, boost-format msgid "Support: propagate branches at layer %d" -msgstr "Support: propagate branches at layer %d" +msgstr "" + +#~ msgid "Save configuration as:" +#~ msgstr "Konfiguráció mentése mint:" #~ msgid "Line type" #~ msgstr "Vonal típusa" @@ -6611,9 +6551,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Designer" #~ msgstr "Tervező" -#~ msgid "Report" -#~ msgstr "Report" - #~ msgid "0%" #~ msgstr "0%" @@ -6623,9 +6560,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Device:" #~ msgstr "Eszköz:" -#~ msgid "Translation" -#~ msgstr "Translation" - #~ msgid "" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." @@ -6633,21 +6567,6 @@ msgstr "Support: propagate branches at layer %d" #~ "Úgy tűnik %s objektumnak támaszra lenne szüksége a nyomtatáshoz. Kérjük, " #~ "engedélyezd a támasz generálását." -#~ msgid "Alt + Mouse wheel" -#~ msgstr "Alt + Mouse wheel" - -#~ msgid "" -#~ "An object is layed over the boundary of plate.\n" -#~ "Please solve the problem by moving it totally inside or outside plate." -#~ msgstr "" -#~ "An object is laid over the edge of the plate or exceeds the height " -#~ "limit.\n" -#~ "Please solve the problem by moving it totally on or off the plate, and " -#~ "confirming that the height is within the build volume." - -#~ msgid "Auto arrange" -#~ msgstr "Auto Arrange" - #~ msgid "" #~ "Auto orientates selected objects or all objects.If there are selected " #~ "objects, it just orientates the selected ones.Otherwise, it will " @@ -6658,186 +6577,55 @@ msgstr "Support: propagate branches at layer %d" #~ "ellenkező esetben az aktuális projektben lévő összes objektumot " #~ "orientálja." -#~ msgid "Clear all" -#~ msgstr "Clear all" - -#~ msgid "Creating" -#~ msgstr "Creating" - -#~ msgid "Ctrl + Any arrow" -#~ msgstr "Ctrl + Any arrow" - -#~ msgid "Ctrl + Left mouse button" -#~ msgstr "Ctrl + Left mouse button" - -#~ msgid "Debug" -#~ msgstr "Debug" - -#~ msgid "Display printable box" -#~ msgstr "Display printable box" - -#~ msgid "Display shadow of objects" -#~ msgstr "Display shadow of objects" - -#~ msgid "Display triangles of models" -#~ msgstr "Display triangles of models" - -#~ msgid "" -#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" -#~ "Contains the following information:\n" -#~ "1. The Process presets\n" -#~ "2. The Filament presets\n" -#~ "3. The Printer presets\n" -#~ msgstr "" -#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" -#~ "Contains the following information:\n" -#~ "1. Process presets\n" -#~ "2. Filament presets\n" -#~ "3. Printer presets\n" - -#~ msgid "" -#~ "Don't retract when the travel is in infill area absolutely. That means " -#~ "the oozing can't been seen" -#~ msgstr "" -#~ "This disables retraction when travel is entirely within an infill area " -#~ "and oozing can’t be seen." - -#~ msgid "Enter a search term" -#~ msgstr "Enter a search term" - -#~ msgid "Filaments Selection" -#~ msgstr "Filaments selection" - -#~ msgid "Finished" -#~ msgstr "Finished" - -#~ msgid "Fix model locally" -#~ msgstr "Fix model locally" - -#~ msgid "Fix model through cloud" -#~ msgstr "Fix model through cloud" - -#~ msgid "Fragment Filter" -#~ msgstr "Fragment Filter" - -#~ msgid "Fragment area" -#~ msgstr "Fragment area" - -#~ msgid "Fragment filter" -#~ msgstr "Fragment filter" - -#~ msgid "" -#~ "Heat the nozzle to target \n" -#~ "temperature" -#~ msgstr "" -#~ "Heat the nozzle to the target \n" -#~ "temperature" - -#~ msgid "In the calibration of extrusion flow" -#~ msgstr "In the calibration of extrusion flow" - -#~ msgid "In the calibration of laser scanner" -#~ msgstr "In the calibration of laser scanner" - -#~ msgid "Module" -#~ msgstr "Module" - -#~ msgid "Monitoring" -#~ msgstr "Monitoring" - -#~ msgid "Output file" -#~ msgstr "Output file" - -#~ msgid "Pause(heated bed temperature error)" -#~ msgstr "Pause(heated bed temperature error)" - -#~ msgid "Pause(hotend temperature error)" -#~ msgstr "Pause(hotend temperature error)" - -#~ msgid "Pause(toolhead shell off)" -#~ msgstr "Pause(toolhead shell off)" - -#~ msgid "Please fill report first." -#~ msgstr "Please fill report first." - -#~ msgid "Please upgrade your printer first" -#~ msgstr "Please upgrade your printer first" - -#~ msgid "Position:" -#~ msgstr "Position:" - -#~ msgid "" -#~ "Preview only mode:\n" -#~ "The loaded file contains gcode only." -#~ msgstr "" -#~ "Preview only mode:\n" -#~ "The loaded file contains G-code only." - -#~ msgid "Preview only mode for gcode file." -#~ msgstr "Preview only mode for G-code file." - -#~ msgid "Printer Selection" -#~ msgstr "Printer Selection" - -#~ msgid "" -#~ "Push new filament \n" -#~ "into extruder" -#~ msgstr "" -#~ "Push new filament \n" -#~ "into extruder" - -#~ msgid "Sending" -#~ msgstr "Sending" - -#~ msgid "Shift + Any arrow" -#~ msgstr "Shift + Any arrow" - -#~ msgid "Shift + Mouse wheel" -#~ msgstr "Shift + Mouse wheel" - -#~ msgid "Show Model Mesh(TODO)" -#~ msgstr "Show Model Mesh(TODO)" - -#~ msgid "Show Model Shadow(TODO)" -#~ msgstr "Show Model Shadow(TODO)" - -#~ msgid "Show Printable Box(TODO)" -#~ msgstr "Show Printable Box(TODO)" - -#~ msgid "Spiral mode" -#~ msgstr "Spiral/Vase mode" - -#~ msgid "Successfully sent.Will automatically jump to the device page in %s s" -#~ msgstr "" -#~ "Successfully sent. Will automatically jump to the device page in %s s" - -#~ msgid "Swith cloud environment, Please login again!" -#~ msgstr "Switch cloud environment, Please login again!" - -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "The configuration is not compatible and cannot be loaded!" - -#~ msgid "" -#~ "The firmware versions of printer and AMS are too low.Please update to the " -#~ "latest version before sending the print job" -#~ msgstr "" -#~ "The firmware versions of the printer and AMS are too low. Please update " -#~ "them to the latest version before sending any print jobs." - #~ msgid "Timelapse without toolhead" #~ msgstr "Nyomtatófej nélküli timelapse" -#~ msgid "Unable to create zip file" -#~ msgstr "Unable to create zip file" +# d +#~ msgid "Fragment area" +#~ msgstr "Hézag küszöbértéke" -#~ msgid "Uploading" -#~ msgstr "Uploading" +#~ msgid "Clear all" +#~ msgstr "Összes törlése" -#~ msgid "User pause" -#~ msgstr "User pause" +#~ msgid "Downloading Bambu Network plug-in" +#~ msgstr "Bambu hálózati plug-in letöltése" -#~ msgid "Waiting" -#~ msgstr "Waiting" +#~ msgid "Connect %s[SN:%s] failed!" +#~ msgstr "%s[SN:%s]-hez való csatlakozás sikertelen!" -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "The 3mf is not compatible, loading geometry data only!" +#~ msgid "Auto arrange" +#~ msgstr "Automatikus elrendezés" + +#~ msgid "Printer firmware does not support material = >ams slot mapping." +#~ msgstr "" +#~ "A nyomtató firmware nem támogatja a támaszanyagot => AMS helyek kiosztása." + +#~ msgid "Filaments Selection" +#~ msgstr "Filament választás" + +#~ msgid "Printer Selection" +#~ msgstr "Nyomtató kiválasztása" + +#~ msgid "Spiral mode" +#~ msgstr "Spirál mód" + +#~ msgid "Fragment filter" +#~ msgstr "Hézagkitöltés" + +#~ msgid "Fragment Filter" +#~ msgstr "Hézagkitöltés" + +#~ msgid "Position:" +#~ msgstr "Pozíció:" + +#~ msgid "Show Model Mesh(TODO)" +#~ msgstr "Modell háló megjelenítése" + +#~ msgid "Show Model Shadow(TODO)" +#~ msgstr "Modell árnyék megjelenítése" + +#~ msgid "Show Printable Box(TODO)" +#~ msgstr "Nyomtatható terület megjelenítése" + +#~ msgid "Monitoring" +#~ msgstr "Monitorozás" diff --git a/bbl/i18n/list.txt b/bbl/i18n/list.txt index 83324e6307..d12dd62447 100644 --- a/bbl/i18n/list.txt +++ b/bbl/i18n/list.txt @@ -58,6 +58,9 @@ src/slic3r/GUI/ConnectPrinter.cpp src/slic3r/GUI/HMSPanel.cpp src/slic3r/GUI/MainFrame.cpp src/slic3r/GUI/MediaPlayCtrl.cpp +src/slic3r/GUI/MediaFilePanel.cpp +src/slic3r/GUI/ImageGrid.cpp +src/slic3r/GUI/Printer/PrinterFileSystem.cpp src/slic3r/GUI/Mouse3DController.cpp src/slic3r/GUI/StatusPanel.cpp src/slic3r/GUI/Monitor.cpp diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index c6c46fb8d2..bf3e51da47 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +23,7 @@ msgid "Left mouse button" msgstr "Linker muisknop" msgid "Enforce supports" -msgstr "Support afdwingen" +msgstr "Ondersteuning (support) afdwingen" msgid "Right mouse button" msgstr "Rechter muisknop" @@ -65,7 +65,7 @@ msgid "Smart fill angle" msgstr "Slim vullen hoek" msgid "Auto support threshold angle: " -msgstr "Maximale hoek automatische support: " +msgstr "Hoek voor automatische support: " msgid "Circle" msgstr "Cirkel" @@ -74,7 +74,7 @@ msgid "Sphere" msgstr "Gebied" msgid "Fill" -msgstr "Vullen" +msgstr "Fill" msgid "Gap Fill" msgstr "" @@ -146,7 +146,7 @@ msgid "Triangle" msgstr "Triangle" msgid "Height Range" -msgstr "Hoogtebereik" +msgstr "Height Range" msgid "Remove painted color" msgstr "Getekende kleur verwijderen" @@ -267,7 +267,7 @@ msgid "Mesh name" msgstr "Constructie name" msgid "Detail level" -msgstr "Detailniveau" +msgstr "Detail level" msgid "Decimate ratio" msgstr "Decimeren verhouding" @@ -330,11 +330,14 @@ msgid "Operation already cancelling. Please wait few seconds." msgstr "De toepassing wordt al geannuleerd. Wacht even alstublieft." msgid "Face recognition" -msgstr "Gezichtsherkenning" +msgstr "Face recognition" msgid "Perform Recognition" msgstr "Perform Recognition" +msgid "Clipping of view" +msgstr "" + msgid "Reset direction" msgstr "" @@ -431,8 +434,8 @@ msgid "" "BambuStudio will terminate because of running out of memory.It may be a bug. " "It will be appreciated if you report the issue to our team." msgstr "" -"Bambu Studio wordt beëindigd omdat het geheugen bijna vol is. Het kan een " -"bug zijn. Meldt dit probleem alstublieft bij support." +"BambuStudio wordt beëindigd omdat het geheugen bijna vol is. Het kan een bug " +"zijn. Meldt dit probleem alstublieft bij support." msgid "Fatal error" msgstr "Fatale fout" @@ -447,7 +450,7 @@ msgstr "Kritische fout" #, boost-format msgid "BambuStudio got an unhandled exception: %1%" -msgstr "Er is een onbekende uitzondering opgetreden in Bambu Studio : %1%" +msgstr "Er is een onbekende uitzondering opgetreden in BambuStudio : %1%" msgid "Downloading Bambu Network Plug-in" msgstr "" @@ -566,11 +569,11 @@ msgid "Select a G-code file:" msgstr "Selecteer een G-code bestand:" msgid "Bambu Studio GUI initialization failed" -msgstr "Initialisatie van Bambu Studio GUI is mislukt" +msgstr "Bambu Studio GUI initialization failed" #, boost-format msgid "Fatal error, exception catched: %1%" -msgstr "Fatale fout, uitzondering: %1%" +msgstr "Fatal error, exception: %1%" msgid "Quality" msgstr "Kwaliteit" @@ -787,7 +790,8 @@ msgstr "Automatisch oriënteren" msgid "Auto orient the object to improve print quality." msgstr "" -"Automatisch oriënteren van het object om de printkwaliteit te verbeteren." +"Stel de orientatie van het object automatisch in om de print kwaliteit de " +"verbeteren." msgid "Split the selected object into mutiple objects" msgstr "Splits het geselecteerde object op in meerdere objecten" @@ -823,7 +827,7 @@ msgid "Remove the selected plate" msgstr "Verwijder het huidige printbed" msgid "Clone" -msgstr "Dupliceren" +msgstr "Kopieren" msgid "Reduce Triangles" msgstr "Aantal driehoeken verkleinen (vereenvoudigen)" @@ -904,7 +908,9 @@ msgstr "" "Klik op het pictogram om de afdruk eigenschap van het object in te schakelen" msgid "Click the icon to edit support painting of the object" -msgstr "Klik op het pictogram om de support van het object te bewerken" +msgstr "" +"Klik op het pictogram om de ondersteuning (support) van het object te " +"bewerken" msgid "Click the icon to edit color painting of the object" msgstr "Klik op het pictogram om de kleur van het object te bewerken" @@ -1086,7 +1092,7 @@ msgid "Purge old filament" msgstr "Purge old filament" msgid "?" -msgstr " ?" +msgstr "?" msgid "Empty" msgstr "Leeg" @@ -1095,7 +1101,7 @@ msgid "Click the pencil icon to edit the filament." msgstr "Klik op het potlood icoon om het filament aan te passen." msgid "Load Filament" -msgstr "Laden" +msgstr "Filament laden" msgid "Unload Filament" msgstr "Unload" @@ -1111,8 +1117,8 @@ msgstr "AMS kalibreren..." msgid "A problem occured during calibration. Click to view the solution." msgstr "" -"Er is een probleem opgetreden tijdens de kalibratie. Klik om de oplossing te " -"bekijken." +"Er is een probleem opgetreden tijdens het kalibreren. Klik hier om tips te " +"krijgen." msgid "Calibrate again" msgstr "Opnieuw kalibreren" @@ -1135,7 +1141,7 @@ msgid "" "We can not do auto-arrange on these objects." msgstr "" "De geselecteerde objecten bevinden zich op een vergrendeld printbed.\n" -"Deze objecten kunnen niet automatisch worden gerangschikt." +"Deze obhjecten kunnen niet automatisch worden gerangschikt." msgid "No arrangable objects are selected." msgstr "Er zijn geen objecten geselecteerd die geschikt kunnen worden." @@ -1148,7 +1154,7 @@ msgstr "" "Het is niet mogelijk om automatisch te rangschikken op dit printbed." msgid "Arranging..." -msgstr "Rangschikken..." +msgstr "Rangschikken" msgid "" "Arrange failed. Found some exceptions when processing object geometries." @@ -1186,7 +1192,7 @@ msgid "" "We can not do auto-orient on these objects." msgstr "" "De geselecteerde objecten bevinden zich op een vergrendeld printbed.\n" -"Deze objecten kunnen niet automatisch worden georiënteerd." +"Deze obhjecten kunnen niet automatisch worden gerangschikt." msgid "" "This plate is locked,\n" @@ -1217,22 +1223,22 @@ msgid "The region parameter is incorrrect" msgstr "The region parameter is incorrrect." msgid "Failure of printer login" -msgstr "Fout bij inloggen op printer" +msgstr "Printer login failure" msgid "Failed to get ticket" -msgstr "Het is niet gelukt om een ticket te verkrijgen" +msgstr "Failed to get ticket" msgid "User authorization timeout" msgstr "User authorization timeout" msgid "Failure of bind" -msgstr "Koppeling mislukt" +msgstr "Binding failure" msgid "Unknown Failure" msgstr "Unknown Failure" msgid "Abnormal print file data. Please slice again" -msgstr "Abnormale printbestand. Slice opnieuw" +msgstr "Abnormal print file data. Please slice again" msgid "Task canceled" msgstr "Task canceled" @@ -1241,7 +1247,7 @@ msgid "Upload task timed out. Please check the network problem and try again" msgstr "Upload task timed out. Please check the network and try again" msgid "Cloud service connection failed. Please try again." -msgstr "Verbinding met cloudservice is mislukt. Probeer het nog eens." +msgstr "Cloud service connection failed. Please try again." msgid "Print file not found, please slice again" msgstr "Print file not found, please slice again" @@ -1254,7 +1260,7 @@ msgstr "" "model and slice again" msgid "Failed uploading print file" -msgstr "Uploaden van het printbestand is mislukt" +msgstr "Failed uploading print file" msgid "Wrong Access code" msgstr "Wrong Access code" @@ -1271,6 +1277,9 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" msgstr "Sending print configuration" @@ -1303,26 +1312,26 @@ msgid "Portions copyright" msgstr "License Info" msgid "Copyright" -msgstr "Auteursrecht" +msgstr "Copyright" msgid "License" msgstr "Licentie" msgid "Bambu Studio is licensed under " -msgstr "Bambu Studio is gelicentieerd onder " +msgstr "Bambu Studio is licensed under " msgid "GNU Affero General Public License, version 3" -msgstr "GNU Affero Algemene Openbare Licentie, versie 3" +msgstr "GNU Affero General Public License, version 3" msgid "" "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " "by Alessandro Ranellucci and the RepRap community" msgstr "" -"Bambu Studio is gebaseerd op PrusaSlicer van Prusa Research, welke is " -"afgeleid van Slic3r van Alessandro Ranellucci en de RepRap gemeenschap" +"Bambu Studio is based on PrusaSlicer by Prusa Research, which is based on " +"Slic3r by Alessandro Ranellucci and the RepRap community" msgid "Libraries" -msgstr "Bibliotheken" +msgstr "Libraries" msgid "" "This software uses open source components whose copyright and other " @@ -1333,7 +1342,7 @@ msgstr "" #, c-format, boost-format msgid "About %s" -msgstr "Over %s" +msgstr "About %s" msgid "" "Bambu Studio is based on PrusaSlicer by PrusaResearch and SuperSlicer by " @@ -1361,7 +1370,7 @@ msgid "AMSMaterialsSetting" msgstr "" msgid "Colour" -msgstr "Kleur" +msgstr "Color" msgid "" "Nozzle\n" @@ -1397,7 +1406,7 @@ msgid "" msgstr "" msgid "Insertion update" -msgstr "Update gegevens bij invoeren" +msgstr "Insertion update" msgid "" "The AMS will automatically read the filament information when inserting a " @@ -1476,7 +1485,7 @@ msgid "Underflow" msgstr "Underflow" msgid "Floating reserved operand" -msgstr "Zwevende gereserveerde operand" +msgstr "Floating reserved operand" msgid "Stack overflow" msgstr "Stack overflow" @@ -1742,16 +1751,16 @@ msgstr "" "Nee - Reset vulling automatisch naar de standaard niet-100% waarde\n" msgid "Auto bed leveling" -msgstr "Automatisch bed levellen" +msgstr "Auto bed leveling" msgid "Heatbed preheating" -msgstr "Printbed opwarmen" +msgstr "Heatbed preheating" msgid "Sweeping XY mech mode" msgstr "Sweeping XY mech mode" msgid "Changing filament" -msgstr "Filament wordt gewisseld" +msgstr "Changing filament" msgid "M400 pause" msgstr "M400 pause" @@ -1760,31 +1769,31 @@ msgid "Paused due to filament runout" msgstr "Paused due to filament runout" msgid "Heating hotend" -msgstr "Hotend opwarmen" +msgstr "Heating hotend" msgid "Calibrating extrusion" -msgstr "Extrusie wordt gecalibreerd" +msgstr "Calibrating extrusion" msgid "Scanning bed surface" msgstr "Scanning bed surface" msgid "Inspecting first layer" -msgstr "De eerste laag wordt geinspecteerd" +msgstr "Inspecting first layer" msgid "Identifying build plate type" -msgstr "Vastellen printbedtype" +msgstr "Identifying build plate type" msgid "Calibrating Micro Lidar" -msgstr "Micro Lidar wordt gecalibreerd" +msgstr "Calibrating Micro Lidar" msgid "Homing toolhead" -msgstr "Printkop naar beginpositie" +msgstr "Homing toolhead" msgid "Cleaning nozzle tip" -msgstr "Nozzle wordt schoongemaakt" +msgstr "Cleaning nozzle tip" msgid "Checking extruder temperature" -msgstr "Extruder temperatuur wordt gecontroleerd" +msgstr "Checking extruder temperature" msgid "Printing was paused by the user" msgstr "Printing was paused by the user" @@ -1793,10 +1802,10 @@ msgid "Pause of front cover falling" msgstr "Pause of front cover falling" msgid "Calibrating the micro lida" -msgstr "Micro Lidar wordt gecalibreerd" +msgstr "Calibrating the micro lidar" msgid "Calibrating extrusion flow" -msgstr "De extrusieflow kalibreren" +msgstr "Calibrating extrusion flow" msgid "Paused due to nozzle temperature malfunction" msgstr "Paused due to nozzle temperature malfunction" @@ -2001,7 +2010,7 @@ msgid "Flushed filament" msgstr "Flushed filament" msgid "Filament change times" -msgstr "Filamentwisseltijden" +msgstr "Filament change times" msgid "Color change" msgstr "Kleur veranderen" @@ -2073,7 +2082,7 @@ msgid "Spacing" msgstr "Uitlijning" msgid "Auto rotate for arrangement" -msgstr "Automatisch roteren voor rankschikking" +msgstr "Automatisch roteren voor indeling" msgid "Allow multiple materials on same plate" msgstr "Sta verschillende materiaalsoorten op hetzelfde printbed toe" @@ -2178,7 +2187,7 @@ msgid "Monitoring Recording" msgstr "Monitoring Recording" msgid "ConnectPrinter(LAN)" -msgstr "Printer aansluiten (LAN)" +msgstr "Connect Printer (LAN)" msgid "Please input the printer access code:" msgstr "Please input the printer access code:" @@ -2193,6 +2202,15 @@ msgstr "" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Enter a search term" + +msgid "Online" +msgstr "Online" + +msgid "Offline" +msgstr "Offline" + msgid "Application is closing" msgstr "De toepassing wordt afgesloten" @@ -2209,11 +2227,14 @@ msgid "Preview" msgstr "Preview" msgid "Device" -msgstr "Apparaat" +msgstr "Device" msgid "Project" msgstr "Project" +msgid "Debug" +msgstr "Debuggen" + msgid "Slice" msgstr "Slice" @@ -2251,6 +2272,9 @@ msgstr "Zoeken naar updates" msgid "&About %s" msgstr "&Over %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2325,9 +2349,24 @@ msgstr "Importeer 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Laad een model" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "Exporteer alle objecten als STL" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Exporteer het huidig \"sliced\" bestand" @@ -2337,6 +2376,12 @@ msgstr "Exporteer G-code" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exporteren" @@ -2377,10 +2422,10 @@ msgid "Deletes all objects" msgstr "Verwijder alle objecten" msgid "Clone selected" -msgstr "Duplicaat geselecteerd" +msgstr "Kopie geselecteerd" msgid "Clone copies of selections" -msgstr "Duplicaten van selecties maken" +msgstr "Kopieën van selecties maken" msgid "Select all" msgstr "Alles selecteren" @@ -2422,10 +2467,10 @@ msgid "Reload the plater from disk" msgstr "Reload the plater from disk" msgid "Export &Toolpaths as OBJ" -msgstr "Exporteer &Toolpaths als OBJ" +msgstr "Export &Toolpaths as OBJ" msgid "Export toolpaths as OBJ" -msgstr "Toolpaths exporteren als OBJ" +msgstr "Export toolpaths as OBJ" msgid "Open &PrusaSlicer" msgstr "Open &PrusaSlicer" @@ -2434,23 +2479,54 @@ msgid "Open PrusaSlicer" msgstr "Open PrusaSlicer" msgid "&Quit" -msgstr "&Afsluiten" +msgstr "&Quit" #, c-format, boost-format msgid "Quit %s" msgstr "Quit %s" msgid "&File" -msgstr "&Bestand" +msgstr "&File" msgid "&View" -msgstr "&Bekijken" +msgstr "&View" msgid "&Help" msgstr "&Help" -msgid "Save configuration as:" -msgstr "Bewaar configuratie als:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Bestand ontbreekt" @@ -2495,6 +2571,58 @@ msgstr "Afspelen..." msgid "Load failed [%d]!" msgstr "Laden mislukt [%d]!" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Download" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Waiting" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Finished" + msgid "Speed:" msgstr "Snelheid" @@ -2519,9 +2647,6 @@ msgstr "Wissel Y/Z assen om" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Print voortgang" @@ -2538,7 +2663,7 @@ msgid "Clean" msgstr "" msgid "Control" -msgstr "Besturing" +msgstr "Control" msgid "Print Options" msgstr "" @@ -2600,9 +2725,6 @@ msgstr "Verbinding maken met de server is mislukt" msgid "Failed to connect to the printer" msgstr "Verbinding maken met de printer is mislukt" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "Offline" @@ -2636,9 +2758,6 @@ msgstr "%s info" msgid "%s information" msgstr "%s informatie" -msgid "Download" -msgstr "Downloaden" - msgid "Skip" msgstr "Overslaan" @@ -2740,7 +2859,7 @@ msgid "Support painting" msgstr "Ondersteuning (support) intekenen" msgid "Color painting" -msgstr "Kleur aanbrengen" +msgstr "Kleur schilderen" msgid "Layers" msgstr "Lagen" @@ -2876,7 +2995,7 @@ msgstr "Herstellen" msgid "Loading file: %s" msgstr "Bestand laden: %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2908,8 +3027,9 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" +msgid "the 3mf is not compatible, load geometry data only!" msgstr "" +"Het 3mf bestand is niet compatibel, enkel de geometrische data wordt geladen!" msgid "Incompatible 3mf" msgstr "Onbruikbaar 3mf bestand" @@ -3030,7 +3150,7 @@ msgid "Error occurs while loading G-code file" msgstr "Er is een fout opgetreden tijdens het laden van het G-codebestand." msgid "Drop project file" -msgstr "Projectbestand neerzetten" +msgstr "Drop project file" msgid "Please select an action" msgstr "Selecteer een actie" @@ -3051,10 +3171,10 @@ msgid "G-code files can not be loaded with models together!" msgstr "G-Code bestanden en modellen kunnen niet tegelijk geladen worden!" msgid "Can not add models when in preview mode!" -msgstr "Modellen kunnen niet worden toegevoegd in voorbeeldmodus" +msgstr "Unable to add models in preview mode" msgid "Add Models" -msgstr "Modellen toevoegen" +msgstr "Add Models" msgid "All objects will be removed, continue?" msgstr "Alle objecten zullen verwijderd worden, doorgaan?" @@ -3095,7 +3215,8 @@ msgstr "Stuur naar printer" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." +"Handmatig ingetekende ondersteuning (support) en kleuren zijn verwijdererd " +"voor het repareren." msgid "Invalid number" msgstr "Ongeldig nummer" @@ -3147,7 +3268,7 @@ msgid "Changing application language" msgstr "Taal van de applicatie wijzigen" msgid "Changing the region will log out your account.\n" -msgstr "Als u de regio wijzigt, wordt u afgemeld bij uw account.\n" +msgstr "Changing the region will log you out of your account.\n" msgid "Region selection" msgstr "Region selection" @@ -3156,16 +3277,16 @@ msgid "Second" msgstr "Seconde" msgid "General Settings" -msgstr "Algemene instellingen" +msgstr "General Settings" msgid "Asia-Pacific" -msgstr "Azië-Pacific" +msgstr "Asia-Pacific" msgid "China" msgstr "China" msgid "Europe" -msgstr "Europa" +msgstr "Europe" msgid "North America" msgstr "North America" @@ -3189,18 +3310,16 @@ msgid "User sync" msgstr "Gebruikerssynchronisatie" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/" -"proces)" +msgstr "Auto sync user presets (Printer/Filament/Process)" msgid "User Sync" msgstr "User Sync" msgid "Associate files to BambuStudio" -msgstr "Koppel bestanden aan Bambu Studio" +msgstr "Koppel bestanden aan BambuStudio" msgid "Associate .3mf files to BambuStudio" -msgstr "Koppel .3mf-bestanden aan Bambu Studio" +msgstr "Koppel .3mf-bestanden aan BambuStudio" msgid "If enabled, sets BambuStudio as default application to open .3mf files" msgstr "" @@ -3208,7 +3327,7 @@ msgstr "" "om .3mf-bestanden te openen" msgid "Associate .stl files to BambuStudio" -msgstr "Koppel .stl-bestanden aan Bambu Studio" +msgstr "Koppel .stl-bestanden aan BambuStudio" msgid "If enabled, sets BambuStudio as default application to open .stl files" msgstr "" @@ -3216,7 +3335,7 @@ msgstr "" "om .stl-bestanden te openen" msgid "Associate .step/.stp files to BambuStudio" -msgstr "Koppel .step/.stp bestanden aan Bambu Studio" +msgstr "Associate .step/.stp files to Bambu Studio" msgid "If enabled, sets BambuStudio as default application to open .step files" msgstr "" @@ -3230,7 +3349,7 @@ msgid "Auto-Backup" msgstr "Automatisch backup maken" msgid "Backup interval" -msgstr "Backupinterval" +msgstr "Backup interval" msgid "Home page and daily tips" msgstr "Startpagina en dagelijkse tips" @@ -3269,7 +3388,7 @@ msgid "Develop mode" msgstr "Ontwikkelmodus" msgid "Dump video" -msgstr "Video verwijderen" +msgstr "Dump video" msgid "Log Level" msgstr "Log level" @@ -3293,10 +3412,10 @@ msgid "trace" msgstr "Traceren" msgid "Host Setting" -msgstr "Host-instelling" +msgstr "Host Setting" msgid "DEV host: api-dev.bambu-lab.com/v1" -msgstr "DEV-host: api-dev.bambu-lab.com/v1" +msgstr "DEV host: api-dev.bambu-lab.com/v1" msgid "QA host: api-qa.bambu-lab.com/v1" msgstr "QA host: api-qa.bambu-lab.com/v1" @@ -3329,7 +3448,7 @@ msgid "Incompatible presets" msgstr "Onbruikbare voorinstellingen" msgid "AMS filaments" -msgstr "AMS-filament" +msgstr "AMS-filamenten" msgid "Click to pick filament color" msgstr "Klik om de filament kleur te kiezen" @@ -3456,12 +3575,6 @@ msgstr "" msgid "Simply switch to \"%1%\"" msgstr "Schakel eenvoudig over naar \"%1%\"" -msgid "Online" -msgstr "Online" - -msgid "Offline" -msgstr "Offline" - msgid "My Device" msgstr "Mijn apparaat" @@ -3469,13 +3582,13 @@ msgid "Other Device" msgstr "Ander apparaat" msgid "Input access code" -msgstr "Toegangscode invoeren" +msgstr "Input access code" msgid "Log out successful." msgstr "Uitloggen gelukt." msgid "Busy" -msgstr "Bezet" +msgstr "Busy" msgid "Bambu Cool Plate" msgstr "Bambu Cool (koude) Plate" @@ -3508,7 +3621,7 @@ msgid "No login account, only printers in LAN mode are displayed" msgstr "No login account, only printers in LAN mode are displayed" msgid "Connecting to server" -msgstr "Verbinding maken met server" +msgstr "Connecting to server" msgid "Synchronizing device information" msgstr "Synchronizing device information" @@ -3517,7 +3630,7 @@ msgid "Synchronizing device information time out" msgstr "Synchronizing device information time out" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "Kan de printtaak niet verzenden wanneer de upgrade wordt uitgevoerd" +msgstr "Cannot send the print task when the upgrade is in progress" msgid "" "The printer is executing instructions. Please restart printing after it ends" @@ -3542,8 +3655,8 @@ msgid "" "Filaments to AMS slots mappings have been established. You can click a " "filament above to change its mapping AMS slot" msgstr "" -"De toewijzingen van filamenten aan AMS-slots zijn vastgesteld. U kunt op een " -"filament hierboven klikken om de toewijzing van het AMS slot te wijzigen" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgid "" "Please click each filament above to specify its mapping AMS slot before " @@ -3671,7 +3784,7 @@ msgid "Prime tower" msgstr "Prime toren" msgid "Flush options" -msgstr "Flush-opties" +msgstr "Flush options" msgid "Special mode" msgstr "Speciale modus" @@ -3680,7 +3793,7 @@ msgid "G-code output" msgstr "" msgid "Frequent" -msgstr "Veelgebruikt" +msgstr "Frequent" #, c-format, boost-format msgid "" @@ -3739,8 +3852,8 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de koelplaat is geïnstalleerd. Een waarde " -"van 0 betekent dat het filament printen op de Cool Plate niet ondersteunt." +"This is the bed temperature when the cool plate is installed. A value of 0 " +"means the filament does not support printing on the Cool Plate." msgid "Engineering plate" msgstr "Engineering plate (technisch printbed)" @@ -3749,9 +3862,8 @@ msgid "" "Bed temperature when engineering plate is installed. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de technische plaat is geïnstalleerd. Een " -"waarde van 0 betekent dat het filament afdrukken op de Engineering Plate " -"niet ondersteunt." +"This is the bed temperature when the engineering plate is installed. A value " +"of 0 means the filament does not support printing on the Engineering Plate." msgid "High Temp Plate" msgstr "High Temp Plate (hoge temperatuur printbed)" @@ -3760,9 +3872,9 @@ msgid "" "Bed temperature when high temperature plate is installed. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is geïnstalleerd. " -"Een waarde van 0 betekent dat het filament printen op de High Temp Plate " -"niet ondersteunt." +"This is the bed temperature when the high temperature plate is installed. A " +"value of 0 means the filament does not support printing on the High Temp " +"Plate." msgid "Textured PEI Plate" msgstr "" @@ -3995,7 +4107,7 @@ msgstr "" "voorinstelling?" msgid "Extruders count" -msgstr "Extruder aantal" +msgstr "Extruder count" msgid "General" msgstr "Algemeen" @@ -4006,9 +4118,6 @@ msgstr "Mogelijkheden" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -4023,7 +4132,7 @@ msgid "The name \"%1%\" already exists." msgstr "De naam \"%1%\" bestaat reeds." msgid "Basic Info" -msgstr "Basisinfo" +msgstr "Basic Info" msgid "Pictures" msgstr "Afbeeldingen" @@ -4045,7 +4154,7 @@ msgstr "Model naam" #, c-format, boost-format msgid "%s Update" -msgstr "%s Bijwerken" +msgstr "%s Update" msgid "A new version is available" msgstr "Er is een nieuwe versie beschikbaar" @@ -4094,7 +4203,7 @@ msgid "The configuration is up to date." msgstr "De configuratie is up to date." msgid "Auto-Calc" -msgstr "Automatisch berekenen" +msgstr "Auto-Calc" msgid "Flushing volumes for filament change" msgstr "Volumes reinigen voor filament wijziging" @@ -4103,7 +4212,7 @@ msgid "Flushing volume (mm³) for each filament pair." msgstr "Spoelvolume (mm³) voor elk filamentpaar." msgid "Flush multiplier" -msgstr "Flush-vermenigvuldiger" +msgstr "Flush multiplier" msgid "unloaded" msgstr "uitgeladen" @@ -4158,9 +4267,9 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"Automatisch geselecteerde en georiënteerde objecten, of alle objecten.\n" -"Indien er objecten geselecteerd en georiënteerd zijn worden alleen deze " -"georiënteerd. Anders worden alle objecten op de huidige volume georiënteerd." +"Automatisch oriënteren. Als er geselecteerde objecten zijn worden alleen " +"deze georiënteert. Anders worden alle objecten op de huidige schijf " +"georiënteert." msgid "Collapse/Expand the sidebar" msgstr "De menubalk in-/uitschuiven" @@ -4334,10 +4443,10 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Verticale schuifregelaar - Actieve thumb omlaag bewegen" msgid "Horizontal slider - Move active thumb Left" -msgstr "Horizontale schuifbalk - Beweeg actieve duim naar links" +msgstr "Horizontal slider - Move active thumb Left" msgid "Horizontal slider - Move active thumb Right" -msgstr "Horizontale schuifbalk - Beweeg actieve duim naar rechts" +msgstr "Horizontal slider - Move active thumb Right" msgid "On/Off one layer mode of the vertical slider" msgstr "On/Off one layer mode of the vertical slider" @@ -4614,16 +4723,16 @@ msgid "" "%1% is too close to exclusion area, there will be collisions when printing." msgstr "" "\n" -"%1% bevindt zich te dicht bij een uitgesloten gebied, er kunnen botsingen " +"%1% bevindt zich te dicht bij een uitgesloten gebied, er zullen botsingen " "optreden tijdens het printen." #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% staat te dicht bij anderen en er kunnen botsingen ontstaan." +msgstr "%1% is too close to others, and collisions may be caused." #, boost-format msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% is te hoog en er kunnen botsingen ontstaan." +msgstr "%1% is too tall, and collisions will be caused." msgid " is too close to others, there will be collisions when printing.\n" msgstr "" @@ -4805,8 +4914,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 " -"betekent dat het filament het afdrukken op de Cool Plate niet ondersteunt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Cool Plate." msgid "°C" msgstr "°C" @@ -4818,16 +4927,15 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " -"0 betekent dat het filament afdrukken op de Engineering Plate niet " -"ondersteunt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Engineering Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " -"0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the High Temp Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -4844,22 +4952,22 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament printen op de Cool Plate niet ondersteunt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Cool Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament afdrukken op de Engineering Plate niet ondersteunt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Engineering Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament printen op de High Temp Plate niet ondersteunt." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the High Temp Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -4942,7 +5050,7 @@ msgstr "" "onderdeel deze waarde overschrijdt. Uitgedrukt als percentage " msgid "Bridge flow" -msgstr "Brugflow" +msgstr "Bridge flow" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " @@ -5000,8 +5108,9 @@ msgid "" "A gap between innermost brim line and object can make brim be removed more " "easily" msgstr "" -"Dit creëert ruimte tussen de binnenste brimlijn en het object en zorgt " -"ervoor dat het object eenvoudiger van het printbed kan worden verwijderd." +"Dit zorgt ervoor dat er een ruimte wordt vrijgelaten tussen de binnenste " +"randlijn en het object en zorgt ervoor dat het object eenvoudiger van het " +"printbed kan worden verwijderd" msgid "Compatible machine" msgstr "Geschikte machine" @@ -5084,15 +5193,15 @@ msgid "layers" msgstr "Lagen" msgid "Don't support bridges" -msgstr "Geen support bij bruggen toepassen" +msgstr "Geen brug ondersteuning toepassen" msgid "" "Don't support the whole bridge area which make support very large. Bridge " "usually can be printing directly without support if not very long" msgstr "" -"Dit schakelt de ondersteuning (support) voor bruggebieden uit, waardoor de " -"ondersteuning (support) erg groot kan worden. Bruggen kunnen meestal direct " -"zonder ondersteuning (support) worden afgedrukt als ze niet erg lang zijn." +"This disables supporting bridges, which decreasing the mount of support " +"required. Bridges can usually be printed directly without support for a " +"reasonable distance." msgid "Thick bridges" msgstr "" @@ -5219,7 +5328,7 @@ msgid "Extruder offset" msgstr "Extruder offset" msgid "Flow ratio" -msgstr "Flow verhouding" +msgstr "Flow ratio" msgid "" "The material may have volumetric change after switching between molten state " @@ -5417,8 +5526,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde " -"kan de kwaliteit van de bovenlaag verbeteren." +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgid "" "Acceleration of initial layer. Using a lower value can improve build plate " @@ -5892,7 +6001,8 @@ msgid "Initial layer density" msgstr "Dichtheid van de eerste laag" msgid "Density of the first raft or support layer" -msgstr "Dit is de dichtheid van de eerste raft- of support laag." +msgstr "" +"Dit is de dichtheid van de eerste raft- of ondersteuning (support) laag." msgid "Initial layer expansion" msgstr "Vergroten van de eerste laag" @@ -6009,7 +6119,10 @@ msgid "Aligned" msgstr "Uitgelijnd" msgid "Back" -msgstr "Achterzijde" +msgstr "Terug" + +msgid "Random" +msgstr "" msgid "Skirt distance" msgstr "Rand (skirt) afstand" @@ -6088,10 +6201,10 @@ msgid "Start G-code when start the printing of this filament" msgstr "Start G-code wanneer het printen van dit filament begint" msgid "Enable support" -msgstr "Support inschakelen" +msgstr "Ondertsteuning (support) inschakelen" msgid "Enable support generation." -msgstr "Dit maakt het genereren van support mogelijk." +msgstr "Ondersteuning (support) genereren inschakelen." msgid "" "normal(auto) and tree(auto) is used to generate support automatically. If " @@ -6135,7 +6248,9 @@ msgid "On build plate only" msgstr "Alleen op het printbed" msgid "Don't create support on model surface, only on build plate" -msgstr "Deze instelling genereert alleen support die begint op het printbed." +msgstr "" +"Deze instelling genereert alleen ondersteuning (support) die begint op het " +"printbed" msgid "Top Z distance" msgstr "Top Z afstand" @@ -6149,11 +6264,12 @@ msgid "" "Filament to print support and skirt. 0 means no specific filament for " "support and current filament is used" msgstr "" -"Filament om randen (skirt) en support te printen. Indien u kiest voor 0 dan " -"is er geen specifiek filament en wordt het huidige filament gebruikt" +"Filament om randen (skirt) en ondersteuning (support) te printen. Indien u " +"kiest voor 0 dan is er geen specifiek filament en wordt het huidige filament " +"gebruikt" msgid "Line width of support" -msgstr "Lijn dikte van support" +msgstr "Lijn dikte van ondersteuning (support)" msgid "Interface use loop pattern" msgstr "Luspatroon interface" @@ -6161,15 +6277,15 @@ msgstr "Luspatroon interface" msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Dit bedekt de bovenste laag van de support met lussen. Het is standaard " -"uitgeschakeld." +"This covers the top contact layer of the supports with loops. It is disabled " +"by default." msgid "" "Filament to print support interface. 0 means no specific filament for " "support interface and current filament is used" msgstr "" -"Filament om support te printen. Indien u kiest voor 0 dan is er geen " -"specifiek filament en wordt het huidige filament gebruikt" +"Filament om ondersteuning (support) te printen. Indien u kiest voor 0 dan " +"is er geen specifiek filament en wordt het huidige filament gebruikt" msgid "Top interface layers" msgstr "Bovenste interface lagen" @@ -6203,7 +6319,7 @@ msgid "Base pattern" msgstr "Basis patroon" msgid "Line pattern of support" -msgstr "Dit is het lijnpatroon voor support." +msgstr "Dit is het lijnpatroon voor ondersteuning(support)" msgid "Rectilinear" msgstr "Rechtlijning" @@ -6219,9 +6335,10 @@ msgid "" "interface is Rectilinear, while default pattern for soluble support " "interface is Concentric" msgstr "" -"Dit is het lijnpatroon voor support interfaces. Het standaardpatroon voor " -"niet-oplosbare support interfaces is Rechtlijnig, terwijl het " -"standaardpatroon voor oplosbare support interfaces Concentrisch is." +"Dit is het lijnpatroon voor de ondersteuningsinterface (support). Het " +"standaardpatroon voor niet-oplosbare ondersteuningsinterface is rechtlijnig, " +"terwijl het standaardpatroon voor oplosbare ondersteuningsinterface " +"concentrisch is." msgid "Base pattern spacing" msgstr "Basis patroon afstand" @@ -6239,7 +6356,7 @@ msgid "Snug" msgstr "Nauwsluitend" msgid "Independent support layer height" -msgstr "Onafhankelijke support laaghoogte" +msgstr "Onafhankelijke support (ondersteuning) laaghoogte" msgid "" "Support layer uses layer height independent with object layer. This is to " @@ -6317,10 +6434,9 @@ msgid "" "layer for more than this threshold. Too low bed temperature of other layer " "may cause the model broken free from build plate" msgstr "" -"Een verschil in bedtemperatuur groter dan deze marge en lager dan de " -"bedtemperatuur van de eerste eerste laag, wordt niet geadviseerd. Een te " -"lage bedtemperatuur van de overige lagen kan ertoe leiden dat het model " -"loskomt van het printbed." +"Het is wordt niet geadviseerd dat de printbed temperatuur van een laag lager " +"is dan de eerste laag voor meer dan deze drempel. Een te lage bedtemperatuur " +"van een andere laag kan ertoe leiden dat het model losraakt van de bouwplaat" msgid "Detect thin wall" msgstr "Detecteer dunne wanden" @@ -6426,7 +6542,7 @@ msgid "Width of prime tower" msgstr "Dit is de breedte van de prime toren." msgid "Flush into objects' infill" -msgstr "Flush in de opvulling van objecten" +msgstr "Flush into objects' infill" msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -6439,7 +6555,7 @@ msgstr "" "printed with transparent filament, the mixed color infill will be visible." msgid "Flush into objects' support" -msgstr "Flush in de support van objecten" +msgstr "Flush into objects' support" msgid "" "Purging after filament change will be done inside objects' support. This may " @@ -6449,7 +6565,7 @@ msgstr "" "lower the amount of waste and decrease the print time." msgid "Flush into this object" -msgstr "Flush in dit object" +msgstr "Flush into this object" msgid "" "This object will be used to purge the nozzle after a filament change to save " @@ -6531,10 +6647,10 @@ msgid "Arrange options: 0-disable, 1-enable, others-auto" msgstr "Rangschik opties: 0-uitzetten, 1-aanzetten, anders-automatisch" msgid "Convert Unit" -msgstr "Eenheid converteren" +msgstr "Convert Unit" msgid "Convert the units of model" -msgstr "Converteer de eenheden van het model" +msgstr "Convert the units of model" msgid "Orient the model" msgstr "Oriënteer het model" @@ -6589,10 +6705,10 @@ msgid "Generating infill toolpath" msgstr "Infill toolpath genereren" msgid "Generating support" -msgstr "Support genereren" +msgstr "Ondersteuning (support) genereren" msgid "Checking support necessity" -msgstr "Controleren of support is noodzakelijk" +msgstr "Controleren of er behoefte is aan ondersteuning" #, c-format, boost-format msgid "" @@ -6613,14 +6729,8 @@ msgstr "" "Lege lagen in de buurt van de bodem worden vervangen door de dichtsbijzijnde " "normale lagen." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"Het model heeft overlappende of elkaar kruisende facetten. De software heeft " -"geprobeerd om het te repareren, maar misschien wilt u de resultaten " -"controleren of het invoerbestand repareren en het opnieuw proberen." msgid "Slicing mesh" msgstr "Slicing mesh" @@ -6663,6 +6773,9 @@ msgstr "Support: fix holes at layer %d" msgid "Support: propagate branches at layer %d" msgstr "Support: propagate branches at layer %d" +#~ msgid "Save configuration as:" +#~ msgstr "Bewaar configuratie als:" + #~ msgid "Line type" #~ msgstr "Lijn-type" @@ -6688,8 +6801,56 @@ msgstr "Support: propagate branches at layer %d" #~ "It seems object %s needs support to print. Please enable support " #~ "generation." #~ msgstr "" -#~ "Het lijkt er op dat object %s support nodig heeft om te printen. Zet " -#~ "support genereren aan indien nodig." +#~ "Het lijkt er op dat object %s ondersteuning (support) nodig heeft om te " +#~ "printen. Zet ondersteuning (support) genereren aan indien nodig." + +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "Het model heeft overlappende of elkaar kruisende facetten. De software " +#~ "heeft geprobeerd om het te repareren, maar misschien wilt u de resultaten " +#~ "controleren of het invoerbestand repareren en het opnieuw proberen." + +#~ msgid "" +#~ "Auto orientates selected objects or all objects.If there are selected " +#~ "objects, it just orientates the selected ones.Otherwise, it will " +#~ "orientates all objects in the project." +#~ msgstr "" +#~ "Automatisch oriënteren. Als er geselecteerde objecten zijn worden alleen " +#~ "deze georiënteert. Anders worden alle objecten op de huidige project " +#~ "georiënteert." + +#~ msgid "The Config is not compatible and can not be loaded." +#~ msgstr "De configuratie is niet compatibel en kan niet geladen worden!" + +#~ msgid "Creating" +#~ msgstr "Creating" + +#~ msgid "Uploading" +#~ msgstr "Uploading" + +#~ msgid "Sending" +#~ msgstr "Sending" + +#~ msgid "Please fill report first." +#~ msgstr "Gelieve eerst het rapport in te vullen." + +#~ msgid "Unable to create zip file" +#~ msgstr "Unable to create zip file" + +#~ msgid "Filaments Selection" +#~ msgstr "Filaments selectie" + +#~ msgid "Printer Selection" +#~ msgstr "Printer selectie" + +#~ msgid "Auto arrange" +#~ msgstr "Automatisch rangschikken" + +#~ msgid "Spiral mode" +#~ msgstr "Spiraal modus" #~ msgid "Alt + Mouse wheel" #~ msgstr "Alt + muiswiel" @@ -6702,32 +6863,14 @@ msgstr "Support: propagate branches at layer %d" #~ "Los dit probleem op door het object geheel binnen of buiten de printplaat " #~ "te plaatsen." -#~ msgid "Auto arrange" -#~ msgstr "Automatisch rangschikken" - -#~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." -#~ msgstr "" -#~ "Automatisch oriënteren. Als er geselecteerde objecten zijn worden alleen " -#~ "deze georiënteert. Anders worden alle objecten op de huidige project " -#~ "georiënteert." - #~ msgid "Clear all" #~ msgstr "Alles wissen" -#~ msgid "Creating" -#~ msgstr "Bezig met creëren" - #~ msgid "Ctrl + Any arrow" #~ msgstr "CTRL + willekeurige pijl" #~ msgid "Ctrl + Left mouse button" -#~ msgstr "Ctrl + Linkermuisknop" - -#~ msgid "Debug" -#~ msgstr "Debuggen" +#~ msgstr "Ctrl + Left mouse button" #~ msgid "Display printable box" #~ msgstr "Toon printbare box" @@ -6745,11 +6888,11 @@ msgstr "Support: propagate branches at layer %d" #~ "2. The Filament presets\n" #~ "3. The Printer presets\n" #~ msgstr "" -#~ "Wilt u uw persoonlijke gegevens van Bambu Cloud synchroniseren? \n" -#~ "Dit bevat de volgende informatie:\n" -#~ "1. Voorinstellingen voor processen\n" -#~ "2. Voorinstellingen voor filament\n" -#~ "3. Voorinstellingen voor printers\n" +#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" +#~ "Contains the following information:\n" +#~ "1. Process presets\n" +#~ "2. Filament presets\n" +#~ "3. Printer presets\n" #~ msgid "" #~ "Don't retract when the travel is in infill area absolutely. That means " @@ -6758,15 +6901,6 @@ msgstr "Support: propagate branches at layer %d" #~ "Dit schakelt terugtrekken (retraction) uit wanneer reizen volledig binnen " #~ "een opvulgebied is en het druppelen uit de nozzle niet kan worden gezien." -#~ msgid "Enter a search term" -#~ msgstr "Voer een zoekterm in" - -#~ msgid "Filaments Selection" -#~ msgstr "Filaments selectie" - -#~ msgid "Finished" -#~ msgstr "Voltooid" - #~ msgid "Fix model locally" #~ msgstr "Repareer model lokaal" @@ -6774,13 +6908,13 @@ msgstr "Support: propagate branches at layer %d" #~ msgstr "Repareer model in de cloud" #~ msgid "Fragment Filter" -#~ msgstr "Fragmentfilter" +#~ msgstr "Fragment Filter" #~ msgid "Fragment area" -#~ msgstr "Fragmentgebied" +#~ msgstr "Fragment area" #~ msgid "Fragment filter" -#~ msgstr "Fragmentfilter" +#~ msgstr "Fragment filter" #~ msgid "" #~ "Heat the nozzle to target \n" @@ -6788,10 +6922,10 @@ msgstr "Support: propagate branches at layer %d" #~ msgstr "Nozzle opwarmen tot doel temperatuur" #~ msgid "In the calibration of extrusion flow" -#~ msgstr "Bij de kalibratie van de extrusieflow" +#~ msgstr "In the calibration of extrusion flow" #~ msgid "In the calibration of laser scanner" -#~ msgstr "Bij de kalibratie van laserscanner" +#~ msgstr "In the calibration of laser scanner" #~ msgid "Module" #~ msgstr "Module" @@ -6811,9 +6945,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Pause(toolhead shell off)" #~ msgstr "Pause(toolhead shell off)" -#~ msgid "Please fill report first." -#~ msgstr "Gelieve eerst het rapport in te vullen." - #~ msgid "Please upgrade your printer first" #~ msgstr "Please upgrade your printer first" @@ -6830,17 +6961,11 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Preview only mode for gcode file." #~ msgstr "Preview only mode for G-code file." -#~ msgid "Printer Selection" -#~ msgstr "Printer selectie" - #~ msgid "" #~ "Push new filament \n" #~ "into extruder" #~ msgstr "Nieuw filament in de extruder laden" -#~ msgid "Sending" -#~ msgstr "Sending" - #~ msgid "Shift + Any arrow" #~ msgstr "Shift + willekeurige pijl" @@ -6856,9 +6981,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Show Printable Box(TODO)" #~ msgstr "Toon printbare uimte(TODO)" -#~ msgid "Spiral mode" -#~ msgstr "Spiraal modus" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" #~ "Successfully sent. Will automatically jump to the device page in %s s" @@ -6866,9 +6988,6 @@ msgstr "Support: propagate branches at layer %d" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "De cloud omgeving is aangepast. Log opnieuw in aub." -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "De configuratie is niet compatibel en kan niet geladen worden!" - #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" @@ -6876,19 +6995,5 @@ msgstr "Support: propagate branches at layer %d" #~ "The firmware versions of the printer and AMS are too low. Please update " #~ "them to the latest version before sending any print jobs." -#~ msgid "Unable to create zip file" -#~ msgstr "Unable to create zip file" - -#~ msgid "Uploading" -#~ msgstr "Uploading" - #~ msgid "User pause" #~ msgstr "User pause" - -#~ msgid "Waiting" -#~ msgstr "Waiting" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "" -#~ "Het 3mf bestand is niet compatibel, enkel de geometrische data wordt " -#~ "geladen!" diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index 789316fad4..c969f6af2d 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,13 +2,16 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.1\n" msgid "Supports Painting" msgstr "Färgläggning av Support" @@ -47,7 +50,7 @@ msgid "Gap fill" msgstr "" msgid "Perform" -msgstr "Utför" +msgstr "Apply" msgid "Gap area" msgstr "" @@ -74,7 +77,7 @@ msgid "Sphere" msgstr "Sfär" msgid "Fill" -msgstr "Fyll" +msgstr "Fill" msgid "Gap Fill" msgstr "" @@ -143,10 +146,10 @@ msgid "Shortcut Key " msgstr "Snabbkommando " msgid "Triangle" -msgstr "Triangel" +msgstr "Triangle" msgid "Height Range" -msgstr "Höjd intervall" +msgstr "Height Range" msgid "Remove painted color" msgstr "Ta bort färgläggning" @@ -329,10 +332,13 @@ msgid "Operation already cancelling. Please wait few seconds." msgstr "Åtgärden avbryts redan. Vänligen vänta." msgid "Face recognition" -msgstr "Ansiktsigenkänning" +msgstr "Face recognition" msgid "Perform Recognition" -msgstr "Utför igenkänning" +msgstr "Perform Recognition" + +msgid "Clipping of view" +msgstr "" msgid "Reset direction" msgstr "" @@ -534,8 +540,8 @@ msgid "" "The version of Bambu studio is too low and needs to be updated to the latest " "version before it can be used normally" msgstr "" -"Versionen av Bambu studio är för låg och behöver uppdateras till den senaste " -"versionen innan den kan användas normalt" +"The version of Bambu Studio is too low and needs to be updated to the latest " +"version before it can be used normally" msgid "Login information expired. Please login again." msgstr "Inloggningsinformationen har löpt ut. Logga in igen." @@ -544,7 +550,7 @@ msgid "Loading" msgstr "Laddar" msgid "Loading user preset" -msgstr "Laddar användarens förinställning" +msgstr "Loading user preset" msgid "Switching application language" msgstr "Byt applikationsspråk" @@ -562,11 +568,11 @@ msgid "Select a G-code file:" msgstr "Välj en G-kod fil:" msgid "Bambu Studio GUI initialization failed" -msgstr "Bambu Studio GUI-initiering misslyckades" +msgstr "Bambu Studio GUI initialization failed" #, boost-format msgid "Fatal error, exception catched: %1%" -msgstr "Allvarligt fel, undantag hittat: %1%" +msgstr "Fatal error, exception: %1%" msgid "Quality" msgstr "Kvalitet" @@ -1068,10 +1074,10 @@ msgid "Push new filament into extruder" msgstr "" msgid "Purge old filament" -msgstr "Rensa gammalt filament" +msgstr "Purge old filament" msgid "?" -msgstr " ?" +msgstr "?" msgid "Empty" msgstr "Tom" @@ -1080,10 +1086,10 @@ msgid "Click the pencil icon to edit the filament." msgstr "Tryck på penn ikonen för att editera filament." msgid "Load Filament" -msgstr "Ladda Filament" +msgstr "Load" msgid "Unload Filament" -msgstr "Mata ut" +msgstr "Unload" msgid "Tips" msgstr "Tips" @@ -1190,64 +1196,62 @@ msgid "Exception" msgstr "Undantag" msgid "Logging in" -msgstr "Loggar in" +msgstr "Logging in" msgid "Login failed" -msgstr "Inloggning misslyckades" +msgstr "Login failed" msgid "The region parameter is incorrrect" -msgstr "Region parametern är felaktig." +msgstr "The region parameter is incorrrect." msgid "Failure of printer login" -msgstr "Fel i inloggningen till skrivaren" +msgstr "Printer login failure" msgid "Failed to get ticket" -msgstr "Misslyckades med att få en kvittering" +msgstr "Failed to get ticket" msgid "User authorization timeout" -msgstr "Timeout för användarauktorisering" +msgstr "User authorization timeout" msgid "Failure of bind" -msgstr "Fel vid sammankoppling" +msgstr "Binding failure" msgid "Unknown Failure" -msgstr "Okänt fel" +msgstr "Unknown Failure" msgid "Abnormal print file data. Please slice again" -msgstr "Onormal utskrifts fil data. Vänligen bered igen" +msgstr "Abnormal print file data. Please slice again" msgid "Task canceled" -msgstr "Uppgift avbruten" +msgstr "Task canceled" msgid "Upload task timed out. Please check the network problem and try again" -msgstr "" -"Uppladdningsuppgiften tog timeout. Kontrollera nätverksproblemet och försök " -"igen" +msgstr "Upload task timed out. Please check the network and try again" msgid "Cloud service connection failed. Please try again." -msgstr "Anslutningen till molntjänsten misslyckades. Försök igen." +msgstr "Cloud service connection failed. Please try again." msgid "Print file not found, please slice again" -msgstr "Det gick inte att hitta utskrifts filen, vänligen bered igen" +msgstr "Print file not found, please slice again" msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again" msgstr "" -"Utskrifts filen överskrider den högsta tillåtna storleken (1 GB). Förenkla " -"modellen och bered igen" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again" msgid "Failed uploading print file" -msgstr "Uppladdning av utskrifts filen misslyckades" +msgstr "Failed uploading print file" msgid "Wrong Access code" -msgstr "Fel åtkomstkod" +msgstr "Wrong Access code" msgid "Sending print job over LAN" -msgstr "Skicka utskriftsjobb via LAN" +msgstr "Sending print job over LAN" msgid "Sending print job through cloud service" -msgstr "Skicka utskriftsjobb via molntjänst" +msgstr "Sending print job through cloud service" msgid "Service Unavailable" msgstr "" @@ -1255,8 +1259,11 @@ msgstr "" msgid "Unkown Error." msgstr "" +msgid "Please Fill Task Report." +msgstr "" + msgid "Sending print configuration" -msgstr "Skicka utskrifts konfiguration" +msgstr "Sending print configuration" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %s s" @@ -1284,16 +1291,16 @@ msgid "Install failed" msgstr "" msgid "Portions copyright" -msgstr "Information om licens" +msgstr "License Info" msgid "Copyright" -msgstr "Upphovsrätt" +msgstr "Copyright" msgid "License" -msgstr "Licens" +msgstr "License" msgid "Bambu Studio is licensed under " -msgstr "Bambu Studio är licensierad under " +msgstr "Bambu Studio is licensed under " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, version 3" @@ -1302,22 +1309,22 @@ msgid "" "Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r " "by Alessandro Ranellucci and the RepRap community" msgstr "" -"Bambu Studio är baserad på PrusaSlicer av Prusa Research, som är från Slic3r " -"av Alessandro Ranellucci och RepRap-communityn" +"Bambu Studio is based on PrusaSlicer by Prusa Research, which is based on " +"Slic3r by Alessandro Ranellucci and the RepRap community" msgid "Libraries" -msgstr "Bibliotek" +msgstr "Libraries" msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Denna programvara använder komponenter med öppen källkod vars upphovsrätt " -"och andra äganderätt tillhör respektive ägare" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" #, c-format, boost-format msgid "About %s" -msgstr "Om %s" +msgstr "About %s" msgid "" "Bambu Studio is based on PrusaSlicer by PrusaResearch and SuperSlicer by " @@ -1345,14 +1352,14 @@ msgid "AMSMaterialsSetting" msgstr "" msgid "Colour" -msgstr "Färg" +msgstr "Color" msgid "" "Nozzle\n" "Temperature" msgstr "" -"Nozzle \n" -"temperatur" +"Nozzle\n" +"Temperature" msgid "max" msgstr "max" @@ -1362,7 +1369,7 @@ msgstr "min" #, boost-format msgid "The input value should be greater than %1% and less than %2%" -msgstr "Inmatningsvärdet ska vara större än %1% och mindre än %2%" +msgstr "The input value should be greater than %1% and less than %2%" msgid "SN" msgstr "SN" @@ -1381,48 +1388,49 @@ msgid "" msgstr "" msgid "Insertion update" -msgstr "Infoga uppdatering" +msgstr "Insertion update" msgid "" "The AMS will automatically read the filament information when inserting a " "new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"AMS läser automatiskt filament informationen när du sätter in ett nytt Bambu " -"Lab-filament. Det tar ungefär 20 sekunder." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament spool. This takes about 20 seconds." msgid "" "Note: if new filament is inserted during printing, the AMS will not " "automatically read any information until printing is completed." msgstr "" -"Observera: Om nytt filament sätts in under utskrift kommer AMS inte " -"automatiskt att läsa av någon information förrän utskriften är avslutad." +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing has finished." msgid "" "When inserting a new filament, the AMS will not automatically read its " "information, leaving it blank for you to enter manually." msgstr "" -"Vid matning av nytt filament, AMS läser inte av dess information automatiskt " -"utan lämnar det blankt för dig att fylla i manuellt." +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." msgid "Power on update" -msgstr "Slå på uppdatering" +msgstr "Power on update" msgid "" "The AMS will automatically read the information of inserted filament on " "start-up. It will take about 1 minute.The reading process will roll filament " "spools." msgstr "" -"AMS läser automatiskt informationen om insatt Bambu Lab filament vid " -"uppstart. Det tar cirka 1 minut. Läsprocessen kommer att rulla " -"filamentspolarna." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will rotate the " +"filament spools." msgid "" "The AMS will not automatically read information from inserted filament " "during startup and will continue to use the information recorded before the " "last shutdown." msgstr "" -"AMS kommer inte att automatiskt läsa informationen ifrån imatat filament " -"under uppstart och senast använd information kommer att användas." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgid "File" msgstr "Fil" @@ -1457,7 +1465,7 @@ msgid "Underflow" msgstr "Underflöde" msgid "Floating reserved operand" -msgstr "Reservations operand med flytande värde" +msgstr "Floating reserved operand" msgid "Stack overflow" msgstr "Lagra överflöde" @@ -1529,7 +1537,7 @@ msgid "Not found:" msgstr "Ej funnen:" msgid "Model" -msgstr "Modell" +msgstr "Model" msgid "Choose an STL file to import bed shape from:" msgstr "Välj en STL fil för att importera bygglattans form ifrån:" @@ -1716,67 +1724,67 @@ msgstr "" "NEJ - Återställ densiteten till standard inte 100% värdet automatiskt\n" msgid "Auto bed leveling" -msgstr "Auto justera byggplattan" +msgstr "Auto bed leveling" msgid "Heatbed preheating" -msgstr "Byggplattan förvärms" +msgstr "Heatbed preheating" msgid "Sweeping XY mech mode" -msgstr "Sveper XY mech-läge" +msgstr "Sweeping XY mech mode" msgid "Changing filament" -msgstr "Byter filament" +msgstr "Changing filament" msgid "M400 pause" -msgstr "M400 paus" +msgstr "M400 pause" msgid "Paused due to filament runout" -msgstr "Pausad på grund av filament slut" +msgstr "Paused due to filament runout" msgid "Heating hotend" -msgstr "Värmer hotend" +msgstr "Heating hotend" msgid "Calibrating extrusion" -msgstr "Kalibrerar extrudering" +msgstr "Calibrating extrusion" msgid "Scanning bed surface" -msgstr "Skannar byggplattan" +msgstr "Scanning bed surface" msgid "Inspecting first layer" -msgstr "Inspekterar första lager" +msgstr "Inspecting first layer" msgid "Identifying build plate type" -msgstr "Identifiering av byggplatta" +msgstr "Identifying build plate type" msgid "Calibrating Micro Lidar" -msgstr "Kalibrerar Micro Lidar" +msgstr "Calibrating Micro Lidar" msgid "Homing toolhead" -msgstr "Nollställer verktygshuvudet" +msgstr "Homing toolhead" msgid "Cleaning nozzle tip" -msgstr "Rengör nozzle spetsen" +msgstr "Cleaning nozzle tip" msgid "Checking extruder temperature" -msgstr "Kontrollerar extruderings temperatur" +msgstr "Checking extruder temperature" msgid "Printing was paused by the user" -msgstr "Utskriften pausades av användaren" +msgstr "Printing was paused by the user" msgid "Pause of front cover falling" -msgstr "Paus av front luckan faller" +msgstr "Pause of front cover falling" msgid "Calibrating the micro lida" -msgstr "Kalibrerar Micro Lidar" +msgstr "Calibrating the micro lidar" msgid "Calibrating extrusion flow" -msgstr "Kalibrerar extruderings flödet" +msgstr "Calibrating extrusion flow" msgid "Paused due to nozzle temperature malfunction" -msgstr "Pausad på grund av fel i nozzle temperaturen" +msgstr "Paused due to nozzle temperature malfunction" msgid "Paused due to heat bed temperature malfunction" -msgstr "Pausad på grund av fel i byggplattans temperatur" +msgstr "Paused due to heat bed temperature malfunction" msgid "MC" msgstr "MC" @@ -1972,10 +1980,10 @@ msgid "Filament 1" msgstr "Filament 1" msgid "Flushed filament" -msgstr "Rensat filament" +msgstr "Flushed filament" msgid "Filament change times" -msgstr "Filament bytes tider" +msgstr "Filament change times" msgid "Color change" msgstr "Färg byte" @@ -1987,7 +1995,7 @@ msgid "Pause" msgstr "Paus" msgid "Printer" -msgstr "Skrivare" +msgstr "Printer" msgid "Print settings" msgstr "Utskrifts inställningar" @@ -2008,7 +2016,7 @@ msgid "Model printing time" msgstr "Utskriftstid för modellen" msgid "Total" -msgstr "Totalt" +msgstr "Total" msgid "Switch to silent mode" msgstr "Ändra till tyst läge" @@ -2083,7 +2091,7 @@ msgid "Assembly Return" msgstr "Monterings retur" msgid "return" -msgstr "tillbaka" +msgstr "return" msgid "Paint Toolbar" msgstr "Färgläggningsverktyg" @@ -2129,9 +2137,9 @@ msgid "" "minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Kalibreringsprogrammet avläser status på enheten för att automatiskt " -"minimera avvikelser. \n" -"Detta gör att enheten kan fungera optimalt." +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" +"It keeps the device performing optimally." msgid "Calibration Flow" msgstr "Kalibrerings Flöde" @@ -2149,24 +2157,33 @@ msgid "Timelapse" msgstr "Timelapse" msgid "Monitoring Recording" -msgstr "Övervaknings Inspelning" +msgstr "Monitoring Recording" msgid "ConnectPrinter(LAN)" -msgstr "Anslut skrivare (LAN)" +msgstr "Connect Printer (LAN)" msgid "Please input the printer access code:" -msgstr "Ange skrivarens åtkomstkod:" +msgstr "Please input the printer access code:" msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" msgstr "" -"Du hittar den i ”Inställningar> Nätverk> Anslutningskod”\n" -"på skrivaren, som visas i figuren:" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "Enter a search term" + +msgid "Online" +msgstr "Online" + +msgid "Offline" +msgstr "Offline" + msgid "Application is closing" msgstr "Begäran avslutas" @@ -2180,14 +2197,17 @@ msgid "Prepare" msgstr "Förbered" msgid "Preview" -msgstr "Förhandsvisning" +msgstr "Förvisning" msgid "Device" -msgstr "Enhet" +msgstr "Device" msgid "Project" msgstr "Projekt" +msgid "Debug" +msgstr "Felsök" + msgid "Slice" msgstr "Bered" @@ -2225,6 +2245,9 @@ msgstr "Sök efter Uppdatering" msgid "&About %s" msgstr "&Om %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2233,7 +2256,7 @@ msgstr "Standard Vy" #. TRN To be shown in the main menu View->Top msgid "Top" -msgstr "Topplager" +msgstr "Top" msgid "Top View" msgstr "Vy Top" @@ -2299,9 +2322,24 @@ msgstr "Importera 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "Ladda modell" +msgid "Import Configs" +msgstr "" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "" + msgid "Export all objects as STL" msgstr "Exportera Alla Objekt som STL" +msgid "Export Generic 3MF" +msgstr "" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "" + msgid "Export current Sliced file" msgstr "Exportera nuvarande Beredda fil" @@ -2311,6 +2349,12 @@ msgstr "Exportera G-kod" msgid "Export current plate as G-code" msgstr "" +msgid "Export &Configs" +msgstr "" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "Exportera" @@ -2384,47 +2428,78 @@ msgid "Help" msgstr "Hjälp" msgid "&Open G-code" -msgstr "&Öppna G-kod" +msgstr "&Open G-code" msgid "Open a G-code file" -msgstr "Öppna en G-kod fil" +msgstr "Open a G-code file" msgid "Re&load from Disk" -msgstr "Ladda om från disk" +msgstr "Re&load from Disk" msgid "Reload the plater from disk" -msgstr "Ladda om plattan från disken" +msgstr "Reload the plater from disk" msgid "Export &Toolpaths as OBJ" -msgstr "Exportera &Toolpaths som OBJ" +msgstr "Export &Toolpaths as OBJ" msgid "Export toolpaths as OBJ" -msgstr "Exportera toolpaths som OBJ" +msgstr "Export toolpaths as OBJ" msgid "Open &PrusaSlicer" -msgstr "Öppna &PrusaSlicer" +msgstr "Open &PrusaSlicer" msgid "Open PrusaSlicer" -msgstr "Öppna PrusaSlicer" +msgstr "Open PrusaSlicer" msgid "&Quit" -msgstr "&Avsluta" +msgstr "&Quit" #, c-format, boost-format msgid "Quit %s" -msgstr "Avsluta %s" +msgstr "Quit %s" msgid "&File" -msgstr "&Fil" +msgstr "&File" msgid "&View" -msgstr "&Visa" +msgstr "&View" msgid "&Help" -msgstr "&Hjälp" +msgstr "&Help" -msgid "Save configuration as:" -msgstr "Spara konfigurationen som:" +msgid "Overwrite file" +msgstr "" + +msgid "Yes to All" +msgstr "" + +msgid "No to All" +msgstr "" + +msgid "Choose a directory" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Export result" +msgstr "" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +msgstr[1] "" + +msgid "Import result" +msgstr "" msgid "File is missing" msgstr "Filen saknas" @@ -2469,6 +2544,58 @@ msgstr "Spelar..." msgid "Load failed [%d]!" msgstr "Laddning misslyckad [%d]!" +msgid "Year" +msgstr "" + +msgid "Month" +msgstr "" + +msgid "All Files" +msgstr "" + +msgid "Video" +msgstr "" + +msgid "Download" +msgstr "Ladda ner" + +msgid "Management" +msgstr "" + +msgid "No printers." +msgstr "" + +msgid "Connecting..." +msgstr "" + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "" + +msgid "Loading file list..." +msgstr "" + +msgid "No files" +msgstr "" + +msgid "Choose save directory" +msgstr "" + +msgid "Waiting" +msgstr "Waiting" + +msgid "Retry" +msgstr "" + +msgid "Failed" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Finished" +msgstr "Finished" + msgid "Speed:" msgstr "Hastighet:" @@ -2479,7 +2606,7 @@ msgid "Options:" msgstr "Val:" msgid "Zoom" -msgstr "Zooma" +msgstr "Zoom" msgid "Translation/Zoom" msgstr "" @@ -2493,9 +2620,6 @@ msgstr "Byta Y/Z axes" msgid "Camera" msgstr "" -msgid "Video" -msgstr "" - msgid "Printing Progress" msgstr "Utskriftsförlopp" @@ -2512,7 +2636,7 @@ msgid "Clean" msgstr "" msgid "Control" -msgstr "Kontroll" +msgstr "Control" msgid "Print Options" msgstr "" @@ -2574,9 +2698,6 @@ msgstr "Uppkoppling till servern misslyckades" msgid "Failed to connect to the printer" msgstr "Uppkoppling till printern misslyckades" -msgid "Connecting..." -msgstr "" - msgid "OK" msgstr "OK" @@ -2610,9 +2731,6 @@ msgstr "%s info" msgid "%s information" msgstr "%s information" -msgid "Download" -msgstr "Ladda ner" - msgid "Skip" msgstr "Hoppa över" @@ -2836,7 +2954,7 @@ msgstr "Återställ" msgid "Loading file: %s" msgstr "Laddar fil: %s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgid "The 3mf is not from Bambu lab, load geometry data only." msgstr "" msgid "Load 3mf" @@ -2868,8 +2986,8 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgid "the 3mf is not compatible, load geometry data only!" +msgstr "3mf ej kompatibel, laddar endast geometrin !" msgid "Incompatible 3mf" msgstr "Ej kompatibel 3mf" @@ -2912,7 +3030,7 @@ msgid "Object with multiple parts was detected" msgstr "Ett objekt med multipla delar har upptäckts" msgid "The file does not contain any geometry data." -msgstr "Filen innehåller ingen geometrisk data." +msgstr "The file does not contain any geometry data." msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " @@ -3006,10 +3124,10 @@ msgid "G-code files can not be loaded with models together!" msgstr "G-kod filer och modeller kan inte laddas tillsammans!!" msgid "Can not add models when in preview mode!" -msgstr "Det gick inte att lägga till modeller i förhandsvisningsläge" +msgstr "Unable to add models in preview mode" msgid "Add Models" -msgstr "Lägg till modeller" +msgstr "Add Models" msgid "All objects will be removed, continue?" msgstr "Alla objekt kommer att raderas, fortsätta?" @@ -3069,7 +3187,7 @@ msgstr "Storlek: %1% x %2% x %3% mm\n" #, boost-format msgid "Volume: %1% in³\n" -msgstr "Volym: %1% i³\n" +msgstr "Volume: %1% in³\n" #, boost-format msgid "Volume: %1% mm³\n" @@ -3095,34 +3213,34 @@ msgid "Changing application language" msgstr "Byter språk" msgid "Changing the region will log out your account.\n" -msgstr "Om du ändrar regionen loggas du ut från ditt konto.\n" +msgstr "Changing the region will log you out of your account.\n" msgid "Region selection" -msgstr "Val av region" +msgstr "Region selection" msgid "Second" msgstr "Andra" msgid "General Settings" -msgstr "Allmänna inställningar" +msgstr "General Settings" msgid "Asia-Pacific" -msgstr "Asien-Stillahavsområdet" +msgstr "Asia-Pacific" msgid "China" -msgstr "Kina" +msgstr "China" msgid "Europe" -msgstr "Europa" +msgstr "Europe" msgid "North America" -msgstr "Nordamerika" +msgstr "North America" msgid "Others" msgstr "Andra" msgid "Login Region" -msgstr "Logga in Region" +msgstr "Login Region" msgid "Metric" msgstr "Metrisk" @@ -3137,12 +3255,10 @@ msgid "User sync" msgstr "Användar synkronisering" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Automatisk synkronisering av användarens förinställningar (skrivare/filament/" -"process)" +msgstr "Auto sync user presets (Printer/Filament/Process)" msgid "User Sync" -msgstr "Användar synkronisering" +msgstr "User Sync" msgid "Associate files to BambuStudio" msgstr "Associerade filer till Bambu Studio" @@ -3160,7 +3276,7 @@ msgid "If enabled, sets BambuStudio as default application to open .stl files" msgstr "Om aktiverad, väljs Bambu Studio som standard att öppna .stl filer" msgid "Associate .step/.stp files to BambuStudio" -msgstr "Associera .step/.stp-filer till BambuStudio" +msgstr "Associate .step/.stp files to Bambu Studio" msgid "If enabled, sets BambuStudio as default application to open .step files" msgstr "Om aktiverad, väljs Bambu Studio som standard att öppna .step filer" @@ -3235,7 +3351,7 @@ msgid "trace" msgstr "spåra" msgid "Host Setting" -msgstr "Värd Inställning" +msgstr "Host Setting" msgid "DEV host: api-dev.bambu-lab.com/v1" msgstr "DEV host: api-dev.bambu-lab.com/v1" @@ -3393,12 +3509,6 @@ msgstr "För \"%1%\", lägg till \"%2%\" som ny förinställning" msgid "Simply switch to \"%1%\"" msgstr "Byta till \"%1%\"" -msgid "Online" -msgstr "Online" - -msgid "Offline" -msgstr "Offline" - msgid "My Device" msgstr "Min Enhet" @@ -3406,13 +3516,13 @@ msgid "Other Device" msgstr "Andra Enheter" msgid "Input access code" -msgstr "Inmatning av åtkomstkod" +msgstr "Input access code" msgid "Log out successful." msgstr "Utloggning lyckades." msgid "Busy" -msgstr "Upptagen" +msgstr "Busy" msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" @@ -3427,7 +3537,7 @@ msgid "Send print job to" msgstr "Skicka utskriftsjobb till" msgid "Refresh" -msgstr "Uppdatera" +msgstr "Refresh" msgid "Bed Leveling" msgstr "Justering av Byggplattan" @@ -3442,28 +3552,27 @@ msgid "send completed" msgstr "Skicka komplett" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Inget inloggningskonto, bara skrivare i LAN-läge visas" +msgstr "No login account, only printers in LAN mode are displayed" msgid "Connecting to server" -msgstr "Ansluter till server" +msgstr "Connecting to server" msgid "Synchronizing device information" -msgstr "Synkroniserar enhetsinformation" +msgstr "Synchronizing device information" msgid "Synchronizing device information time out" -msgstr "Time-out för synkronisering av enhetsinformation" +msgstr "Synchronizing device information time out" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "Det går inte att skicka utskriftsuppgiften när uppgraderingen pågår" +msgstr "Cannot send the print task when the upgrade is in progress" msgid "" "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"Skrivaren utför instruktioner. Vänligen starta utskriften igen när den är " -"avslutad." +"The printer is executing instructions. Please restart printing after it ends" msgid "The printer is busy on other print job" -msgstr "Skrivaren är upptagen med ett annat utskriftsjobb." +msgstr "The printer is busy with another print job." #, c-format, boost-format msgid "" @@ -3480,15 +3589,15 @@ msgid "" "Filaments to AMS slots mappings have been established. You can click a " "filament above to change its mapping AMS slot" msgstr "" -"Filament i AMS facken har fastställts. Du kan klicka på ett filament ovan " -"för att ändra dess plats i AMS facken" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgid "" "Please click each filament above to specify its mapping AMS slot before " "sending the print job" msgstr "" -"Klicka på varje filament ovan för att ange dess plats i AMS-facken innan du " -"skickar utskriftsjobbet" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" #, c-format, boost-format msgid "" @@ -3507,10 +3616,10 @@ msgid "" msgstr "" msgid "Preparing print job" -msgstr "Förbereder utskriftsjobb" +msgstr "Preparing print job" msgid "Modifying the device name" -msgstr "Ändra enhetens namn" +msgstr "Modifying the device name" msgid "Log in printer" msgstr "Logga in skrivare" @@ -3606,7 +3715,7 @@ msgid "Prime tower" msgstr "Prime torn" msgid "Flush options" -msgstr "Rensnings alternativ" +msgstr "Flush options" msgid "Special mode" msgstr "Special läge" @@ -3643,7 +3752,7 @@ msgid "Reserved keywords found" msgstr "Hittade reserverade nyckelord" msgid "Setting Overrides" -msgstr "Åsidosätter inställningar" +msgstr "Setting Overrides" msgid "Retraction" msgstr "Reduktion" @@ -3678,8 +3787,8 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Detta är byggplattans temperatur när Cool Plate är installerad. Värdet 0 " -"betyder att filamentet inte stöder utskrift på Cool Plate." +"This is the bed temperature when the cool plate is installed. A value of 0 " +"means the filament does not support printing on the Cool Plate." msgid "Engineering plate" msgstr "Engineering plate" @@ -3688,8 +3797,8 @@ msgid "" "Bed temperature when engineering plate is installed. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Detta är byggplattans temperatur när Engineering Plate är installerad. Ett " -"värde på 0 betyder att filamentet inte stöder utskrift på Engineering Plate." +"This is the bed temperature when the engineering plate is installed. A value " +"of 0 means the filament does not support printing on the Engineering Plate." msgid "High Temp Plate" msgstr "High Temp Plate" @@ -3698,8 +3807,9 @@ msgid "" "Bed temperature when high temperature plate is installed. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Detta är byggplattans temperatur när High Temp Plate är installerad. Värdet " -"0 betyder att filamentet inte stöder utskrift på High Temp Plate." +"This is the bed temperature when the high temperature plate is installed. A " +"value of 0 means the filament does not support printing on the High Temp " +"Plate." msgid "Textured PEI Plate" msgstr "" @@ -3860,7 +3970,7 @@ msgid "New Value" msgstr "Nytt värde" msgid "Transfer" -msgstr "Överför" +msgstr "Transfer" msgid "Don't save" msgstr "Spara inte" @@ -3941,9 +4051,6 @@ msgstr "Förmågor" msgid "Show all presets (including incompatible)" msgstr "" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -3958,7 +4065,7 @@ msgid "The name \"%1%\" already exists." msgstr "Namnet \"%1%\" finns redan." msgid "Basic Info" -msgstr "Grundläggande information" +msgstr "Basic Info" msgid "Pictures" msgstr "Bilder" @@ -4010,7 +4117,7 @@ msgstr "" #, c-format, boost-format msgid "Exit %s" -msgstr "Avsluta %s" +msgstr "Exit %s" msgid "the Configuration package is incompatible with current APP." msgstr "" @@ -4027,7 +4134,7 @@ msgid "The configuration is up to date." msgstr "Konfigurationen är aktuell." msgid "Auto-Calc" -msgstr "Autoberäkna" +msgstr "Auto-Calc" msgid "Flushing volumes for filament change" msgstr "Rensnings volym för filament byte" @@ -4036,7 +4143,7 @@ msgid "Flushing volume (mm³) for each filament pair." msgstr "Rensnings volym (mm³) för varje filament." msgid "Flush multiplier" -msgstr "Rensnings multiplikator" +msgstr "Flush multiplier" msgid "unloaded" msgstr "utmatad" @@ -4242,7 +4349,7 @@ msgid "Delete objects, parts, modifiers " msgstr "Radera objekten, delarna och anpassningar " msgid "Space" -msgstr "Mellanslag" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "Välj objektet/delen och tryck space för att ändra namnet" @@ -4540,11 +4647,11 @@ msgstr "" #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% är för nära andra och kan orsaka kollisioner." +msgstr "%1% is too close to others, and collisions may be caused." #, boost-format msgid "%1% is too tall, and collisions will be caused." -msgstr "%1% är för hög, och kollisioner kommer att uppstå." +msgstr "%1% is too tall, and collisions will be caused." msgid " is too close to others, there will be collisions when printing.\n" msgstr " för tätt inpå andra, utskriften kolliderar.\n" @@ -4557,11 +4664,10 @@ msgid "Prime Tower" msgstr "Prime Torn" msgid " is too close to others, and collisions may be caused.\n" -msgstr "är för nära andra och kollisioner kan orsakas.\n" +msgstr " is too close to others, and collisions may be caused.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" är för nära uteslutningsområdet, och kollisioner kommer att orsakas.\n" +msgstr " is too close to an exclusion area, and collisions will be caused.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " @@ -4711,11 +4817,11 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Cool Plate" msgstr "" -"Detta är byggplattans temperatur för lager förutom det första. Värdet 0 " -"betyder att filamentet inte stöder utskrift på Cool Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Cool Plate." msgid "°C" -msgstr "° C" +msgstr "°C" msgid "Bed temperature" msgstr "Byggplattans temperatur" @@ -4724,15 +4830,15 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Engineering Plate" msgstr "" -"Detta är byggplattans temperatur för lager förutom det första. Ett värde på " -"0 betyder att filamentet inte stöder utskrift på Engineering Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the Engineering Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the High Temp Plate" msgstr "" -"Detta är byggplattans temperatur för lager förutom det första. Värdet 0 " -"betyder att filamentet inte stöder utskrift på High Temp Plate." +"This is the bed temperature for layers except for the first one. A value of " +"0 means the filament does not support printing on the High Temp Plate." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -4749,22 +4855,22 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate" msgstr "" -"Detta är byggplattans temperatur för första lager. Värdet 0 betyder att " -"filamentet inte stöder utskrift på Cool Plate." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Cool Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Engineering Plate" msgstr "" -"Detta är byggplattans temperatur för första lager. Värdet 0 betyder att " -"filamentet inte stöder utskrift på Engineering Plate." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the Engineering Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the High Temp Plate" msgstr "" -"Detta är byggplattans temperatur för första lager. Värdet 0 betyder att " -"filamentet inte stöder utskrift på High Temp Plate." +"This is the bed temperature of the first layer. A value of 0 means the " +"filament does not support printing on the High Temp Plate." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -4855,14 +4961,14 @@ msgstr "" "bridges/bryggor, detta för att förbättra kvaliteten" msgid "Only one wall on top surfaces" -msgstr "Endast en vägg på topp ytan" +msgstr "Only one wall on top surfaces" msgid "" "Use only one wall on flat top surface, to give more space to the top infill " "pattern" msgstr "" -"Använd endast en vägg på topp ytan, för att ge mer utrymme till det övre " -"ifyllningsmönstret" +"Use only one wall on flat top surfaces, to give more space to the top infill " +"pattern" msgid "Slow down for overhang" msgstr "Sakta ner vid överhäng" @@ -5005,16 +5111,16 @@ msgid "" msgstr "" msgid "Max bridge length" -msgstr "Max bridge/brygg längd" +msgstr "Max bridge length" msgid "" "Max length of bridges that don't need support. Set it to 0 if you want all " "bridges to be supported, and set it to a very large value if you don't want " "any bridges to be supported." msgstr "" -"Maxlängd för bridge/brygga som inte behöver support. Ange 0 om du vill att " -"alla bridges/bryggor ska få support, och ett mycket stort värde om du inte " -"vill att några bridges/bryggor ska få support." +"This is the maximum length of bridges that don't need support. Set it to 0 " +"if you want all bridges to be supported, and set it to a very large value if " +"you don't want any bridges to be supported." msgid "End G-code" msgstr "Slut G-kod" @@ -5041,7 +5147,7 @@ msgid "Monotonic" msgstr "Monoton" msgid "Monotonic line" -msgstr "Monoton linje" +msgstr "Monotonic line" msgid "Bottom surface pattern" msgstr "Botten ytans mönster" @@ -5231,8 +5337,7 @@ msgstr "Support material" msgid "" "Support material is commonly used to print support and support interface" msgstr "" -"Support material används ofta för att skriva ut support och stödja " -"gränssnittet" +"Support material is commonly used to print support and support interfaces." msgid "Temperature of vitrificaiton" msgstr "Kristalliserings temperatur" @@ -5287,7 +5392,7 @@ msgid "Line" msgstr "Linje" msgid "Cubic" -msgstr "Kubisk" +msgstr "Cubic" msgid "Tri-hexagon" msgstr "Tri-hexagon" @@ -5305,8 +5410,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Acceleration av fyllning av toppytan. Att använda ett lägre värde kan " -"förbättra ytkvaliteten" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgid "" "Acceleration of initial layer. Using a lower value can improve build plate " @@ -5709,10 +5814,10 @@ msgid "Diameter of nozzle" msgstr "Diametern på nozzeln" msgid "Nozzle volume" -msgstr "Nozzle volym" +msgstr "Nozzle volume" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Volymen av nozzlen mellan skäraren och nozzlens ände" +msgstr "Volume of nozzle between the filament cutter and the end of the nozzle" msgid "Reduce infill retraction" msgstr "Minska ifyllnads retraktionen" @@ -5877,7 +5982,7 @@ msgid "The start position to print each part of outer wall" msgstr "Utskriftens start position för varje del av yttre väggen" msgid "Nearest" -msgstr "Närmaste" +msgstr "Nearest" msgid "Aligned" msgstr "Linjerad" @@ -5885,6 +5990,9 @@ msgstr "Linjerad" msgid "Back" msgstr "Tillbaka" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Skirt avstånd" @@ -5972,10 +6080,10 @@ msgstr "" "skapas" msgid "normal(auto)" -msgstr "normal (auto)" +msgstr "normal(auto)" msgid "tree(auto)" -msgstr "träd(auto)" +msgstr "tree(auto)" msgid "hybrid(auto)" msgstr "hybrid(auto)" @@ -5984,7 +6092,7 @@ msgid "normal" msgstr "normal" msgid "tree" -msgstr "träd" +msgstr "tree" msgid "Support/object xy distance" msgstr "Support/objekt xy distans" @@ -6085,8 +6193,8 @@ msgid "" "interface is Concentric" msgstr "" "Linje mönster för support gränssnittsytan .Standardmönstret för olösligt " -"(material) support gränssnittet är Räta medan standardmönstret för " -"lösligt(material) stödgränssnittet är koncentriskt" +"(material) support gränssnittet är Räta medan standardmönstret för lösligt" +"(material) stödgränssnittet är koncentriskt" msgid "Base pattern spacing" msgstr "Basens mönster mellanrum" @@ -6278,7 +6386,7 @@ msgid "Width of prime tower" msgstr "Prime tornets bredd" msgid "Flush into objects' infill" -msgstr "Rensa in i föremålens ifyllnad" +msgstr "Flush into objects' infill" msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -6286,32 +6394,31 @@ msgid "" "printed with transparent filament, the mixed color infill will be seen " "outside" msgstr "" -"Rensning efter filamentbyte kommer att göras inuti objektens fyllningar. " -"Detta kan minska mängden avfall och minska utskriftstiden. Om väggarna är " -"tryckta med transparent filament kommer den blandade färgfyllningen att " -"synas." +"Purging after filament change will be done inside objects' infills. This may " +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be visible." msgid "Flush into objects' support" -msgstr "Rensa in i objektets support" +msgstr "Flush into objects' support" msgid "" "Purging after filament change will be done inside objects' support. This may " "lower the amount of waste and decrease the print time" msgstr "" -"Rensning efter filamentändring kommer att göras inuti objektens support. " -"Detta kan minska mängden avfall och minska utskriftstiden." +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time." msgid "Flush into this object" -msgstr "Rensa in i det här objektet" +msgstr "Flush into this object" msgid "" "This object will be used to purge the nozzle after a filament change to save " "filament and decrease the print time. Colours of the objects will be mixed " "as a result" msgstr "" -"Detta objekt kommer att användas för att rensa nozzlen efter ett filament " -"byte för att spara filament och minska utskriftstiden. Objektens färger " -"blandas som ett resultat" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colors of the objects will be mixed as " +"a result." msgid "X-Y hole compensation" msgstr "X-Y håls kompensation" @@ -6384,10 +6491,10 @@ msgid "Arrange options: 0-disable, 1-enable, others-auto" msgstr "Placera val: 0-inaktivera, 1-aktivera, andra-auto" msgid "Convert Unit" -msgstr "Konvertera enhet" +msgstr "Convert Unit" msgid "Convert the units of model" -msgstr "Konvertera modellens enheter" +msgstr "Convert the units of model" msgid "Orient the model" msgstr "Orientera modellen" @@ -6464,13 +6571,8 @@ msgstr "Optimerar verktygsbanan" msgid "Empty layers around bottom are replaced by nearest normal layers." msgstr "Tomma lager runt botten ersätts med närmast normala lager." -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"Modellen har överlappande eller självkorsande aspekter.Reparation utförd, " -"men kontrollera resultaten eller reparera indatafilen och försöka igen." msgid "Slicing mesh" msgstr "Bereder mesh" @@ -6484,34 +6586,37 @@ msgstr "Fel i linje %1%:\n" #, c-format, boost-format msgid "Support: generate toolpath at layer %d" -msgstr "Support: generera verktygsbana vid lager %d" +msgstr "Support: generate toolpath at layer %d" msgid "Support: detect overhangs" -msgstr "Support: upptäck överhäng" +msgstr "Support: detect overhangs" msgid "Support: generate contact points" -msgstr "Support: generera kontaktpunkter" +msgstr "Support: generate contact points" msgid "Support: propagate branches" -msgstr "Support: föröka grenar" +msgstr "Support: propagate branches" msgid "Support: draw polygons" -msgstr "Support: rita polygoner" +msgstr "Support: draw polygons" msgid "Support: generate toolpath" -msgstr "Support: generera verktygsbana" +msgstr "Support: generate toolpath" #, c-format, boost-format msgid "Support: generate polygons at layer %d" -msgstr "Support: generera polygoner vid lager %d" +msgstr "Support: generate polygons at layer %d" #, c-format, boost-format msgid "Support: fix holes at layer %d" -msgstr "Support: åtgärda hål vid lager %d" +msgstr "Support: fix holes at layer %d" #, c-format, boost-format msgid "Support: propagate branches at layer %d" -msgstr "Support: föröka grenar vid lager %d" +msgstr "Support: propagate branches at layer %d" + +#~ msgid "Save configuration as:" +#~ msgstr "Spara konfigurationen som:" #~ msgid "Line type" #~ msgstr "Linje typ" @@ -6541,18 +6646,13 @@ msgstr "Support: föröka grenar vid lager %d" #~ "Objekt verkar %s behöva support för att skrivas ut. Aktivera support " #~ "valen." -#~ msgid "Alt + Mouse wheel" -#~ msgstr "Alt + mushjul" - #~ msgid "" -#~ "An object is layed over the boundary of plate.\n" -#~ "Please solve the problem by moving it totally inside or outside plate." +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." #~ msgstr "" -#~ "Ett objekt är placerad över byggplattans begränsningar.\n" -#~ "Flytta objektet så det är helt inom eller utom byggplattans begränsningar." - -#~ msgid "Auto arrange" -#~ msgstr "Auto arrangera" +#~ "Modellen har överlappande eller självkorsande aspekter.Reparation utförd, " +#~ "men kontrollera resultaten eller reparera indatafilen och försöka igen." #~ msgid "" #~ "Auto orientates selected objects or all objects.If there are selected " @@ -6562,20 +6662,54 @@ msgstr "Support: föröka grenar vid lager %d" #~ "Auto placera valda objekt eller alla objekt. Om det finns valda objekt så " #~ "placeras endast dem. Alternativt så placeras alla objekt i projektet." +#~ msgid "The Config is not compatible and can not be loaded." +#~ msgstr "Ej kompatibel konfiguration; kan inte laddas." + +#~ msgid "Creating" +#~ msgstr "Creating" + +#~ msgid "Uploading" +#~ msgstr "Uploading" + +#~ msgid "Sending" +#~ msgstr "Sending" + +#~ msgid "Please fill report first." +#~ msgstr "Fyll i rapporten först." + +#~ msgid "Unable to create zip file" +#~ msgstr "Unable to create zip file" + +#~ msgid "Filaments Selection" +#~ msgstr "Filament Val" + +#~ msgid "Printer Selection" +#~ msgstr "Skrivar Val" + +#~ msgid "Auto arrange" +#~ msgstr "Auto arrangera" + +#~ msgid "Spiral mode" +#~ msgstr "Spiral läge" + +#~ msgid "Alt + Mouse wheel" +#~ msgstr "Alt + Mouse wheel" + +#~ msgid "" +#~ "An object is layed over the boundary of plate.\n" +#~ "Please solve the problem by moving it totally inside or outside plate." +#~ msgstr "" +#~ "Ett objekt är placerad över byggplattans begränsningar.\n" +#~ "Flytta objektet så det är helt inom eller utom byggplattans begränsningar." + #~ msgid "Clear all" #~ msgstr "Rensa allt" -#~ msgid "Creating" -#~ msgstr "Skapar" - #~ msgid "Ctrl + Any arrow" -#~ msgstr "Ctrl + Valfri pil" +#~ msgstr "Ctrl + Any arrow" #~ msgid "Ctrl + Left mouse button" -#~ msgstr "Ctrl + Vänster musknapp" - -#~ msgid "Debug" -#~ msgstr "Felsök" +#~ msgstr "Ctrl + Left mouse button" #~ msgid "Display printable box" #~ msgstr "Visa utskriftbar box" @@ -6593,11 +6727,11 @@ msgstr "Support: föröka grenar vid lager %d" #~ "2. The Filament presets\n" #~ "3. The Printer presets\n" #~ msgstr "" -#~ "Vill du synkronisera din personliga data från Bambu Cloud?\n" -#~ "Innehåller följande information:\n" -#~ "1. Process förinställningar\n" -#~ "2. Filament förinställningar\n" -#~ "3. Skrivare förinställningar\n" +#~ "Do you want to synchronize your personal data from Bambu Cloud? \n" +#~ "Contains the following information:\n" +#~ "1. Process presets\n" +#~ "2. Filament presets\n" +#~ "3. Printer presets\n" #~ msgid "" #~ "Don't retract when the travel is in infill area absolutely. That means " @@ -6606,26 +6740,17 @@ msgstr "Support: föröka grenar vid lager %d" #~ "Detta inaktiverar retraktion när rörelsen är helt inom ett ifyllnads " #~ "området och det inte kan läcka filament" -#~ msgid "Enter a search term" -#~ msgstr "Ange ett sökord" - -#~ msgid "Filaments Selection" -#~ msgstr "Filament Val" - -#~ msgid "Finished" -#~ msgstr "Färdig" - #~ msgid "Fix model locally" -#~ msgstr "Åtgärda modellen lokalt" +#~ msgstr "Fix model locally" #~ msgid "Fix model through cloud" -#~ msgstr "Åtgärda modellen via molnet" +#~ msgstr "Fix model through cloud" #~ msgid "Fragment Filter" #~ msgstr "Fragment Filter" #~ msgid "Fragment area" -#~ msgstr "Fragmentområde" +#~ msgstr "Fragment area" #~ msgid "Fragment filter" #~ msgstr "Fragment filter" @@ -6638,13 +6763,13 @@ msgstr "Support: föröka grenar vid lager %d" #~ "temperatur" #~ msgid "In the calibration of extrusion flow" -#~ msgstr "Vid kalibrering av extruderingsflödet" +#~ msgstr "In the calibration of extrusion flow" #~ msgid "In the calibration of laser scanner" -#~ msgstr "Vid kalibrering av laserskanner" +#~ msgstr "In the calibration of laser scanner" #~ msgid "Module" -#~ msgstr "Modul" +#~ msgstr "Module" #~ msgid "Monitoring" #~ msgstr "Övervakar" @@ -6653,19 +6778,16 @@ msgstr "Support: föröka grenar vid lager %d" #~ msgstr "Utdatafil" #~ msgid "Pause(heated bed temperature error)" -#~ msgstr "Paus (temperaturfel i byggplattan)" +#~ msgstr "Pause(heated bed temperature error)" #~ msgid "Pause(hotend temperature error)" -#~ msgstr "Paus (fel på temperaturen i hotend)" +#~ msgstr "Pause(hotend temperature error)" #~ msgid "Pause(toolhead shell off)" -#~ msgstr "Paus (verktygshuvudets skal är av)" - -#~ msgid "Please fill report first." -#~ msgstr "Fyll i rapporten först." +#~ msgstr "Pause(toolhead shell off)" #~ msgid "Please upgrade your printer first" -#~ msgstr "Uppgradera din skrivare först" +#~ msgstr "Please upgrade your printer first" #~ msgid "Position:" #~ msgstr "Position:" @@ -6674,14 +6796,11 @@ msgstr "Support: föröka grenar vid lager %d" #~ "Preview only mode:\n" #~ "The loaded file contains gcode only." #~ msgstr "" -#~ "Endast förhandsgranskningsläge:\n" -#~ "Den inlästa filen innehåller endast G-kod." +#~ "Preview only mode:\n" +#~ "The loaded file contains G-code only." #~ msgid "Preview only mode for gcode file." -#~ msgstr "Endast förhandsgranskningsläge för G-kod." - -#~ msgid "Printer Selection" -#~ msgstr "Skrivar Val" +#~ msgstr "Preview only mode for G-code file." #~ msgid "" #~ "Push new filament \n" @@ -6690,14 +6809,11 @@ msgstr "Support: föröka grenar vid lager %d" #~ "Mata nytt filament\n" #~ "till extrudern" -#~ msgid "Sending" -#~ msgstr "Skickar" - #~ msgid "Shift + Any arrow" -#~ msgstr "Skift+valfri pil" +#~ msgstr "Shift + Any arrow" #~ msgid "Shift + Mouse wheel" -#~ msgstr "Shift+mushjulet" +#~ msgstr "Shift + Mouse wheel" #~ msgid "Show Model Mesh(TODO)" #~ msgstr "Visa Modell Mesh(TODO)" @@ -6708,38 +6824,19 @@ msgstr "Support: föröka grenar vid lager %d" #~ msgid "Show Printable Box(TODO)" #~ msgstr "Visa Utskriftbar Box(TODO)" -#~ msgid "Spiral mode" -#~ msgstr "Spiral läge" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" -#~ "Framgångsrikt skickat. Kommer automatiskt att hoppa till enhetssidan om " -#~ "%s s" +#~ "Successfully sent. Will automatically jump to the device page in %s s" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Byte av moln miljö, Logga in igen!" -#~ msgid "The Config is not compatible and can not be loaded." -#~ msgstr "Ej kompatibel konfiguration; kan inte laddas." - #~ msgid "" #~ "The firmware versions of printer and AMS are too low.Please update to the " #~ "latest version before sending the print job" #~ msgstr "" -#~ "Programvarans version av skrivare och AMS är för låga. Uppdatera till den " -#~ "senaste versionen innan du skickar utskriftsjobbet" - -#~ msgid "Unable to create zip file" -#~ msgstr "Det gick inte att skapa zip-fil" - -#~ msgid "Uploading" -#~ msgstr "Laddar upp" +#~ "The firmware versions of the printer and AMS are too low. Please update " +#~ "them to the latest version before sending any print jobs." #~ msgid "User pause" -#~ msgstr "Användarpaus" - -#~ msgid "Waiting" -#~ msgstr "Väntar" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "3mf ej kompatibel, laddar endast geometrin !" +#~ msgstr "User pause" diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index e428a3bda2..258da0caf2 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-26 14:09+0800\n" -"PO-Revision-Date: 2022-08-07 21:57+0800\n" +"POT-Creation-Date: 2022-08-30 14:28+0800\n" +"PO-Revision-Date: 2022-08-05 11:49+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" "Language: zh_CN\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1\n" msgid "Supports Painting" msgstr "支撑绘制" @@ -57,7 +57,7 @@ msgid "Perform" msgstr "执行" msgid "Gap area" -msgstr "" +msgstr "间隙面积" msgid "Set pen size" msgstr "设置画笔大小" @@ -336,6 +336,9 @@ msgstr "外观面检测" msgid "Perform Recognition" msgstr "执行检测" +msgid "Clipping of view" +msgstr "剪切视图" + msgid "Reset direction" msgstr "重置方向" @@ -455,7 +458,7 @@ msgstr "访问码不正确" #, c-format, boost-format msgid "Connect %s failed! [SN:%s, code=%s]" -msgstr "连接 %s 失败 [SN:%s, code=%s]" +msgstr "连接 %s 失败。[SN:%s, code=%s]" msgid "" "BambuStudio configuration file may be corrupted and is not abled to be " @@ -1112,7 +1115,7 @@ msgid "" msgstr "自动摆放失败,处理对象几何数据时遇到异常。" msgid "Arranging" -msgstr "自动摆盘中" +msgstr "自动摆放" msgid "Arranging canceled." msgstr "已取消自动摆放。" @@ -1221,6 +1224,9 @@ msgstr "服务不可用" msgid "Unkown Error." msgstr "未知错误" +msgid "Please Fill Task Report." +msgstr "请填写打印报告" + msgid "Sending print configuration" msgstr "正在发送打印配置" @@ -2113,6 +2119,15 @@ msgstr "" msgid "Invalid input." msgstr "" +msgid "Enter a search term" +msgstr "输入搜索内容" + +msgid "Online" +msgstr "在线" + +msgid "Offline" +msgstr "离线" + msgid "Application is closing" msgstr "正在关闭应用程序" @@ -2134,6 +2149,9 @@ msgstr "设备" msgid "Project" msgstr "项目" +msgid "Debug" +msgstr "调试" + msgid "Slice" msgstr "切片" @@ -2171,6 +2189,9 @@ msgstr "检查新版本" msgid "&About %s" msgstr "关于 %s" +msgid "Show Log" +msgstr "" + msgid "Open Network Test" msgstr "" @@ -2245,9 +2266,24 @@ msgstr "导入 3MF/STL/STEP/OBJ/AMF" msgid "Load a model" msgstr "加载模型" +msgid "Import Configs" +msgstr "导入配置" + +msgid "Load configs" +msgstr "" + +msgid "Import" +msgstr "导入" + msgid "Export all objects as STL" msgstr "导出所有对象为STL" +msgid "Export Generic 3MF" +msgstr "导出通用 3MF" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "导出不含 3mf 扩展的 3mf 文件" + msgid "Export current Sliced file" msgstr "导出当前已切片的文件" @@ -2257,6 +2293,12 @@ msgstr "导出 G-code" msgid "Export current plate as G-code" msgstr "导出当前盘的G-code" +msgid "Export &Configs" +msgstr "导出配置" + +msgid "Export current configuration to files" +msgstr "" + msgid "Export" msgstr "导出" @@ -2369,8 +2411,37 @@ msgstr "" msgid "&Help" msgstr "" -msgid "Save configuration as:" -msgstr "预设另存为:" +msgid "Overwrite file" +msgstr "覆盖文件" + +msgid "Yes to All" +msgstr "全是" + +msgid "No to All" +msgstr "全否" + +msgid "Choose a directory" +msgstr "选择目录" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "共导出 %d 个配置(仅包含非系统配置)" + +msgid "Export result" +msgstr "导出结果" + +msgid "Select profile to load:" +msgstr "" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "共导入 %d 个配置(仅包含非系统且兼容的配置)" + +msgid "Import result" +msgstr "导入结果" msgid "File is missing" msgstr "文件丢失" @@ -2420,6 +2491,58 @@ msgstr "正在播放中……" msgid "Load failed [%d]!" msgstr "加载失败 [%d]!" +msgid "Year" +msgstr "年" + +msgid "Month" +msgstr "月" + +msgid "All Files" +msgstr "所有文件" + +msgid "Video" +msgstr "录像" + +msgid "Download" +msgstr "下载" + +msgid "Management" +msgstr "管理" + +msgid "No printers." +msgstr "未选择打印机" + +msgid "Connecting..." +msgstr "连接中..." + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "连接失败 [%d]!" + +msgid "Loading file list..." +msgstr "加载文件列表..." + +msgid "No files" +msgstr "文件列表为空" + +msgid "Choose save directory" +msgstr "选择保存目录" + +msgid "Waiting" +msgstr "等待中" + +msgid "Retry" +msgstr "重试" + +msgid "Failed" +msgstr "失败" + +msgid "Open" +msgstr "打开" + +msgid "Finished" +msgstr "完成" + msgid "Speed:" msgstr "速度:" @@ -2444,9 +2567,6 @@ msgstr "交换Y/Z轴" msgid "Camera" msgstr "摄像机" -msgid "Video" -msgstr "录像" - msgid "Printing Progress" msgstr "打印进度" @@ -2525,9 +2645,6 @@ msgstr "无法连接服务器" msgid "Failed to connect to the printer" msgstr "无法连接打印机" -msgid "Connecting..." -msgstr "连接中..." - msgid "OK" msgstr "确认" @@ -2561,9 +2678,6 @@ msgstr "%s 信息" msgid "%s information" msgstr "%s 信息" -msgid "Download" -msgstr "下载" - msgid "Skip" msgstr "跳过" @@ -2782,11 +2896,11 @@ msgstr "恢复" msgid "Loading file: %s" msgstr "加载文件:%s" -msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "该3mf文件不兼容,仅加载几何数据。" +msgid "The 3mf is not from Bambu lab, load geometry data only." +msgstr "" msgid "Load 3mf" -msgstr "加载3mf" +msgstr "" msgid "The Config can not be loaded." msgstr "" @@ -2812,8 +2926,8 @@ msgid "" "software.\n" msgstr "" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgid "the 3mf is not compatible, load geometry data only!" +msgstr "该3mf文件不兼容,仅加载几何数据!" msgid "Incompatible 3mf" msgstr "不兼容的3mf" @@ -3332,12 +3446,6 @@ msgstr "为“%1%”,添加“%2%”为一个新预设" msgid "Simply switch to \"%1%\"" msgstr "直接切换到“%1%”" -msgid "Online" -msgstr "在线" - -msgid "Offline" -msgstr "离线" - msgid "My Device" msgstr "我的设备" @@ -3442,7 +3550,9 @@ msgstr "" msgid "" "The printer firmware only supports sequential mapping of filament => AMS " "slot." -msgstr "打印机固件版本仅支持材料=>AMS槽位的顺序映射。" +msgstr "" +"已自动建立 \"耗材丝列表=>AMS槽位\" 的映射关系。 可点击上方具体的耗材丝手动设" +"置其所对应的AMS槽位" msgid "Preparing print job" msgstr "正在准备打印任务" @@ -3847,9 +3957,6 @@ msgstr "能力" msgid "Show all presets (including incompatible)" msgstr "显示所有预设(包括不兼容的)" -msgid "Compare Presets" -msgstr "" - msgid "Add File" msgstr "" @@ -4092,16 +4199,16 @@ msgid "Select all objects" msgstr "选择所有对象" msgid "Gizmo move" -msgstr "移动工具" +msgstr "线框移动" msgid "Gizmo scale" -msgstr "缩放工具" +msgstr "线框缩放" msgid "Gizmo rotate" -msgstr "旋转工具" +msgstr "旋转物件" msgid "Gizmo cut" -msgstr "剪切工具" +msgstr "剪切物件" msgid "Gizmo Place face on bed" msgstr "选择底面" @@ -4110,7 +4217,7 @@ msgid "Gizmo SLA support points" msgstr "SLA支撑点" msgid "Gizmo FDM paint-on seam" -msgstr "FDM绘制接缝" +msgstr "FDM涂装接缝" msgid "Plater" msgstr "准备" @@ -4615,7 +4722,7 @@ msgstr "非首层热床温度。0值表示这个耗材丝不支持高温打印 msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Textured PEI Plate" -msgstr "非首层热床温度。0值表示这个耗材丝不支持低温打印热床" +msgstr "非首层热床温度。0值表示这个耗材丝不支持纹理PEI热床" msgid "Initial layer" msgstr "首层" @@ -5660,6 +5767,9 @@ msgstr "对齐" msgid "Back" msgstr "背面" +msgid "Random" +msgstr "" + msgid "Skirt distance" msgstr "Skirt距离" @@ -6202,13 +6312,8 @@ msgstr "正在优化走线" msgid "Empty layers around bottom are replaced by nearest normal layers." msgstr "底部出现空层,已被最近的正常层替换。" -msgid "" -"The model has overlapping or self-intersecting facets. I tried to repair it, " -"however you might want to check the results or repair the input file and " -"retry." +msgid "The model has too many empty layers." msgstr "" -"模型有重叠或自交的面片。已尝试修复,请检查结果是否正确,或修复输入文件后重" -"试。" msgid "Slicing mesh" msgstr "正在切片网格" @@ -6251,6 +6356,9 @@ msgstr "支撑:正在修补层%d的空洞" msgid "Support: propagate branches at layer %d" msgstr "支撑:正在生长层%d的树枝" +#~ msgid "Save configuration as:" +#~ msgstr "预设另存为:" + #~ msgid "Line type" #~ msgstr "走线类型" @@ -6280,11 +6388,13 @@ msgstr "支撑:正在生长层%d的树枝" #~ "generation." #~ msgstr "对象“%s”可能需要添加支撑才能打印。建议开启支撑生成。" -#~ msgid "Clipping of view" -#~ msgstr "剪切视图" - -#~ msgid "the 3mf is not compatible, load geometry data only!" -#~ msgstr "该3mf文件不兼容,仅加载几何数据!" +#~ msgid "" +#~ "The model has overlapping or self-intersecting facets. I tried to repair " +#~ "it, however you might want to check the results or repair the input file " +#~ "and retry." +#~ msgstr "" +#~ "模型有重叠或自交的面片。已尝试修复,请检查结果是否正确,或修复输入文件后重" +#~ "试。" #~ msgid "" #~ "Auto orientates selected objects or all objects.If there are selected " @@ -6300,9 +6410,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ msgid "default value" #~ msgstr "默认值" -#~ msgid "Auto arrange" -#~ msgstr "自动摆盘" - #~ msgid "" #~ "The filament index exceeds the AMS's slot count and cannot send the print " #~ "job." @@ -6316,53 +6423,52 @@ msgstr "支撑:正在生长层%d的树枝" #~ msgid "Downloading Bambu Network plug-in" #~ msgstr "正在下载Bambu网络插件" -#~ msgid "Filaments Selection" -#~ msgstr "材料选择" - -#~ msgid "Printer Selection" -#~ msgstr "打印机选择" - -#~ msgid "Spiral mode" -#~ msgstr "旋转模式" - -#~ msgid "Fragment area" -#~ msgstr "碎片面积阈值" - -#~ msgid "Clear all" -#~ msgstr "清除所有" - -#~ msgid "Connect %s[SN:%s] failed!" -#~ msgstr "连接 %s[SN:%s]失败." - -#~ msgid "Printer firmware does not support material = >ams slot mapping." -#~ msgstr "打印机固件不支持材料=>AMS槽位映射" - #~ msgid "Creating" #~ msgstr "正在创建" #~ msgid "Uploading" #~ msgstr "正在上传" -#~ msgid "Waiting" -#~ msgstr "等待中" - #~ msgid "Sending" #~ msgstr "发送中" -#~ msgid "Finished" -#~ msgstr "完成" - #~ msgid "Please fill report first." #~ msgstr "请先填写报告。" #~ msgid "Unable to create zip file" #~ msgstr "无法创建zip压缩文件" -#~ msgid "Enter a search term" -#~ msgstr "输入搜索内容" +#~ msgid "Printer firmware does not support material = >ams slot mapping." +#~ msgstr "打印机固件不支持材料=>AMS槽位映射" -#~ msgid "Debug" -#~ msgstr "调试" +#~ msgid "Filaments Selection" +#~ msgstr "材料选择" + +#~ msgid "Printer Selection" +#~ msgstr "打印机选择" + +#~ msgid "Auto arrange" +#~ msgstr "自动摆盘" + +#~ msgid "Spiral mode" +#~ msgstr "旋转模式" + +#~ msgid "" +#~ "Unprintable area in XY plane. For example, X1 Series printers use the " +#~ "front left corner to cut filament in multi-material printing. The area is " +#~ "expressed as polygon by points in following format: \"XxY, XxY, ...\"" +#~ msgstr "" +#~ "XY平面上的不可打印区域。例如,X1系列打印机在换料过程中,会使用左前角区域来" +#~ "切断耗材丝。这个多边形区域由以下格式的点表示:“XxY,XxY,…”" + +#~ msgid "Connect %s[SN:%s] failed!" +#~ msgstr "连接 %s[SN:%s]失败." + +#~ msgid "Fragment area" +#~ msgstr "碎片面积阈值" + +#~ msgid "Clear all" +#~ msgstr "清除所有" #~ msgid "Monitoring" #~ msgstr "实时视频" @@ -7490,9 +7596,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ msgid "Current bed type do not support filament " #~ msgstr "当前热床不支持耗材丝" -#~ msgid "Open" -#~ msgstr "打开" - #~ msgid "Load from disk" #~ msgstr "从硬盘加载" @@ -9412,9 +9515,6 @@ msgstr "支撑:正在生长层%d的树枝" #~ "\n" #~ "是否导入这个配置?" -#~ msgid "Import" -#~ msgstr "导入" - #~ msgid "Don't import" #~ msgstr "不导入" diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index b2335228b5b5e9d926ea403f2cd40ca04b1c21ae..49fee70c114ccaa53e18052ea59b96dc365b90da 100644 GIT binary patch delta 40996 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 XmrC*_F@IFcAnKWlEC*Rn?vnoo<_%1A diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index ce4c9a1feaad3eacc305309e9169704f9a62980c..c4cc99d58762f1fdab54521590ad63a375762831 100644 GIT binary patch delta 39995 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 diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index 576e7295d986d47731a4fab2d85463d206392a52..11342d6c0dfb0df16189773d1f2c5f4142d5214d 100644 GIT binary patch delta 38856 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໹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 delta 36878 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 P@dta=j&%<9`sDl{w|Nv9 diff --git a/resources/i18n/hu/BambuStudio.mo b/resources/i18n/hu/BambuStudio.mo index a479223771293655d9014300ba1a102f9a825e65..5a78d2fa43281f1121798ca9f832d06c748da1e6 100644 GIT binary patch delta 31517 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 G`u_mhbtshp literal 164253 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 QJ0d^@F;rLXv;d(04=c1h`Tzg` diff --git a/resources/i18n/nl/BambuStudio.mo b/resources/i18n/nl/BambuStudio.mo index 26e8a7659f7915654a009b34ecb0938927aa7e11..32e3a2e94a6b1df1c1ffd0a694e4579c89d4dd83 100644 GIT binary patch delta 39576 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 ATmS$7 delta 42176 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 qDFAhYESvDpv0RD6!sb|()kk}*!{Bfbg% diff --git a/resources/i18n/sv/BambuStudio.mo b/resources/i18n/sv/BambuStudio.mo index c4f8c84ff254474e5b1a6b784304bd995f20642a..b976530516a1306ce0d3ea2457a18f54e3cd3047 100644 GIT binary patch delta 39244 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 delta 38727 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 QR|#kmBcef_fS2C?11&jt(*OVf From 0b323649d335584a0b3145da3aa0b4bfe45281fb Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Tue, 9 Aug 2022 14:53:34 +0800 Subject: [PATCH 109/137] ENH: order support toolpaths to reduce extra travels Signed-off-by: yifan.wu Change-Id: Ifae5807ff094eede1eaf7494430fdd174572a021 (cherry picked from commit dfb3fc991a6f4a6e7dcdcce902f26ffa789f57fb) --- src/libslic3r/GCode.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d15198a5d8..be78077b4d 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2918,12 +2918,7 @@ GCode::LayerResult GCode::process_layer( m_layer = layers[instance_to_print.layer_id].tree_support_layer; } m_object_layer_over_raft = false; - // BBS. Keep paths order -#if 0 - gcode += this->extrude_support( - // support_extrusion_role is erSupportMaterial, erSupportTransition, erSupportMaterialInterface or erMixed for all extrusion paths. - instance_to_print.object_by_extruder.support->chained_path_from(m_last_pos, instance_to_print.object_by_extruder.support_extrusion_role)); -#else + //BBS: print supports' brims first if (this->m_objSupportsWithBrim.find(instance_to_print.print_object.id()) != this->m_objSupportsWithBrim.end() && !print_wipe_extrusions) { this->set_origin(0., 0.); @@ -2953,12 +2948,10 @@ GCode::LayerResult GCode::process_layer( ExtrusionRole support_extrusion_role = instance_to_print.object_by_extruder.support_extrusion_role; bool is_overridden = support_extrusion_role == erSupportMaterialInterface ? support_intf_overridden : support_overridden; if (is_overridden == (print_wipe_extrusions != 0)) - support_eec.entities = filter_by_extrusion_role(instance_to_print.object_by_extruder.support->entities, instance_to_print.object_by_extruder.support_extrusion_role); + gcode += this->extrude_support( + // support_extrusion_role is erSupportMaterial, erSupportTransition, erSupportMaterialInterface or erMixed for all extrusion paths. + instance_to_print.object_by_extruder.support->chained_path_from(m_last_pos, support_extrusion_role)); - for (auto& ptr : support_eec.entities) - ptr = ptr->clone(); - gcode += this->extrude_support(support_eec); -#endif m_layer = layer_to_print.layer(); m_object_layer_over_raft = object_layer_over_raft; } From 73b84a5e77c5396f2feec7d8d583c6064007f718 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Tue, 30 Aug 2022 21:44:26 +0800 Subject: [PATCH 110/137] update the networking version Change-Id: I51d599324a8c354b4d7b465c78bbac1af835da06 --- src/slic3r/Utils/bambu_networking.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index 0df84d2038..3fa47eb532 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -36,7 +36,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.01.01.02" +#define BAMBU_NETWORK_AGENT_VERSION "01.01.02.01" //iot preset type strings From 562b52c6b99e8e19f4c2935c765640face2fa390 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Tue, 30 Aug 2022 22:27:25 +0800 Subject: [PATCH 111/137] fix the assert issue under debug mode Change-Id: I02b5e4e3229f695d89ac6f04aadeb831810dd3ff --- src/slic3r/GUI/BBLStatusBarSend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/BBLStatusBarSend.cpp b/src/slic3r/GUI/BBLStatusBarSend.cpp index 5d9eab1370..4694d11e88 100644 --- a/src/slic3r/GUI/BBLStatusBarSend.cpp +++ b/src/slic3r/GUI/BBLStatusBarSend.cpp @@ -93,7 +93,7 @@ void BBLStatusBarSend::set_progress(int val) return; //add the logic for arrange/orient jobs, which don't call stop_busy - if (!m_sizer->IsShown(m_prog)) { + if (!m_prog->IsShown()) { m_sizer->Show(m_prog); m_sizer->Show(m_cancelbutton); } From b5a21e6520b80de3ca26d0fd7e8639fb521d5bca Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Tue, 30 Aug 2022 22:28:57 +0800 Subject: [PATCH 112/137] add logic to remove the plugins folder when the version changed Change-Id: Idb0ac34376c4eed81bf37da7afe670d9d9a42457 --- src/slic3r/GUI/GUI_App.cpp | 51 +++++++++++++++++++++++++++----------- src/slic3r/GUI/GUI_App.hpp | 1 + 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 572215d7d9..f65e698ee3 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1092,7 +1092,7 @@ void GUI_App::post_init() if (hms_query) hms_query->check_hms_info(); }); - + std::string functional_config_file = Slic3r::resources_dir() + "/config.json"; DeviceManager::load_functional_config(encode_path(functional_config_file.c_str())); @@ -1482,6 +1482,19 @@ void GUI_App::restart_networking() BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(" exit, m_agent=%1%")%m_agent; } +void GUI_App::remove_old_networking_plugins() +{ + auto plugin_folder = boost::filesystem::path(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()) / "plugins"; + if (boost::filesystem::exists(plugin_folder)) { + BOOST_LOG_TRIVIAL(info) << "[remove_old_networking_plugins] remove the directory "<maj(); + int last_minor = m_last_config_version->min(); + int last_patch = m_last_config_version->patch()/100; + std::string studio_ver = SLIC3R_VERSION; + int cur_major = atoi(studio_ver.substr(0,2).c_str()); + int cur_minor = atoi(studio_ver.substr(3,2).c_str()); + int cur_patch = atoi(studio_ver.substr(6,2).c_str()); + BOOST_LOG_TRIVIAL(info) << boost::format("last app version {%1%.%2%.%3%}, current version {%4%.%5%.%6%}") + %last_major%last_minor%last_patch%cur_major%cur_minor%cur_patch; + if ((last_major != cur_major) + ||(last_minor != cur_minor) + ||(last_patch != cur_patch)) { + remove_old_networking_plugins(); + } } app_config->set("version", SLIC3R_VERSION); @@ -3022,16 +3045,16 @@ std::string GUI_App::handle_web_request(std::string cmd) this->request_open_project(path.value()); } } - } + } else if (command_str.compare("homepage_delete_recentfile") == 0) { if (root.get_child_optional("data") != boost::none) { pt::ptree data_node = root.get_child("data"); boost::optional path = data_node.get_optional("path"); - if (path.has_value()) { + if (path.has_value()) { this->request_remove_project(path.value()); } } - } + } else if (command_str.compare("homepage_delete_all_recentfile") == 0) { this->request_remove_project(""); } @@ -3039,8 +3062,8 @@ std::string GUI_App::handle_web_request(std::string cmd) if (root.get_child_optional("data") != boost::none) { pt::ptree data_node = root.get_child("data"); boost::optional path = data_node.get_optional("path"); - if (path.has_value()) - { + if (path.has_value()) + { boost::filesystem::path NowFile(path.value()); std::string FolderPath = NowFile.parent_path().make_preferred().string(); @@ -3081,7 +3104,7 @@ std::string GUI_App::handle_web_request(std::string cmd) e.SetEventObject(mainframe); wxPostEvent(mainframe, e); } - } + } else if (command_str.compare("userguide_wiki_open") == 0) { if (root.get_child_optional("data") != boost::none) { pt::ptree data_node = root.get_child("data"); @@ -3089,9 +3112,9 @@ std::string GUI_App::handle_web_request(std::string cmd) if (path.has_value()) { wxLaunchDefaultBrowser(path.value()); } - } + } } - + } } catch (...) { diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 17329a9eb1..993197722e 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -526,6 +526,7 @@ private: bool on_init_network(bool try_backup = false); void init_networking_callbacks(); void init_app_config(); + void remove_old_networking_plugins(); //BBS set extra header for http request std::map get_extra_header(); void init_http_extra_header(); From d54461413f7d4d955b51c3371cebfe59e95d8bb6 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Mon, 1 Aug 2022 15:26:59 +0800 Subject: [PATCH 113/137] ENH: add calibration and unload filament define new command for calibration and unload filament Change-Id: I834680740b4052d5719193a40945ca2704a3d858 Signed-off-by: Stone Li (cherry picked from commit c742fb5feb26938152858c44056d809fe18ce742) Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 41 ++++++++++++++++++++++---------- src/slic3r/GUI/Monitor.cpp | 12 ---------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 353b46eaa7..5f19d39c06 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1412,22 +1412,39 @@ int MachineObject::command_axis_control(std::string axis, double unit, double va int MachineObject::command_start_calibration() { - // fixed gcode file - json j; - j["print"]["command"] = "gcode_file"; - j["print"]["param"] = "/usr/etc/print/auto_cali_for_user.gcode"; - j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - return this->publish_json(j.dump()); + if (printer_type == "BL-P001" + || printer_type == "BL-P002") { + // fixed gcode file + json j; + j["print"]["command"] = "gcode_file"; + j["print"]["param"] = "/usr/etc/print/auto_cali_for_user.gcode"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + return this->publish_json(j.dump()); + } else { + json j; + j["print"]["command"] = "calibration"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + return this->publish_json(j.dump()); + } } int MachineObject::command_unload_filament() { - // fixed gcode file - json j; - j["print"]["command"] = "gcode_file"; - j["print"]["param"] = "/usr/etc/print/filament_unload.gcode"; - j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - return this->publish_json(j.dump()); + if (printer_type == "BL-P001" + || printer_type == "BL-P002") { + // fixed gcode file + json j; + j["print"]["command"] = "gcode_file"; + j["print"]["param"] = "/usr/etc/print/filament_unload.gcode"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + return this->publish_json(j.dump()); + } + else { + json j; + j["print"]["command"] = "unload_filament"; + j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); + return this->publish_json(j.dump()); + } } diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index c3c37af09e..ee12eea6bc 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -210,12 +210,6 @@ MonitorPanel::~MonitorPanel() m_hms_panel = new HMSPanel(m_tabpanel); m_tabpanel->AddPage(m_hms_panel, _L("HMS"),"", false); - -#if !BBL_RELEASE_TO_PUBLIC - m_debug_panel = new DebugPanel(m_tabpanel); - m_tabpanel->AddPage(m_debug_panel, _L("Debug"), "", false); -#endif - m_initialized = true; show_status((int)MonitorStatus::MONITOR_NO_PRINTER); } @@ -436,12 +430,6 @@ void MonitorPanel::update_all() if (m_upgrade_panel->IsShown()) { m_upgrade_panel->update(obj); } - -#if !BBL_RELEASE_TO_PUBLIC - if (m_debug_panel->IsShown()) { - m_debug_panel->update(obj); - } -#endif } bool MonitorPanel::Show(bool show) From 801b15966a9e222c24912fb0f2b671308aea2580 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 09:19:02 +0800 Subject: [PATCH 114/137] ENH: modify to new upgrade protocol Change-Id: I8d431ec3c5e9c81e7a7438c6b1db9febf01d4706 Signed-off-by: Stone Li --- src/slic3r/GUI/UpgradePanel.cpp | 49 +++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index fc5a5cf34b..d53338e596 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -336,26 +336,47 @@ void MachineInfoPanel::update_version_text(MachineObject* obj) } else { // update version text auto it = obj->module_vers.find("ota"); - if (obj->upgrade_new_version - && !obj->ota_new_version_number.empty()) { - if (it != obj->module_vers.end()) { - wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ota_new_version_number); - m_staticText_ver_val->SetLabelText(ver_text); + + // old protocol + if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { + if (obj->upgrade_new_version + && !obj->ota_new_version_number.empty()) { + if (it != obj->module_vers.end()) { + wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ota_new_version_number); + m_staticText_ver_val->SetLabelText(ver_text); + } + else { + m_staticText_ver_val->SetLabelText("-"); + } + m_ota_new_version_img->Show(); } else { - m_staticText_ver_val->SetLabelText("-"); + if (it != obj->module_vers.end()) { + wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); + m_staticText_ver_val->SetLabelText(ver_text); + } + else { + m_staticText_ver_val->SetLabelText("-"); + } + m_ota_new_version_img->Hide(); } - m_ota_new_version_img->Show(); - } - else { - if (it != obj->module_vers.end()) { + } else { + auto ota_it = obj->new_ver_list.find("ota"); + if (ota_it == obj->new_ver_list.end()) { wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); m_staticText_ver_val->SetLabelText(ver_text); + m_ota_new_version_img->Hide(); + } else { + if (ota_it->second.sw_new_ver != ota_it->second.sw_ver) { + m_ota_new_version_img->Show(); + wxString ver_text = wxString::Format("%s->%s", ota_it->second.sw_ver, ota_it->second.sw_new_ver); + m_staticText_ver_val->SetLabelText(ver_text); + } else { + m_ota_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); + m_staticText_ver_val->SetLabelText(ver_text); + } } - else { - m_staticText_ver_val->SetLabelText("-"); - } - m_ota_new_version_img->Hide(); } } } From 73f4c848de640b23e1958b1998bd7facc4619b61 Mon Sep 17 00:00:00 2001 From: wintergua Date: Fri, 26 Aug 2022 15:58:04 +0800 Subject: [PATCH 115/137] FIX: some brim might be ignored by mistake In current studio, a brim area will be ignored if it does not be connected to any object island. After patching, a brim area will be ignored if it does not connected to any object island and other brim areas. Change-Id: I1aef5cd1af12cf76746f7614807aa03956d625ad --- src/libslic3r/Brim.cpp | 51 ++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index f05af13b52..cd22476f3a 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -875,7 +875,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, for (const auto& objectWithExtruder : objPrintVec) brimToWrite.insert({ objectWithExtruder.first, {true,true} }); - std::map objectIslandMap; + ExPolygons objectIslands; for (unsigned int extruderNo : printExtruders) { ++extruderNo; @@ -972,7 +972,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, append_and_translate(brim_area, brim_area_object, instance, print, brimAreaMap); append_and_translate(no_brim_area, no_brim_area_object, instance); append_and_translate(holes, holes_object, instance); - append_and_translate(objectIslandMap[instance.print_object->id()], objectIsland, instance); + append_and_translate(objectIslands, objectIsland, instance); } if (brimAreaMap.find(object->id()) != brimAreaMap.end()) @@ -1036,27 +1036,44 @@ static ExPolygons outer_inner_brim_area(const Print& print, } } } - for (const PrintObject* object : print.objects()) { + for (const PrintObject* object : print.objects()) if (brimAreaMap.find(object->id()) != brimAreaMap.end()) { brimAreaMap[object->id()] = diff_ex(brimAreaMap[object->id()], no_brim_area); - // BBS: brim should be contacted to at least one object island - if (objectIslandMap.find(object->id()) != objectIslandMap.end() && !objectIslandMap[object->id()].empty()) { - auto tempArea = brimAreaMap[object->id()]; - brimAreaMap[object->id()].clear(); - // the error bound is set to 2x flow width - for (auto& ta : tempArea) { - auto offsetedTa = offset_ex(ta, print.brim_flow().scaled_spacing() * 2, jtRound, SCALED_RESOLUTION); - if (!intersection_ex(offsetedTa, objectIslandMap[object->id()]).empty()) - brimAreaMap[object->id()].push_back(ta); - } - } - } - if (supportBrimAreaMap.find(object->id()) != supportBrimAreaMap.end()) supportBrimAreaMap[object->id()] = diff_ex(supportBrimAreaMap[object->id()], no_brim_area); } - //brim_area = diff_ex(brim_area, no_brim_area); + + brim_area.clear(); + for (const PrintObject* object : print.objects()) { + // BBS: brim should be contacted to at least one object's island or brim area + if (brimAreaMap.find(object->id()) != brimAreaMap.end()) { + // find other objects' brim area + ExPolygons otherExPolys; + for (const PrintObject* otherObject : print.objects()) { + if ((otherObject->id() != object->id()) && (brimAreaMap.find(otherObject->id()) != brimAreaMap.end())) { + expolygons_append(otherExPolys, brimAreaMap[otherObject->id()]); + } + } + + auto tempArea = brimAreaMap[object->id()]; + brimAreaMap[object->id()].clear(); + + for (int ia = 0; ia != tempArea.size(); ++ia) { + // find this object's other brim area + ExPolygons otherExPoly; + for (int iao = 0; iao != tempArea.size(); ++iao) + if (iao != ia) otherExPoly.push_back(tempArea[iao]); + + auto offsetedTa = offset_ex(tempArea[ia], print.brim_flow().scaled_spacing() * 2, jtRound, SCALED_RESOLUTION); + if (!intersection_ex(offsetedTa, objectIslands).empty() || + !intersection_ex(offsetedTa, otherExPoly).empty() || + !intersection_ex(offsetedTa, otherExPolys).empty()) + brimAreaMap[object->id()].push_back(tempArea[ia]); + } + expolygons_append(brim_area, brimAreaMap[object->id()]); + } + } return brim_area; } // Flip orientation of open polylines to minimize travel distance. From 79944bd0fcf29d264d0e1a8b1c857d16030f6b5e Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 31 Aug 2022 11:35:19 +0800 Subject: [PATCH 116/137] fix a typo issue submitted previously Change-Id: Ia31522fb3133f90468e6ba034daa8feca6d9c69d --- src/slic3r/GUI/GUI_App.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index f65e698ee3..5c04befe91 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1863,7 +1863,7 @@ bool GUI_App::on_init_inner() } } for (auto d : dialogStack) - d->EndModal(1); + d->EndModal(wxID_CANCEL); }); std::map extra_headers = get_extra_header(); From bb1be588158496d8cde03eb8dfdc05e14058f89b Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 10:25:01 +0800 Subject: [PATCH 117/137] FIX: check bind status in update timer Change-Id: I2079e1ef96cdffa0a9776b72942fd45ec88be10b Signed-off-by: Stone Li --- src/slic3r/GUI/Monitor.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index ee12eea6bc..058f4ff922 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -371,6 +371,15 @@ void MonitorPanel::update_all() return; obj = dev->get_selected_machine(); + // check valid machine + if (obj && dev->get_my_machine(obj->dev_id) == nullptr) { + dev->set_selected_machine(""); + if (m_agent) + m_agent->set_user_selected_machine(""); + show_status((int)MONITOR_NO_PRINTER); + return; + } + //BBS check mqtt connections if user is login if (wxGetApp().is_user_login()) { // check mqtt connection and reconnect if disconnected From 1c7b1830356b3a6b02e6cc7d1bf5cfe0ac9f045a Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 31 Aug 2022 11:15:46 +0800 Subject: [PATCH 118/137] FIX:add protection when slice information is not available Change-Id: Iaf654c8a14252f6647a64ded97d4ded3e79d7057 --- src/slic3r/GUI/StatusPanel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 00f0644ea5..cb09b321b0 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1753,6 +1753,7 @@ void StatusPanel::update_basic_print_data(bool def) { if (def) { if (!obj) return; + if (!obj->slice_info) return; wxString prediction = wxString::Format("%s", get_bbl_time_dhms(obj->slice_info->prediction)); wxString weight = wxString::Format("%.2fg", obj->slice_info->weight); From 8eb9d6a86350748c0f9d414d52f95bde094442ad Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 31 Aug 2022 09:56:09 +0800 Subject: [PATCH 119/137] FIX:disable rename except picture type Change-Id: I69ec39d2e3066102f7116bb17af8e26120af237d --- src/slic3r/GUI/Auxiliary.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 680bcbb6ce..e7756fd350 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -239,7 +239,12 @@ void AuFile::PaintForeground(wxDC &dc) dc.DrawText(m_add_file, pos); return; } - dc.DrawBitmap(m_file_edit_mask.bmp(), 0, size.y - m_file_edit_mask.GetBmpSize().y); + + if (m_type == MODEL_PICTURE) { + dc.DrawBitmap(m_file_edit_mask.bmp(), 0, size.y - m_file_edit_mask.GetBmpSize().y); + } + + dc.SetFont(Label::Body_14); dc.SetTextForeground(*wxWHITE); if (m_type == MODEL_PICTURE) { @@ -266,11 +271,11 @@ void AuFile::PaintForeground(wxDC &dc) dc.DrawRectangle(pos.x, pos.y, 2, FromDIP(30)); } else { // right text - auto sizet = dc.GetTextExtent(cover_text_right); + /* auto sizet = dc.GetTextExtent(cover_text_right); auto pos = wxPoint(0, 0); - pos.x = (size.x - sizet.x) / 2; - pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); - dc.DrawText(cover_text_right, pos); + pos.x = (size.x - sizet.x) / 2; + pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); + dc.DrawText(cover_text_right, pos);*/ } } @@ -409,8 +414,8 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) if (pos.x > cover_left && pos.x < cover_right && pos.y > cover_top && pos.y < cover_bottom) { if(m_type == MODEL_PICTURE) on_set_cover(); - else - on_set_rename(); + /* else + on_set_rename();*/ return; } From 6b580d285cc2848adc3449060b72f4aa65ed982f Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 30 Aug 2022 18:39:29 +0800 Subject: [PATCH 120/137] FIX: some bugs with media files Change-Id: Ia5e0710a2979ae338902042e520ba9210e3a557d --- src/slic3r/GUI/ImageGrid.cpp | 8 ++++---- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 11 +++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 5305ec97d1..3fdccc7d37 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -480,13 +480,13 @@ void ImageGrid::render(wxDC& dc) if (file.IsDownload()) { if (file.progress == -1) { secondAction = _L("Cancel"); - dc.DrawText(_L("Waiting"), pt + wxPoint{24, m_image_size.GetHeight() - 36}); + dc.DrawText(_L("Waiting"), pt + wxPoint{24, m_image_size.GetHeight() - 64}); } else if (file.progress < 0) { secondAction = _L("Retry"); - dc.DrawText(_L("Failed"), pt + wxPoint{24, m_image_size.GetHeight() - 36}); + dc.DrawText(_L("Failed"), pt + wxPoint{24, m_image_size.GetHeight() - 64}); } else if (file.progress >= 100) { secondAction = _L("Open"); - dc.DrawText(_L("Finished"), pt + wxPoint{24, m_image_size.GetHeight() - 36}); + dc.DrawText(_L("Finished"), pt + wxPoint{24, m_image_size.GetHeight() - 64}); } else { secondAction = _L("Cancel"); if (file.progress != m_background_progress) { @@ -567,7 +567,7 @@ void Slic3r::GUI::ImageGrid::renderButtons(wxDC &dc, wxStringList const &texts, wxRect rect(rect2); rect.SetWidth(rect.GetWidth() / texts.size()); int state = m_pressed ? StateColor::Pressed : StateColor::Hovered; - dc.SetFont(Label::Body_12); + dc.SetFont(Label::Body_14); //mdc.SelectObject(m_button_background); for (size_t i = 0; i < texts.size(); ++i) { int states = hit == i ? state : 0; diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 621c614565..5bcf37da69 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -290,6 +290,8 @@ void PrinterFileSystem::BuildGroups() { if (m_file_list.empty()) return; + m_group_year.clear(); + m_group_month.clear(); wxDateTime t = wxDateTime((time_t) m_file_list.front().time); m_group_year.push_back(0); m_group_month.push_back(0); @@ -451,10 +453,11 @@ void PrinterFileSystem::UpdateFocusThumbnail() wxString mimetype = resp.value("mimetype", "image/jpeg"); std::string thumbnail = resp["thumbnail"]; boost::uint32_t size = resp["size"]; - wxMemoryInputStream mis(data, size); - wxImage image(mis, mimetype); - thumb.name = thumbnail; - thumb.thumbnail = image; + thumb.name = thumbnail; + if (size > 0) { + wxMemoryInputStream mis(data, size); + thumb.thumbnail = wxImage(mis, mimetype); + } return 0; }, [this](int result, Thumbnail const &thumb) { From dbe414c38cacc6e63b795ac6f478f8f512d79dcb Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Wed, 31 Aug 2022 11:45:42 +0800 Subject: [PATCH 121/137] ENH: revise the filament preset. Signed-off-by: qing.zhang Change-Id: Ia9a82b87746ac7a70100ffd5f2383422069e0a81 --- resources/profiles/BBL.json | 2 +- .../BBL/filament/Bambu TPU 95A @BBL X1C.json | 2 +- .../profiles/BBL/filament/Generic PETG @base.json | 5 ++++- .../BBL/filament/Generic PLA @0.2 nozzle.json | 3 +++ .../profiles/BBL/filament/Generic PLA @base.json | 3 +++ resources/profiles/BBL/filament/Generic PLA-CF.json | 12 ++++++++++++ resources/profiles/BBL/filament/Generic TPU.json | 3 +++ .../profiles/BBL/filament/PolyLite PLA @BBL X1C.json | 3 +++ .../BBL/filament/PolyTerra PLA @BBL X1C.json | 3 +++ .../profiles/BBL/filament/fdm_filament_abs.json | 2 +- .../profiles/BBL/filament/fdm_filament_asa.json | 2 +- resources/profiles/BBL/filament/fdm_filament_pc.json | 2 +- .../profiles/BBL/filament/fdm_filament_pla.json | 4 ++-- .../profiles/BBL/filament/fdm_filament_pva.json | 6 +++--- .../profiles/BBL/filament/fdm_filament_tpu.json | 4 ++-- 15 files changed, 43 insertions(+), 13 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index bf33fe5bce..a9087f9dba 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.02.00", + "version": "01.01.02.01", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json index 35c3322605..2ef09cab10 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @BBL X1C.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "Bambu TPU 95A @base", "filament_max_volumetric_speed": [ - "6.4" + "3.6" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json index a9b4ab5784..55989d9ff8 100644 --- a/resources/profiles/BBL/filament/Generic PETG @base.json +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -38,7 +38,10 @@ "filament_max_volumetric_speed": [ "10" ], + "nozzle_temperature_range_high": [ + "270" + ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S255\n{endif};Prevent PETG from jamming" + " ; filament start gcode\n{if (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{endif}" ] } diff --git a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json index bcf1c6080b..d42c175c22 100644 --- a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json @@ -8,6 +8,9 @@ "filament_max_volumetric_speed": [ "2" ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle" ] diff --git a/resources/profiles/BBL/filament/Generic PLA @base.json b/resources/profiles/BBL/filament/Generic PLA @base.json index d0d179742a..43de916b4a 100644 --- a/resources/profiles/BBL/filament/Generic PLA @base.json +++ b/resources/profiles/BBL/filament/Generic PLA @base.json @@ -13,5 +13,8 @@ ], "slow_down_layer_time": [ "8" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming" ] } diff --git a/resources/profiles/BBL/filament/Generic PLA-CF.json b/resources/profiles/BBL/filament/Generic PLA-CF.json index fd54051e39..3e28238475 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF.json @@ -21,6 +21,18 @@ "additional_cooling_fan_speed": [ "0" ], + "temperature_vitrification": [ + "55" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Generic TPU.json b/resources/profiles/BBL/filament/Generic TPU.json index d28d152991..a03c7a253a 100644 --- a/resources/profiles/BBL/filament/Generic TPU.json +++ b/resources/profiles/BBL/filament/Generic TPU.json @@ -9,6 +9,9 @@ "filament_max_volumetric_speed": [ "3.2" ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json index 292239380f..c4a4ec1b10 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C.json @@ -8,6 +8,9 @@ "filament_max_volumetric_speed": [ "15" ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle" ] diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json index 365b882631..4eb5b3376d 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C.json @@ -8,6 +8,9 @@ "filament_max_volumetric_speed": [ "22" ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle" ] diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index a760f31ea7..c89c9bf55f 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -77,7 +77,7 @@ "240" ], "nozzle_temperature_range_high": [ - "270" + "280" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index 6fe3caf560..7f05e2b3c2 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -77,7 +77,7 @@ "240" ], "nozzle_temperature_range_high": [ - "270" + "280" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/BBL/filament/fdm_filament_pc.json b/resources/profiles/BBL/filament/fdm_filament_pc.json index dd46925585..375b776812 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pc.json +++ b/resources/profiles/BBL/filament/fdm_filament_pc.json @@ -71,7 +71,7 @@ "280" ], "temperature_vitrification": [ - "140" + "120" ], "nozzle_temperature_range_low": [ "260" diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index 2337f68bbb..92ecf94c67 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -77,7 +77,7 @@ "190" ], "nozzle_temperature_range_high": [ - "230" + "240" ], "slow_down_min_speed": [ "20" @@ -89,6 +89,6 @@ "70" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{endif};Prevent PLA from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" ] } diff --git a/resources/profiles/BBL/filament/fdm_filament_pva.json b/resources/profiles/BBL/filament/fdm_filament_pva.json index 9556fbd3f3..e3cbf9fa2a 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pva.json +++ b/resources/profiles/BBL/filament/fdm_filament_pva.json @@ -77,13 +77,13 @@ "220" ], "temperature_vitrification": [ - "50" + "55" ], "nozzle_temperature_range_low": [ "190" ], "nozzle_temperature_range_high": [ - "250" + "240" ], "slow_down_min_speed": [ "50" @@ -95,6 +95,6 @@ "70" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{endif};Prevent PLA from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" ] } diff --git a/resources/profiles/BBL/filament/fdm_filament_tpu.json b/resources/profiles/BBL/filament/fdm_filament_tpu.json index 19444ec0a7..2bbfefdd82 100644 --- a/resources/profiles/BBL/filament/fdm_filament_tpu.json +++ b/resources/profiles/BBL/filament/fdm_filament_tpu.json @@ -74,7 +74,7 @@ "240" ], "temperature_vitrification": [ - "60" + "30" ], "nozzle_temperature_range_low": [ "200" @@ -83,6 +83,6 @@ "250" ], "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder]>30)}M106 P3 S255\n{endif};Prevent TPU from jamming" + "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" ] } From 5cedfe22168fa519b4535b5ef0c4f9691941bbf3 Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 31 Aug 2022 12:43:30 +0800 Subject: [PATCH 122/137] Fix: Only call wxEndBusyCursor when is busy Change-Id: I8a6085aca652df4892bf5182e34d01c423a17bd6 --- src/slic3r/GUI/SelectMachine.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 2c1bec16dc..7a17ca95f1 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1066,7 +1066,10 @@ void SelectMachineDialog::prepare_mode() if (m_print_job) { m_print_job->join(); } - wxEndBusyCursor(); + + if (wxIsBusy()) + wxEndBusyCursor(); + Enable_Send_Button(true); m_status_bar->reset(); From d42c8f58dfcd2e2a7fa99c939851e448e2f701e1 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 14:47:06 +0800 Subject: [PATCH 123/137] FIX: fix display error when only ams2 exists Change-Id: I6993b6681b403094d8ed242fbd3869ad19f834b9 --- src/slic3r/GUI/UpgradePanel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index d53338e596..db94d1f40b 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -524,8 +524,8 @@ void MachineInfoPanel::update_ams(MachineObject *obj) } } } else { - std::string ams_id = "ams/" + std::to_string(ams_index); - auto ver_item = obj->new_ver_list.find(ams_id); + std::string ams_idx = (boost::format("ams/%1%") % ams_id).str(); + auto ver_item = obj->new_ver_list.find(ams_idx); if (ver_item == obj->new_ver_list.end()) { amspanel->m_ams_new_version_img->Hide(); From 08c93853831de5dddc6609867c6eed8b9510704a Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 31 Aug 2022 17:00:39 +0800 Subject: [PATCH 124/137] version: update the version to 1.2 Change-Id: I3eab73700c6a07086bcde5357f28ed2660024260 --- resources/profiles/BBL.json | 2 +- version.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index a9087f9dba..cc3e819e49 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.01.02.01", + "version": "01.02.00.00", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/version.inc b/version.inc index 5a2cb96141..03e8f6edb9 100644 --- a/version.inc +++ b/version.inc @@ -7,4 +7,4 @@ set(SLIC3R_APP_KEY "BambuStudio") if(NOT DEFINED BBL_RELEASE_TO_PUBLIC) set(BBL_RELEASE_TO_PUBLIC "0") endif() -set(SLIC3R_VERSION "01.01.02.00") +set(SLIC3R_VERSION "01.02.00.00") From 4601022aaa4825cf491a78dbc6948c87c50d329e Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Wed, 31 Aug 2022 17:15:34 +0800 Subject: [PATCH 125/137] FIX: stop video when not visible Change-Id: Ibc5204084efec5381a7ede9face0519276592aa8 --- src/slic3r/GUI/MediaFilePanel.cpp | 3 ++- src/slic3r/GUI/MediaPlayCtrl.cpp | 12 ++++++++++++ src/slic3r/GUI/Monitor.cpp | 3 +-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index 5c8f1a42d5..df65cbb5ba 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -146,9 +146,10 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) m_button_delete->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) { m_image_grid->DoActionOnSelection(0); }); auto onShowHide = [this](auto &e) { + e.Skip(); if (m_isBeingDeleted) return; auto fs = m_image_grid ? m_image_grid->GetFileSystem() : nullptr; - if (fs) e.IsShown() && IsShown() ? fs->Start() : fs->Stop(); + if (fs) IsShownOnScreen() ? fs->Start() : fs->Stop(); }; Bind(wxEVT_SHOW, onShowHide); parent->GetParent()->Bind(wxEVT_SHOW, onShowHide); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index f254e17c2d..1232dee606 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -40,6 +40,14 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w #if BBL_RELEASE_TO_PUBLIC m_next_retry = wxDateTime::Now(); #endif + + auto onShowHide = [this](auto &e) { + e.Skip(); + if (m_isBeingDeleted) return; + IsShownOnScreen() ? Play() : Stop(); + }; + parent->Bind(wxEVT_SHOW, onShowHide); + parent->GetParent()->GetParent()->Bind(wxEVT_SHOW, onShowHide); } MediaPlayCtrl::~MediaPlayCtrl() @@ -72,6 +80,10 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj) void MediaPlayCtrl::Play() { + if (!m_next_retry.IsValid()) + return; + if (!IsShownOnScreen()) + return; if (m_machine.empty()) { Stop(); SetStatus(_L("Initialize failed (No Device)!")); diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 058f4ff922..a005cf7714 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -402,7 +402,7 @@ void MonitorPanel::update_all() m_upgrade_panel->update(obj); - m_status_info_panel->m_media_play_ctrl->SetMachineObject(IsShown() ? obj : nullptr); + m_status_info_panel->m_media_play_ctrl->SetMachineObject(obj); m_media_file_panel->SetMachineObject(obj); update_status(obj); @@ -466,7 +466,6 @@ bool MonitorPanel::Show(bool show) } } else { m_refresh_timer->Stop(); - m_status_info_panel->m_media_play_ctrl->SetMachineObject(nullptr); } return wxPanel::Show(show); } From fd8caee3dbbb5e9e4bb495fcb95c4dcbbb2957d2 Mon Sep 17 00:00:00 2001 From: "tao.jin" Date: Fri, 19 Aug 2022 18:36:57 +0800 Subject: [PATCH 126/137] NEW:Add search printer for debug Change-Id: I3d8db835331e1ce4699f02a3571b3978544b8e77 --- src/slic3r/GUI/SelectMachine.cpp | 36 ++++++++++++++++++++++++++++++++ src/slic3r/GUI/SelectMachine.hpp | 4 ++++ 2 files changed, 40 insertions(+) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 7a17ca95f1..f5dab138a2 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -341,6 +341,15 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) m_scrolledWindow->Layout(); m_sizxer_scrolledWindow->Fit(m_scrolledWindow); +#if !BBL_RELEASE_TO_PUBLIC && defined(__WINDOWS__) + m_sizer_search_bar = new wxBoxSizer(wxVERTICAL); + m_search_bar = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_search_bar->ShowSearchButton( true ); + m_search_bar->ShowCancelButton( false ); + m_sizer_search_bar->Add( m_search_bar, 1, wxALL| wxEXPAND, 1 ); + m_sizer_main->Add(m_sizer_search_bar, 0, wxALL | wxEXPAND, FromDIP(2)); + m_search_bar->Bind( wxEVT_COMMAND_TEXT_UPDATED, &SelectMachinePopup::update_machine_list, this ); +#endif auto own_title = create_title_panel(_L("My Device")); m_sizer_my_devices = new wxBoxSizer(wxVERTICAL); auto other_title = create_title_panel(_L("Other Device")); @@ -505,6 +514,11 @@ void SelectMachinePopup::update_other_devices() if (i < m_other_list_machine_panel.size()) { op = m_other_list_machine_panel[i]->mPanel; op->Show(); +#if !BBL_RELEASE_TO_PUBLIC && defined(__WINDOWS__) + if (!search_for_printer(mobj)) { + op->Hide(); + } +#endif } else { op = new MachineObjectPanel(m_scrolledWindow, wxID_ANY); MachinePanel* mpanel = new MachinePanel(); @@ -590,6 +604,11 @@ void SelectMachinePopup::update_user_devices() if (i < m_user_list_machine_panel.size()) { op = m_user_list_machine_panel[i]->mPanel; op->Show(); +#if !BBL_RELEASE_TO_PUBLIC && defined(__WINDOWS__) + if (!search_for_printer(mobj)) { + op->Hide(); + } +#endif } else { op = new MachineObjectPanel(m_scrolledWindow, wxID_ANY); MachinePanel* mpanel = new MachinePanel(); @@ -683,6 +702,23 @@ void SelectMachinePopup::update_user_devices() this->Thaw(); } +bool SelectMachinePopup::search_for_printer(MachineObject* obj) +{ + std::string search_text = std::string((m_search_bar->GetValue()).mb_str()); + if (search_text.empty()) { + return true; + } + auto name = obj->dev_name; + auto ip = obj->dev_ip; + auto name_it = name.find(search_text); + auto ip_it = ip.find(search_text); + if ((name_it != std::string::npos)||(ip_it != std::string::npos)) { + return true; + } + + return false; +} + void SelectMachinePopup::on_dissmiss_win(wxCommandEvent &event) { Dismiss(); diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index b41e1a69e0..c74d3a499b 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "AmsMappingPopup.hpp" #include "GUI_Utils.hpp" @@ -197,6 +198,8 @@ private: wxBoxSizer * m_sizer_body{nullptr}; wxBoxSizer * m_sizer_my_devices{nullptr}; wxBoxSizer * m_sizer_other_devices{nullptr}; + wxBoxSizer * m_sizer_search_bar{nullptr}; + wxSearchCtrl* m_search_bar{nullptr}; wxScrolledWindow * m_scrolledWindow{nullptr}; wxWindow * m_panel_body{nullptr}; wxTimer * m_refresh_timer{nullptr}; @@ -215,6 +218,7 @@ private: void update_other_devices(); void update_user_devices(); + bool search_for_printer(MachineObject* obj); void on_dissmiss_win(wxCommandEvent &event); wxWindow *create_title_panel(wxString text); }; From 30a97cc6dca25e9703d788f26de43996b7fafa23 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Wed, 31 Aug 2022 14:00:21 +0800 Subject: [PATCH 127/137] ENH: params web link to wifi pages Change-Id: Id79c65a973840cdc23cdf1b1c353d29da2216750 --- src/slic3r/GUI/OG_CustomCtrl.cpp | 35 ++++++++------- src/slic3r/GUI/OG_CustomCtrl.hpp | 2 +- src/slic3r/GUI/OptionsGroup.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 75 +++++++++++++++++--------------- 4 files changed, 60 insertions(+), 54 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index a51083f5c3..b7301a6def 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -768,9 +768,9 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) break; } } - //is_url_string = !suppress_hyperlinks && !og_line.label_path.empty(); + is_url_string = !suppress_hyperlinks && !og_line.label_path.empty(); // BBS - h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label /* + ":" */, text_clr, ctrl->opt_group->label_width * ctrl->m_em_unit, true); + h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label /* + ":" */, text_clr, ctrl->opt_group->label_width * ctrl->m_em_unit, is_url_string, true); } // If there's a widget, build it and set result to the correct position. @@ -844,12 +844,12 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) //if (!ctrl->opt_group->option_label_at_right) // BBS //label += ":"; - //if (is_url_string) - // is_url_string = false; - //else if(opt == option_set.front()) - // is_url_string = !suppress_hyperlinks && !og_line.label_path.empty(); + if (is_url_string) + is_url_string = false; + else if(opt == option_set.front()) + is_url_string = !suppress_hyperlinks && !og_line.label_path.empty(); static wxColor c("#6B6B6B"); - h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label, field ? (field->blink() ? &blink_color : &c) : nullptr, ctrl->opt_group->sublabel_width * ctrl->m_em_unit); + h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label, field ? (field->blink() ? &blink_color : &c) : nullptr, ctrl->opt_group->sublabel_width * ctrl->m_em_unit, is_url_string); h_pos += 8; } @@ -884,7 +884,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) } } -wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_main/* = false*/) +wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC &dc, wxPoint pos, const wxString &text, const wxColour *color, int width, bool is_url/* = false*/, bool is_main/* = false*/) { wxString multiline_text; auto size = Label::split_lines(dc, width, text, multiline_text); @@ -903,13 +903,16 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxStr wxColour old_clr = dc.GetTextForeground(); wxFont old_font = dc.GetFont(); -// if (is_focused && is_url) -// // temporary workaround for the OSX because of strange Bold font behavior on BigSerf -//#ifdef __APPLE__ -// dc.SetFont(old_font.Underlined()); -//#else -// dc.SetFont(old_font.Bold().Underlined()); -//#endif + static wxColor clr_url("#00AE42"); + if (is_focused && is_url) { + // temporary workaround for the OSX because of strange Bold font behavior on BigSerf +#ifdef __APPLE__ + dc.SetFont(old_font.Underlined()); +#else + dc.SetFont(old_font.Bold().Underlined()); +#endif + color = &clr_url; + } dc.SetTextForeground(color ? *color : #ifdef _WIN32 wxGetApp().get_label_clr_default()); @@ -983,7 +986,7 @@ bool OG_CustomCtrl::CtrlLine::launch_browser() const if (!is_focused || og_line.label_path.empty()) return false; - return true; + return OptionsGroup::launch_browser(og_line.label_path); } } // GUI diff --git a/src/slic3r/GUI/OG_CustomCtrl.hpp b/src/slic3r/GUI/OG_CustomCtrl.hpp index feb8451224..e3f6a51c51 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.hpp +++ b/src/slic3r/GUI/OG_CustomCtrl.hpp @@ -61,7 +61,7 @@ class OG_CustomCtrl :public wxPanel void render_separator(wxDC& dc, wxCoord v_pos); void render(wxDC& dc, wxCoord h_pos, wxCoord v_pos); - wxCoord draw_text (wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url = false); + wxCoord draw_text (wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url = false, bool is_main = false); wxPoint draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking); wxCoord draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmap& bmp_undo_to_sys, const wxBitmap& bmp_undo, bool is_blinking, size_t rect_id = 0); bool launch_browser() const; diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 57d819e3ca..91e4f31582 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -1217,7 +1217,7 @@ void ExtruderOptionsGroup::on_change_OG(const t_config_option_key& opt_id, const wxString OptionsGroup::get_url(const std::string& path_end) { //BBS - return ""; + return wxString::Format(L"https://wiki.bambulab.com/%s/software/bambu-studio/%s", L"en", from_u8(path_end)); } bool OptionsGroup::launch_browser(const std::string& path_end) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index f4081b1aab..c8d0f77c22 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1748,7 +1748,7 @@ void TabPrint::build() auto optgroup = page->new_optgroup(L("Layer height")); optgroup->append_single_option_line("layer_height"); optgroup->append_single_option_line("initial_layer_print_height"); - optgroup->append_single_option_line("adaptive_layer_height"); + optgroup->append_single_option_line("adaptive_layer_height", "adaptive-layer-height"); optgroup = page->new_optgroup(L("Line width")); optgroup->append_single_option_line("line_width"); @@ -1761,7 +1761,7 @@ void TabPrint::build() optgroup->append_single_option_line("support_line_width"); optgroup = page->new_optgroup(L("Seam")); - optgroup->append_single_option_line("seam_position"); + optgroup->append_single_option_line("seam_position", "Seam"); optgroup = page->new_optgroup(L("Precision")); optgroup->append_single_option_line("resolution"); @@ -1818,8 +1818,9 @@ void TabPrint::build() optgroup->append_single_option_line("sparse_infill_speed"); optgroup->append_single_option_line("internal_solid_infill_speed"); optgroup->append_single_option_line("top_surface_speed"); - optgroup->append_single_option_line("enable_overhang_speed"); + optgroup->append_single_option_line("enable_overhang_speed", "slow-down-for-overhang"); Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") }; + line.label_path = "slow-down-for-overhang"; line.append_option(optgroup->get_option("overhang_1_4_speed")); line.append_option(optgroup->get_option("overhang_2_4_speed")); line.append_option(optgroup->get_option("overhang_3_4_speed")); @@ -1845,41 +1846,41 @@ void TabPrint::build() page = add_options_page(L("Support"), "support"); optgroup = page->new_optgroup(L("Support")); - optgroup->append_single_option_line("enable_support"); - optgroup->append_single_option_line("support_type"); - optgroup->append_single_option_line("support_threshold_angle"); + optgroup->append_single_option_line("enable_support", "support"); + optgroup->append_single_option_line("support_type", "support"); + optgroup->append_single_option_line("support_threshold_angle", "support"); optgroup->append_single_option_line("support_on_build_plate_only"); //optgroup->append_single_option_line("enforce_support_layers"); optgroup = page->new_optgroup(L("Support filament")); - optgroup->append_single_option_line("support_filament"); - optgroup->append_single_option_line("support_interface_filament"); + optgroup->append_single_option_line("support_filament", "support"); + optgroup->append_single_option_line("support_interface_filament", "support"); //optgroup = page->new_optgroup(L("Options for support material and raft")); //optgroup->append_single_option_line("support_style"); //BBS optgroup = page->new_optgroup(L("Advanced")); - optgroup->append_single_option_line("tree_support_branch_distance"); - optgroup->append_single_option_line("tree_support_branch_diameter"); - optgroup->append_single_option_line("tree_support_branch_angle"); + optgroup->append_single_option_line("tree_support_branch_distance", "support"); + optgroup->append_single_option_line("tree_support_branch_diameter", "support"); + optgroup->append_single_option_line("tree_support_branch_angle", "support"); optgroup->append_single_option_line("tree_support_wall_count"); optgroup->append_single_option_line("tree_support_with_infill"); - optgroup->append_single_option_line("support_top_z_distance"); - optgroup->append_single_option_line("support_base_pattern"); - optgroup->append_single_option_line("support_base_pattern_spacing"); + optgroup->append_single_option_line("support_top_z_distance", "support"); + optgroup->append_single_option_line("support_base_pattern", "support"); + optgroup->append_single_option_line("support_base_pattern_spacing", "support"); //optgroup->append_single_option_line("support_angle"); - optgroup->append_single_option_line("support_interface_top_layers"); - optgroup->append_single_option_line("support_interface_bottom_layers"); - optgroup->append_single_option_line("support_interface_pattern"); - optgroup->append_single_option_line("support_interface_spacing"); + optgroup->append_single_option_line("support_interface_top_layers", "support"); + optgroup->append_single_option_line("support_interface_bottom_layers", "support"); + optgroup->append_single_option_line("support_interface_pattern", "support"); + optgroup->append_single_option_line("support_interface_spacing", "support"); optgroup->append_single_option_line("support_bottom_interface_spacing"); //optgroup->append_single_option_line("support_interface_loop_pattern"); - optgroup->append_single_option_line("support_object_xy_distance"); - optgroup->append_single_option_line("bridge_no_support"); - optgroup->append_single_option_line("max_bridge_length"); - optgroup->append_single_option_line("thick_bridges"); + optgroup->append_single_option_line("support_object_xy_distance", "support"); + optgroup->append_single_option_line("bridge_no_support", "support"); + optgroup->append_single_option_line("max_bridge_length", "support"); + optgroup->append_single_option_line("thick_bridges", "support"); //optgroup->append_single_option_line("independent_support_layer_height"); page = add_options_page(L("Others"), "advanced"); @@ -1887,9 +1888,9 @@ void TabPrint::build() optgroup->append_single_option_line("skirt_loops"); optgroup->append_single_option_line("skirt_distance"); //optgroup->append_single_option_line("draft_shield"); - optgroup->append_single_option_line("brim_type"); - optgroup->append_single_option_line("brim_width"); - optgroup->append_single_option_line("brim_object_gap"); + optgroup->append_single_option_line("brim_type", "auto-brim"); + optgroup->append_single_option_line("brim_width", "auto-brim"); + optgroup->append_single_option_line("brim_object_gap", "auto-brim"); optgroup->append_single_option_line("raft_layers"); //optgroup->append_single_option_line("raft_first_layer_density"); //optgroup->append_single_option_line("raft_first_layer_expansion"); @@ -1901,14 +1902,14 @@ void TabPrint::build() optgroup->append_single_option_line("prime_tower_brim_width"); optgroup = page->new_optgroup(L("Flush options")); - optgroup->append_single_option_line("flush_into_infill"); - optgroup->append_single_option_line("flush_into_objects"); - optgroup->append_single_option_line("flush_into_support"); + optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change"); + optgroup->append_single_option_line("flush_into_objects", "reduce-wasting-during-filament-change"); + optgroup->append_single_option_line("flush_into_support", "reduce-wasting-during-filament-change"); optgroup = page->new_optgroup(L("Special mode")); optgroup->append_single_option_line("print_sequence"); - optgroup->append_single_option_line("spiral_mode"); - optgroup->append_single_option_line("timelapse_no_toolhead"); + optgroup->append_single_option_line("spiral_mode", "spiral-vase"); + optgroup->append_single_option_line("timelapse_no_toolhead", "Timelapse"); //BBS: todo remove clearance to machine #if 0 //line = { L("Extruder radius"), "" }; @@ -2075,7 +2076,7 @@ void TabPrintModel::build() optgroup->append_single_option_line("layer_height"); optgroup->append_single_option_line("sparse_infill_density"); optgroup->append_single_option_line("wall_loops"); - optgroup->append_single_option_line("enable_support"); + optgroup->append_single_option_line("enable_support", "support"); m_pages.pop_back(); m_pages.insert(m_pages.begin(), page); @@ -2520,25 +2521,27 @@ void TabFilament::build() //}; //optgroup->append_line(line); optgroup = page->new_optgroup(L("Cooling for specific layer")); - optgroup->append_single_option_line("close_fan_the_first_x_layers"); + optgroup->append_single_option_line("close_fan_the_first_x_layers", "auto-cooling"); //optgroup->append_single_option_line("full_fan_speed_layer"); optgroup = page->new_optgroup(L("Part cooling fan")); line = { L("Min fan speed threshold"), L("Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time") }; + line.label_path = "auto-cooling"; line.append_option(optgroup->get_option("fan_min_speed")); line.append_option(optgroup->get_option("fan_cooling_layer_time")); optgroup->append_line(line); line = { L("Max fan speed threshold"), L("Part cooling fan speed will be max when the estimated layer time is shorter than the setting value") }; + line.label_path = "auto-cooling"; line.append_option(optgroup->get_option("fan_max_speed")); line.append_option(optgroup->get_option("slow_down_layer_time")); optgroup->append_line(line); optgroup->append_single_option_line("reduce_fan_stop_start_freq"); - optgroup->append_single_option_line("slow_down_for_layer_cooling"); + optgroup->append_single_option_line("slow_down_for_layer_cooling", "auto-cooling"); optgroup->append_single_option_line("slow_down_min_speed"); - optgroup->append_single_option_line("enable_overhang_bridge_fan"); - optgroup->append_single_option_line("overhang_fan_threshold"); - optgroup->append_single_option_line("overhang_fan_speed"); + optgroup->append_single_option_line("enable_overhang_bridge_fan", "auto-cooling"); + optgroup->append_single_option_line("overhang_fan_threshold", "auto-cooling"); + optgroup->append_single_option_line("overhang_fan_speed", "auto-cooling"); optgroup = page->new_optgroup(L("Auxiliary part cooling fan")); optgroup->append_single_option_line("additional_cooling_fan_speed"); From b7974185fa0a4e616a5e208a50d1925443386365 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 11:33:40 +0800 Subject: [PATCH 128/137] FIX: join bind_job when close BindDialog Change-Id: Ide24f4d116d65063ebc414230abe12ef94d9dd23 Signed-off-by: Stone Li --- src/slic3r/GUI/BindDialog.cpp | 79 +++++++++++++++++++------------- src/slic3r/GUI/BindDialog.hpp | 13 +++--- src/slic3r/GUI/SelectMachine.cpp | 6 +-- 3 files changed, 57 insertions(+), 41 deletions(-) diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 630ced8e91..3820a2c47d 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -15,7 +15,7 @@ namespace Slic3r { namespace GUI { - BindMachineDilaog::BindMachineDilaog(Plater *plater /*= nullptr*/) + BindMachineDialog::BindMachineDialog(Plater *plater /*= nullptr*/) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Log in printer"), wxDefaultPosition, wxDefaultSize, wxCAPTION) { std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); @@ -172,23 +172,25 @@ namespace GUI { Fit(); Centre(wxBOTH); - Bind(wxEVT_SHOW, &BindMachineDilaog::on_show, this); + Bind(wxEVT_SHOW, &BindMachineDialog::on_show, this); - m_button_bind->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDilaog::on_bind_printer), NULL, this); - m_button_cancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDilaog::on_cancel), NULL, this); - this->Connect(EVT_BIND_MACHINE_FAIL, wxCommandEventHandler(BindMachineDilaog::on_bind_fail), NULL, this); - this->Connect(EVT_BIND_MACHINE_SUCCESS, wxCommandEventHandler(BindMachineDilaog::on_bind_success), NULL, this); - this->Connect(EVT_BIND_UPDATE_MESSAGE, wxCommandEventHandler(BindMachineDilaog::on_update_message), NULL, this); + Bind(wxEVT_CLOSE_WINDOW, &BindMachineDialog::on_close, this); + + m_button_bind->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDialog::on_bind_printer), NULL, this); + m_button_cancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDialog::on_cancel), NULL, this); + this->Connect(EVT_BIND_MACHINE_FAIL, wxCommandEventHandler(BindMachineDialog::on_bind_fail), NULL, this); + this->Connect(EVT_BIND_MACHINE_SUCCESS, wxCommandEventHandler(BindMachineDialog::on_bind_success), NULL, this); + this->Connect(EVT_BIND_UPDATE_MESSAGE, wxCommandEventHandler(BindMachineDialog::on_update_message), NULL, this); m_simplebook->SetSelection(1); } - BindMachineDilaog::~BindMachineDilaog() + BindMachineDialog::~BindMachineDialog() { - m_button_bind->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDilaog::on_bind_printer), NULL, this); - m_button_cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDilaog::on_cancel), NULL, this); - this->Disconnect(EVT_BIND_MACHINE_FAIL, wxCommandEventHandler(BindMachineDilaog::on_bind_fail), NULL, this); - this->Disconnect(EVT_BIND_MACHINE_SUCCESS, wxCommandEventHandler(BindMachineDilaog::on_bind_success), NULL, this); - this->Disconnect(EVT_BIND_UPDATE_MESSAGE, wxCommandEventHandler(BindMachineDilaog::on_update_message), NULL, this); + m_button_bind->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDialog::on_bind_printer), NULL, this); + m_button_cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(BindMachineDialog::on_cancel), NULL, this); + this->Disconnect(EVT_BIND_MACHINE_FAIL, wxCommandEventHandler(BindMachineDialog::on_bind_fail), NULL, this); + this->Disconnect(EVT_BIND_MACHINE_SUCCESS, wxCommandEventHandler(BindMachineDialog::on_bind_success), NULL, this); + this->Disconnect(EVT_BIND_UPDATE_MESSAGE, wxCommandEventHandler(BindMachineDialog::on_update_message), NULL, this); } //static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) @@ -205,30 +207,43 @@ namespace GUI { //} - void BindMachineDilaog::on_cancel(wxCommandEvent &event) + void BindMachineDialog::on_cancel(wxCommandEvent &event) { - EndModal(wxID_CANCEL); + if (m_bind_job) { + m_bind_job->cancel(); + m_bind_job->join(); + } + EndModal(wxID_CANCEL); } - void BindMachineDilaog::on_bind_fail(wxCommandEvent &event) + void BindMachineDialog::on_close(wxCloseEvent &event) + { + if (m_bind_job) { + m_bind_job->cancel(); + m_bind_job->join(); + } + event.Skip(); + } + + void BindMachineDialog::on_bind_fail(wxCommandEvent &event) { //m_status_text->SetLabel(_L("Would you like to log in this printer with current account?")); m_simplebook->SetSelection(1); } - void BindMachineDilaog::on_update_message(wxCommandEvent &event) + void BindMachineDialog::on_update_message(wxCommandEvent &event) { m_status_text->SetLabelText(event.GetString()); } - void BindMachineDilaog::on_bind_success(wxCommandEvent &event) + void BindMachineDialog::on_bind_success(wxCommandEvent &event) { EndModal(wxID_OK); MessageDialog msg_wingow(nullptr, _L("Log in successful."), "", wxAPPLY | wxOK); if (msg_wingow.ShowModal() == wxOK) { return; } } - void BindMachineDilaog::on_bind_printer(wxCommandEvent &event) + void BindMachineDialog::on_bind_printer(wxCommandEvent &event) { //check isset info if (m_machine_info == nullptr || m_machine_info == NULL) return; @@ -242,13 +257,13 @@ namespace GUI { m_bind_job->start(); } -void BindMachineDilaog::on_dpi_changed(const wxRect &suggested_rect) +void BindMachineDialog::on_dpi_changed(const wxRect &suggested_rect) { m_button_bind->SetMinSize(BIND_DIALOG_BUTTON_SIZE); m_button_cancel->SetMinSize(BIND_DIALOG_BUTTON_SIZE); } -void BindMachineDilaog::on_show(wxShowEvent &event) +void BindMachineDialog::on_show(wxShowEvent &event) { //m_printer_name->SetLabelText(m_machine_info->get_printer_type_string()); m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); @@ -256,7 +271,7 @@ void BindMachineDilaog::on_show(wxShowEvent &event) } -UnBindMachineDilaog::UnBindMachineDilaog(Plater *plater /*= nullptr*/) +UnBindMachineDialog::UnBindMachineDialog(Plater *plater /*= nullptr*/) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Log out printer"), wxDefaultPosition, wxDefaultSize, wxCAPTION) { std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); @@ -402,24 +417,24 @@ UnBindMachineDilaog::UnBindMachineDilaog(Plater *plater /*= nullptr*/) Fit(); Centre(wxBOTH); - Bind(wxEVT_SHOW, &UnBindMachineDilaog::on_show, this); - m_button_unbind->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDilaog::on_unbind_printer), NULL, this); - m_button_cancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDilaog::on_cancel), NULL, this); + Bind(wxEVT_SHOW, &UnBindMachineDialog::on_show, this); + m_button_unbind->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDialog::on_unbind_printer), NULL, this); + m_button_cancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDialog::on_cancel), NULL, this); } - UnBindMachineDilaog::~UnBindMachineDilaog() + UnBindMachineDialog::~UnBindMachineDialog() { - m_button_unbind->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDilaog::on_unbind_printer), NULL, this); - m_button_cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDilaog::on_cancel), NULL, this); + m_button_unbind->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDialog::on_unbind_printer), NULL, this); + m_button_cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(UnBindMachineDialog::on_cancel), NULL, this); } -void UnBindMachineDilaog::on_cancel(wxCommandEvent &event) +void UnBindMachineDialog::on_cancel(wxCommandEvent &event) { EndModal(wxID_CANCEL); } -void UnBindMachineDilaog::on_unbind_printer(wxCommandEvent &event) +void UnBindMachineDialog::on_unbind_printer(wxCommandEvent &event) { if (!wxGetApp().is_user_login()) { m_status_text->SetLabelText(_L("Please log in first.")); @@ -455,13 +470,13 @@ void UnBindMachineDilaog::on_unbind_printer(wxCommandEvent &event) } } - void UnBindMachineDilaog::on_dpi_changed(const wxRect &suggested_rect) + void UnBindMachineDialog::on_dpi_changed(const wxRect &suggested_rect) { m_button_unbind->SetMinSize(BIND_DIALOG_BUTTON_SIZE); m_button_cancel->SetMinSize(BIND_DIALOG_BUTTON_SIZE); } -void UnBindMachineDilaog::on_show(wxShowEvent &event) +void UnBindMachineDialog::on_show(wxShowEvent &event) { //m_printer_name->SetLabelText(m_machine_info->get_printer_type_string()); m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); diff --git a/src/slic3r/GUI/BindDialog.hpp b/src/slic3r/GUI/BindDialog.hpp index 6320e3dfb3..803bb1535c 100644 --- a/src/slic3r/GUI/BindDialog.hpp +++ b/src/slic3r/GUI/BindDialog.hpp @@ -42,7 +42,7 @@ struct MemoryStruct size_t size; }; -class BindMachineDilaog : public DPIDialog +class BindMachineDialog : public DPIDialog { private: wxStaticText * m_printer_name; @@ -60,8 +60,8 @@ private: std::shared_ptr m_status_bar; public: - BindMachineDilaog(Plater *plater = nullptr); - ~BindMachineDilaog(); + BindMachineDialog(Plater *plater = nullptr); + ~BindMachineDialog(); void on_cancel(wxCommandEvent &event); void on_bind_fail(wxCommandEvent &event); void on_update_message(wxCommandEvent &event); @@ -70,9 +70,10 @@ public: void on_dpi_changed(const wxRect &suggested_rect) override; void update_machine_info(MachineObject *info) { m_machine_info = info; }; void on_show(wxShowEvent &event); + void on_close(wxCloseEvent& event); }; -class UnBindMachineDilaog : public DPIDialog +class UnBindMachineDialog : public DPIDialog { protected: wxStaticText * m_printer_name; @@ -84,8 +85,8 @@ protected: wxStaticBitmap *m_avatar; public: - UnBindMachineDilaog(Plater *plater = nullptr); - ~UnBindMachineDilaog(); + UnBindMachineDialog(Plater *plater = nullptr); + ~UnBindMachineDialog(); void on_cancel(wxCommandEvent &event); void on_unbind_printer(wxCommandEvent &event); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f5dab138a2..c33f1b2ba0 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -122,7 +122,7 @@ MachineObjectPanel::~MachineObjectPanel() {} void MachineObjectPanel::show_bind_dialog() { if (wxGetApp().is_user_login()) { - BindMachineDilaog dlg; + BindMachineDialog dlg; dlg.update_machine_info(m_info); dlg.ShowModal(); } @@ -559,7 +559,7 @@ void SelectMachinePopup::update_other_devices() }); op->Bind(EVT_BIND_MACHINE, [this, mobj](wxCommandEvent &e) { - BindMachineDilaog dlg; + BindMachineDialog dlg; dlg.update_machine_info(mobj); int dlg_result = wxID_CANCEL; dlg_result = dlg.ShowModal(); @@ -647,7 +647,7 @@ void SelectMachinePopup::update_user_devices() op->show_printer_bind(true, PrinterBindState::ALLOW_UNBIND); op->Bind(EVT_UNBIND_MACHINE, [this, mobj, dev](wxCommandEvent& e) { // show_unbind_dialog - UnBindMachineDilaog dlg; + UnBindMachineDialog dlg; dlg.update_machine_info(mobj); if (dlg.ShowModal() == wxID_OK) { dev->set_selected_machine(""); From 09e0e4fcca5d0d890a4d7a126d794200e2c69371 Mon Sep 17 00:00:00 2001 From: gerrit Date: Wed, 31 Aug 2022 18:57:48 +0800 Subject: [PATCH 129/137] ci: update network module based on commit 3cf3634 Change-Id: I7028f6fccd7fd8811394b4e23f1dab034a9285d6 (cherry picked from commit 285a74eb4511423e2028e2b6813abd264bd10bc4) --- src/slic3r/Utils/bambu_networking.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index 3fa47eb532..bdaebd6b03 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -36,7 +36,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.01.02.01" +#define BAMBU_NETWORK_AGENT_VERSION "01.02.00.01" //iot preset type strings @@ -126,6 +126,7 @@ struct PrintParams { bool task_vibration_cali; /* vibration calibration of task */ bool task_layer_inspect; /* first layer inspection of task */ bool task_record_timelapse; /* record timelapse of task */ + bool task_use_ams; }; } From 0ed5b956ae829a5ea353cd66381b151f2b0cf53f Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 15:55:48 +0800 Subject: [PATCH 130/137] NEW: add ams option when sending a printing job Change-Id: If75b9da926c1d9a9e59f3e16b3d491a6e0bdb2e6 Signed-off-by: Stone Li --- resources/images/disable_ams_demo_icon.svg | 110 +++++++++++++++++++++ resources/images/enable_ams.svg | 4 + src/slic3r/GUI/AmsMappingPopup.cpp | 97 ++++++++++++++++++ src/slic3r/GUI/AmsMappingPopup.hpp | 21 ++++ src/slic3r/GUI/Jobs/PrintJob.cpp | 1 + src/slic3r/GUI/Jobs/PrintJob.hpp | 1 + src/slic3r/GUI/SelectMachine.cpp | 64 +++++++++++- src/slic3r/GUI/SelectMachine.hpp | 4 + src/slic3r/GUI/Widgets/AMSControl.cpp | 2 +- 9 files changed, 299 insertions(+), 5 deletions(-) create mode 100644 resources/images/disable_ams_demo_icon.svg create mode 100644 resources/images/enable_ams.svg diff --git a/resources/images/disable_ams_demo_icon.svg b/resources/images/disable_ams_demo_icon.svg new file mode 100644 index 0000000000..25022741c3 --- /dev/null +++ b/resources/images/disable_ams_demo_icon.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/enable_ams.svg b/resources/images/enable_ams.svg new file mode 100644 index 0000000000..22c049e776 --- /dev/null +++ b/resources/images/enable_ams.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 03efacdf9c..d24338c9d0 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -514,4 +514,101 @@ void MappingItem::doRender(wxDC &dc) } } +AmsMapingTipPopup::AmsMapingTipPopup(wxWindow *parent) + :wxPopupTransientWindow(parent, wxBORDER_NONE) +{ + SetBackgroundColour(*wxWHITE); + wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL); + + m_sizer_main->Add(0, 0, 1, wxTOP, FromDIP(28)); + + wxBoxSizer *m_sizer_body = new wxBoxSizer(wxHORIZONTAL); + + m_sizer_body->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(20)); + + m_panel_enable_ams = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(200, -1), wxTAB_TRAVERSAL); + m_panel_enable_ams->SetBackgroundColour(*wxWHITE); + wxBoxSizer *sizer_enable_ams = new wxBoxSizer(wxVERTICAL); + + m_title_enable_ams = new wxStaticText(m_panel_enable_ams, wxID_ANY, _L("Enable AMS"), wxDefaultPosition, wxDefaultSize, 0); + m_title_enable_ams->SetBackgroundColour(*wxWHITE); + m_title_enable_ams->Wrap(-1); + sizer_enable_ams->Add(m_title_enable_ams, 0, 0, 0); + + m_tip_enable_ams = new wxStaticText(m_panel_enable_ams, wxID_ANY, _L("Print with filaments in the AMS"), wxDefaultPosition, wxDefaultSize, 0); + m_tip_enable_ams->SetBackgroundColour(*wxWHITE); + m_tip_enable_ams->Wrap(-1); + sizer_enable_ams->Add(m_tip_enable_ams, 0, wxTOP, 8); + + wxBoxSizer *sizer_enable_ams_img; + sizer_enable_ams_img = new wxBoxSizer(wxVERTICAL); + + auto img_enable_ams = new wxStaticBitmap(m_panel_enable_ams, wxID_ANY, create_scaled_bitmap("monitor_upgrade_ams", this, 108), wxDefaultPosition, + wxSize(FromDIP(118), FromDIP(108)), 0); + sizer_enable_ams_img->Add(img_enable_ams, 0, wxALIGN_CENTER_HORIZONTAL, 0); + + sizer_enable_ams->Add(sizer_enable_ams_img, 1, wxEXPAND | wxTOP, FromDIP(20)); + + m_panel_enable_ams->SetSizer(sizer_enable_ams); + m_panel_enable_ams->Layout(); + m_sizer_body->Add(m_panel_enable_ams, 0, 0, 0); + + m_split_lines = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1, FromDIP(150)), wxTAB_TRAVERSAL); + m_split_lines->SetBackgroundColour(wxColour(238, 238, 238)); + + m_sizer_body->Add(m_split_lines, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, FromDIP(10)); + + m_panel_disable_ams = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(200, -1), wxTAB_TRAVERSAL); + m_panel_disable_ams->SetBackgroundColour(*wxWHITE); + wxBoxSizer *sizer_disable_ams; + sizer_disable_ams = new wxBoxSizer(wxVERTICAL); + + m_title_disable_ams = new wxStaticText(m_panel_disable_ams, wxID_ANY, _L("Disable AMS"), wxDefaultPosition, wxDefaultSize, 0); + m_title_disable_ams->SetBackgroundColour(*wxWHITE); + m_title_disable_ams->Wrap(-1); + sizer_disable_ams->Add(m_title_disable_ams, 0, 0, 0); + + m_tip_disable_ams = new wxStaticText(m_panel_disable_ams, wxID_ANY, _L("Print with the filament mounted on the back of chassis"), wxDefaultPosition, wxDefaultSize, 0); + m_tip_disable_ams->SetBackgroundColour(*wxWHITE); + m_tip_disable_ams->Wrap(-1); + sizer_disable_ams->Add(m_tip_disable_ams, 0, wxTOP, FromDIP(8)); + + wxBoxSizer *sizer_disable_ams_img; + sizer_disable_ams_img = new wxBoxSizer(wxVERTICAL); + + auto img_disable_ams = new wxStaticBitmap(m_panel_disable_ams, wxID_ANY, create_scaled_bitmap("disable_ams_demo_icon", this, 95), wxDefaultPosition, + wxSize(FromDIP(95), FromDIP(109)), 0); + sizer_disable_ams_img->Add(img_disable_ams, 0, wxALIGN_CENTER_HORIZONTAL, 0); + + sizer_disable_ams->Add(sizer_disable_ams_img, 1, wxEXPAND | wxTOP, FromDIP(20)); + + m_panel_disable_ams->SetSizer(sizer_disable_ams); + m_panel_disable_ams->Layout(); + m_sizer_body->Add(m_panel_disable_ams, 0, 0, 0); + + m_sizer_body->Add(0, 0, 0, wxEXPAND | wxRIGHT, FromDIP(20)); + + m_sizer_main->Add(m_sizer_body, 0, wxEXPAND, 0); + + m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(28)); + + this->SetSizer(m_sizer_main); + this->Layout(); + this->Fit(); + Bind(wxEVT_PAINT, &AmsMapingTipPopup::paintEvent, this); +} + +void AmsMapingTipPopup::paintEvent(wxPaintEvent &evt) +{ + wxPaintDC dc(this); + dc.SetPen(wxColour(0xAC, 0xAC, 0xAC)); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0); +} + +void AmsMapingTipPopup::OnDismiss() {} + +bool AmsMapingTipPopup::ProcessLeftDown(wxMouseEvent &event) { + return wxPopupTransientWindow::ProcessLeftDown(event); } + }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index 450b1bf9eb..a81883d193 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -137,6 +137,27 @@ public: void paintEvent(wxPaintEvent &evt); }; +class AmsMapingTipPopup : public wxPopupTransientWindow +{ +public: + AmsMapingTipPopup(wxWindow *parent); + ~AmsMapingTipPopup(){}; + void paintEvent(wxPaintEvent &evt); + + virtual void OnDismiss() wxOVERRIDE; + virtual bool ProcessLeftDown(wxMouseEvent &event) wxOVERRIDE; + +public: + wxPanel * m_panel_enable_ams; + wxStaticText * m_title_enable_ams; + wxStaticText * m_tip_enable_ams; + wxPanel * m_split_lines; + wxPanel * m_panel_disable_ams; + wxStaticText * m_title_disable_ams; + wxStaticText * m_tip_disable_ams; +}; + + wxDECLARE_EVENT(EVT_SET_FINISH_MAPPING, wxCommandEvent); }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 715bbdf20e..f56c8e546b 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -152,6 +152,7 @@ void PrintJob::process() params.task_record_timelapse= this->task_record_timelapse; params.ams_mapping = this->task_ams_mapping; params.connection_type = this->connection_type; + params.task_use_ams = this->task_use_ams; // local print access params.dev_ip = m_dev_ip; diff --git a/src/slic3r/GUI/Jobs/PrintJob.hpp b/src/slic3r/GUI/Jobs/PrintJob.hpp index dae9d1ea50..86b13fa585 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.hpp +++ b/src/slic3r/GUI/Jobs/PrintJob.hpp @@ -50,6 +50,7 @@ public: std::string connection_type; bool cloud_print_only { false }; bool has_sdcard { false }; + bool task_use_ams { true }; void set_print_config(std::string bed_type, bool bed_leveling, bool flow_cali, bool vabration_cali, bool record_timelapse, bool layer_inspect) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index c33f1b2ba0..2147574215 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -822,6 +822,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Send print job to"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_plater(plater), m_export_3mf_cancel(false) , m_mapping_popup(AmsMapingPopup(this)) + , m_mapping_tip_popup(AmsMapingTipPopup(this)) { #ifdef __WINDOWS__ SetDoubleBuffered(true); @@ -928,13 +929,15 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_sizer_select = new wxGridSizer(1, 2, 0, 0); select_bed = create_item_checkbox(_L("Bed Leveling"), this, _L("Bed Leveling"), "bed_leveling"); select_flow = create_item_checkbox(_L("Flow Calibration"), this, _L("Flow Calibration"), "flow_cali"); - - - select_bed->Show(true); - select_flow->Show(true); + select_use_ams = create_ams_checkbox(_L("Enable AMS"), this, _L("Enable AMS")); m_sizer_select->Add(select_bed); m_sizer_select->Add(select_flow); + m_sizer_select->Add(select_use_ams); + + select_bed->Show(true); + select_flow->Show(true); + select_use_ams->Show(true); // line schedule m_line_schedule = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); @@ -1046,6 +1049,52 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) Centre(wxBOTH); } +wxWindow *SelectMachineDialog::create_ams_checkbox(wxString title, wxWindow *parent, wxString tooltip) +{ + auto checkbox = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + checkbox->SetBackgroundColour(m_colour_def_color); + + wxBoxSizer *sizer_checkbox = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *sizer_check = new wxBoxSizer(wxVERTICAL); + + ams_check = new ::CheckBox(checkbox); + + sizer_check->Add(ams_check, 0, wxBOTTOM | wxEXPAND | wxTOP, FromDIP(5)); + + sizer_checkbox->Add(sizer_check, 0, wxEXPAND, FromDIP(5)); + sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(11)); + + auto text = new wxStaticText(checkbox, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, 0); + text->SetFont(::Label::Body_13); + text->SetForegroundColour(wxColour(107, 107, 107)); + text->Wrap(-1); + sizer_checkbox->Add(text, 0, wxALIGN_CENTER, FromDIP(5)); + + auto img_ams_tip = new wxStaticBitmap(checkbox, wxID_ANY, create_scaled_bitmap("enable_ams", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); + sizer_checkbox->Add(img_ams_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); + + img_ams_tip->Bind(wxEVT_ENTER_WINDOW, [this, img_ams_tip](auto &e) { + wxPoint pos = img_ams_tip->ClientToScreen(wxPoint(0, 0)); + pos.y += img_ams_tip->GetRect().height; + m_mapping_tip_popup.Position(pos, wxSize(0, 0)); + m_mapping_tip_popup.Popup(); + }); + + img_ams_tip->Bind(wxEVT_LEAVE_WINDOW, [this, img_ams_tip](auto &e) { + m_mapping_tip_popup.Dismiss(); + }); + + checkbox->SetSizer(sizer_checkbox); + checkbox->Layout(); + sizer_checkbox->Fit(checkbox); + + checkbox->SetToolTip(tooltip); + text->SetToolTip(tooltip); + + text->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &) { ams_check->SetValue(ams_check->GetValue() ? false : true); }); + return checkbox; +} + wxWindow *SelectMachineDialog::create_item_checkbox(wxString title, wxWindow *parent, wxString tooltip, std::string param) { auto checkbox = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -1614,6 +1663,12 @@ void SelectMachineDialog::on_ok(wxCommandEvent &event) false, true); + if (obj_->has_ams()) { + m_print_job->task_use_ams = ams_check->GetValue(); + } else { + m_print_job->task_use_ams = false; + } + m_print_job->on_success([this]() { finish_mode(); }); wxCommandEvent evt(m_plater->get_print_finished_event()); @@ -2067,6 +2122,7 @@ void SelectMachineDialog::set_default() // checkbox default values m_checkbox_list["bed_leveling"]->SetValue(true); m_checkbox_list["flow_cali"]->SetValue(true); + ams_check->SetValue(true); // thumbmail //wxBitmap bitmap; diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index c74d3a499b..7d4a649c2f 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -319,6 +319,8 @@ protected: wxWindow *select_bed{nullptr}; wxWindow *select_flow{nullptr}; + wxWindow *select_use_ams{nullptr}; + CheckBox *ams_check{nullptr}; void stripWhiteSpace(std::string& str); @@ -329,6 +331,7 @@ protected: public: SelectMachineDialog(Plater *plater = nullptr); + wxWindow *create_ams_checkbox(wxString title, wxWindow *parent, wxString tooltip); ~SelectMachineDialog(); wxWindow *create_item_checkbox(wxString title, wxWindow *parent, wxString tooltip, std::string param); @@ -361,6 +364,7 @@ protected: wxPanel * m_panel_status{nullptr}; wxButton * m_button_cancel{nullptr}; AmsMapingPopup m_mapping_popup{nullptr}; + AmsMapingTipPopup m_mapping_tip_popup{nullptr}; std::string m_print_info; int timeout_count = 0; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index aea9c13de2..89a70ebe73 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1472,7 +1472,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_button_ams_setting->SetBackgroundColor(btn_bg_white); m_button_ams_setting->SetBorderColor(btn_bd_white); m_button_ams_setting->SetFont(Label::Body_13); - m_button_ams_setting->Hide(); + //m_button_ams_setting->Hide(); m_sizer_right_bottom->Add(m_button_ams_setting, 0, wxTOP, FromDIP(20)); m_sizer_right->Add(m_sizer_right_bottom, 0, wxEXPAND, FromDIP(5)); m_sizer_bottom->Add(m_sizer_right, 0, wxEXPAND, FromDIP(5)); From a688265bfdde3297b9a8a17169cf8159bd905051 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 31 Aug 2022 20:02:57 +0800 Subject: [PATCH 131/137] ENH: refine ams logic update ams settings add rfid reading bits Change-Id: If46d2a3bf896e1279514aba94e5facdaee12014d Signed-off-by: Stone Li --- src/slic3r/GUI/AMSSetting.cpp | 4 ---- src/slic3r/GUI/DeviceManager.cpp | 17 +++++++++++++++++ src/slic3r/GUI/DeviceManager.hpp | 15 +++++++++++++++ src/slic3r/GUI/SelectMachine.cpp | 26 +++++++++++++++++++++++++- src/slic3r/GUI/SelectMachine.hpp | 2 ++ src/slic3r/GUI/StatusPanel.cpp | 30 ++++++++++++++++++++++++------ src/slic3r/GUI/StatusPanel.hpp | 1 + 7 files changed, 84 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp index 15d8deefd7..28f7624e60 100644 --- a/src/slic3r/GUI/AMSSetting.cpp +++ b/src/slic3r/GUI/AMSSetting.cpp @@ -188,10 +188,6 @@ void AMSSetting::create() m_sizer_main->Fit(this); this->Centre(wxBOTH); - - // set mode - update_insert_material_read_mode(true); - update_starting_read_mode(false); } void AMSSetting::update_insert_material_read_mode(bool selected) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 5f19d39c06..18d23148f8 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -328,7 +328,11 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string ams_exist_bits = 0; tray_exist_bits = 0; tray_is_bbl_bits = 0; + ams_rfid_status = 0; is_ams_need_update = false; + ams_insert_flag = false; + ams_power_on_flag = false; + ams_support_use_ams = false; /* signals */ wifi_signal = ""; @@ -2240,6 +2244,10 @@ int MachineObject::parse_json(std::string payload) if (jj["ams"].contains("tray_read_done_bits")) { tray_read_done_bits = stol(jj["ams"]["tray_read_done_bits"].get(), nullptr, 16); } + if (jj["ams"].contains("tray_reading_bits")) { + tray_reading_bits = stol(jj["ams"]["tray_reading_bits"].get(), nullptr, 16); + ams_support_use_ams = true; + } if (jj["ams"].contains("tray_is_bbl_bits")) { tray_is_bbl_bits = stol(jj["ams"]["tray_is_bbl_bits"].get(), nullptr, 16); } @@ -2253,6 +2261,15 @@ int MachineObject::parse_json(std::string payload) if (jj["ams"].contains("tray_tar")) { m_tray_tar = jj["ams"]["tray_tar"].get(); } + if (jj["ams"].contains("insert_flag")) { + ams_insert_flag = jj["ams"]["insert_flag"].get(); + } + if (jj["ams"].contains("ams_rfid_status")) + ams_rfid_status = jj["ams"]["ams_rfid_status"].get(); + + if (jj["ams"].contains("power_on_flag")) { + ams_power_on_flag = jj["ams"]["power_on_flag"].get(); + } if (ams_exist_bits != last_ams_exist_bits || last_tray_exist_bits != last_tray_exist_bits diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index a78f7a1895..8b769791c2 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -111,6 +111,16 @@ enum AmsStatusMain { AMS_STATUS_MAIN_UNKNOWN = 0xFF, }; +enum AmsRfidStatus { + AMS_RFID_IDLE = 0, + AMS_RFID_READING = 1, + AMS_RFID_GCODE_TRANS = 2, + AMS_RFID_GCODE_RUNNING = 3, + AMS_RFID_ASSITANT = 4, + AMS_RFID_SWITCH_FILAMENT= 5, + AMS_RFID_HAS_FILAMENT = 6 +}; + class AmsTray { public: AmsTray(std::string tray_id) { @@ -349,6 +359,11 @@ public: long tray_exist_bits = 0; long tray_is_bbl_bits = 0; long tray_read_done_bits = 0; + long tray_reading_bits = 0; + int ams_rfid_status = 0; + bool ams_insert_flag { false }; + bool ams_power_on_flag { false }; + bool ams_support_use_ams { false }; AmsStatusMain ams_status_main; int ams_status_sub; int ams_version = 0; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 2147574215..74fe8d383e 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1091,7 +1091,9 @@ wxWindow *SelectMachineDialog::create_ams_checkbox(wxString title, wxWindow *par checkbox->SetToolTip(tooltip); text->SetToolTip(tooltip); - text->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &) { ams_check->SetValue(ams_check->GetValue() ? false : true); }); + text->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &) { + ams_check->SetValue(ams_check->GetValue() ? false : true); + }); return checkbox; } @@ -1454,6 +1456,10 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vector 0) @@ -1895,6 +1901,15 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) update_show_status(); } +void SelectMachineDialog::update_ams_check(MachineObject* obj) +{ + if (obj && obj->ams_support_use_ams) { + ams_check->Show(); + } else { + ams_check->Hide(); + } +} + void SelectMachineDialog::update_show_status() { // refreshing return @@ -1948,6 +1963,7 @@ void SelectMachineDialog::update_show_status() } reset_timeout(); + update_ams_check(obj_); // reading done if (obj_->is_in_upgrading()) { @@ -1977,6 +1993,14 @@ void SelectMachineDialog::update_show_status() return; } + if (obj_->ams_support_use_ams) { + if (!ams_check->GetValue()) { + m_ams_mapping_result.clear(); + show_status(PrintDialogStatus::PrintStatusDisableAms); + return; + } + } + // do ams mapping if no ams result if (m_ams_mapping_result.empty()) { do_ams_mapping(obj_); diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 7d4a649c2f..154e442fb6 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -239,6 +239,7 @@ enum PrintDialogStatus { PrintStatusNeedUpgradingAms, PrintStatusInSystemPrinting, PrintStatusInPrinting, + PrintStatusDisableAms, PrintStatusAmsMappingSuccess, PrintStatusAmsMappingInvalid, PrintStatusAmsMappingU0Invalid, @@ -373,6 +374,7 @@ protected: void update_user_printer(); void reset_ams_material(); void update_show_status(); + void update_ams_check(MachineObject* obj); wxTimer *m_refresh_timer { nullptr }; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index cb09b321b0..90cec3b30b 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1532,7 +1532,13 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) void StatusPanel::update_ams(MachineObject *obj) { // update obj in sub dlg - if (m_ams_setting_dlg) { m_ams_setting_dlg->obj = obj; } + if (m_ams_setting_dlg) { + m_ams_setting_dlg->obj = obj; + if (obj && m_ams_setting_dlg->IsShown()) { + m_ams_setting_dlg->update_insert_material_read_mode(obj->ams_insert_flag); + m_ams_setting_dlg->update_starting_read_mode(obj->ams_power_on_flag); + } + } if (m_filament_setting_dlg) { m_filament_setting_dlg->obj = obj; } if (!obj || !obj->is_connected()) { @@ -1540,6 +1546,7 @@ void StatusPanel::update_ams(MachineObject *obj) last_ams_exist_bits = -1; last_tray_is_bbl_bits = -1; last_read_done_bits = -1; + last_reading_bits = -1; last_ams_version = -1; m_ams_control->EnterNoneAMSMode(); show_ams_group(false); @@ -1583,6 +1590,7 @@ void StatusPanel::update_ams(MachineObject *obj) last_ams_exist_bits = obj->ams_exist_bits; last_tray_is_bbl_bits = obj->tray_is_bbl_bits; last_read_done_bits = obj->tray_read_done_bits; + last_reading_bits = obj->tray_reading_bits; last_ams_version = obj->ams_version; } @@ -1683,10 +1691,20 @@ void StatusPanel::update_ams(MachineObject *obj) for (auto tray_it = ams_it->second->trayList.begin(); tray_it != ams_it->second->trayList.end(); tray_it++) { std::string tray_id = tray_it->first; int tray_id_int = atoi(tray_id.c_str()); - if ((obj->tray_read_done_bits & (1 << (ams_id_int * 4 + tray_id_int))) == 0) { - m_ams_control->PlayRridLoading(ams_id, tray_id); + if (obj->ams_insert_flag < 0) { + // old protocol + if ((obj->tray_read_done_bits & (1 << (ams_id_int * 4 + tray_id_int))) == 0) { + m_ams_control->PlayRridLoading(ams_id, tray_id); + } else { + m_ams_control->StopRridLoading(ams_id, tray_id); + } } else { - m_ams_control->StopRridLoading(ams_id, tray_id); + // new protocol + if ((obj->tray_reading_bits & (1 << (ams_id_int * 4 + tray_id_int))) != 0) { + m_ams_control->PlayRridLoading(ams_id, tray_id); + } else { + m_ams_control->StopRridLoading(ams_id, tray_id); + } } } } catch (...) {} @@ -2028,8 +2046,8 @@ void StatusPanel::on_ams_setting_click(SimpleEvent &event) { if (!m_ams_setting_dlg) m_ams_setting_dlg = new AMSSetting((wxWindow *) this, wxID_ANY); if (obj) { - m_ams_setting_dlg->update_insert_material_read_mode(true); - m_ams_setting_dlg->update_starting_read_mode(true); + m_ams_setting_dlg->update_insert_material_read_mode(obj->ams_insert_flag); + m_ams_setting_dlg->update_starting_read_mode(obj->ams_power_on_flag); std::string ams_id = m_ams_control->GetCurentAms(); try { int ams_id_int = atoi(ams_id.c_str()); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 23f53915ef..39d1efea5f 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -357,6 +357,7 @@ public: long last_ams_exist_bits { -1 }; long last_tray_is_bbl_bits{ -1 }; long last_read_done_bits{ -1 }; + long last_reading_bits { -1 }; long last_ams_version { -1 }; std::vector last_stage_list_info; From 3aa3df00fc20102b09d2cf6e938b6605d87621ee Mon Sep 17 00:00:00 2001 From: Stone Li Date: Thu, 1 Sep 2022 11:41:48 +0800 Subject: [PATCH 132/137] FIX: fix slice info display error Change-Id: Ifccc8027fbd9f7a659523e170d33d01b10ecd9d9 --- src/libslic3r/ProjectTask.hpp | 1 + src/slic3r/GUI/StatusPanel.cpp | 29 ++++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/ProjectTask.hpp b/src/libslic3r/ProjectTask.hpp index 8d29f8ba22..8454acb025 100644 --- a/src/libslic3r/ProjectTask.hpp +++ b/src/libslic3r/ProjectTask.hpp @@ -51,6 +51,7 @@ public: { profile_ = profile; prediction = 0; + weight = 0.0f; } BBLSliceInfo(const BBLSliceInfo& obj) { diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 90cec3b30b..0544e4f4c5 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1775,9 +1775,29 @@ void StatusPanel::update_basic_print_data(bool def) wxString prediction = wxString::Format("%s", get_bbl_time_dhms(obj->slice_info->prediction)); wxString weight = wxString::Format("%.2fg", obj->slice_info->weight); + if (!m_staticText_consumption_of_time->IsShown()) { + m_bitmap_static_use_time->Show(); + m_staticText_consumption_of_time->Show(); + } + + if (!m_staticText_consumption_of_weight->IsShown()) { + m_bitmap_static_use_weight->Show(); + m_staticText_consumption_of_weight->Show(); + } + m_staticText_consumption_of_time->SetLabelText(prediction); - m_staticText_consumption_of_weight->SetLabelText(weight); + m_staticText_consumption_of_weight->SetLabelText(weight); } else { + if (m_staticText_consumption_of_time->IsShown()) { + m_bitmap_static_use_time->Hide(); + m_staticText_consumption_of_time->Hide(); + } + + if (m_staticText_consumption_of_weight->IsShown()) { + m_bitmap_static_use_weight->Hide(); + m_staticText_consumption_of_weight->Hide(); + } + m_staticText_consumption_of_time->SetLabelText("0m"); m_staticText_consumption_of_weight->SetLabelText("0g"); } @@ -1808,7 +1828,7 @@ void StatusPanel::update_subtask(MachineObject *obj) m_staticText_progress_left->SetLabelText(NA_STR); wxString subtask_text = wxString::Format("%s", GUI::from_u8(obj->subtask_name)); m_staticText_subtask_value->SetLabelText(subtask_text); - update_basic_print_data(true); + update_basic_print_data(false); } else { if (obj->can_resume()) { m_button_pause_resume->SetBitmap_("print_control_resume"); @@ -1817,8 +1837,6 @@ void StatusPanel::update_subtask(MachineObject *obj) m_button_pause_resume->SetBitmap_("print_control_pause"); if (m_button_pause_resume->GetToolTipText() != _L("Pause")) { m_button_pause_resume->SetToolTip(_L("Pause")); } } - - if (obj->print_status == "FINISH") { m_button_abort->Enable(false); m_button_abort->SetBitmap_("print_control_stop_disable"); @@ -1844,11 +1862,12 @@ void StatusPanel::update_subtask(MachineObject *obj) } wxString subtask_text = wxString::Format("%s", GUI::from_u8(obj->subtask_name)); m_staticText_subtask_value->SetLabelText(subtask_text); - update_basic_print_data(true); //update thumbnail if (obj->is_sdcard_printing()) { + update_basic_print_data(false); update_sdcard_subtask(obj); } else { + update_basic_print_data(true); update_cloud_subtask(obj); } } else { From 89c83fb8a62177a80cb53a0abec4b4188d4edf0e Mon Sep 17 00:00:00 2001 From: Stone Li Date: Thu, 1 Sep 2022 10:54:11 +0800 Subject: [PATCH 133/137] FIX: fix crash when to press cancel button it would crash when avatar of user is loading. cancel web request before closing dialog. Change-Id: Ib41c5d8e7b5663d15c7d7f544335b48f47c25fea Signed-off-by: Stone Li --- src/slic3r/GUI/BindDialog.cpp | 22 ++++++++++++++-------- src/slic3r/GUI/BindDialog.hpp | 3 +++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 3820a2c47d..1b43b5dc9e 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -92,12 +92,12 @@ namespace GUI { m_avatar = new wxStaticBitmap(m_panel_right, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(60), FromDIP(60)), 0); - wxWebRequest request = wxWebSession::GetDefault().CreateRequest(this, wxGetApp().getAgent()->get_user_avatar()); - if (!request.IsOk()) { + web_request = wxWebSession::GetDefault().CreateRequest(this, wxGetApp().getAgent()->get_user_avatar()); + if (!web_request.IsOk()) { // todo request fail } // Start the request - request.Start(); + web_request.Start(); } m_sizer_right_v->Add(m_avatar, 0, wxALIGN_CENTER, 0); @@ -209,19 +209,25 @@ namespace GUI { void BindMachineDialog::on_cancel(wxCommandEvent &event) { - if (m_bind_job) { - m_bind_job->cancel(); - m_bind_job->join(); - } + on_destroy(); EndModal(wxID_CANCEL); } - void BindMachineDialog::on_close(wxCloseEvent &event) + void BindMachineDialog::on_destroy() { if (m_bind_job) { m_bind_job->cancel(); m_bind_job->join(); } + + if (web_request.IsOk()) { + web_request.Cancel(); + } + } + + void BindMachineDialog::on_close(wxCloseEvent &event) + { + on_destroy(); event.Skip(); } diff --git a/src/slic3r/GUI/BindDialog.hpp b/src/slic3r/GUI/BindDialog.hpp index 803bb1535c..f7ed5debf3 100644 --- a/src/slic3r/GUI/BindDialog.hpp +++ b/src/slic3r/GUI/BindDialog.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "wxExtensions.hpp" #include "Plater.hpp" #include "Widgets/StepCtrl.hpp" @@ -54,6 +55,7 @@ private: Button * m_button_cancel; wxSimplebook *m_simplebook; wxStaticBitmap *m_avatar; + wxWebRequest web_request; MachineObject * m_machine_info{nullptr}; std::shared_ptr m_bind_job; @@ -71,6 +73,7 @@ public: void update_machine_info(MachineObject *info) { m_machine_info = info; }; void on_show(wxShowEvent &event); void on_close(wxCloseEvent& event); + void on_destroy(); }; class UnBindMachineDialog : public DPIDialog From 7184960dce36594d34f872db1aff064fc5a71a6d Mon Sep 17 00:00:00 2001 From: Stone Li Date: Thu, 1 Sep 2022 17:50:56 +0800 Subject: [PATCH 134/137] FIX: fix crash when select a printer in lan mode Change-Id: I93f604c900a56e938b16bd377031c331ecc20f43 Signed-off-by: Stone Li --- src/slic3r/GUI/SelectMachine.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 74fe8d383e..47f815902b 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -549,11 +549,13 @@ void SelectMachinePopup::update_other_devices() } op->Bind(EVT_CONNECT_LAN_PRINT, [this, mobj](wxCommandEvent &e) { - if (mobj->is_lan_mode_printer()) { - ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); - dlg.set_machine_object(mobj); - if (dlg.ShowModal() == wxID_OK) { - wxGetApp().mainframe->jump_to_monitor(mobj->dev_id); + if (mobj) { + if (mobj->is_lan_mode_printer()) { + ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); + dlg.set_machine_object(mobj); + if (dlg.ShowModal() == wxID_OK) { + wxGetApp().mainframe->jump_to_monitor(mobj->dev_id); + } } } }); @@ -638,7 +640,8 @@ void SelectMachinePopup::update_user_devices() } op->Bind(EVT_UNBIND_MACHINE, [this, dev, mobj](wxCommandEvent& e) { dev->set_selected_machine(""); - mobj->set_access_code(""); + if (mobj) + mobj->set_access_code(""); MessageDialog msg_wingow(nullptr, _L("Log out successful."), "", wxAPPLY | wxOK); if (msg_wingow.ShowModal() == wxOK) { return; } }); @@ -673,11 +676,13 @@ void SelectMachinePopup::update_user_devices() } op->Bind(EVT_CONNECT_LAN_PRINT, [this, mobj](wxCommandEvent &e) { - if (mobj->is_lan_mode_printer()) { - ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); - dlg.set_machine_object(mobj); - if (dlg.ShowModal() == wxID_OK) { - wxGetApp().mainframe->jump_to_monitor(mobj->dev_id); + if (mobj) { + if (mobj->is_lan_mode_printer()) { + ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); + dlg.set_machine_object(mobj); + if (dlg.ShowModal() == wxID_OK) { + wxGetApp().mainframe->jump_to_monitor(mobj->dev_id); + } } } }); From 0a7f6961015649766efcfcc74824cae5ac44cd48 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 1 Sep 2022 11:14:55 +0800 Subject: [PATCH 135/137] FIX: crash on MediaFilePanel when download in empty list Change-Id: I13f33005a8730498aea28b32da2818ceca055aac --- src/slic3r/GUI/ImageGrid.cpp | 2 +- src/slic3r/GUI/MediaFilePanel.cpp | 14 +++++++++++--- src/slic3r/GUI/MediaFilePanel.h | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 3fdccc7d37..1a1751fb8f 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -138,7 +138,7 @@ void Slic3r::GUI::ImageGrid::DoAction(size_t index, int action) if (action == 0) { m_file_sys->DeleteFiles(index); } else { - if (index >= 0) { + if (index != -1) { auto &file = m_file_sys->GetFile(index); if (file.IsDownload() && file.progress >= -1) { if (file.progress >= 100) { diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index df65cbb5ba..de4ee7970d 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -53,19 +53,23 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) m_type_panel->SetCornerRadius(FromDIP(5)); m_type_panel->SetMinSize({-1, 48 * em_unit(this) / 10}); m_button_timelapse = new ::Button(m_type_panel, _L("Timelapse"), "", wxBORDER_NONE); - m_button_video = new ::Button(m_type_panel, _L("Video"), "", wxBORDER_NONE); + m_button_timelapse->SetCanFocus(false); + m_button_video = new ::Button(m_type_panel, _L("Video"), "", wxBORDER_NONE); + m_button_video->SetCanFocus(false); wxBoxSizer *type_sizer = new wxBoxSizer(wxHORIZONTAL); type_sizer->Add(m_button_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 24); type_sizer->Add(m_button_video, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 24); m_type_panel->SetSizer(type_sizer); - top_sizer->Add(m_type_panel, 0, wxALIGN_CENTER_VERTICAL); + //top_sizer->Add(m_type_panel, 0, wxALIGN_CENTER_VERTICAL); // File management m_manage_panel = new ::StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); m_manage_panel->SetBackgroundColor(StateColor()); m_button_delete = new ::Button(m_manage_panel, _L("Delete")); - m_button_download = new ::Button(m_manage_panel, _L("Download")); + m_button_delete->SetCanFocus(false); + m_button_download = new ::Button(m_manage_panel, _L("Download")); + m_button_download->SetCanFocus(false); m_button_management = new ::Button(m_manage_panel, _L("Management")); wxBoxSizer *manage_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -110,7 +114,10 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) auto b = dynamic_cast

fDOYd@Iyjr-*56NiO8`t7~hx+Rr}! zd_?r18~}659j9_>X>nKmzzq@MIF2x4aeCiawBPG7cb+HA zg`kA2PZ-wnVrlDy+B}*eU{l_1!Z@_B~A{OCQ~7k2K1?bA(%Lc zu2m5tYfRtWZMDTH8vZ|?H>pQ3A(oIDi$;n5;p*n*?#}LcsZ4CWypeOc40fa$GZq&M zjdmlS&+i`|kiK5ASg$o;_r<8*R2YV(P>IfkL4vh$BqBDU!GWMuqFa2_^Osvf2>M}<(_mjbzzU@o6}H$2t{oUqXQ7nN+G93Z{klBzZXR`>hEKhiRCE!Vb8-j4x^9T>RwMwVd$mi0?&?fzs5Hdim1k&wl!6s-o>Yc~&h~^0_$?6^Wz_ z0H9f~lcoaK0tv`l1mv#gMj|0BFAD`Z!m#pO2=UyF$3vHP9aArGR{5Qq+kfzbA6;Hv zZFW0t*FHKsKL+kKo7_#^#FNdKk?V_VAH91Aj%g^Q4TpWacsiY0SXewfJaAm4?@&-~ zd&ZD79>cnB`i@&ZFNF=`()x-RE+*M`*>1Kgk~hLxg8;QaO27XaH4V!iT-sQ?cKuQ= z8*j8qrQ&g;QG*W+C%oJ493P!t-M$u&CHup1rBYd0TL+4lYt_5&z2ELp?qFomJmSLA zQf4meauX9C7fIq$_o(9a0pv!rSPJX$|MVZfSeU!CzJ3MgyLejG^{{VC0MXUeCAMP3 z!#eEuj*s_XaV~8XWTmI5W6?B0e0j2lUH8SO_ZH_@udH9gmKa%Hxef#zJ$<&j2l$Ug z&)VIdRM5Fg%J%l{O$KBonR4Ln}6@CFJHcRIdVp|T21U&q4I#R z65okNqARN_rb)7mh}B3TA{-J9H1`bgu#h06@`wipI018sXRT_oaNW3&KjH$dqbS1v zBTdb}_}Ra@e&d~g{LPmq&CyT(&41HzL#6f*FB&skXV^K|d3pHasnu)w)(~%uh&-E# z32|GJA|>;v!(_8MXOQa>#7E?>U<`RAX(0;Dr3 zgioJ;{yAdt7|EKc7iPp)Zr{HB`0*p0l+CS8cmS}m^?C!JGnq7%)i_E_rBeXBR;zt- zd=iVtd1Of^Hcv&N`beX}hiybDc7lWOIU3~2Cab1|qqlm>97Z(!o#N1rI+3et1vu0-DMCbN*}zrNUaBa@8l|S7IxyP zOx=C9ii+UI4g{KKp3Wq>>Shb+FPeC`y;73qRPMAWteqLP5!RSKwNL_Wr2ot+6_ zb7vqiW)kiSQ431Fy;3KZd6o{(b*lM2y?Rz(7NAVkK!a$!G?8=WNi!K+950?s!DJYY z6*zR%UJ;LWyWREmjnQ~O1N-@Wsa$^e;DKpU#}EO(t_-dI;$l7=iNJd*EG?X!o&D<5 zPsO#32K{6@BZLLT&^;bdj4Dj#w5CNjM_BF+2P8Gc)^_X){ve8*3||WQRN|qeOFWSY zMTjj<)(nbLN~v0|Ic+PO$i<9^)gRlvAu$xXuExEi zc>1Ts{bKoaH15Degu+Dn-s*I*NZ55-m$&}>&wd6}JJ>y-30*}6cw?hdD=ZDOTde(T zG3zAhGr)0IgZ4u*JcItA)$U*k;RQuwQHv=t5nRH7=y&^A=48y=y0Z1jM;`#?0LMGW zN6(%;KRP@d4@VYu^PrEzi6Hd$_V)7P(ybfUzxv%5c(2>3) zpPwCJwcrXA=2M3UPv_>78*A(5=jW|P^YYr|P%QSvFF!RyiLK2WfSX7pri4i_V&}!q z?;bt==HRf{>N}E=%q(`tk}Vq~rUIij=w;&Z)s5Bl%j@a+?DM_dVyRMZH*3wBAZlf4 zC4xabbvPv>5@Z5Pf1coRYO*QKs7HFsadgs=SNFuE#^Olhe&20?S*jO?>*$Ye9lOx4-0o2vgVzXR5 zKRRmFis7&;`v@~g>559Tys$bmfbw{@AE*?0Toz-h2vH`xIFCGa1e99eSl!;a(ys)qk4n;%(C7Dd-a=BzOjgVbtRxTEO?>3vFi&KdwC{D#2 z(eP0`1qf_4Tkv&YKXqOmF}++oFZO#KBc!?1OY4h77k9L{;*5*by7CG&c<@<7GT7F}3eTwYoo z^oK0a)x!M(l{qP{PKN6&!GQz7#*L7O8FzruR3xQ~9MLCEIw+H7L&4iBM!g)*CVm!A z&_7=&n=qYP(4eMB0d?3E0)$gI+Yv>STpYXq7X!JluzZOQE0Ad13Md$XsDsUu0>9%m zAXg;8N8|8$xEMv7c3`VK)lGI*3e>|G$EjM#X$lX(fF*|2z|yc7j+{=$@xW5)guwN5 zCWGh!Sbng7D2tZ(us#?MXjD8w<*Rs#`YP|=zyIYoU*qND@o2l*2uGsKM8;JERg2-b zqlt@IeX90T=N;m+@d)ob=8A~RcPj3{@c7^nJ4`%5Ku+|3hOeo!=l*YD7j56GT;yPhdbL}Cpyiz}NJ&RLhzQqc^SieX(`pJhMz5o9E zlW)fksa)JbVWk|O-6w>I?Rie zNv2>*5HiABef#FEt*ck(=CZh{X0!45(c|5hJN<6gry!Mpd~PoN)1Uqk{$xBFJbm;S zhz={9O2)IP%zWwsillz~1{L$L_8utCuXD?RQH#(i(we6c0 zH~Znr|HuFNfB4J4{L648w!X3c^!c+`B9WV)OC+O&SU_*eI{1xBt6Xe6f4rNB%t>C% zP)*Ya;c@49j7pGhYD5ia`_9<+#+`N@D`y&NJf{DrfBL&?*RS4w>umt}1$f z<8V~Z>(zT-ef8w!^JF?TW}!L93bg)2L@qHE7fd1i5*&IV$Bg@h`40uoplRW{nKq2y}<%R`2e$jmKXzMfmV?wFa892?7& zaMJyO?pvg0>q)Ir9si2QC#~A4tYDK^oYxcqn-;=<@Ht!}@@A!t3GEV}I+qz62|Og1 zS|d#&et|o`gZXgQP0`>`Wjy7n{U37ct{$CaWu3Lh5|1UuLC$Ml}fACEEEckmJl@|tbxFC46#o`&ln(p%6@kXOj*GsoVf&MJOXwfE4*vAQv-=uYh`RJ6w^O)Xwp>G$lg{st*@HF0pWe z11G z3q%N}8NL0^2ag`U@I3&MpPO44jww-`&C!2&?sNJ1XU`ruZgXWN7mY-LKeSH>%PHrn z>(cul-j2uA#iiWyXAi#k;!`uMEw3ylqOrZ*14QKe`$r%D;D z)vH^#?*5QQ&76^Ik2TY@+s$&N)@ru9&Ea_9m5Pm(#Y^>aSCfg56KlV^x)v0e`QZZ$ zhlA#L)Wd^F#!Yg_eCzN2_J4o>gS$6xy}keP#aH*fRAlYOwdGP4BKAiCnt=_V%5R22x}!hXs&p(n$3k6+d;QVYAmNSBpny zjat#Nt5_jkD4q2r!GzI$~4{>sJ%Kn`~YAQui6EG_Ke-rioJP)Mbc*vo_d0AV*}H#G)VRpO>} z*7>I9FDl=Qo+O%&_q1&6rae<*H)G`F0J?4os*LjVouZzYR1%wy9QXkzOk{qyiD5jjaIkY zFP&G$G&w+F_Y}zCsMTw=NR;Tnab|JK0SQ7~o}1rjtN3m}x<%c5F;n>EE+^i3H_IZC z8Qd&s)lt{Fu;&88NkY?e1?4%9-TJ{8-i+N2*Z{fN?R$Xym9b_|3BddJ06Dj+(LHe9 z$gEvr1P;HHBSeK~fm~Hceca@M1OjsA#3wx0L(Fey)6|Qh@$1uc z#CXuh9%?n3`FuW}O!NnXWGn)I>bob84i64R<$L&lv-W1)lAPC-Sj>?TIcMH^tN}Hm zFcSnxkP;z@EvnV69v*Bzc&&DOdD$;se)5mqtvk;- zXGBKE=zY$K%$o&*QcLy)b#?0wnGs)n-`Qu}I~)fg@%^q}+EjS5d3kMhdw2IIKl$6? zuwQM|S#oF6a-YydBMn5tU*=$r+*<_dM8-~pk>fE7Y_R4u&)(@QsH5}QqeKLglQ<-S z=D5Tqr-odzHKzT5GB%pO9S<)}#mhNOP1;8+K$NST{kDi)yT~n5X;~uvi9>e*-cyHc z7RaYsY!}IMDsE4~^&%EeMN^!(aAr{a>#%$pmlH8NY`ulpj-mEif1>$T13`=l4!q3)T8urRHe18mHlixWNrAg}0{Y(f+~q z-qFs$8<0MxRS>h%Id5IRcKy}YUb}kr%AniZ+u6k?htIzCcq?QXh%A>ZWYsl_=Q21S zjcUDEEF&(*PZ15QEUzvsEK)}l`#>9O>q1;wsg{7?QApFS!1CtY+=m~&|H(%mo}V69 zt7XJeRQ#K7{_uxCTw7cDzy8nvquFd?Kf-(X{`bDSxwf7q@fY_#BR=vdy>b1;hYy~O zgRFJdU)#J219fzAf~b0VX&Dx0eRK2ge)^*{9o&BLI+^cYAN~Z3&tgkN8ym~lu5Uhm zeD|f7Z`Ny0(b0eQ^S_1P(5O{#0pI@C+mD_;`QGoolOVFv4JwqzadZ9p!PEOV8}()* zlcrcTi-OVV@$s{*oztW9a;dqvuyK0Sjzc9Hrv>W5qi_{y!FG>A8T=b4-s_%vy>_kQ zE-p0zYx@rS?q*0;V{-`u?S?z@k^d_<$|mtH`$EU>vH;%s(6E+CL+)TO^aGzdrTK%1<;9FmP^%< zADo?ahJ%PuJhNals&mbL5UyRi{_;1!GfIrHX5liKXmSi7H`3pyK?2q zFW>*g<42F-Sw<`aIG`DEXL)I9ad8O%30JAt>*24sV<2ZiF=<#MAC$t5#dnA$Ga!9Z z>C7hv7-nuiJUql|luB-@k+v2Cik4#=6R^$zImZAwc+-qHkH>P43?{k`NCd%e!a#>U#}GQ8nWKmG&@gYP5Qz&nkIixAes`No@X;%h7iqRQRf zgK!)H&ReZ^v)K?J$CYrcFx9z#3tM7DjbDmk_Z zRWPyU@Y+RvoafW>EF;@Tjej3^YZ2McI(om z%}Txgi(mZg!w)|~h)>OHX`FXeBvfLssDaLPoD#MI4PW94GlQ6)!)!zoK|#zuO~w>} z95pgosdTrHurl>nX>e%ZqgmoiG13c=Q^I%BKt2)bp0u|JFh0lZ_FK48o*NfbCSPmM z=g((I4HrW=m7I|;Ztn%CBInF%O--ycv@2Q?ZEQ|$eL!^>bB7Kfo zmJc<|+(iz|7a}neJ>(qcd1O5QX{M<&(teYOoO)gqp2g?6^MdU_i!5#Tf!uE{6 zldjYBhF)4QLrNMqb+)Zp5F?|X0Ki0$s}!6Gj&&coEMudaRX?QfS{CyV1pj~)Z< zu3Wl0UtdOuWx50pY6{K2Swehvo-eq?XxUE17STid`kx_kGF z&+gv+=C{9vo#e&Ym7BM{Ncrh|AMYKufAlv$-#Gy`M^Wo5sloa;LNE9m=$8dbE-FoT9i!YCoEQ0fxDLmPh z5`_Z;xt=MVqx0SEozB^5I2v-`l`C10r^|4{t)fyOW_?mcvu+RpL4wI~}jI9vM&Zo1Bx1rjsnkZcLsEkHF?gj2(uRD-Ab($G7jUtmb(cTOsUkW)p`wAzP`DEQ}>gf{A6ou z3ztV4>l4Jn^-!y)q0^9?TQ-dXrPcw%sfsv!#QjIo6+ek1^XWI6qitj|T8gGyDvyk}eG@uTSz{Tf0TUP48v3NL^>k8Wq0*JdB(bA|JK z7UiN%eM(ax?|4x@{|)W6uR3R6hvl4TNO1y+Fmlv4p2-v+Pl-HtN35r!q_epPO`rXm zE8N=Tnw9CMp8&a*O=ikDA}3>RJFZapv7EdvD%3I%s4(lQ!Oaugi4O-Zv0Woh0s(U1 z;;`Q~b-jDm29TF+3qbC*x{LLt7q8#ywfi)%K*WEcW+p~K3qtSkXumgX2N6q7Cb44| z_)cSllCRu(>9tp0ooh7z{Lla5SHJvKnAgaoaO^EDF2Q7AK^&)uod(F)bt@bz)Xm|R zfhdcM%cRT{aD!D8cRO9Yb+J_9*$~w>j1qp!wVCZB+}YVWJw1k#i6bz#*sN6C!LYZt zw}ZHfGEMRW_(TGRmL38Y2$Ad}U?-V5?L#%Z`5e(vn@k#tZM?`}N-T7H;vzjT_Pob@S%! zcYpcI7hih0T5lAKm4fTQOGA(Z;CXoeA=5ltN}{i?T~=Zo6MKK}m?)cUM-qY9OH1<$ zq!&k`(L|_QDcjxFL9J{b9qpdCj;~(61Q=-6s|R~KIM=I7OTdDM4<8~zM(hP^ic^SF zj4OHaWNUA4Z+&yE-Rh}FDVK{!#|OBMx88d5<(FUj?6c1wK74Tb z$`yn|yF0sE&$bMG#_iU$xh8g3jcE!8xc6prVPk#$>Cgo!pP;9&pw_+Uar&2h7yVTWvNY*O}!4=FFH zGM%Zx)Hh@75>k0E3@-VPB%P_vgkF@cjw2aG%dK%HUB(F;R*mUzaf&a>m&#-m@T1gqw$yjhKe zk$+P6r40MX_lfL+8Fpl=2}P&_e}zbnrotf_PBl;8naqD2bK{%kx<$({MOO_6#znM| z5*Hwe2N&H9?q%3N*bm0h6v**P_&y9S0`cZz6Da=Pd+)&l77ErBv9yVdr)@bfutm3I zs5}rtDue{&Eb7Vy3=%Uz@$cI6^Lb2QEhH7lZrcc!q0ST^Fx|s z*BN*wLu+5(^7h=<6JdZEgin>pBm*z!MN8z&>CVeblhh5xvR?&qHJu5>pFd7tf%b`+ zm}!4w9XZzIut>w6+DMrm;ev=}7RVD$08Du1pUX6;nwmG9D;M`@%n&{(Igm?gooF9m z^@ya8hKLtB|tlKK^<+OFw^EwE|i3v-i>3Kx3@Krb0)?a=3mAQKJ-FJWS z$Bom>B+q3QCi^ONOrwOGqyh~>)wot7Ag@%+!~O03{apl+tE{K2r% zY-VxR>2$ELtE;O?rXsFFKt?V;r$Z1RJb3iDRBu#kjbe39G2DI-Z||MF|Ephr`0LMt zB-uYWt~Kj#efK-H#rY>Y&z|k=vQ!%NMdy|wl{S==r<+vyf|_sY6~cg!>d`3+U66rd znd*MO>ks=dRF=uQk*pBPK`ljb#4i|9!3E}JJWl$CW44 zf9F1btZ%FX#UDREaoE^HgyDYQ^L)6WQq!ce9`}63+=!4+zx}i(D>cViAUE^;rG`Ms zkpPl!mf#dS2Up_QRH7aE<8HSz?33IJj?CKH+UnBEqel-9j}CNgnwn-SWa+nV-GtAI z6+1sa9}EUKIGz_E$|umJ9J7h*;f6#~C-P^^sQ=SKM76zEo15L4d7RYDE#PbT1s-=^` zfeDbO6M->xMjq`eQTT5r`X^ENjL`YC@r?){IJ=TfDqgcFEEw`COLb1&D;E*D#eEpmm#1cytwm`N$3d!uG*aaCl5tS7on$l` zoSos3-?)0kOqJuk!WNbCwX-zH%)HqAmp(gRc_q47#W>^yi%B7oz7 zq`uX#Xs^Z?!3Hz zaEbu#^ysu)tTb!Qa;cuh+H0@A)j9KU#7@t;umv!3g5vO$4K=Y16OfoDp{b{}QlZm6 zu9O{JO}4k6Ub+ltX?4`=4hOw%w~L#?3aqbh)@n7x#V{9NK70fph;oLmv$(iaE|>n| zFaArpTDx}ZPQk6Tdn1IkOY4_*_l|z_H-Go;2fx}mJOmEUuPha+)j=5aNB)2Xi?cLO zBnf%594JHA(up=frB;@PxQOPIh<3ZkR0@b_hn|-ZOELDXB9fOj>k%YrM4rE8?(FUo z0%>sIw19?Nbp~?FZLDpb1lq!+Es7|IKf|^@AV$;Nipj4<0;RU0qpNSj5ix?DNkBxrv7$ z$(v)~nZf$CJH6pxu(GGXV;L1!I$J4C&2XMlEIv4IoxxY8c5{QE3#$QV^!)6^ z3p^GhpsOMsU2?lA?xbXfaHCzce18p)Q;a~&Ba{=L72M)OXQu=Z9#`u%Y9CWb-Jn`6 zzwyQ!r^hD`9uO^^TXdpe%;U|J!z)(G*REf!F`7Jh@TD|+!SjRtD3_`t;)Nf1-Von% ziZn*=5vxxuC38l>=g^a<+v7>BO9PZ*&q$<{fLyU`8OZv2cFunQ$kQ1fm*;@IIJb~a z%8?g#Hq$1*r(6_npZ_4gF3l$V^^-X$dIwDybV>X>lXM4<1Sm6?sOGbkL~$2IoI8jo zj5cH`44ruUg!G3pwfy$j!#pEMB5?>-Tp~!X;qFG7W9IULb9UL6ErP62|EUzssEia#*oL;%Q3CHkn{^qZaPmWSj@6iQaCt|E5)#~86 z6>Ek`LP{~)wV3Ez6Hz)5pNq>g(s4#Y^rWX^kjbN=BxY;OSP>7K3`>Fkgh^YdPI3Yh z>d_={&C!wq`f26(xn#@5w4S7wC;jjYfX@-KrjwrYJYAEj7ldx=43k>!txeU{(%(iw zGkNLfJccQjU*yXP)N{{F2s-dYrh042^QrZT49pC=OLjrJUUMOz=}2V0&GZ?tR~g9l zobpAJTnPRjiPKQ2ev;vsyp9kCP!ogBdy@F!VViMkVIF~+!8jPEqfr)xFc>9E*NB%q zJm25%oSZa>bjH#gM=umAjd{~4l6ImJAsjDOxPNCj*xGs~N0x;SiMNaBgmn@d9S4DJ znYDVQRC0kR^9|ri6)^+ha&@j)Y;@aRuQwR>sMc6^E3k}|{c$(v;Od8V$>Cp#rbHVx6CCIkxH+2q4c+4sF{k!zLKGid@2L zstzCk5GEPXypJQgDcgDSq$nRV@0K}Rqd0{KmYMhe)@EO-zpYU zlgJPd(|hBf+xK%r#KMl#ygJqqPQFxNaqYJ zwk|*%50p#P6pa;K7v^Yh_u%C0JR%Cb0^ppc&QmSYO*+=pprh2Pb)GmcSp^q<;+Qla z;?WSX5UdhanBkO?bR%=d;jfvWL!!NuD^!z#lqBMVpNzv1p5vW6cW&Hxq22DBou2@W z5!;-%&Ubfq5m4H>xT@m&9_;G%8`o2A+Z+tZ^#tT2wnoScEXTU=Y;c9KoX#({Vz<|U z`6a7FqKHHfg8S|EJA*+FNJ)MS^`%pRT++8fsm6q-@q}w6w=Ea?Y?&dcb$FTZ91t3b z_U6<<$6tBA&+RxFtS#{jj{GZ^uWYWbBY11K&nRofW)|;*YXFGgNv&_L!9xO+;MU-S zrb%wxVD0DT<~75@`rv3A{2>=cnFGor=+DPUVtW%|L5)~~Toydvootqws5J+gY47jz z!)ED)eP*kj@c)Zvv@n!u7dcmW{(k^+^?8bHRpZHW=~?IbF}Yl_9;!NfORxp_bJ4uZ zyBsr7YDw^ih{#FufiVwZE!LDL1YFo)sTwk`YLV!}NccKdSroOv4xU>eK7>^w*;{R$ zpMLn!NB%f)OT~zINn)7M#@rkyd(&#Ij6eBL|LOnc8qZh;0CYWX8YF>hz2MShc}>$D zO|w}ZEf$m#S$kn5Ac0pde{e*O--HnfJbw_e9&N;H$S6P`lRP%ubEjat*bZb+cp8vk zDPLYixCUi)zXIgi1(R!@ke{-;DifiaSs$eFSD zYk^$J<6TvNT+8|9_#(86EPR$T3IAh2P6n4@Sf7c@S+zYM(4PP~kzfcpuJjG)Gl_RK zXW3(N1`Cf?%h?!GIDV>zsL6x<8T$hg|1OwS7s0L3KRat59kfpN)$yoiX$8{)Jf;?m zscX3vAOwxQSxVmnaHgelvELtVKil>O18h!jFf^Fz2-a$CdBt(;I1J!5&dtqPu*VjR zh^wSlLPOf{CbZ!o;9PoyyK2_!Igq#71!l4wd8E#OEo#za2==2qPM%fIMIs5azwsD zf#`?zVx|-k9gW8$A<2^2Xy7~r<>Yx&C$^A8(*Lq_FgRbFuWoKM>&@cn$-#T?|Lo!8 zd-b`xW>A^^(v=s0;&G%G-HKs2i2AkEAPx_+SSXYVdMQ<`Uf&-B!Ayb4)WGVfsi{N- zLZCp+dbnUyC!!&oQBzkfmXlFuc3`zy_dOp^0jpK2)UYh0adh799G#vJNo~PdUS3V( zgn=CUR8M#sGsXgGS`a6@N5>z2_SqMYo}6^L2tgFn3c_(nft?`=(KA4<{O<3550Tu1 zhxfm@cdyfJOV|3)AHm#H=A3kOG?;VWA4XJ<(5Ar*<;flD1X8H@YW|P^;eYt}Vc(9d%fN;DUK)Rxl}RWk&HsBW2y=9aS?r6tO%_eVojp; zRVFb2TY8!Eq~2kg8Ult9u}QsA{oeP!2W0*H^Uvqz>c5HNL>5AQbI!uT0*Rn(ZQ(~8 z;8t<^f`GPUFbV)d1*cGS;gC6aW%!P#r$<5H=kI7J;>u%x4o5>dfV_}YOC}X_+nBO~ zlI%4nuBPKo6Qif)8FgYScZzOF#5m|U=$0@c;xz+*6f?mIVJ$VEr|`61eDOv68yAn$ zEzIP?(1H~x^GB&luHkSnXwmT*GWRGoJ|py^MwT?ANpVu0F9FnX*GUvgXfYcLJ^#Tx zMwDO=sBcU_RiUtN!UL}eow+_`n*Of?@^msgmIFbSbHH5y`E#~hmRh8cJGT?qwbAx#&p;)Y`FQwIg&{& zm{+e}efPazz+1;Y!_y*uRTl5n6k!l&EO#o7TPJQ$mf2QvalITPX&9J}Hw8E3aTjd7 zNN?CVZ=EJ_QYbnxFF)skNXiQMc%q=qk z^886L;7wcJWQV0(0GT}2nT!q3pyw$Xyqm6F2$|@=3E^K4>a$+6mVKr1E&nHOg3}P( zO3AhGiL&_g6(kiuc}-aX{et{Kn%br$Mao4io~Pnx97LwV&`kkybyB~WdP0(=7cp7N z7^!>`R8nF!;VXtC3K#r7f>$+(wP*~(;B{KPv*T<$w23-{0%ACfisgo>0TW6Qu~Tr0 zg$aJR=!`ZmZk&Ngw4HaE`|+0;XXYu!MY4 zFF8N>o$p@VSP%U{G8#>QoPx-cv(CWtX#_vZ44VpDhE+1Ps;U)WyJ4(ll$QETc@s0A z5SL)pTu3oXVndJJf{`j?*U^s8_cblrKiE1v+J~hr6^n0u`*)g+g|pKhwfcscW!R=l zldF#HQeru?qeKM?l4&P0-BeQ(Q%P(sv9ie2QcH^qMk1nI_`l_aMdHDX#>&h!Oo4pR z8xBX$1Nlh{``;?qGUlh`K&}dq)Bj*sao5G-lfAv4fAGP>t)0_OhbVgK-0%<$o2VqY zXdQj$o$p`2e)ayN`}gkM>vp;@`b4}R1X#vm(M=`kN`(1-2xL`>tb~hQFa>56=z-k= z>0^@&p6Am*h$t3LPC9i=;{s?0 zV#jDX7$cyPP;I8PcLC(K;R3~Vo#@-7nVLfd6KBUCjqq~hyOYXMG9Cqp_1}2?b)fw5 z;UOGiR&`@SQ!ai11q8?o)HJF9t)=lkp9ItM@~$@;vtCz>Fft*MT@Qy==gi;5Wbbps zMMB3(Jth$YIqpTu69UTASjM7k(#kCpcT(D(B!g!fnaCvzN{z0?Zs5ffx2k$+2fKX%T`&c@B?)KU* zzWgE{q)x4a+49QLpZ)2d;X(HLZ61Ns8Oj;Rc|aUk?zlDAt;#@}Kvd3Ho3|ZMJT3IJ zB*vvBgJI|7>^Mn6di*r&pNcjNUV$4<2*}|Xn0C>yTv9~MbfK5I(352)vFD(gXIfYm zJvDNXQ~sRtAh>oRprTB&)(I=>Nws|XI`W!;*Hi}kRSJWr(x^IjfX~*X1zo;E7&qlh zpYpR#NbB-0y<9GWherj-rCnosgBKkD%mFQtcU}?KgtzX3S2@=mm{9?s=$wif^yc!l zEWdEQkwYMiK6z$d5r(4tO!5 zrg|$Y3r?v}sn@tF>30WR-}8X?h{*AH%H<-*H={HQU^XiS^X<33ap#2>EM4*2ZG94v z!w?=Howhn%Y{^Qcth2JPVU{eTfzK*)DT)+C#3fvpl4VpAl>|v1aPSB~x#A4HZo7T7 zf4Ft)*41j=+1cIdbk4D7|HTjf<&EpNTj#?sK7ZKl43$J(nqLvw1b7J84I~CR8VgX8 zilq|kSseSls$i>J*MmB*V||;mjEmy&ejoClypRN&#_@h5Jf5RHS)%?;bM;9*s2{Pi;{zYd8+QUXS#r5#J;UjV6iI4>j^kX2wj|O1r38E)ZQ+Em~>q!rhtB>lgOtYbC^La=wZ6VS?01EARmt?(?ZxLL5hFZ(SO%+fD^liRiXQHM)2GAh z5|J}_Pg)<++1H$Qs$bBulIf&^h{7EJ%1p0Hs*t`DjU2G8Pne-!rtEm93sbCmkxKfS z`FIg!VqRt8IHVE5Ns>xZ>v;q(ob$YfNF=#k@EoC(<&;a9U*SC92oI1jWw1vqEnbe)TL$U zyW7u#z#|jJ!g0dd2t)bC8*j}umwZ2JpY~6VJ5&U{xN9QmC!H7?VIsv|66&qZ!M@|J zUAK5}xJPx+FxJhi(Wp=hEfuwma;*dd3X6$|q0?{odL6u%TXbR^FZj6O2trkN3dZS(}HcpNaxw0~$Wh4|TA(Bq0kQpb` z+`%6d05NEhcS!`yBh#YQh3ha52i01!;26PZ2#0!caTSJr=jqWnNCGda)#hBAFhk~^ zGg2%j+C)UzI3;B1G6M4B-KPtU^2W--`r3jw=qNMMkIL>dO>ivyjgMjMV7@Y*m!RrTZa@!sB-4<7)_{c(r` zOg&^Iw3SUylffP%5&v?}R1#;CmOvWV5lv?J`_%VD2AR3lxWFX>oUjHsSfV2(D%V_= zq?EO3JI!XZ-y2Gw3F*UWOubAzn;eO17RNLN?tdiT1wK14oYV3lRe7@+oyjyqK+Htw zJs=q@#w#zsT&b4s-MfctTU}kkl>pJFXB-gN?RF59ZESA9+wgpEOg+Wv>go#KjqBgN znB`ukg(~stxLKP>g_&s;rbdOY1rlK>cf!s9=hn)44C_AK5$!0KM7c&tTzt`_HYYpONSXu-;Z#{kj=g(kS5J{?w zeq9MJxJ#tqL*F|&Iicivxg7EM8D6a|Xz<+S0aw z&7_-fg$z6(aUcn*EEVvlp9~^vh}d zDx%K&0^2@D8kM?UT+6QLHkQa%6>~xwBc5K6Lxt+i0*~4Sy7bP%_AujMY(uV zMCL%f2O*v_jd8MbiglRo5}w7R*Ay;70j+6gpYr^`x;oR~rc7dYo+dZ6=Nbj_#(!aA z7a$iCL$-zQA%w%X^|AHrCItx_)4 zFJHcn&x8Ir^i#?Dz*p}0%HkxyD_?>pE)jn%=`)#LS8#Vzs zkZ);q35RIN#9=|?otz#JtE)~AD2jXv%A;VeT6*&}0&*jXOoGXf!IH*f%H@)6$tql7=NrSohnq_EL zu3Q0f4Z6Y82Rqf$9E|*E7*JA*3diK-Xo$ZJ1yLjJHJ4`7B_AYliowF*$#vs6m_t znG%vPi-8j|4E(3Ngyo0Fr-c2nAWcr*OcdbUO(rLZ_bp9CO%(i6&f90iKM~VB49=n^ zH7}8QR@n3AE$#O^1}sap0$3RiJ&GL*ZnN1Kk0XXWQ*s6Z6kOxpEo)-@}IwrXe_+9U6cHs?E(& z{c$)Ll-%Ol+M2MW35ttLtw`F{v}9=fcD4lJuv}gdwU_4B0Yh zdEiHC-1Jacz3rmejU9K`Uy~_rXnKgXpL8L?CGK~YAj)!%ZTdX&hA-W@v$3&(?|=5` zUCAX&2b|E5;H55Ix|F+Iaop|qaHQCSDP$~pLV}#8ImSWqaXvNXlVK)|l>7-r=zuQr zg{nHko~ce+6R1qU)B@ZeotFs=;YOM1S7!s8Dl^>dQ#j|;x-i{bj7$6zfIKg~NKW#C zU?iPo5t&WBPT!uZ_a;TwOm(jD_`k@-D3j3YqM|wRUo_%h3#h`8{0kw1Czh>}0LI^l{}b1c^!+bX+miM%r-ohb9G8u?iKyIoxqYXlHW4PQp~W0DgEfohkc_ zNq{@`YW3Fb+c2WrJKM0)Qi~-Gcp7M=kr-_fwa{2VOhO&@Dqrn@^kWgh{?DrP>0Eq0!Th#!(#LsTF8KL6e@%=|15ZQzBKsUl^*% z4Sm83$@ltM6p!z)n zd19xb;t%3(r+TbN%dx|NbsmFG?dote3cPN7_; zzGhNTr5&YUe-FBr>9%Q3~wFr$bkk|)~;C3i++ zpZYFwD#jxi%VxFm)@v_c-CWj_sAQ>T3b2gLG$r;uo>VTEi>~APV{br(K}7tQl0-+4 zM>BA^mXwf$?Fv;!IoZy0z`8*XG}W_QtPzWhRf%-qV}|pntgkKr6~xgXyRdZ5h+v~#jKeW0G5vpfGMpb_0!{oh z@J8@~;N&eVEPVI7Z)1fYKY4=N+1%JbME-318RF3*w~kLg;4;E&j{Ffd64~}#qtR?O zceZz?C@!@OgDcH=DA;58Wf)`{D9sYOM4K|+=dG6S4d{9e6}t$#SrR#t_9L4>?tOw7 zEMvjt94|QmK26*Tieq_M0h=5t7%7|RL=B$ZA4x5Fdhx4E3)in-$BS$|eY(F(ni^cE z7%DW!;Z&>D<>lpCwTeJ+ARpck>j29v5C%hya|EX+ic-p&D4MX95REIr5Vx(7bhu(n zWV^-cPJmptv?4$rMxhu(A>Pz-LNJAC?=Qf6w%_+TM3;VQRhfp4|4blPX2NbxTTR0M zuVaGa7Ij?;AKag8urPoZNRp9H2?MEA!jusS zYn;P3MtBNqhVP5)49gJ3_`JHhs&Q~6)t$Zl{Z_l(ANFto*k=a^2i0mBo+f^}v$KN- zys$9$=l}UnJKYwO!%iqigy2_2q{I`%xE*#HI3kpm2TJuM!iX<|%0Ux|i|>w|rEO;F+jn^5G6qKchF&1jsX<Wg_4a5}t5e01Gm<~ebM-LwKJ6#_2&Pr}A7$E@CmKIm9U%fTi zV@iL}#kG}O2N#O3@oI3=xJ=%`isGpj-O|k)H`g~-uUxtWo3giiKojvcg~bw`5Q>^{ zxuSph@b29&J{fugL_Ace3#ru>w)xH1UcI)ys%7JvYboK#R#OKquTww}14FjFxDbqo zi9!K6kuIjLVG`$gW*C6Op6~gA)Ubs?LgW2rNCyM$8D=n4@ym&z6#k>>#nHv7@ZiGdfz|A5WFa(_(y52_?@NJoUGgQ8>r`%ccE4*Ui{;bf*d zF`@ST5zUvX8qD`-9PRDxot_ew_qqcKucZ{o{YSVWVxmOEL4L5Vjr=kFfcYWFYEiBt zn}`Nc97@$<0xIghK{SiU7LzYbjZu`934GNl)M^bx>2Z`u6s{UpL_xEb_pVa|DYq3T z!Vab}1z2WsJ}e;C{X|qZi2B>YT(K(tIRL ziiW@Y-S6OwXV0G9{p_=a=A6X$u$=g!Uav3F^zpLjpu+&RS}k~Uu1iA%xI26<;5hg` zeu`D4P%u+G&tp~63=iyO0!Dqf=eZsVrGg?pHnO6uvtA{x%F%dn{sZh@$~7_zx%tt#cm4% z-(j}6iSt9~Xc{zGZdfjXhlr+YmKb6w&`HZBGeeA$j5ZluNf-NA%Y1)Ce8MRKHI6TQ zR=iGuT6SHHqB_D7RGQoJVO8{R;wbo}v#W9vV09h91$i!2_zlkHsbalPJC~h#2>*Bg`_UIxxrcAlp zc;`=BEY%BM;z{F$!q3{!rgDcWS8X|Osms&RG+SN`mci0UdxKQw;{XpxL9{w(w+@~u zgLYAg%ml$-oM;L+nb7a!(sW^oHT1|d5UPi%F;>)$7tJrNuU)!6zr1mBe8y>K))YxX z0;CZBWlU58No1%-!9)P+`J?gq$tiUSasA%Z;M~ABEG{oC-MVpmVPUD;>3aU4-)SG8 z9^JopR|&nh-}&AD_#glKzy9%Ge)Q1?TaO;AhCbJv3&uVy^1t}OzY52Nm9cUYvj&L$xzkU0~n>Uu~6^lvK_kq3&3HVvu^O2Z%OaKJzztp5g+bH93c1+2Fgb8=0{R+D!$*5&7PNuT=h$W*q z@enrxo);GuZQUBQ{CaWD>x}{A>#J)Sg^XdU;r!A(ai@2Vz|^tf1$8LXPUCF~9A4OW z*L8_I(ju{WvVin>QWo{rz5W0PSw_DAw4|D2+ui;U>&#LX@D+@KH{voJ?V&KGzIQ6s zvFYprn5mYi;b`GDW4>A38GP`(KbAsHT;h zS)3*sIn)eM3yddZHP|X}6cCKvx${z^Q3Z-`J$nW`p2vCNgulT$byu%m1&R}+%a8^X zf#UG3VKYjl5)7|E2}~Ag(T+w;9A$?*4wpx6@at10lH@;)mD&=fa&(qX@s;I;6b^An z3r)?%BV@WKH>7cro9o#u<8vUK$zVu4Z8N`s^9jE!y%8&S{NoY1rska9Qy`xL_Vm}q z-;|fuGiDu^5-$U}WKpmv420%y0{OJM03VK&RML>C|6>U<`SR)E*%mea7|d@fEcQa% zDfM{Kq0^|qmN2CZ{Th&1`2C4H9q3o1{&rv(c5{&h76r&xSC=i@gi{8LuhnYX+gtCy z{~jJdxm=!vp46?x?V*}Y^F|GW+S52As+x=}y0oW;tW1TwppGXFSS?$}E8|75&%$vc z-T+CR8alje6H$XzWFN(%;aCEALkzvb;&KXCacD$}=oIO=ikiE~#w09?NrP;Zv!{}( za0PR-p>P2b)j1EX37at`DsTZ|GWJN!fT*EUa_h(v;i}+{YSiUta7~dZ?Pg}rl2jVt zGg%D=FPfuDVlNsEL*K*Ym&-18A2~8iS4qT4#WH>!Kwd6aYt=bCD7<)tFeTxvBQvNf zIh@PPi8dWD6J}e%_Nm7z>CK4}nlWwAlf zjewe`-Lt*0*RsQbqb7P1PzHy^XE}Ew)V`GaNlhzt3wWHW;bvOFsm)oXYN1qzH%8%i zZs4$8$4L~xb3%xPFDSbjWt^3#%qlDh48+m?!C>HdgMrAZRw}h-ZEk*k@tt?xfhB$K z-Jk#B=YOjNzTK?8@!E@bUb^}4(PzgeN8X?ZbJOegfZTYu>o;HelRxp|$pu&yRjaVjS4QijZ2-t9h9J^2|DP)cTTU)1M_IMb0o#2(5ulc=Ee#$q@RX+S(LmGOGzUt zD3ixVqvXJNsuigbF+3?;lU5TpO|DZs>$G8%@v!bce6+uJ*c%Mt%OKEHczTTr)0s*^ zKDWZfdF`Il73@mV+a=1zxUM&( zyK^b~=qQt%s7~y188v{gCTZXkC4Pa}tWzDe*N>EhxF zD~^*zG93f;SwlWHSR?qe22A! z`>S%v5fC|xM>wLeZ16cQUAnxpL%jNA+0vxwxI*j=TYBlzCBT8p=?84x*7-U77!t@f zO(2DgNlUuP_dL-xCwn_->!a)sqaeIk(XQoGfi3C4Y^L&@2?xBdObSX+jzx#F>HGc{Uwn}=_m%)TRtAUPaolHHTi32#OSAaLKmMzB=bR_} zav*0OJSGnzlU9L;AjxOJ3F$m!%Myq?0)(CVol-Rs|4U%CR=w&1V%63bO_u~?Fzd96Ji%!gA_0fYUNhMRl1N%m*Iz$nGI-5>g;ol2f=8N2K^F^ z`J03p8TChvSoD#ByolZ6dn3F>(S^faH!W8&9I}!vs8KY9A)-rh5B)X(BzajDtvp5Wyr z$B4Uw^?{*LGV2e1@bBOGy+7i`p>Tv|FN==t8oPT>o;m~9I%)56#fA(zq(W8fmsIVtIaz)cNAh@JHO|I&s zl{^}6Z}09M>?3H)FK+_mQ6gD>MR@+jB~@q~PGO;?L>zQsz0{eHNHwKvkA6yx*Q8R@ zpa!mJ#77P0AHP8Za;0L4-%;bEcKNCP;+mQa``%PAJ$_{JLt z2M1Uy{Q1Jd0t_9o&;!FJ-Ny(}VH>aCxDHqHd zq%%t`r7m3CH7&S-l!YeV8_uYc25|UXURuoT+S)2^0Vna(k3W%Ix^TARjqr7&UcY_& zwnWKTrEa$?-076sF^wrPoCHENT~aDxpEEI{BAtEMHbbAZR&|=PL;OQzquBA%nMC|Z zqz^V}d1Li=nX_jI$k&;aB`2}?KM%;K`3(M=e=~~z5g_N*5$!8)N#IObUt{`BfX!4Y zbqeIuyaCtEbtbqsnWOOQBXYq)MnRv-9$7e9q3pY^v_&8l6n>SuB_89C;XuYUR}ja|F#kr(s9=HnVt&){5zzZUT_L{;ZD0FLqR0hG4e%0Pm*{*d!0Q; zxSS@DIfp=Tu|cj|kS0<}!c(ta1_*a-;()}mDQZDfh9(-oIgn3WX=>fUzD=Uhc+`yp zuU;v<{nj@e+x+y?Pj`>@an&@}PqMy}6r@iQ^sJsxBl4OY#U74`F$v(^@a%CnW=WWMqw?s;YwSx_CZ7e~gBnaa={a(xW zx>*vMYNThem4<2(BA%8y0x^Fn(u%BbF$)o*5jz#T+$h%<3Y8{}pTVFOO7xk>NE8C3 zIE}IXK=F|hg$YZZq(Mk6wP~z!lLYYC>-BN=V8XiH4mFtvVc?BrsbNXK_2xHLR+n3? zOZdX%tHBcdJkhxizf-$=US^wf;~z2joB+-%HKj-lDqsUKYT0r9dp zc@K?f9%@Vs#iJr|Y!a?;0gkPK!c61yON)T9Cr_T#>y6jnc>U4Chrf9D-MQwRl18?>rXKG=?s_Vdr|&2RLVO6eVHSU{u2;oLOfa;JU%?p=3E1hB&A^( z#(uX5^Z+{Iw{X;7fBki!;JthIcK3E`)fyaCoGE8QL%6-ORVQNM7k=`Szj^q@-D163 zED_HoA0Fbnk7*Rg2H+JK@HExtMyfp7%W}Vz{pKwZAkgG$7+nc1`UDhN1dXR}siKd# z*@dISN_mq%4k$z*W5}S0PRBtY8rXvK`R8@wR4Vk!`ik>FT z#BzhKP7}=LBp-4?$f~7z=Vu<5aO3oE0=YPyL{h{xDFo&~Ln?}UeV{mignUCSG3d!8 z!19bb{HaW%XlDLWRJ0(E8%rB0=JK^yoa&NOs%cI+(F=fys3p;oCD&84~eof}tbCF|_`K+)5M<$1GU4m^K-ef{CXC%e15 zop$@+a1S9)u|T{uMaOyZ_DeT!-7-uI=jhM=;y*vx+QQSM@NpEf&Y{5#PwDUf-Va`T z?NwN?zklytJW$-$uYdjPLBAUe`tYM}T)uR5ZS~u4yngfQr7R7|5e!E_IfY3P6k^;o z)J$V$I>oJ&M{3gXN4;RQb8vio+U^fVaC)$iyE{AMai}vH^hE8Rc*L-SUVrtqrKNee zJeM{$NWF?+L{=;Ii{RuEF6iFJAu;SS1;6_ylEGc{(W@XDw{ zgkKm82hVnPo;`au7*LcJ(m^&Phnxw#WvQjz?~g3gWkxLSr!iU0Pbdj>V@k;^I!}_Al$LK&eP!V9^|}iSi&w8++1}p5k6_$L}~dHfoM^91$dWXLLU9s~Ncv6s0C9 zFv}Enf2B&O6Vt#r%xzW{3$+V&X}w;@ciOGi$?2)*c{q|1q$Qkk$L-v@b!%&D3%?Kl z6D|nuT5KAfUM|bxH(^m}h@7b0Z6a7@_e}M5cpBfUGZFbe1mvkiC(}2Z(iL$5=0f`V zx!iqT%aoQbV2NSV#-*5q<;A8j|C>OrPP(804}rH)oj+V)hW40`R%+V0pBlIDhR}ZR9CKCfvLjd#9?Z+TX;u@1OwbMQEalhny$cs z_51<%pO3KH>-8!ZVKe4Q(>23#oT3mEaI=r3bMy2&&BcvErl1NqpPo^x8l@Q~UeSaC z1zX=B%5{J&)xBcokXH>2--mn7Nhhuksi|!nz--)C&Vt9x2_##|d^ppLkUT7tIW=;* z8Wtl`xIYCeID(1rd`|c%QwAO-Z$MXAytU#KDyHFb6OBnEGxU`)A#72(?@!@zfY=}P z&(99}?NcQl&DC%vh93+QmC~W4KoZdHV_ktgu#>&6x3a!5H@}=Bj4jrvBEvh91{OvE z_6Iv3g(L-{a{7)KJY6c&s5B8L-No!+suLie&@yPI^3@u-p3_ZdiK#0k+ft)o*lh*9 zPB7}x*cE|qI&pmy-e=T|O65`}$W^%Vh%1m$K+|okUw<>!96wCFIIGVs$GVkj6M7%= zN$7uZGKv##91hg+NE;3_e?+r?JkO@{N!H<#Fcp_hBFe;-Mu?7BZycSSwkZ0KL*Tqy zwBC8=`;B_3(>eG2K0bHb9iC*(caExC+n;USeDgd1>fihc98g5b4$*g0ae8Ox>BGnO zww^uc_KpiB-5azNHLMipOV+w;RO_x)EErcemM?ECtt`|sJ<1BPYEkjq8;y^T&YnJf zc5>FjK0H4=LL`T{2GMt|SpC*F-+J|x*BkTApZxsipWpxD$=1`pN7fM56XtYzc}Y66 z{^*B4ymRNJ4?g(d=YRimy0s`gJw3&ycCe+ewbOXMUVi88xBk0-_b2gqK+Nq~;(0#N z#zhgaZXps=tfE^9v-E7(+ijme+S`4&yL-~=KHl2FgD#QwK}8a?oPruLT`2trd$l+} zUm-0-g13MD!yh)QH2@oBgMcmLgnGE)0ddnk)jPN*iyKFLPU9}zR6#J4(v-6tC6-@K z2}gMdOf^ir9o%ZHd2cv8JUDpvY=@GxQN$E6Jhr2;9v@?CqDXg9!sT<(>>)cQ578xR zQjIhqXyeIH3DcV}iqK3OX=qZ$j*mQ-3pLf6kR3^Kbc&RgZ6ECKFD)!#TOmFHHox)4 z8=rsnd4E9ku}e!!olfT-t9z072i+8@bDD+$7jP9A|MV%|dU0{_^2X(plM|r0=X+9o zluC!!A8u@HU~P|&kK3K|JlKN;vkgEgPAgVsZ*PxV^b9N(o4Zt|OC&p;SDN$aA)Stm z6f*4LL;R`AW%`MIEY#N7-;(Sz8!SZwm$ z0qJ+h`5WUGV40^}dqlRXsjlO28g)bh*0w$3Ha()%$u7$95zms+Pp~gE_YsGq_h7&76kBB{3q*LKYA{qgDsYo=`-Cj2eBWws@WXf}E>l>>8 zdlo4#G#a(Ny`7`ugCrdzE~mR>-L_0Ml9V|7Y#U*;t83OoOW$`+w`NL4f!G@+9q+jSloDH7 zQZSUz^Ezk8!`@jIjvP}fI=05TbDW*yW0tB^{7n=Aa=E+$5Y=%j)kdYUY?N0QJJN znnWUUgbV(#5BCVZqg~L~S64PRSAPHZzmF~2?R1Zhk6|d=-433YQS5n zm;bl_`F|?oB$iyb)V@EE>03Rqt41>#E88b0U+zD9bbR>q>~!no7;D<7H<_a&NNBj! zt=Ai{gXib1l$(!8z$1vNRo9@l3}>!ZfAhtcR^}HP)tbWU3{=30VomClM0209<Q3r2=q)w|%&O^lbZCr{BXS$2Q;r5OWIT zc@CKXk2>t4DAn@m6kA4famI;_jTs$O>dDVU4wWcQ8OUv_-IxhSvr=VeMmd$cfT%N; zhtP-!8LI)8qF~d@!Ulc+``?F`4|i&DVG%HPcy##q(PMbng5rWqrD72%h-ZyI1bD;f zUA=m>QmoPh_Q5`NLl;X~ma8Gak}WMS!RtU2gfl9ANJN%God7h=g)JeI;@B5}GHORl zl35_kh}rg5oyq4ty~bg|f!z*S|cTQ_yxrp|xSI$<`0Nr8DV?A^L~^V;?6_~+r_ zK0>nLV8}2}2}przcpmUza9?mTJpRBD6AMYyLtIJ^qL7LRly9KOhZ+yVahm1W7f)ad z=5a)9m^rJlZRe^Y6m#pDaOqE50r)zn?QAnWMiV)!H0Mdlp`Ar$vuSV86v(y7fWub` z-2b0|d?q4K{!t)Tg(JbB>}W0>J#{qlsPyZBoGCw}a6BCOqsc5h0ikdwnH*u8grGE) zz&o41uf#;gPDI36QY=}Umo{Ra_a6>Dor)QR5d&{{IkrgUSH+90FDP99w~6xtitIB zODn7Y{@?vKR-yExzxuIZxhaplOL-d)3IHZuengiYlS4;sI_0WrS{Wcy;b>`sxU)c> z&P3#DqDr!n`xFx!&WK5R8-sq^>$lZ79DDu1AKJQN^AL}?1=0{l32(}Ps(@muo9Y&9 zp5<2N7goykx!S_|&cRSClu6#1M+Y+^17IN6De1z4ONgsDT^tRRaWFnR&WI(0)TrQ6 zSlojvMFKq+FJdwWNx?-K!X}c-R2i?xv`XZnjyV2%`+vDS-ljD<4 zxBs)Bez3N789$jLESiQTD7rXMxNLyLC!c(RU~YSRYkhqk0npLW5#pO>qtWhkOd?b_T-z!b z>e_Pi$%D^Yr>8Yn`QQK7|K;sBUWfBRDlfxMP9TvK7D`t>{NVGy`{0*PkB?K=IS)ps z{eG8bd08uuxE9oQYjEx63jnIK^Rs%jfpgyNbcUWc4uVRxjF`Qk>z9{SudJ@(s&b(R zuE?<8MdQ`f*PT&*i;86mkHS+AeJXow$g^JZ!Lv^()v&z)8-4 z9_cW!k?RVw*A@TSj=f;|tX3R)82gZOHZFZdH=olu|Cy$ zO%WoHMpW!8c148Y{f|F}ABOK?BK9Ber_?e*sO(-GUnvy)lE$qpa_PurAlEW3v*>QgvEU#Eu$dLlNAL^hTG(Ib z_L8NoRLgI?@kY5^e)Q;3zu$#PWVbQLZcXj}!OpyM=T5?P9@D5u!SoOlzo;MJ_|s1xeLNTqf@p$>7IxwEye~7I76FeCT#-Eg z(wLU$(i6t#(l9KNw9Lei0Eh=eqUy+&g%JXM)&z8svA^Mm<3v#_PziaZ^HZXHQY7{- zI0}#3LHylnwqQ)*THtk6`3)q+r`~I%ydAQ71@_kfmfZ<(Y{K2lBUdPzk{qL=kY7Pm zpq;M3YuFk3tdi?v*&+(D;+o^V8Fd-Z?-Wr(M`dR9=ws4V<@f81VD^ zBq>*Frs3kxMx#|Idg%tW>`>HfDd#MKg)sk^BBbY6s&%L21IS~Fz1k{Kns-MU*@#*e zrgJkO-o-_hm;(u{WZI~eKfL!FOGw3?B$UQEDf5JZWr%bJ^ExCmp?C?2i4Z{>)X6H> zEYIJ*c4rPZvRs*kZe;nm2974%(&ed|_P#2#P) z219mhH5(0VY&;+=h3~Wf24?g}Kl-QR!z{qxT0rR|+|t34f0a6^*O-JHzE2=9*epW%tLTlHs; zo;2!Z&x(HU?U(-5@Bg!}y#3a6Hh8xG+0`3YE=K*~FgkcT`@8S|;#cpzA6xFxSvRC) zxIGJn7)*v0W06>Qg*Xzy0`{wxmclUbyb54^rQO6oOfQD(Z8Av=FM9ZMZDnC@W!8XI!WRKZ1OER|zIe~V*U79$*vqGg@MiO4l2p@DlD&*t38GM%FZi#SNf$+E(| zwsTq8B06B9i znJzd`Tv#k!T^UZ78L3%Fp)p7&sB3XM4in+}RFPs{-yu-N4I57_i8F;Fbh)l7Z= zi{JY_7~f78q4>F|kk6C>-jIR_d>Z(a8ynlOEzA~RV}%hL^`+@ZwW@)^i1Z>!SmHw? z&4ma@md4_WO7i%!>Wwh%kV3~!_`5++F8f%2tcbj=r9`tz*KyC|btlV;R`_ zKc38~5uVc5iN~t4@UAHSB4Qi%C$On_TCczU=4=WR@a*xE$HLGMH|texVSrK0hxhU1 z;FBWOAB!?BP#J%o938RkNQCnMCqU4>yOsCEE zN)W`8@tkQYc1M=+KMM9Oy8Ss!szAr6%i0J-uQ z6Nzm)2Qtf^UcDx7@I>8$w{>av^4{fgxuVVnTeZT- z>mmLNRrEQ)00960Nkl(|01&M7LdQmD2{wU%3L$4)u2i=k17O^?2}>!bv_N>gZC z8kDQvNn*^BXf8lLjYq@z_(D`YCalm-=eXLUt1f^kj6ST>OFNIHt#CX_3G?u{5IC|U z1e%CFhuwgxXAztWxLmDzbA4^C+Gy@vx&};V8Cxn%SWISG?Rfv_*$4OD`Nc1Ob_h^u zt&IB9&5f7%`Rg#Y zy1j`|&9L+%>a@(>F&9ngT}!n(V&R^WAgQ226fVNtkYfS`Mr6S$f>e-KKqMLUkqOTX`r(7!d6k&>3sxQFp{A zQ7ji+qr<-{Mxl^=jXjp7+vs_xDqStEl4ZwH256hDM+8~cs$Xz9yT`8EJxa^EbJX~Y1RuR zox2}HuA~^^B8A*gY`K2q6TaL4+f@IR# zY3|)h$K;pgDJ8^W>-U7xQ6n}ms}6w~6Qm?Rme@%Jo2cYZM*(~{0QucJui{gO{UNML zr++>i^>K7{-T=!zr=*fNz;2({Vrz;=dxFDB(aro0A7Fn_4nU@ zZ*6S_#_{0b@dx+c3qx#{8N9GsqgJifgSi1LPdMaNl%#c8tH`MsR3t@Wsi{c6j1*It zP7j3(iOqmssUQ;+q5SY%MMXI{QTEljQ_}d9N>9pRxR-9XGaOuCrTl8O)oP1FQrfFr2IYKq1;oyt^g2jl00)Mh z2lELZFr;dqj z%*LYuw)N;@!hz@j;ErtoU(+vFVeQw~x2{~iyuPu%y|v8(4IWgA-gtF)3l9Z* z1J4G4y|K0?RbF~~+uNIadwW#=?f2o2o}ZnL#;iW#$-ZTLVq^iZI zC|vEht#)IjU9VQFI4gJ@(OlJ&Q_cWN!f0VT5%ExM!_6E=HFV1U!Ey1})OI%Q03~RJ z@n|%9@Zdf+zrhykSh~H$`Jf8jM2B7B`V?$o8x$43lo!&JDWS+zN*S38SGz34FKphl zCFvRqtIcyju6z;&$A0^*w~8hA(@#Iu6d;~gzdyL>51G8RwFXZNZnjz*>+4uL#Nv3G zjYeZBK#f_)_#8ErUBh-$_Y zCdR`cQ)yxm*4f$F-q_s4z3lHFQvPH%!w-k-0kZS70p1hdr?RXUnA3_8Oo;lFl^yC7 zcO)wjDv(P)o-_#na=Z&2FZR|sC8>?7^ow@mC(loHrEPIbY3w}Bo@7wE+zf7-&o{n3 z|1)0%B`>cyg8#0qDI%nXboB-M~AkkqY?dy!wrTS~6 zgIjrpfWeJP61!lmoJ_*8tWJR5Ky1Zu-MnJCTB(y1HneKh*7o+LnqLDpzw`dD5Xa!B z8qJ#ae+8nQC;9}na>bW+j|4$Ec4vk4H1F*EOoQ^h-Q7o@eS(X*d-pD!(BqTCcDsQn z=e&3N-h1yLI>!UUSp`^B{Ki};uo9697H&w-%v2poS|C6!DQ;%Dg}N0e8?kMG4SitAyUE{vs^%lULnFC?UA zpae-%-uEn0Mn?I{TtEx%7f^@%_SFV{3#YWx>71OOj0pqOmR80`HXM;cvsi7etZeSI z+v|x_BnBp_2dVWX9Zk_4590@;Q>~Qw$Q?Tv_lLdn(V!c%;5dlQl-MUHUeJ*{i^)%H z=prDM*>%b+d5yKrLZ#{APTkThvF8y0yTnE&(=}73!Z=kjQ{iEGj=Ho)5|A+k5jpG^ z3^yE~`IIREN^O!4ms7AT%VL*sysuQS*}BP6CtDJ-(@U_)$2J!sT?lyJ@R`}7wM}PnKKbwwbI3^dpkyPag zWF^rQP9?(gr*>~hpb8`cs%`Sb5=+V?7ma5tgh~=R9Gn z+5F_whj@HG6Z)lY?;OVp=#ERp&+7zjqgvb8T;JK+ymjlk?-dUZk8lK<&DM=8d%e!- zx4-p`&iTRr_&@#kue^He(bG@feESugl9*&fwZHlgfAgKc{n22Em2yI%n!%EFI%k^m zWajL=Z+WiNi=1mWZ>jpEs`4_i1m|)-Uumy&&d#vIn~fTrW{TFZ0V=+A>&EUbWsb=! zBFx?->q->5 zmRIpW5e>Tp5)H&P@G_Mop3aB%%*#+3`+kI|*ftg_6?VbK=@a3QqRuGm5Y**MI|x$G z&QG2`efqEe^&fxy@y8#1^pUodsp6sv3gZIsOcAdG?-7fO!t6RW-SNrEbUG;rdvr?J zAhOYT)|1IlCJQ9k-~>&vTrR@{IP0FV!9L_z8WSRt;n#^!LrCS6Up?Ury@XLtI{cDl z*K_$BJ5Z!lYA4VMn#bIt6VItthAf0hF>l}e*73QG{+Z3VnfD{S#81N z`_h-bgk^d9^a)%M7#UHxwiie*4;MF!Ym>-<+eoqzX?DB4qmyGD>zqud1`oWclx;DovW(UBo%QWY_%ntV z%xFnUFp{W`77|Iq0T)r6zEUjI%jIZ34kp9NuoFxth{aib=ld;~qSb&-#xu{W;`sM_ zlSX|lj+{nwZDr$9WS3*dGYX~9v_iucy%OnXW(L(Zm&!!?eY)RmnNwz+L{jT8+>{O= zic=IdoJ(}bngcr>*)s{RE_5uj;8^tNi!Op`)l(2ik@>)g6P2`nr0kIhQf4vwo!$%| z5|D@r)<@L`fT!?N5tLUcK-s!-^)k%*@$u2Krw0Y6$XFt=W|QgYq8}%-a6T$|_~6K^ z6un9bCinF896Uvpg8q~F$Vt@2q{hMuHr-< zA3hDk$^ZPn{P|bD{-wwJkFMRk9E3P)_4&;B%{w3c=!ZXh@NoZwdk=dT6C;5O-bj@N zgvS?~L8n@cpeDP0J?*V3;Y-^4Id}<7gtl|+7E=!m0&57ltZWlZHWxf8p1S1q_9(lI8jfJ zm>3(4*!d&_?%D&-yVH1DbJ+1RkxMqylqAnLma&IF%J^{7IGK!e#`5cGKVN8evyH{% z4ot&88pxFhOvA@~#wke^KNBS`S?)rVNLt`u;Zd&z`O~w#uBNUqEqSx%kVpruaxim70fR zY&{<1sBdp?8Ir?++llxIuj2!88_iaIeSOVwVIBHT(dqV1KYjG^!NIel*h#-fbXMcLq>G`$ITuVJQ)0qF=h_Ik09Md5D#x-5*T ziB0@jsgzso7Cw$llk<4txS5OZtyCFzk*-NufuzD`*$dmD+lVdKaDhidv6v*U(2ksP ziE=f@LpN)9U2HpzD0%I|v9LR8jKPL2Nb>HU>gapisu1gl@L;%B=bUl6@{!_Qx z(Pkw>B%y4{Y6wZHeQEdd=B3Mx)~e}xn*T_r#gx5Q{6}SgFNs^oYW-|fDL4fndoU$2 z)qDhJic)N8`9{1zX@Fm8ZycZY5%v|_%1Udiy}DhhwC0gBw*cg&SZHAwva<+kYmdD+ zCJUwH49F$nfw&zP7BTk1hsIJE#kUN{rMC`PP8PGA6M~JLl<git8Jz2(PiPU8?|G zxVA?bt46(+gwt;Sq*8TDexcs*2jku^e(}rCK6`{Ga(+%NtUI^vvU}^SgP;v}DkVUZ zBrOU1*MO-wEI2_xWqj73{K=odRr<@n{7W5+Xw)j5?m1jxSX2P^l`DIvr^oNV{|;VR zZLhRj?QXC8%H5ZCE^Ynlmp{cX{x|>Kzx~5M{{8db(al@eVk4?lYlULvd*A)hzyCk} z>X$$NVE^#ET5I80T=a*ooqC{&2!rM!3vdfAvQDDI$kMP%sK*|ASbz4_B&vERKyCx{ zx3)HSHZNhNy<$nG(GtX!5(*25@{rnLt`M3;dF!%rsAWbuC9u}CJPnL;3P@i)#~-HC zM~@zN&d*sZr|n8ju%2jA_Qk)yVosy6`;7rGq5T-R48-1&Piio zhocL?sP0AEb>Jgnj~*NxBJRii?(A&$dYw?R&qCwDJTQH3^1;Nxm7TvLYXc~GWM_}X)`=tQ{RqN|bAT5s}BApV(Rg@-S1k%ETi~ZKYDwUyjs&H;}LCJ{SLK6rLoh>q@#-hy5uslxecdnG`6FxDqNOoh8^U z;k}Nc@n||2_O*PjtSsp=Ft&Fa)fNym3E}7#VzMCyrrmW7A!~akbH`cDrYj`KZyX?C*c}n|FQ<{B>Oy zTd-WN0JbHi&6XJ!DLt~LEBmx)n=*Yp6YXYgddvjG_yoz&EI^*4wF0(FCqpU%(lcU< zCTSFFF`fUX{mBSz@ri@M5Uzre7g0pcFa=T-26Gm^yn?H2IBwyEV47->SQH2Xkh1~a z!IL2q1JGdxNgOX0 zeF-J)QIQsohq=eaCVBGqpgTi1;P8U&|!0?m{TrB>N*2lPtT4K{_3Y|B@Yh{p;Eus z!Ch%yg+U~n1kAN|8~6${yK`v``?=Zj+iQ)(ql0gJ?~(|L4w zGMQ4z!}t9`Z-C9VvAK@@@bQCB00YfNy>obCxaOO0zl}8lhG>U%7ex>R*53ul5ffzy0O6{_Fqtzr1>LcYAk(G$WSv@yDP3 z_$NRA>%aP&hrc;>8Ww=uj9s`Rth^+P&?2{2SFc>>=82`{Q#AJkn>pi&?{PiYA9&sX za+n2xU$5V5H&+mpH(O0d)HvXMX`HRI4;+4slW<7^I?8I98JwHBaWmAqM``0yA_&c? zF^Bpt)A5YN=I19`l1yIU(%`YP%bxF5d^HmMWJ#^D{WVDPP|99v3XaMBLKhO-?9!!6 zaID$1YbA#VhnrhWk{=u#{QB3wrn~I>LWpK6gCtHaO=XgdWSH&N%{z40&d-z~%FcRO zILR%|U(Aht0FU;Hl~c+(k=SZTdm_qg zL`~N%aez~Dw6eCAj&ezK%f4tC!H95B;N=Uob^#Bw-|OQxUwiEpwyB?=cRJn4bch#; z;?iw`M}!;P+}y#g!;>eI{CKJ+T|bt^O1S%8No(PAp}5dMD2P&NyfiRigJRmU&cjnI zXm#Jn9yNBE>SGxai)$CN_7lj6wy8TXr(#V+30gV1t?W6XlUxK3!bxZXhQbgYx0o=_!0zt)@SI{1~5JDwPpn;(1@acBRp%B5vqioZr5EZ8+-x z{O5mvdV0#qiiF!;`oT&h!JY;(66U*w5?l%udeNX<_4}0mQ)-8SYzUzYU^r!|IM8CW z&oVWs&I2Gwtn^aMtV+8LcCL0W;~{9`$jDd%OI|@c-6Hn=kC!!etRxG*5uk{kY%B#H z7;9M*cOIr}M6hUxx|CEwsc^MPn`7l1y{NQSSGKpdCH$Lfc~a771Dr58Mu2=Pl@bb- zh|*b({-vc6yAfv+cTJ5KQQgMjSfIFsIL-FTE3bWN^U^Mvew;!;wQ0kp^IoLY3&c5) zr2$gnk9U9bt46)*72G(OFxiLW!Z%^m!~we`*R#zy<$!;g=S*%P$8yZhdI z@2;+_Z?13PAOLw`srUEyw>Gy{TJ4u#e);v+Ux)knzy9z48|*lC;Ba^`91L+bH#Rrk zc;mGjH*RQg=Wze&4}S2&ot+&VvFUVt@7_J^3v3~rvaf#it8n*lQs6yw`sbf~@^ojf z`S1SS|6sUbsa*Kr-fs}N_b!H?J$g2o#N%;TD%N@z6S(a4YNK;ov`pA8S7)m%9|I%LH}G}9FF$@L~}?N}4`sE3?Ai=}kO1b|l(O_Vc5anJWD z8P0^clZdKvM9nd7V!G=xBQCu((?r@|#1s@P5pYs0aO|}HO^OvV(Yi|HWr!um+X}7J z9G=S7)&@c{oCTQQUa!MU;Akjw&4hoPCK&U*y{p%+U;pV(e`?WRoQFc$p)wrOjAm&w z&{(uj^cCEWPLzehSw;yieivqmOa`ou%;Th8_adFAniujw**0S-kV~B;Kdl*kTdWy~ z+zxBMcp8dIsd~8za7W|kh#QmyHTzBo$k3AhyUu2|K zClcc&F$7G8ldn$-(!w7wQ;$TWb0I5Eth8!oX_P#V<~l1+he;{*vJu8u3aI#5xE-}h z9e*8-2VuZ_)LFHS^^HIMvptfMX+G{j|oKT{E(PT{GLmWR^;a+z%83mzs z><7vr!!oax?k?5S(YJCX`!dnK(-}*idRnB&9&c`6x_SHMolARWp~!M`7;&=Pui@z- zNSMuMdIn}$+3^vnp_5p~0f{TU!9}fB(PBA_QEbAcn&XD9UVjsA$!KQI z0+^wSRce~0W@J~HS5FE$>j-zuj$>OJ*+@#1XiT3h^nPNIDNXrqB_a=`DL0g(Oqh_= zI(<5l9SISTB&1|Ug`-S}yeM5S`ypT{-C(ZCE07)^UKt10l;uW>7Pe;8q-R>Jp((@X zW?E-8WBO9UHyKQ4N5{u(7@f@$PA93D2QUww-%QEj4KqM&T@)E#_|)CAbJioL>?zsW z*a)O~BAADO>f5(&fBm0-{mXBE8HN&%`S56;e;yx)RI9WrmCDz?_SM||KRi4fj7HcD z0Q&dedoSO6dwYApp~-k0#B_X%CA;8}@MAi=@M|6}NfP)bb>pURY3w+%gSo-)Nud;_ zz^0C#Fk`}K0H5lOI&X|!SEX*ZQ>#?(-o1;6?a7lTCr3vx4rS?#fe~0~w$%dE8`X{V zbzoMi1Yfw(c$RoVGy#rA#4koVQrI+vg;UE6X^Ru&O&z|9S zu3o+R=+UG1-+vb%2WNM=NlNXi1fX-jT!qU8i}TKJ-ht`VNl`=EY}0-n3F`DzCPGSNz@w6fDkf*nCK8t*{>F~ z5zo-Z;z03Bz%o{a9VM4_ZS#wOoB@obvfvBKmv~9WZ5gw**}^bYb}J=BX9t6wHVmd6 zQHcP#TWgWL>mLK;$@4@r@rL*qJijzm3P(kDgAd!!X~DLh&khrZ7H z!Jd%UY&uS&Y0Q~Ub#2Jw!EKjNl!@amN(3kzaB0DVS{)>Wp&C!2s9~{$GUQ@`lkWQ! zd>~8`_AAv#Vy1LtlxwbOK*jP)I~#Ca5k6kp-G1=k!(adA=cDnc)oj7U_-{VQXrpc0gOJNsVTKw3|>hJ$yF!y zcnOGuI9aF|;myDH&%Wjs?04RIM_Wa7-f8)HF^R4sf6|!FZ7qa3fBxrx4vX-u@BHn- z{(h_7#w+k?NFf=gnGA6|%rZ`Z=fiMczI>UPiP(hQhm+gsbO(bGp1@>2!AZk%&FEQ^ z(c0Fmlcay8+{@-HSGcJ(>rMkOPm^6Z3|hg0|G%=b)?8gHl*;vHYh`VtRIb6yV$Vd0 zsoF$_k%p&+ED^;+gK&7k*6v7_TBwmC$K?dtY&H@_qFH3jy;^;9`*skQE=FY$YR;dm@syT#9~MzWLiZ@f06@o zFiDcdLCDoT>jBzf!AFCs*aG}aY`fU2k>xO(5n!t)1Y<@>q9~<9hM}mEkcXH&LQ^f~ zDRqJ5`#DxbeNbuG6jd)%kriL{dX;U!;}M5HXOq0z*J?FG@mBD=%~stlI>hp#6-MJ~ z2ILWY@?$)}c>WxaCs8_gAZl_;N*flL&rR`4ago@XufO^#9FFh*;QNOMxP2OKs`Ut7 z!e2i>J;i?0y7FK&PJItL=O@QY^_eW-?Ja7#FM2QhB5_m{I5j zxb7bws*h!4JxMm@YfB{r0zIn zzXY2(5*BA!3_fVT=EG5dtwSi>>G#-|D*csN{8129Y2uvluLa6?hC?GQvHZg_QnD8j zrV+Ajw*(vF2$_!<@S>V85@%{>yEwjh@!FNE2piyQ;)0((eTqj6AW)7xwPJW51mbj< z1|x(UxDnpnWUl@EI({RgiE#(72UEZ7YbX3HoWiG6?anX`1uspZj+r8)Fr>e=pkHn= z?;0lKLPi}Ub|6+fa^w^`RxV?zP1&*X?JF4Py$;Jjx#+rho?tCeou7PkO@Q1bp`;mS zt<8Lgkg4^S=?c@o@q$davAjW_1M;lDWBDVO9g5|@#?J@qY2TLm4myfJ<^u~rVoRf= zo&zIQLoqcu6H}Ht9uIrMuY&VEb*vo7v4%=f&d?sAv&_6PjuPHHSUip&;r=Urr9_ZO zDS!3C6w5a@H{rYkm|+1CY9{PjXSa?kxhBQ(S6;e>_s2Qe+FEb6YJcHIh={(Y_(*g-g92e zJj;<#=1sa=L-LYjZ)izZiIH*Fz`<9g0HS0fvALNz6od%m{UcjgJ9IKr`yyN&#&=lQ zqiSt`I2sJj&wGI937ZF zp3&`hBpcwWqsgojA2Cm?0CszYJspY2l*qVU=JO|(h@Xq1r^DR`ATJ=0i3sFIEDt<8jqMd{`d|iCc*)E-{UIKD`&*nh(pc1O_f~e*uay~2&;#CcP06^ zxwVBCft}mio0s?YM7vA{h_iVdGVh5NNj66shI5TTvQhFJzSUHw{Y|;;%C!XbYUu=v zHS6>{M@L6zovsl^hIDtAN`8TK>cWo}2svmF=0I)OV##^is}RBdf3*Xm-e9B?e=JIcgFK$R`8sr5t&vkdJEeGbU6 zMsv#bj!3mJpXwm5He{-Fie5HFPD>THKvn@AVKRxGB=2`9$B42oUE0QHc6%Lsb8ztV@srQ)-@gY}5w8H9TCFy> z8aFYly<2atl!|pB{xlb@tx2dv$|Bu3%lrTH$!|%x#UgBAiO3r#vDA)8RKbJ}JME>2qarE*lZ0L{RJ(&a~+HJSov%9YAnUwXTbaNl)S*ET%Q=SkBXhQO9-npxhMqHwrB z&ScY~g?M(@MV&4cz*=qpBT@LSHcA}Uk6py#XWhvxEVfs#nuUf{su#-ja;4!qp7@A1 zm1AN@2S|j7BNl48Q0v_4>QWcW)TvnQb6(WHmw`Mr0c=-P9Y$&RFtq;>zY=C*bSaRF zx0;gpy6h2jIN)QbLX@Fg3nUC@HX^o__>hyV43UAAUYXjs+M)<|76@0bHG#*7*kO-bEK*`>9armCtDcU!ar4Y@4Z-gQa&^Sbv^Z(1 z+{IdZO|>yX-0#+Uzt_XDfoGH0;RrFYGi~w#Ye<%;%!bNkMk<^l1jelB zi2*f*@gui{IahE&0s?{VF3w{t3AVkOu$S1Oj3PjhLm$?}Tix&Z1@Mt(fj z0XB`r@p`pd#bM#p^>|b$vZkpzB4yu$kI}!l(4;gAV(=;r4yJ~JXPj?wMJ|{pH`0NA z$JG2{oEJnC!x*f)jz~zbB_3|Q?^p0JwO20Zt+M&)b6D5AckfrhI94Lx!ZElg{xlb`*>~QU$S3M-DgHW(aiSDsDMOKiQ%e)v|1k^FJ<0utl&8IUE ziU29#+{oBlAoT_2rPNDf9x9HtQ#hNVS_Dg0Mm+UJK%Qrka%|S7jodX<(w;8@@)uI; zDUg?2Yf9L{{A&if>Qki9l2ZX^@^c#eEfdJSpwaf?hv}x4l%2M2Yh#v-6;h2OHZq|u zN8LIpR~d^jHl4kJm1KkTbOucd|a>BJ?(TZU*4lI`Dc$O%n*;()>eiC?3w=F?%r!}yz=q=k6{Y0U%!5O zdi)>%<2PK_syAxK#|Imm>*b0M%<5eX5l_@>?TX)WZ9f)mEOBUJRm+(NI4N}c=zvE# zE3IKH(kUhmi;R0R5Y&_a>Dz(;7X+JGsZ?-l6VW-%LxbG8l3gVkSI3F68o9OPYcZoM z%zC=9l;n~H2$6+>n9+O$;=W zFRB}H-lrOho{gE7d=<;(>=X6zI?-CRc31{t@?1o2%s4HC>jxQM9HDwo|L zAWZ^xtBfN8$SossgSizs8i!8-q+CY@G9jV7f zpOvZXTeq$wZd+Yl!C!+YIz2ttZm&4a7i!m=skkmqiAL&9+Pxd6Vev36)@WspU=5i3;K75BKKckJ0_Os6g}4(woN1**q*}9M3g7eb1cVP@DvYgWxlArz zSQz{(dG-6}hX;qSt^jXW6wndNc;#ZJ*ZcJ0{aU-l#xV)H^vP!WABM`07*dvHiJXKG zX^ouaMY^(DBWJq|{;6E{gpNsP(x^V7o$cauEHZzuy!sLV`(S?`CKve1EU61{4Mch| z8V*Kpzy0Mam#^ab*)|V9sm~5L63Mx#kc=>5IkD<;kPPRY%x-Cgn~KaSr@ED~tr^*9W4fUwpiU>{pU?8YfI}|;xtXc7W>(D9 zh7mQssTXe=3gl8bO;Z`^?Mc6`!-f((kBjkS6o;zGEp?`)qz5(%_iM?QpgbK?lI_Lt z0q={AD{Oq6U&Q4otB)sSxr*ga5BBl%?RFc8v%mio*MHtQL&O>Js^g?Q;blX^_iVetAE~$z&E*DRa>yK;M=HhHAM-8wX(YS~MGQT|<4^?`B zqbZ@0Gs0>XQAsFG8Jsq9ZGt$&r}&i$PI94OOXG{>ik2D)q+)526?*}{jq+Mqtr-b%6j3xHf7hou7x%;{y+eoEh~GPr4i zJs%(x-XzT)sY6T-SN=fO14TMCI<+EZ#}-gd$?+c&rNI%JTvHM@EI1@aaM3$9zW5eXJjo`QCiVUG}{5E3L#m6+^Ck2X+)-zs(wk~ zAW4TE9NWk!t7u8NyZA2zGCdb&2(O~mYG@slA<>+X5Oz0N{AV#Da`sv<-D&dd&I2P5 z7nX15Xamu5^qE`9M0`Sp6Menlx+|-#R;zvG%H>yHd9_@r-n;kV$;mN$q$Q?|j5woY ziI&ZA2H_cDMm{jgu7$)*{hS5qkXk28TtC`lnbQG~18eB%1`$tz_OUNz%k1>}+0W}( zbS5m}{wLXALV`ua&A0B{#`~~arChGoDj$7FRzA&vY10`VO|#Kf(IhNBrwV;vhS1{C zaH0dZ^+p}f2XQctRHa(MlYlD^hkM3`1|4E_YV`_hn&VNY-x*6`MMO(YB{9ucJ6~H# zrkXiGW^~B1{vpeJr18gLmQtD{w%U+_U>Id>jM}UqD}3wbO+-iCP6tmI*MLC0+wG`F z1^6MZQQ{?qoV6C5l_d@?}JS0m$>jjuvkuEMK@G z3OrJJBpg}No!|&7iav&{U)U54fiOTcF-GVxi{wyg?5@T%ofmS8sx6Va0!g}LajcCA zOr0U%#%9tEc7t;W_+d-2ygwXZKj5AB_I6p!4uVIIJ|jI`(G>!};H8&d#@Xm}PGNL5 zw>JLbFaG^`=VWE2)#;u!S}kn!AWHD;VS^Bnx*T>FYa}^ z>cM1#l{N>oVFA-{G)>#ETeVQ6xgmk(Tqf>HD=RDIN=5vDNGWyYK)TxGkCj7gu0jjK zP2fll-$LjcgtLRg&mKQ{Fr5tv`aJWZ@xWRybc@VKGWza?%CMO8T#+=YJ`?|nPrB;sj%vdk?e#T)&sVh47 zf#%!wuZss~bH@_;a;96!=8;%RNO3Fy@3cm4kuTn*FnS{Mjj@tt(s)W>Mn3~99ZWl& zL(2(ywMMwstjSzfAqqmEIFsr?ozZAMnWkk@X|c@5ir^UG@r`F=AT1g4Bg*c1)OR-n zcI;=w)K)Bg7$nC^QeJ19y#B%xDxpQrQXE!mrJYL~2$b1cyZ~}zG=$M6!#_NYj~{%3 ztTHrzOQr%Q2dMJ z!i9`7Eu9LPZpH?fTJXeL$eb*IT#lBt4CK=8t3?^jOfb8~$dL&TWhV^Pd0k{5Ga!#S z^eBYQl9O|7v(acOC37UHCgDr=5vo3B?r_2^m(1Wve`4|KmFsk%WtQab-Mf^48xHrM z9kS;U;7wY74|g*jj}^$_F#zDfPBGSq;E>^<97jh?lsuigvJX%uG#e{T%_)W7LnX=tOMCj{wq}b_B`^g zh*m4fF%vcil7M|Ym`^G5ERQOu_>Yy^Q@Y+f=}Rogjx+KDmI#8vzPDQ~Wki|_nM*-L z7aUG~OSMd5BQ;lrL3%Rheb!G|B-8w|UZif1_L zkK0sIngNG!(CUSv&wcC`jkMc<_c(z|F1>0vCz@i-7fQPan7N@jgo!i(U@#4UMBGEA zQZ2a!vR=q@ky#HpUBcx~qb8bX`b57N$YZ5wRv=dw%}g_6A$z(-NIa*6Gqw7v*-(x0 zt(0}u$e06U6fKfuoqyx{^-8r0IL`@Nw5I_#)$jK^XJ>G(XHx8!3nP;@fY_4qUP*di zwfJXBPFcJ$;D_Or%gsikD3k!oAIapu5dFxw3!P4^vkDnu8^HU9;p2m5(RcFb@%{Vv zKWH?|Zh=5!$7uzjTlQBrR(AgEzxuP+UwdmhiGTFtUw7c*8>J*E z1cnkfG6x>AuT5iUo@7MUX^mVG+S1t(nz>Fvk^%V=Je$Iiki?nKt`WRME;*3P>5bD8 zhG?`H84W;QGt-XoB#JXP%c6LD$Sy${a0~=2xxP3Fez_tg5?s+Vh(^?8GXk4^p^=a+ z5;kB0@f#)A9SnvMr=euhS(B6|m0qxouU)<}8jpGx7l45=$H*^K{1;a;A-y&WnxPcG z*t}_opqvIHY$qb-S}ARFAkfH&{PgVb`i-ksuUswrKFz4q$V03vQ|pGbqemBAs^lTM z!m0EMMWOO$b?NBzgorhnIg-r#A|U5(kvXUW$@3Ts;zIAd^zzQmP9S27Fd95rhNW|r z|8D`gSah1Akg2%o06;#T%!Rd0Ig+ESPg@LK3gkcwk&KH=r6N|iTq-E{3;ylX&mQ6D z$|oHxk}0yrZ1uIprK!LE+M7?F zJRS^2@DC66_krd3EO<9MSSuNbNcrCJd{obgAq3eP)Ip8nY!X3%TpN&8f)){o9IljM zWsy9NL(9k!_n#P$b8DJ*#?Sh^#aCNn8o7p*R*aTEI8OC(7i6MNnqGVEd1pB}u3(hu zWD7x@5{=MM;z7-$MAB|#26crJJ-sCX@|b?t;z8Hur( z5$a-{8})j*Tuo$_J*2QM=OFEr*PktBh{exNPjBA5jjb>o_ND$8`F@#A>5jG9YP|H) zoge)0ht;b8(#yAg{hOcv{8v98kNenL+NQ^(Y6$Qy$f8-T=Bnd(B;~-xSgz8r%bdmx zPIDj}RK^mEstz+qL=_bfS+dC{(Q-H}Q0~S$apFYL%s$@FH3PLQ3w1!%&&Eo+Bt?~M3L?t5NH|194oD_;|aexViV{b}V zzq;oVy3JG5DF+Xy4n8=i7%KHjy=E8OFql2t|Ll`b?>F1NWd)Hri_LJJP~~Dex5hJU zuF5>HtKLexwe!a7Z?~H3cwXn7iRn}UwC5~2#OYlT}qE5%()r^pr) zAMp}|TSvd59Q1d(L1-2x6&5FsL`j#C_% zhB_JSwyRW_9%OTwgHMGQJH~0V&B!q|pKnN&ov8}Vi%RdM=)8%HDO;Llp2sQhU=~F5 z2*+nQyf`~MqtPD>aM>!lm5>e-faxKY#_NPx*}y*M7X9&TiWjv}9}#yLPK&O6CB&|8UYc%FaIeP#W=qyxArcMI!jP-Cp1(+?R)`e0~C^L-k+O=zMyzyG6)BVnOzJ2}rb%Yam zlaD^SA1)bvs+)`_yL-EDy#7Y1RDSo}ce~y0#>U1D zL`#jr;c4OSbgMjl_86|f`uZw-h-c599G{)*4RYVhw4U00nUS=VXF_i(oxBp~N%hlU zwY(B#MWof7L31F*wdHJt&}D_&TibVEx*dpiJ7P9$EwZc9GmwOCM0e`OjT>M6>Q^5; zcz^|QodRs>*(vjUFhRJZRIpX5Z%X#3BU||GRHamWvQXNUgdSh}7}D86p|TJi3RM9~ z1D?F;J6e9kDO{TIa&4Q=Uu@-gmv@i7kXm1c@ZVaheqoQ9OO22jOp8hRtw6qvz z8XLLmvosX3ya`?a@+6&zUDOf9Z(LG~SJe~S&eUm5{lT0Fh}k@8uF;8GJblCpw{O1$ zyR6dzD&+!a|K#N8$&)8oD_ceIbRHvSV2yWZG#gdFf;SuwhP_@7>qEdMWbmot|0z#9 z9+AaLs}vx_q*GlJaX@0~Or0SlubXmrxKXs$#TMHGLS*FxZQ47tCbN}eL7c`6+@=i076BtBw~Gmc(hY?$vGCn z%}TY(991kFX>@#@XdY{tU2EjbW~D%`6^?WX*i$)Sa&#cQ|m5>xna~W&LLXxg0HxV)1lv7uo^9nM`>< z?SUudRhFB{fgJzqouA&mbBDTuR`R7Uy@}sFI6Od{4Iqa@^XSp1`}_M<)}GQY#N1zg z`^$*GaeqfgCo&6aH=E7bc&;ce*X$^`B>0&==OT>*$_Zf ztJO~Dd`LR$M1g!tDwyV5Z-43J^yu0Cr+4q({P5#@_da|dz>@=cYh~?>lnY~ch@~Qe zkcMd#IaZE1gII3CJc)cb=c8nY1zMSA?3GO-NK;jiQo4$Q9@eT*DC*YCoh@a4&6+8) zMaBvT2tn8~yx26UgSChN77=*{9_xt1FkPI=C3GT~g$;HX$ zn`o4q_%WNMR>JJ9Ee|Ev`#1X|3AQe!4O)rRGnADIOLKRxlsWW}}Po`7D?*>*