From 76562d1e75a3c23cfdfa760dc92e6663427e0c29 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 15 Jul 2022 14:55:13 +0200 Subject: [PATCH 001/131] SPE-1252 - Fixed update of contours in Cut Gizmo when modifying the orientation or the scale of a part of a multipart object --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 12 ++++++++++-- src/slic3r/GUI/Gizmos/GLGizmoCut.hpp | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index bbf1623d0..f77c007fe 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -278,16 +278,23 @@ void GLGizmoCut::update_contours() const ModelObject* model_object = wxGetApp().model().objects[selection.get_object_idx()]; const int instance_idx = selection.get_instance_idx(); std::vector volumes_idxs = std::vector(model_object->volumes.size()); + std::vector volumes_trafos = std::vector(model_object->volumes.size()); for (size_t i = 0; i < model_object->volumes.size(); ++i) { volumes_idxs[i] = model_object->volumes[i]->id(); + volumes_trafos[i] = model_object->volumes[i]->get_matrix(); } + bool trafos_match = std::equal(volumes_trafos.begin(), volumes_trafos.end(), + m_cut_contours.volumes_trafos.begin(), m_cut_contours.volumes_trafos.end(), + [](const Transform3d& a, const Transform3d& b) { return a.isApprox(b); }); + if (0.0 < m_cut_z && m_cut_z < m_max_z) { if (m_cut_contours.cut_z != m_cut_z || m_cut_contours.object_id != model_object->id() || - m_cut_contours.instance_idx != instance_idx || m_cut_contours.volumes_idxs != volumes_idxs) { + m_cut_contours.instance_idx != instance_idx || m_cut_contours.volumes_idxs != volumes_idxs || + !trafos_match) { m_cut_contours.cut_z = m_cut_z; - if (m_cut_contours.object_id != model_object->id() || m_cut_contours.volumes_idxs != volumes_idxs) + if (m_cut_contours.object_id != model_object->id() || m_cut_contours.volumes_idxs != volumes_idxs || !trafos_match) m_cut_contours.mesh = model_object->raw_mesh(); m_cut_contours.position = box.center(); @@ -295,6 +302,7 @@ void GLGizmoCut::update_contours() m_cut_contours.object_id = model_object->id(); m_cut_contours.instance_idx = instance_idx; m_cut_contours.volumes_idxs = volumes_idxs; + m_cut_contours.volumes_trafos = volumes_trafos; m_cut_contours.contours.reset(); MeshSlicingParams slicing_params; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index 4113632c0..6af0223bf 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -34,6 +34,7 @@ class GLGizmoCut : public GLGizmoBase ObjectID object_id; int instance_idx{ -1 }; std::vector volumes_idxs; + std::vector volumes_trafos; }; CutContours m_cut_contours; From a965956cba7bd19ef84616c8e0261c16ee6c6f1a Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 19 Jul 2022 10:53:41 +0200 Subject: [PATCH 002/131] Removed extra member qualification in declaration (does not build with /permissive-) --- src/slic3r/GUI/Notebook.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index ff5020b9c..af03a6a08 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -245,7 +245,7 @@ public: GetBtnsListCtrl()->Rescale(); } - void Notebook::OnNavigationKey(wxNavigationKeyEvent& event) + void OnNavigationKey(wxNavigationKeyEvent& event) { if (event.IsWindowChange()) { // change pages From 9690919028e3600ccd1ec406ec724b5f63db111a Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 19 Jul 2022 12:57:26 +0200 Subject: [PATCH 003/131] Fixed GLGizmoBase::render_input_window() to properly require for an extra frame the first time an imgui window is shown --- src/slic3r/GUI/Gizmos/GLGizmoBase.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index 393be1a4e..30f303dee 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -225,9 +225,12 @@ void GLGizmoBase::render_input_window(float x, float y, float bottom_limit) { on_render_input_window(x, y, bottom_limit); if (m_first_input_window_render) { - // for some reason, the imgui dialogs are not shown on screen in the 1st frame where they are rendered, but show up only with the 2nd rendered frame - // so, we forces another frame rendering the first time the imgui window is shown + // imgui windows that don't have an initial size needs to be processed once to get one + // and are not rendered in the first frame + // so, we forces to render another frame the first time the imgui window is shown + // https://github.com/ocornut/imgui/issues/2949 m_parent.set_as_dirty(); + m_parent.request_extra_frame(); m_first_input_window_render = false; } } From 63c66f4f189b6f3d3a3b95ddd158c66ee5166420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 20 Jul 2022 14:10:30 +0200 Subject: [PATCH 004/131] Fix of #8474 and #8514: Voronoi generator sometimes produced a non-planar Voronoi diagram. We introduced detecting for those degeneration cases. When degenerated Voronoi diagram is detected, then the input polygons are rotated, and the Voronoi diagram is recomputed. Usually, rotation of input data solves issues like this. --- .../Arachne/SkeletalTrapezoidation.cpp | 181 +++++++++++++++--- .../Arachne/SkeletalTrapezoidation.hpp | 3 + tests/libslic3r/test_voronoi.cpp | 32 ++++ 3 files changed, 189 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 56d98ec5a..d98cf7ba9 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -19,8 +19,14 @@ #include "Geometry/VoronoiVisualUtils.hpp" #include "../EdgeGrid.hpp" +#include +#include +#include + #define SKELETAL_TRAPEZOIDATION_BEAD_SEARCH_MAX 1000 //A limit to how long it'll keep searching for adjacent beads. Increasing will re-use beadings more often (saving performance), but search longer for beading (costing performance). +//#define ARACHNE_DEBUG + namespace boost::polygon { template<> struct geometry_concept @@ -285,7 +291,6 @@ std::vector SkeletalTrapezoidation::discretize(const vd_t::edge_type& vd_ } } - bool SkeletalTrapezoidation::computePointCellRange(vd_t::cell_type& cell, Point& start_source_point, Point& end_source_point, vd_t::edge_type*& starting_vd_edge, vd_t::edge_type*& ending_vd_edge, const std::vector& segments) { if (cell.incident_edge()->is_infinite()) @@ -386,7 +391,42 @@ SkeletalTrapezoidation::SkeletalTrapezoidation(const Polygons& polys, const Bead constructFromPolygons(polys); } -bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &voronoi_diagram, const std::vector &segments) { +using CGAL_Point = CGAL::Exact_predicates_exact_constructions_kernel::Point_2; +using CGAL_Segment = CGAL::Arr_segment_traits_2::Curve_2; + +inline static CGAL_Point to_cgal_point(const Voronoi::VD::vertex_type &pt) +{ + return {pt.x(), pt.y()}; +} + +bool is_voronoi_diagram_planar(const Geometry::VoronoiDiagram &voronoi_diagram) { + assert(std::all_of(voronoi_diagram.edges().cbegin(), voronoi_diagram.edges().cend(), + [](const Geometry::VoronoiDiagram::edge_type &edge) { return edge.color() == 0; })); + + std::vector segments; + segments.reserve(voronoi_diagram.num_edges()); + + for (const Geometry::VoronoiDiagram::edge_type &edge : voronoi_diagram.edges()) { + if (edge.color() != 0) + continue; + + if (edge.is_finite() && edge.is_linear()) { + segments.emplace_back(to_cgal_point(*edge.vertex0()), to_cgal_point(*edge.vertex1())); + edge.color(1); + assert(edge.twin() != nullptr); + edge.twin()->color(1); + } + } + + for (const Geometry::VoronoiDiagram::edge_type &edge : voronoi_diagram.edges()) + edge.color(0); + + std::vector intersections_pt; + CGAL::compute_intersection_points(segments.begin(), segments.end(), std::back_inserter(intersections_pt)); + return intersections_pt.empty(); +} + +static bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &voronoi_diagram, const std::vector &segments) { for (VoronoiUtils::vd_t::cell_type cell : voronoi_diagram.cells()) { if (!cell.incident_edge()) continue; // There is no spoon @@ -432,6 +472,58 @@ bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &voronoi_diagr return false; } +static bool has_missing_twin_edge(const SkeletalTrapezoidationGraph &graph) +{ + for (const auto &edge : graph.edges) + if (edge.twin == nullptr) + return true; + return false; +} + +inline static std::unordered_map try_to_fix_degenerated_voronoi_diagram_by_rotation( + Geometry::VoronoiDiagram &voronoi_diagram, + const Polygons &polys, + Polygons &polys_copy, + std::vector &segments, + const double fix_angle) +{ + std::unordered_map vertex_mapping; + for (Polygon &poly : polys_copy) + poly.rotate(fix_angle); + + assert(polys_copy.size() == polys.size()); + for (size_t poly_idx = 0; poly_idx < polys.size(); ++poly_idx) { + assert(polys_copy[poly_idx].size() == polys[poly_idx].size()); + for (size_t point_idx = 0; point_idx < polys[poly_idx].size(); ++point_idx) + vertex_mapping.insert({polys[poly_idx][point_idx], polys_copy[poly_idx][point_idx]}); + } + + segments.clear(); + for (size_t poly_idx = 0; poly_idx < polys_copy.size(); poly_idx++) + for (size_t point_idx = 0; point_idx < polys_copy[poly_idx].size(); point_idx++) + segments.emplace_back(&polys_copy, poly_idx, point_idx); + + voronoi_diagram.clear(); + construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram); + + assert(is_voronoi_diagram_planar(voronoi_diagram)); + + return vertex_mapping; +} + +inline static void rotate_back_skeletal_trapezoidation_graph_after_fix(SkeletalTrapezoidationGraph &graph, + const double fix_angle, + const std::unordered_map &vertex_mapping) +{ + for (STHalfEdgeNode &node : graph.nodes) { + // If a mapping exists between a rotated point and an original point, use this mapping. Otherwise, rotate a point in the opposite direction. + if (auto node_it = vertex_mapping.find(node.p); node_it != vertex_mapping.end()) + node.p = node_it->second; + else + node.p.rotate(-fix_angle); + } +} + void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) { // Check self intersections. @@ -450,39 +542,49 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) for (size_t point_idx = 0; point_idx < polys[poly_idx].size(); point_idx++) segments.emplace_back(&polys, poly_idx, point_idx); +#ifdef ARACHNE_DEBUG + { + static int iRun = 0; + BoundingBox bbox = get_extents(polys); + SVG svg(debug_out_path("arachne_voronoi-input-%d.svg", iRun++).c_str(), bbox); + svg.draw_outline(polys, "black", scaled(0.03f)); + } +#endif + Geometry::VoronoiDiagram voronoi_diagram; construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram); +#ifdef ARACHNE_DEBUG + { + static int iRun = 0; + dump_voronoi_to_svg(debug_out_path("arachne_voronoi-diagram-%d.svg", iRun++).c_str(), voronoi_diagram, to_points(polys), to_lines(polys)); + } +#endif + +#ifdef ARACHNE_DEBUG + assert(is_voronoi_diagram_planar(voronoi_diagram)); +#endif + // Try to detect cases when some Voronoi vertex is missing. // When any Voronoi vertex is missing, rotate input polygon and try again. const bool has_missing_voronoi_vertex = detect_missing_voronoi_vertex(voronoi_diagram, segments); const double fix_angle = PI / 6; std::unordered_map vertex_mapping; + // polys_copy is referenced through items stored in the std::vector segments. Polygons polys_copy = polys; if (has_missing_voronoi_vertex) { - BOOST_LOG_TRIVIAL(debug) << "Detected missing Voronoi vertex, input polygons will be rotated back and forth."; - for (Polygon &poly : polys_copy) - poly.rotate(fix_angle); + BOOST_LOG_TRIVIAL(warning) << "Detected missing Voronoi vertex, input polygons will be rotated back and forth."; + vertex_mapping = try_to_fix_degenerated_voronoi_diagram_by_rotation(voronoi_diagram, polys, polys_copy, segments, fix_angle); - assert(polys_copy.size() == polys.size()); - for (size_t poly_idx = 0; poly_idx < polys.size(); ++poly_idx) { - assert(polys_copy[poly_idx].size() == polys[poly_idx].size()); - for (size_t point_idx = 0; point_idx < polys[poly_idx].size(); ++point_idx) - vertex_mapping.insert({polys[poly_idx][point_idx], polys_copy[poly_idx][point_idx]}); - } - - segments.clear(); - for (size_t poly_idx = 0; poly_idx < polys_copy.size(); poly_idx++) - for (size_t point_idx = 0; point_idx < polys_copy[poly_idx].size(); point_idx++) - segments.emplace_back(&polys_copy, poly_idx, point_idx); - - voronoi_diagram.clear(); - construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram); assert(!detect_missing_voronoi_vertex(voronoi_diagram, segments)); if (detect_missing_voronoi_vertex(voronoi_diagram, segments)) BOOST_LOG_TRIVIAL(error) << "Detected missing Voronoi vertex even after the rotation of input."; } + bool degenerated_voronoi_diagram = has_missing_voronoi_vertex; + +process_voronoi_diagram: + assert(this->graph.edges.empty() && this->graph.nodes.empty() && this->vd_edge_to_he_edge.empty() && this->vd_node_to_he_node.empty()); for (vd_t::cell_type cell : voronoi_diagram.cells()) { if (!cell.incident_edge()) continue; // There is no spoon @@ -538,16 +640,41 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) prev_edge->to->data.distance_to_boundary = 0; } - if (has_missing_voronoi_vertex) { - for (node_t &node : graph.nodes) { - // If a mapping exists between a rotated point and an original point, use this mapping. Otherwise, rotate a point in the opposite direction. - if (auto node_it = vertex_mapping.find(node.p); node_it != vertex_mapping.end()) - node.p = node_it->second; - else - node.p.rotate(-fix_angle); - } + // For some input polygons, as in GH issues #8474 and #8514 resulting Voronoi diagram is degenerated because it is not planar. + // When this degenerated Voronoi diagram is processed, the resulting half-edge structure contains some edges that don't have + // a twin edge. Based on this, we created a fast mechanism that detects those causes and tries to recompute the Voronoi + // diagram on slightly rotated input polygons that usually make the Voronoi generator generate a non-degenerated Voronoi diagram. + // FIXME Lukas H.: Replace has_missing_twin_edge with detection if the Voronoi diagram is planar using a custom algorithm based on the + // sweeping line algorithm. At least it is required to fix GH #8446. + if (!degenerated_voronoi_diagram && has_missing_twin_edge(this->graph)) { + BOOST_LOG_TRIVIAL(warning) << "Detected degenerated Voronoi diagram, input polygons will be rotated back and forth."; + degenerated_voronoi_diagram = true; + vertex_mapping = try_to_fix_degenerated_voronoi_diagram_by_rotation(voronoi_diagram, polys, polys_copy, segments, fix_angle); + + assert(!detect_missing_voronoi_vertex(voronoi_diagram, segments)); + if (detect_missing_voronoi_vertex(voronoi_diagram, segments)) + BOOST_LOG_TRIVIAL(error) << "Detected missing Voronoi vertex after the rotation of input."; + + assert(is_voronoi_diagram_planar(voronoi_diagram)); + + this->graph.edges.clear(); + this->graph.nodes.clear(); + this->vd_edge_to_he_edge.clear(); + this->vd_node_to_he_node.clear(); + + goto process_voronoi_diagram; } + if (degenerated_voronoi_diagram) { + assert(!has_missing_twin_edge(this->graph)); + + if (has_missing_twin_edge(this->graph)) + BOOST_LOG_TRIVIAL(error) << "Detected degenerated Voronoi diagram even after the rotation of input."; + } + + if (degenerated_voronoi_diagram) + rotate_back_skeletal_trapezoidation_graph_after_fix(this->graph, fix_angle, vertex_mapping); + separatePointyQuadEndNodes(); graph.collapseSmallEdges(); diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp index 51b24bbcd..321ace9d7 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp @@ -18,6 +18,7 @@ #include "SkeletalTrapezoidationJoint.hpp" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" #include "SkeletalTrapezoidationGraph.hpp" +#include "../Geometry/Voronoi.hpp" namespace Slic3r::Arachne { @@ -591,5 +592,7 @@ protected: void generateLocalMaximaSingleBeads(); }; +bool is_voronoi_diagram_planar(const Geometry::VoronoiDiagram &voronoi_diagram); + } // namespace Slic3r::Arachne #endif // VORONOI_QUADRILATERALIZATION_H diff --git a/tests/libslic3r/test_voronoi.cpp b/tests/libslic3r/test_voronoi.cpp index db12e2fec..5d8dce146 100644 --- a/tests/libslic3r/test_voronoi.cpp +++ b/tests/libslic3r/test_voronoi.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -2158,3 +2159,34 @@ TEST_CASE("Intersecting Voronoi edges", "[Voronoi]") // REQUIRE(!has_intersecting_edges(poly, vd)); } + +// In this case resulting Voronoi diagram is not planar. This case was distilled from GH issue #8474. +// Also, in GH issue #8514, a non-planar Voronoi diagram is generated for several polygons. +// Rotating the input polygon will solve this issue. +TEST_CASE("Non-planar voronoi diagram", "[VoronoiNonPlanar]") +{ + Polygon poly { + { 5500000, -42000000}, + { 8000000, -17000000}, + { 8000000, 40000000}, + { 7500000, 40000000}, + { 7500000, -18000000}, + { 6000001, -18000000}, + { 6000000, 40000000}, + { 5500000, 40000000}, + }; + +// poly.rotate(PI / 6); + + REQUIRE(poly.area() > 0.); + REQUIRE(intersecting_edges({poly}).empty()); + + VD vd; + Lines lines = to_lines(poly); + construct_voronoi(lines.begin(), lines.end(), &vd); +#ifdef VORONOI_DEBUG_OUT + dump_voronoi_to_svg(debug_out_path("voronoi-non-planar-out.svg").c_str(), vd, Points(), lines); +#endif + +// REQUIRE(Arachne::is_voronoi_diagram_planar(vd)); +} From 115063930670bee59b7890cdcc90629cc306c494 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 21 Jul 2022 10:43:52 +0200 Subject: [PATCH 005/131] Gallery: Update for recycling symbols --- resources/shapes/OTHER_recycling_symbol.png | Bin 13220 -> 12437 bytes resources/shapes/OTHER_recycling_symbol.stl | Bin 56684 -> 84684 bytes resources/shapes/PETG_recycling_symbol.png | Bin 12320 -> 11396 bytes resources/shapes/PETG_recycling_symbol.stl | Bin 49084 -> 75884 bytes resources/shapes/PLA_recycling_symbol.png | Bin 11122 -> 10241 bytes resources/shapes/PLA_recycling_symbol.stl | Bin 44884 -> 62284 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/shapes/OTHER_recycling_symbol.png b/resources/shapes/OTHER_recycling_symbol.png index 6383c5f737d71ec16bccc1cd6475228d0897ea81..b49a11964c7596dbbd9d2f8ad47464623268bdeb 100644 GIT binary patch literal 12437 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 literal 13220 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 PNo0$$&Vc%AX9vkBM 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 literal 56684 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 YDx}q?Cf~ZKt&7jVrH;VfM4FKQ2dq0Da{vGU diff --git a/resources/shapes/PETG_recycling_symbol.png b/resources/shapes/PETG_recycling_symbol.png index 58db040824df211d99dd2aec31fcfc27f2893e1a..18c409106968a92e11fd4e671850552a8c3becda 100644 GIT binary patch literal 11396 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 RgL(%fBOxzd`bOXH{{R#5+;{*0 literal 12320 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 OP)GG+dEoJ?68{5jpKZJV literal 49084 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 diff --git a/resources/shapes/PLA_recycling_symbol.png b/resources/shapes/PLA_recycling_symbol.png index 4d123187230e45626681a528bde30dd73dc9cb7d..b3f0e2a41a84e2f4ac37311d189d8ca2532b22bf 100644 GIT binary patch literal 10241 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

;6abtZg)KOMF5yLeidOaESO93pZi8&>4~)+ZACb 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 diff --git a/resources/shapes/PLA_recycling_symbol.stl b/resources/shapes/PLA_recycling_symbol.stl index 7ff6b8e9cc301a4ca158c1da0a38d86879a86dea..49f17c3cd572fee60f0d6ec7f37fd84ffa64df82 100644 GIT binary patch literal 62284 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 V431Y3(rOGjU2nYYf!DlB{6E@vJE#Bv From 8fbc0b8633777e9d29619a9c9a322aa58428c0ab Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Thu, 21 Jul 2022 14:16:09 +0200 Subject: [PATCH 006/131] SPE-1259 - Fix for sinking objects not placed on top of bed after rotation with Place on face Gizmo --- src/slic3r/GUI/GLCanvas3D.cpp | 5 ++-- src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp | 29 +++++++++--------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6c924f1fa..8f584942c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3896,12 +3896,13 @@ void GLCanvas3D::do_rotate(const std::string& snapshot_type) for (int i = 0; i < static_cast(m_model->objects.size()); ++i) { const ModelObject* obj = m_model->objects[i]; for (int j = 0; j < static_cast(obj->instances.size()); ++j) { - if (snapshot_type.empty() && m_selection.get_object_idx() == i) { + if (snapshot_type == L("Gizmo-Place on Face") && m_selection.get_object_idx() == i) { // This means we are flattening this object. In that case pretend // that it is not sinking (even if it is), so it is placed on bed // later on (whatever is sinking will be left sinking). min_zs[{ i, j }] = SINKING_Z_THRESHOLD; - } else + } + else min_zs[{ i, j }] = obj->instance_bounding_box(j).min.z(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp index b427d1ab4..3af58dd96 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -43,25 +43,18 @@ bool GLGizmoFlatten::on_mouse(const wxMouseEvent &mouse_event) } return true; } - - // fix: prevent restart gizmo when reselect object - // take responsibility for left up - if (m_parent.get_first_hover_volume_idx() >= 0) m_mouse_left_down = true; - - } else if (mouse_event.LeftUp()) { - if (m_mouse_left_down) { - if (m_hover_id == -1) - // no plane hovered - return false; - else { - // responsible for mouse left up after selecting plane - m_mouse_left_down = false; - return true; - } - } - } else if (mouse_event.Leaving()) { - m_mouse_left_down = false; } + else if (mouse_event.LeftUp()) { + if (m_mouse_left_down) { + // responsible for mouse left up after selecting plane + m_mouse_left_down = false; + return true; + } + + } + else if (mouse_event.Leaving()) + m_mouse_left_down = false; + return false; } From 2a865919a0debd4ada519b02385dc44da33cc59c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 21 Jul 2022 20:04:30 +0200 Subject: [PATCH 007/131] Prevented gap fill and Arachne from creating tiny gaps in extrusions in specific cases. --- src/libslic3r/PerimeterGenerator.cpp | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 0bbe601e2..7ebd93659 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -24,7 +24,18 @@ ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_poly assert(line.a_width >= SCALED_EPSILON && line.b_width >= SCALED_EPSILON); const coordf_t line_len = line.length(); - if (line_len < SCALED_EPSILON) continue; + if (line_len < SCALED_EPSILON) { + // The line is so tiny that we don't care about its width when we connect it to another line. + if (!path.empty()) + path.polyline.points.back() = line.b; // If the variable path is non-empty, connect this tiny line to it. + else if (i + 1 < (int)lines.size()) // If there is at least one following line, connect this tiny line to it. + lines[i + 1].a = line.a; + else if (!paths.empty()) + paths.back().polyline.points.back() = line.b; // Connect this tiny line to the last finished path. + + // If any of the above isn't satisfied, then remove this tiny line. + continue; + } double thickness_delta = fabs(line.a_width - line.b_width); if (thickness_delta > tolerance) { @@ -100,14 +111,19 @@ static void variable_width(const ThickPolylines& polylines, ExtrusionRole role, // This value determines granularity of adaptive width, as G-code does not allow // variable extrusion within a single move; this value shall only affect the amount // of segments, and any pruning shall be performed before we apply this tolerance. - const float tolerance = float(scale_(0.05)); + const auto tolerance = float(scale_(0.05)); for (const ThickPolyline &p : polylines) { ExtrusionPaths paths = thick_polyline_to_extrusion_paths(p, role, flow, tolerance, tolerance); // Append paths to collection. - if (! paths.empty()) { - if (paths.front().first_point() == paths.back().last_point()) - out.emplace_back(new ExtrusionLoop(std::move(paths))); - else { + if (!paths.empty()) { + for (auto it = std::next(paths.begin()); it != paths.end(); ++it) { + assert(it->polyline.points.size() >= 2); + assert(std::prev(it)->polyline.last_point() == it->polyline.first_point()); + } + + if (paths.front().first_point() == paths.back().last_point()) { + out.emplace_back(new ExtrusionLoop(std::move(paths))); + } else { for (ExtrusionPath &path : paths) out.emplace_back(new ExtrusionPath(std::move(path))); } From e14da6224ac21de5adee89f7039d645cdc83f718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 21 Jul 2022 20:06:12 +0200 Subject: [PATCH 008/131] Fixed an issue when an open perimeter containing part of an overhang perimeter was split into two parts and wasn't extruded as continuous extrusion. --- src/libslic3r/PerimeterGenerator.cpp | 37 ++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 7ebd93659..8db77cb6b 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace Slic3r { @@ -478,8 +479,40 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator &p // Reapply the nearest point search for starting point. // We allow polyline reversal because Clipper may have randomly reversed polylines during clipping. // Arachne sometimes creates extrusion with zero-length (just two same endpoints); - if (!paths.empty()) - chain_and_reorder_extrusion_paths(paths, &paths.front().first_point()); + if (!paths.empty()) { + Point start_point = paths.front().first_point(); + if (!extrusion->is_closed) { + // Especially for open extrusion, we need to select a starting point that is at the start + // or the end of the extrusions to make one continuous line. Also, we prefer a non-overhang + // starting point. + struct PointInfo + { + size_t occurrence = 0; + bool is_overhang = false; + }; + std::unordered_map point_occurrence; + for (const ExtrusionPath &path : paths) { + ++point_occurrence[path.polyline.first_point()].occurrence; + ++point_occurrence[path.polyline.last_point()].occurrence; + if (path.role() == erOverhangPerimeter) { + point_occurrence[path.polyline.first_point()].is_overhang = true; + point_occurrence[path.polyline.last_point()].is_overhang = true; + } + } + + // Prefer non-overhang point as a starting point. + for (const std::pair pt : point_occurrence) + if (pt.second.occurrence == 1) { + start_point = pt.first; + if (!pt.second.is_overhang) { + start_point = pt.first; + break; + } + } + } + + chain_and_reorder_extrusion_paths(paths, &start_point); + } } else { extrusion_paths_append(paths, *extrusion, role, is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow); } From decfa80bfd1e896978bf1d722ef3cf1bdf76e509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 21 Jul 2022 20:06:58 +0200 Subject: [PATCH 009/131] Test case for issue when Arachne produce closed ExtrusionLine that have different the first and the last point. --- src/libslic3r/PerimeterGenerator.cpp | 11 ++++ tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_arachne.cpp | 75 ++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 tests/libslic3r/test_arachne.cpp diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 8db77cb6b..03f125320 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -578,6 +578,17 @@ void PerimeterGenerator::process_arachne() std::vector perimeters = wallToolPaths.getToolPaths(); loop_number = int(perimeters.size()) - 1; + // All closed ExtrusionLine should have the same the first and the last point. + // But in rare cases, Arachne produce ExtrusionLine marked as closed but without + // equal the first and the last point. + assert([&perimeters = std::as_const(perimeters)]() -> bool { + for (const Arachne::VariableWidthLines &perimeter : perimeters) + for (const Arachne::ExtrusionLine &el : perimeter) + if (el.is_closed && el.junctions.front().p != el.junctions.back().p) + return false; + return true; + }()); + int start_perimeter = int(perimeters.size()) - 1; int end_perimeter = -1; int direction = -1; diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 6475570c1..352580f50 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -4,6 +4,7 @@ add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests.cpp test_3mf.cpp test_aabbindirect.cpp + test_arachne.cpp test_clipper_offset.cpp test_clipper_utils.cpp test_config.cpp diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp new file mode 100644 index 000000000..53c31169a --- /dev/null +++ b/tests/libslic3r/test_arachne.cpp @@ -0,0 +1,75 @@ +#include + +#include "libslic3r/Arachne/WallToolPaths.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/SVG.hpp" +#include "libslic3r/Utils.hpp" + +using namespace Slic3r; +using namespace Slic3r::Arachne; + +//#define ARACHNE_DEBUG_OUT + +#ifdef ARACHNE_DEBUG_OUT +static void draw_extrusion(const std::string &path, const Polygons &polygons, const std::vector &vlines, const ExPolygons &contours) +{ + coordf_t stroke_width = scale_(0.03); + BoundingBox bbox = get_extents(polygons); + bbox.offset(scale_(1.)); + ::Slic3r::SVG svg(path.c_str(), bbox); + + svg.draw(contours, "cyan"); + + for (const VariableWidthLines &vl : vlines) + for (const ExtrusionLine &el : vl) { + ThickPolyline thick_polyline = to_thick_polyline(el); + svg.draw({thick_polyline}, "green", "blue", stroke_width); + } + + for (const Line &line : to_lines(polygons)) + svg.draw(line, "red", stroke_width); +} +#endif + +TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { + Polygon poly = { + Point(62478540, -7411873), Point(62478540, 9978540), Point(-62478540, 9978540), Point(-62478540, -7411873), Point(-58818049, -7411874), + Point(-58639424, -7393054), Point(-58430204, -7325743), Point(-58317958, -7261069), Point(-58187096, -7150294), Point(-58032997, -6934055), + Point(-57956770, -6723830), Point(-57927922, -6536131), Point(-57948215, -6249353), Point(-58038066, -5971432), Point(-58400146, -5419566), + Point(-58720844, -4711417), Point(-58812247, -4429032), Point(-58945877, -3868129), Point(-58999054, -3458536), Point(-59021495, -3000104), + Point(-58978088, -2345755), Point(-58945641, -2130557), Point(-58719408, -1284462), Point(-58350699, -492550), Point(-57854519, 218384), + Point(-57690839, 403070), Point(-57242241, 834472), Point(-56937894, 1068372), Point(-56522699, 1341801), Point(-56245930, 1488656), + Point(-55633586, 1748152), Point(-54872819, 1945077), Point(-54279560, 2011550), Point(-53999789, 2021482), Point(-53550613, 1995780), + Point(-53127364, 1945077), Point(-52852060, 1886312), Point(-52262142, 1711199), Point(-51479386, 1343079), Point(-50763215, 839141), + Point(-50302640, 384003), Point(-50150730, 224721), Point(-49616021, -551391), Point(-49279548, -1287513), Point(-49210805, -1492871), + Point(-49054178, -2131559), Point(-49004097, -2510916), Point(-48978506, -2999863), Point(-49012690, -3563440), Point(-49054263, -3868963), + Point(-49280289, -4714703), Point(-49649307, -5507428), Point(-49921685, -5909300), Point(-49982145, -6037568), Point(-50058406, -6311890), + Point(-50071436, -6450122), Point(-50045218, -6724784), Point(-50006267, -6852153), Point(-49876677, -7082551), Point(-49687434, -7260679), + Point(-49451449, -7373245), Point(-49184639, -7411873), Point(-13258854, -7411871), Point(-13258853, -7021460), Point(-44501672, -7021460), + Point(-44816622, -6971390), Point(-45100558, -6826592), Point(-45326629, -6600516), Point(-45471725, -6315721), Point(-45521460, -6001689), + Point(-45521460, 3000836), Point(-45509082, 3159381), Point(-45412385, 3459576), Point(-45326445, 3600421), Point(-45221777, 3722975), + Point(-44964550, 3909861), Point(-44815338, 3971666), Point(-44598502, 4016264), Point(58501687, 4021460), Point(58814884, 3971856), + Point(58964551, 3909863), Point(59221777, 3722976), Point(59326668, 3600164), Point(59436707, 3406438), Point(59508907, 3160338), + Point(59521460, 3000842), Point(59521460, -6001688), Point(59471724, -6315713), Point(59326597, -6600557), Point(59100555, -6826595), + Point(58814822, -6971976), Point(58501662, -7021460), Point(27258850, -7021460), Point(27258851, -7411871), Point(59755385, -7411874), + }; + + Polygons polygons = {poly}; + coord_t spacing = 407079; + coord_t inset_count = 8; + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, PrintObjectConfig::defaults(), PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + draw_extrusion(debug_out_path("arachne-closed-extrusion-line.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif + + for (VariableWidthLines &perimeter : perimeters) + for (ExtrusionLine &el : perimeter) + if (el.is_closed) { +// REQUIRE(el.junctions.front().p == el.junctions.back().p); + } +} + From dd6096bf0b2c4c9ebadd97ec704eb7ddfaedeb2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Fri, 22 Jul 2022 09:28:49 +0200 Subject: [PATCH 010/131] Fix of #8457 and #8461: Made pressure equalizer to modify only GCode lines that are inside the block tags _EXTRUDE_SET_SPEED and _EXTRUDE_END. The previous approach could modify all GCode lines, even custom GCode or tool change GCode, which was unintentional. --- src/libslic3r/GCode/PressureEqualizer.cpp | 51 ++++++++++++++++------- src/libslic3r/GCode/PressureEqualizer.hpp | 6 +++ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index 95e496b5a..ab12ae485 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -65,6 +65,8 @@ PressureEqualizer::PressureEqualizer(const Slic3r::GCodeConfig &config) : m_use_ m_max_volumetric_extrusion_rate_slopes[er].positive = 0; } + opened_extrude_set_speed_block = false; + #ifdef PRESSURE_EQUALIZER_STATISTIC m_stat.reset(); #endif @@ -93,6 +95,7 @@ void PressureEqualizer::process_layer(const std::string &gcode) if (*gcode_begin == '\n') ++gcode_begin; } + assert(!this->opened_extrude_set_speed_block); } } @@ -209,6 +212,16 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo buf.max_volumetric_extrusion_rate_slope_negative = 0.f; buf.extrusion_role = m_current_extrusion_role; + std::string str_line(line, line_end); + bool found_extrude_set_speed_tag = boost::contains(str_line, ";_EXTRUDE_SET_SPEED"); + bool found_extrude_end_tag = boost::contains(str_line, ";_EXTRUDE_END"); + assert(!found_extrude_set_speed_tag || !found_extrude_end_tag); + + if (found_extrude_set_speed_tag) + this->opened_extrude_set_speed_block = true; + else if (found_extrude_end_tag) + this->opened_extrude_set_speed_block = false; + // Parse the G-code line, store the result into the buf. switch (toupper(*line ++)) { case 'G': { @@ -228,6 +241,7 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo case 1: { // G0, G1: A FFF 3D printer does not make a difference between the two. + buf.adjustable_flow = this->opened_extrude_set_speed_block; float new_pos[5]; memcpy(new_pos, m_current_pos, sizeof(float)*5); bool changed[5] = { false, false, false, false, false }; @@ -517,7 +531,7 @@ void PressureEqualizer::adjust_volumetric_rate() // Limit by the succeeding volumetric flow rate. rate_end = rate_succ; - if (line.extrusion_role == erExternalPerimeter || line.extrusion_role == erGapFill || line.extrusion_role == erBridgeInfill || line.extrusion_role == erIroning) { + if (!line.adjustable_flow || line.extrusion_role == erExternalPerimeter || line.extrusion_role == erGapFill || line.extrusion_role == erBridgeInfill || line.extrusion_role == erIroning) { rate_end = line.volumetric_extrusion_rate_end; } else if (line.volumetric_extrusion_rate_end > rate_end) { line.volumetric_extrusion_rate_end = rate_end; @@ -529,13 +543,15 @@ void PressureEqualizer::adjust_volumetric_rate() // Use the original, 'floating' extrusion rate as a starting point for the limiter. } - float rate_start = rate_end + rate_slope * line.time_corrected(); - if (rate_start < line.volumetric_extrusion_rate_start) { - // Limit the volumetric extrusion rate at the start of this segment due to a segment - // of ExtrusionType iRole, which will be extruded in the future. - line.volumetric_extrusion_rate_start = rate_start; - line.max_volumetric_extrusion_rate_slope_negative = rate_slope; - line.modified = true; + if (line.adjustable_flow) { + float rate_start = rate_end + rate_slope * line.time_corrected(); + if (rate_start < line.volumetric_extrusion_rate_start) { + // Limit the volumetric extrusion rate at the start of this segment due to a segment + // of ExtrusionType iRole, which will be extruded in the future. + line.volumetric_extrusion_rate_start = rate_start; + line.max_volumetric_extrusion_rate_slope_negative = rate_slope; + line.modified = true; + } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start; feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start; @@ -562,7 +578,7 @@ void PressureEqualizer::adjust_volumetric_rate() continue; // The positive rate is unlimited or the rate for ExtrusionRole iRole is unlimited. float rate_start = feedrate_per_extrusion_role[iRole]; - if (line.extrusion_role == erExternalPerimeter || line.extrusion_role == erGapFill || line.extrusion_role == erBridgeInfill || line.extrusion_role == erIroning) { + if (!line.adjustable_flow || line.extrusion_role == erExternalPerimeter || line.extrusion_role == erGapFill || line.extrusion_role == erBridgeInfill || line.extrusion_role == erIroning) { rate_start = line.volumetric_extrusion_rate_start; } else if (iRole == line.extrusion_role && rate_prec < rate_start) rate_start = rate_prec; @@ -575,13 +591,16 @@ void PressureEqualizer::adjust_volumetric_rate() } else { // Use the original, 'floating' extrusion rate as a starting point for the limiter. } - float rate_end = rate_start + rate_slope * line.time_corrected(); - if (rate_end < line.volumetric_extrusion_rate_end) { - // Limit the volumetric extrusion rate at the start of this segment due to a segment - // of ExtrusionType iRole, which was extruded before. - line.volumetric_extrusion_rate_end = rate_end; - line.max_volumetric_extrusion_rate_slope_positive = rate_slope; - line.modified = true; + + if (line.adjustable_flow) { + float rate_end = rate_start + rate_slope * line.time_corrected(); + if (rate_end < line.volumetric_extrusion_rate_end) { + // Limit the volumetric extrusion rate at the start of this segment due to a segment + // of ExtrusionType iRole, which was extruded before. + line.volumetric_extrusion_rate_end = rate_end; + line.max_volumetric_extrusion_rate_slope_positive = rate_slope; + line.modified = true; + } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end; feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end; diff --git a/src/libslic3r/GCode/PressureEqualizer.hpp b/src/libslic3r/GCode/PressureEqualizer.hpp index 2ae4167a7..2973e26ea 100644 --- a/src/libslic3r/GCode/PressureEqualizer.hpp +++ b/src/libslic3r/GCode/PressureEqualizer.hpp @@ -81,6 +81,10 @@ private: bool m_retracted; bool m_use_relative_e_distances; + // Indicate if extrude set speed block was opened using the tag ";_EXTRUDE_SET_SPEED" + // or not (not opened, or it was closed using the tag ";_EXTRUDE_END"). + bool opened_extrude_set_speed_block = false; + enum GCodeLineType { GCODELINETYPE_INVALID, GCODELINETYPE_NOOP, @@ -158,6 +162,8 @@ private: // If set to zero, the slope is unlimited. float max_volumetric_extrusion_rate_slope_positive; float max_volumetric_extrusion_rate_slope_negative; + + bool adjustable_flow = false; }; // Output buffer will only grow. It will not be reallocated over and over. From e0031018a79458b2913ef769743b5f2e573f7b8a Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 22 Jul 2022 16:52:46 +0200 Subject: [PATCH 011/131] Manually merged PR #8544 - Add 2.5.0 translate for zh_CN language --- resources/localization/zh_CN/PrusaSlicer.mo | Bin 443837 -> 452745 bytes .../localization/zh_CN/PrusaSlicer_zh_CN.po | 347 ++++++++++-------- 2 files changed, 193 insertions(+), 154 deletions(-) diff --git a/resources/localization/zh_CN/PrusaSlicer.mo b/resources/localization/zh_CN/PrusaSlicer.mo index 6d2ce2b8e05c7cdd0807267af4eadf8b0f1654ce..5c256b74693bf1a6dfbbf1fbdb4a139183554551 100644 GIT binary patch delta 108281 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 Umt@%Tn+JWkH+l^n-^oMZ%Z__j&RV$5M z<*D?yJ*9cNH>H1)CRhC@EuDikt?}UYZQJ%4<^OY<7bBzi6w1fZ7u$|`rfp-*89&6b z*qQyLrLn8tP|MDe4~}P^wtQPMdpVSvg^~}~)!~-Q!Txjh|Mi~vV76wGi=F~+~HZgu&6Lk z)&{Se#T(MOeen5=dls{Z)0ykO?(tIh@+AhmEPMT$XXM5R(s*Iz>dc{0Jbx)4iMc57 z!5Cp97I{0;Z=Sm4E%E_I2MOf^tFx2S@~&g!Dc)1m>pNNn3yjxs**o+X0d*P%d^2E~ zgKtD{TvPOn>6ejzePiN_6~kqKN(}lp1R0#P^#akXU=;%=o8w8Re5KUwcs3pM_5$C@Rr0!Od@9+L c?_R#tyEg}9*N(lGvsKj$cTLK(JYDI30b0X+F#rGn delta 99926 zcmXWkci_!cAHebZ8xm0&ks?23@4fdZGdqbwA*(cu5^gkYAtM=4lt)R0C@GXmq)0`n zM52roY4N<@_nhaS*E!#D#^-#_x%c-Y&xFse-Z<&%#<{K7`ruQOu4L@gkgomnIU) z#5@XpxbPz0jyXrAC3@gpcnyApMe%368ZUk*SR9K`Z;TG?HY|y~u{=J3S@=f0{soq% z{x5dM5~J-WnMgcHVIUX2NL@%I8jVRy+(~^tI)IF^X^Cs`TFi+pumg5LBlcYM9c)N_ zKbFO-k|823FbDN+SPc7ME_?*@(tlz)1sh(9&hQny1V4_~_hNqPKVShoi-tD$!=d2< zNGKCo(Mo6s4bgVnU>4qlMrI@$x#uxyLz^kMmfNG>paVIMn=r??w8SC&2%Xt0;~6=A zjjrjh=m7q}BI!izkzIH=+aEf=+Nd+RmPM{m1ApkH=8{&IKdzFFJtSPXzO$ zS$%b^S3n!AjyBi;uf(?TdOvi4ccW`Q40GdHbm=Ce16zvr_rGK;yp7Ia2in2cXhR31 zKcgLNuyMTJ0ewDsGX+O@8@i@L&=->EKpv0v zY3KlFqYW)VXZRZW+}mh_@1yN)kM*z7fqaK1-4V3?Y!gz?Clk3S_&{E?p{vkbxDM^0 zBHD26XhXDt=4cYN!A!h4-oF*ii968t9*FnHq0c{#wl@>AyZ`4=a7NFe9j-P=SxgXFOpNRMWMcd0ZF+}VNbil>X_e;m?RWO(PzX1ieTWj>i{@%b5 z=ztzUcgd7ke-2%W|DiKk7u|?+Nq%g~4wK$k8H&4uFV`*qNM8bw=9X8${qj$F|0Xor0; z3;SaQd;-nhHCP>YV{yEAO0WX@8PN$nV*o=)el2$(I%HS4Sh&0`0I}yxu)J2p!-sxVRWYD zqE*m_YN2b{2(QEI(WDxLcK8fB(3jB}Z^jL{72m<+jI_iZ*l=cAq8cv2WDN>?DQK=) zAv>F5P3mKCGQJV(O`c9mTu=Q0?1`IjEf$^~vVAu?pkHGB>Nz1Y)zE{jHF|E`f?0Ua z9QME4VO<8E>pd*M2j)W}l%+Ir*8iL<5|TX8lfdreC8SoabI((ArZPA9mKpXxW9Y~=Cp`EhmNqIe* zY<;l|ei*NxMt8~O3sXywOk7LBnbkyZG{G$FjOM^FblXfp*YKHGUx7=huS3_e$D;7< zb|^Z4XVE3wfWEf{&86MwM1RHt?*G#i3{8&3q2uyshwX4M-hy`U0ouSmbf72E=hB`F zOL8eXk>asl30?aZ=zDFWebAg6f%)A36DU;21y~V3M{^-xXeD2f{h@V|l>yVW8tNX%eDpIcN&P&Q!V=5a|6XXfEX-gS8qz1wP|iY=YY`U1 zSJ8odj-~M%Gt|d=V zs7j&eE8!&TgpTY!^c)zCc03c!iRaKzzJ%t$dVChQ<3Jp+DlO3-KS$fS_SG=3^5}bw z(WUJWOeT6zaK`=7B)kvp=pmehkDv`*wmKwLq3BKMww;OQ$XaxFY(tZ{%xmFOt{qw* zhj#oz^i|C3{(p;t+iNE}qo2_2a}JG6?$<+7HAdI89oE2s=yQwE_ujxP{2*RGf)4Co zblc^ABYc-Eg(hEDEaLtjOu+{xpdnw1cC^6O5-Z?SX!2}Av-LN0cU<*mXt*evY-Q1zH$(^0 z0e!wdx|Gw<2+c*?e;GYLwxLV9{Z012+4=<+4AsxkztHPB*N29SpdD31Uu=OUQ+s>} zd!Yl`kACi-MBB@`A>`84=(%tmI-tsEq+4uY|5v8alM8O6DOeL{p&{Ik9>sgn965|e z;y?8H^tVC>InZ5_Ct4J}Uja?->SzQSqXWGKZSU?R1!wYjyfGV1t`)KVJsPq<(1D!8 zX_)=(Fu*xzM@!HMy@U?rEp!)s6t91VzW*b>j;GOqB$sUrGunV&*o207HyVL&(GGq_ z52BOkjLyXSY43!3E_BJRL_=K;9YAfIkB!l7_zlj(#HLh#$;2}h?BEqNY1W{jdMEl- z^mH`WyJ3w>qR%%$-*1gBWk+-ZfB1!uGf9r^#zUGXMf zkNeT>b?xTxO{OvW&1VqW!2~Rd3(#G#G2Y*eC8(c9XMW|D&~AM!OT8DCcK=VLP!eB9 zU)UE-Yz@g+68)BYD>|@I*a#P(-;lnI_s^o+HsAYcsq>-*8p-}>vOSD`b(@RDa3iLE z{{N1GN%#|*JZI4mW_}QI;8OH@A#91I&;#loERB<+Yp??K1L#C@Z3{3{ z&n?=<{x@VhxZp^C#1Z%(F2rFUrX}9Rd>@4l_h1(FQ)mZyJ`PJ$3tf_~u|5pTP@jRG z2XA8*eu+l#9Qyv%+mj)LO}3{cZsx)*=vuyxhITjF(68tk7WgE5bE%6C_;$3x(P-{0 z!Yo{g9zZ+LZFeBnkE2O@9*ubRfBXvZDV2t0xAuDR&Z`#fghdTdJniG36dZINARiQd=*eQ^n{3Xd)fbf+I6Mi$S0#AT92u< zMhEsc8lj?JhP7*khPrR8Pe;#z)#$mf58Ym8(f12~72a!t4)As?h7-Pu-~a!|1v~g0 z9l+UGFZ6XdDjT55GXQ;Y3>w-+=zA~6`e*1t^BtN)f1;7OcwdObrD!CsM3w$bb0W{T!K=^@mFv*$d1Lf8bO3jw6Ptw| zTpys3OMXwmk!2nT9bAdduqK*3ov;)3MAvu~+VNNDLGuH;{eDGH%mUwqq^yK4MT_XI zcrW$g=!A}7H~0U)6nb!>%lBblzlzS}D|BEPKcpp&U_tc73uq4HKNxbQCb|o{qmdhm zF2P9bm(CwNVii1gD1^T7k+2KOVyV>rr(h_?VFP>to#~J0lH~e1)a#=MPd}`OQ_x6! z6#X21Z$G*_GLMFzA1dP#>UZD_yy#e3;!~W5sn7p`zl4#`KtulwI`g&h`p4LW`sY|5 z^ZyzSrjF=yebER!fG)vQbo(wxBl13G;tn+FK1Y-K5GL*L_ju#7bo`jc^3+FTReTAZ_&2AMVNK6*!KBLi zJ-pBqt@lLNbS#?9%h8!_LO+}iqDN}_AEBKpXfAcfW;iC+-$Oe*jJA_@CbU~9NudrG znxdf_jn4dOY>TV#Yy1~|ZtvM}FkSv<*bT+d>ow7n?H;U!PoT-X30>>|qPfn6gX?O{ z%k^Zjc%eGFCUs-IQGB39^k&TB{$Q+*lhG6MJ@f$k92eu)=m|IKuQ0LGg(impO5l9z4bcJYLuYyfpT_^t zvw!A=keo~LDD^Gqb1x^-Q%ki4-G(1y>i2(pDP(csAUeW~wDiW#hZRo(iMBhJ@mYz(F`=s@vc4$VaB1|*WevO!JD|zA1-sxE=s8g~dw4(Dgo0m_+oK~L zf(~RPj>ROpt+IS^;z;(p@?*A1Orr;*5hV3p7$utffz$!En+tAScfQCLZPiU|rwxE7z z^kwv5`W;>S|Iqz^S>CY3CC~|0#-vHpFkWbbe%f_Mb74HXji#UtEJQye-oR|Q9xLD` zG-;2=`)T>Y04_q?zZ`w92s)8#(MZ?N$No3VyK&(XT#t_YeRSlXqHF&H*1%&}8ME?- zHSUOZ+&$LsLL)OA9pEDL!|4TVjVrMV{)rB#%oXf^JF0j^m~msQN4*WYkDovX^bDG$ z&!dsphz@u+x+LGByC}Ut7+6s>XG)>huSa*o9oQI?==<+lC_&*9bWKj9p-B`BFIDy0>i;X8p8AS5fWIK- z1g9XoE}3|dg8Owh8mj%+6VIVZ*!7xlzc-pp1JEOSIQk`ZCOYE{Xs&EWBe@5Q;z4x3 zrx%U;A01##O#S)ajqyf5G=$?Z3umLrvp!89x};cG z!irdjdTT6AL>|TV)L*_fJ#o_g{~v{C@c4CMcRuxHsY;4jN2L-HKpg8T7gyzvj(P%ZL415PhIgv^Dx* zSFDNs(e1MUZTQXT2Uwi?9(1YxLT7$ug|Oxwup;##*b?WX=T7nv1rLUt6~lwIqMf5d zqm$4jSdOmYHZQB!nT!i&YCV?20}&3Vm)iy2kIt>!;8q$yGgA4zsAY#tJwX zlb%%bD3rptu`(V)uU}Ck45&65()-Z+bI^`IM4vl^W_R|QpnPC)UR4PVH4`((InZ5&gd+b!4kE@OxmLj-Hk?ODtiAtG~~a;>lt;z z`A`!palJD-@JC{OQ62Wb+u&0!_$hZLTBvRabpv#U_o6S(!qWIE`rg;*OfO&-7Oxk+ z4Yxp(_8D|(-ay~`E_!kO@LrWS=%M6Bm+6rQVrHq-?j@WYse zFQQ5HQM~>q+D_5NVW3UX=N~`^xERTqWa3>4zIX&X;}uQ9S`9>#Y96|8-$mE@IJ(wZ zO~ZSw(dQnBE_(gSVpVYI!s(RO}9`zv%kA9nPgs7E0;HbD=D_Lu{E;`P`c zYo)O?=$akAA>>GU%kVAsD)jlH=t)-wUAh`*d)?9Y`=ck~FwBc%FzH!6JzjVo&GL2V zx8mLCr`qA@KWGHQm7UKS7h}7}`PZHempT(QQ=&bK-4i=m(+$n2OH$Mf7{cYV^5v=ma;n zNrnr1;)CCz+wW&IbcwcMq`A?0K^%$2u{=JD1Mnkkj#b-*B^ZepQGW!T;6$vC)6fBZ z68$1c!4MrlLv$MbI8EFbK8*69BQJ)oZK-HAbg3Gl@Ap8LYACuCkD*8JT=dK4XXq{{ z);`R8t>Ll7gj*cN@m!nB?1^V$?6hFc0*a_1*1-oEf>dVnkA4DU0 z1f9?sOf6;SFp=C?o$LAVUiW`X3Vy0>KtFVT!C6?OOZYc`NN?lkttyxqdmK8Su%nTVP0{}(7U#T96%k4Jw;XYd!g6qz@NdSM() zy;Q8v#NE^vqLI9>dvG!uxn*chy@f{j6TBaHW9s++H{23Jb_cq>?nSr9!)OCDVtqLp z+V$uWx(%J-Npygh^$5G76gt2z=mg%y4BU=J=2LVReA$Ej?}hKVun~VoXRxd%Ny&-# zE;^7Sw}uayztH+sw}t&*9vyHCH2b@t?+-$E$D^^n7#-jSbV8q_Ur3JJ#{PEziC$sb zT#O!_SEFZiqgd~QX7OX_wt5q7@He!h9KFLqRRX=<3=Me?w4)(tGCzh!WEy7SGf4_& z=UaF^eu!?f%ld>Yy&64OI$#z)jV9|_w4o#Db~}x>bJ6YL{e0+J7eyyn5`DfRmcTk_ zB$B--xQ~b7NSuU@JmZcKk^JbkDupIz`FOo5+Cd8}i)}FrN1_MKTr7p_&g^K9*svT{Ou5C{&hfkm{zK%ZsCOY%Y z=+bP*cK98-bQOk#gKZ$zqP`M`;URRQ-S1-m`{IPVLTDC5H=>{S-(nUf?hY11w^LJ0 z#~x^s-G+wtadi7FLv!IBbP4vL6Zsxr#Y={g%tYqxp~>{bcU;(fPZ;Tvd&3VPhp{`? zOWl{AIE>@44c>WwcA;(h!ZJ7Dr%BJdc6JP)U*{-ALVo}qs4xbVB6JIALd9;cq` zk?`yEndpm$aTL~kG(=)GK0&?MW9g~C-}e$8px*59aIReYM0#R9^=Hrsb$K#nGI5qd z4MsS3LV98^H+D|sK%)M_q|m|Jlf!@58Gx)j%WPB1yrJj6`3Uj*f5z zmd17HOut9Jn4Cd7Ec8tH@>v^As!3=&OVN+>x3MPfj^>;n?l(c(xdm%uax4XBxK4@0 zCUgMXo((hJgBjGnN6-30n1#pjCcJb(`108gD^RbqFr1KgVsq*%&?PvD{_uJhoq4`R zsSl%Mq6G!Bvo{)n$FUeLj`hv4{!Of(kM%1Thv(~}&v!v1Faoo18XBoru_S(qF5y{p zK=!fWl51a^uPQpgR>)E&6Mf^22ho{Lj}I(FlVv@+ z9k*i{Jc%|~=#>z{I_P^{(QS4Ix()9~b7&-*I}_vm=h4W$fur63@5BrBR)rfa&^2n0 z&a_9gf4qM$+VDeY)=!NtK;K&#eG?tn)>!{MdH_>Pj5*x@f5sbWuZDe`8*QjS^jdVp z710-K$LlT70d_=0YQK6?VchxCuvNE3E%o80h1;lKR}&*#ExJ;`Nwh=-T!~I~a}5 z>$UlgU!)suH@Qqp;ELHn(f1J z9L_`c>DBAPS>70(@!j}N8o%L)^=9kC%(_R1M3d1O=!yA4bZa#EV=Sa^2%#>9MxYwH zG##V8qeG)((S1B6`eJlT^Z+`Mzwikx@>Y84KRkK?z25!p^h9I#{}>8>Zoh*bwO?XM zJb<2v**1nFHz$^+emR!GI_UFv;Db0QUO$8;@1^gA51lKqE%owf@;-=FaU5Ra{(pml zGkzC+@c^1cKc^nx@B5&+aSqLai#LS<=0i`ox@eO1M3ZV5nlsZe6>@aIThZ^DC(tGQ z=UtNB{h#N(FtaLXw%>vdXb9TyL_CH|(1xaL4jrvSBefgdHGiYeU$rG1%~i1+_0DJn zl4!&}!3DS*lb%rbZVjPIqH8)6eesp(zUW2ohXGbaXWkqgXn*um@lkZiCZg?5i`N&R zGhP~9j}GM1_u2pcV6m4A?(3W%1oNRwQ5fy0B)V-{Vlx~Z@2^5TT#p0s9rPe8y)B%0 z)zSM+(CgQu+qF}4;I?E4*~46L&E}%tR9;30@E&?#Y)9Ar0G7w2(E=Zadb8*~=<^HE zWP25z*qdmQzlWY5`>+)Lk)&X#3x5>;x?M|j3AUjlJ&3LGFSLQ?ABPTZ#f{YOLAO)I z?I8y`p~-t6noA?lrFjyK#8h;GGjR|mms2on^L`S(xl}~IvGhY{FdNPOg?JI!`%1jN zW=A+5HliJVf_AtIO~Qj{B>s-|+&jY(lt3d}C74XqqhN?yU`@Oc-RF;C>MIf&vX9ZD z^boqOa()`txC}bbnrMQRbd-4qSo`xGI|MjnMmT(Cyd>P2%3@(LNZHHaLocNs+`U zI1}e#u`kjSKd|O+p-1L|FT>vz+lAGrm-#AqD^{ZZ6jsOg(4;$y4&YyO2{XP9^&;q} zZt<_#|E_TjE|_E;(WL2v<8T6GV+^{3zMSH zp}DmV8{!Fc0u{bx|M#cR=i9K|K14_M9hx+!&}91^&5gVV!c2;z&o#ta*dFcp2{iQc zxr{FAfDc(RQ^kJ-jg|_!A8i5OVt^5DdBVp~Upd)OFCd(~&9X=K7 zYtZfaD^|k%KZk>)Ir_t8TQsQ#VsBi4wsRhxagC#){Ts0=_1^dy{U>HpaG&=(mY&#& zqtK7lR=lWS$7yFbiFhM(7E72RiVv=)h;99W0IYb!h0fq0fDfwtohT zW8RbOe+N+OWC(3n^nr)a2j<55##rAM>lb3Z@Tu^86ZHApV*Qa=UmWZ2$NIro&;DC@ zzIc*?9kz-W`eO$5N$8BGp-Zp`eQq@x@|{=*zridla5_Y)78;q(=n~zHwlgNyr=Uyo zEV?AgRTOM+9l8zQM?WM!jSuXL^@I2$*N>yg^x5y>y)W@I>W9&RuKOcB^^Z<`gf88} zGvN;&Hee0vXV6_z?riGMijs+56kO|<(T=yG`}$K%tr<3tzU;ZL-|YyS!%ER7~x zJ#38a(FsgPLpvYcMN9EUT!mfmJT}G7fAc#g_y24PQ}Hjn37`BYEX8-|S{+3j{ukfH z?Ei*_Kg36Wi9Eh)>kuH2bOt2azz0iz8eY^#&&p{*c3L3h% zu^fIDum6XyQorOvIAGpJ*LDlK=6_*PynKoS0cq{dZX!8D?$VjHL_u90K z)HZB}&a@9Y@*(J2CZkWHYy1@Y+?&xYSc>{itcz!{LmFQ)(=$@v8^&j3q?Ys; zQRuiO_Mv_=8qp2tF8DM_!I5WV&q$r^<*+&Rj@Slgqsep-4dpR(2DvZJNG(wT^n@#p zo(~PsB)uhG?~Nw&gXnIVfG+KP^xJasB?^XO6MA55M?=3aUO$e5sQ-mVpl^=Q;AnIS zCZiuFbI=Z+N53(xMU(OiwB4W3e$Jo~NXwbJo=g;=;0Q~gBddXqtQk7f?&wn7j=OLO z8j%K$%-{5%t2{bZu(RNp({cMW&KgIlh{(n!Q7&p#D3+4*-I_Oc_13lYE zMCV7}MI&_>jlemygKW9OjIThKwm2H8w&;YqMSElF_kRN^7^3^p?Kd7hSmxm=d>IYh z!b@ZJqM?2ro!R@?5_jWBEPPpr$SkzOm!hwsk$ejs`1_c2WM9PxenbcIE84+7=%-`u z%fp(M!xGe6<9xQ)J?K8pl{Y+pJyxcEGk%B@&?N4ZFC+C`av?gwQ}`Ta&(HpUoWe`_ zL&z&%5oX>A-9G)JQ?NQ6zJYGjqXoiR=O~zw`m0wZ(9rKh2Y3Ko`^+mdQa^YUL35@S zdc6_){LNRg|4p6&TrgB)(Cza$n(dR(&_5sRuc9A9AEFKJKqK`98mS|A5oRkCp38-{ zlLw7#8MM9HXp%QiQYe+qenkf|{_3zcbD}HIZL|?>cqcmYFVKM=M%VHebOPtm0c9^7 zlClswfRgC*4bcfSM{^Px#>RLD_QL0}6J{0(+1m{r`R&oW(SeOZ8=Qn5P}9-f z@Or%eE;@kE(6v8`MlNwp>V5wGR|;;wLgd@j-JP|xDI{sAeyaz#`@*g zg$_!fGpdQsq#2q_z0eR3M+Y()J-`;ApNemypAo;K6S=%N``-~2q+ke3ph;8iEZ!!yb-se9p@_>a;7NSPHQZIx1&k+Bs$<_=?#DLB)o(2ie4*X$20kN-u>RtWWO=s+JuJD7$h=WKLWtVL(I1Euz{9nl6AoP*bjYh3EJ`N=yRXM>wC}{9>y~GFBqpVZ=BVdVB>B{%V1rfAP&Gxj(E#+p2hh*& zS?Ivlq1$aI`pxGY+QENV4)fFxInp578qJYz==snaJ)rtxPWn&WPr(kyqRBNCjmUho z!7w z%)AlWK@T*g)M3iuqd-0lc$SM(S_D-rG7O_1}!OZ^KNvz7$i* z+%_cJ9(+D`IA3WjVymc%ny9t(F4 zA!>#0j{fKiBhloUi0QP&q9-HBbtN$^vwpa9~@P2o6g7;#U`+p$? zL%k_Jun+C{G^UQuZXptl(cN(?I*=#PrCW?fXgOYjZ^rvu@doPOpt)82=CG6%a5MF~ zcq#oS{-fa0nyY(8>KBgX&=4I)XLcS0S z^U%n=facU2nELtuJqkAX3EIGC*bBeJN3m9qjKuZqlDDxc^^9A?b2ZV()kkxn8#?fZ z(1U6g8kvRY(yqcv_!D-*0=KdM9ofL!!j0jWo%#!C(!7k0^ewcZ4`cmnG~0i|c6bhb z{`y|wxi090`k_fZ2p!N<@&0`DBwX1m89s+UjyJwQ*Yqd!h2v<$f1(X$>m9N?CmN|D z=m4*a*DIqZX)|=6cgNj09DS};pD@6iupae0lN8QSSc-0|dAElwUXQJ)AHXaueMiXJ zR@j942yBaQ;!e!gH~a!}5B8y6w_ir;FDyQbS=4j)54)ivR-xV#J;;(%DVXIOunc~W zEHap28M{Vz>U=VAV+gD zQFKt4@ftKF`_K=E0)xYm+hRz_jmOaltwjg47fr@9XmXXlDXU89Td4;_7gep}sv&fqJ&34cI4sy!@h zrxwvW(00b59X*9cY7x3^Uqy3b^Dy?mGyjSUejfjdHkf00c%cA#z?8zeM4%~pB90jm za%LGCk?rWga|E4fVr2LfybNu>Bs%cA=yT1`0rVW1%t-x}>if8m#f6X2CHVzQ;NS=1 z4A2NILJy7?&`@qc5150P8u)`@h6T`1!O~a&>!BTX!fSB=-iniw6ed$Riv4iJs1WjR z(9r#euI+C)1^+@je&V6f;WD(N*U|0!0UCi*=x(`yMzHAUU|lq~y2g5PCx5}ibs=nu5vJY&LnPz4Qbcl0Q~9bMzQaXvnb&b;v0FyN|aL>eI{Y%*~Z z1v}`CHqZ~9@xAEG9>m5t89jh@;4nOc<#7;8SQ+Qw82k`l$Lk*szbW|}+fr{eE+cUq zXGb3$?|l~gzDL5Z&ELbjd7#dteEGx|@j)!`SorPrbTsP^;$uGdc=+lXTfYdO8t9mh#yZ3 zYo22ge?-Foszn!04iU*QH6!&8j@HG^Jih}M;q+K$7hyf>Yq36_Mh9AH79BFcyV0zl`*isBeD-Pf zzZdGy&Pe?mu+LyC>SwVwHl7o<*Mn$sE{?87b73?34d@se(hKNzymD?hfEuCiwMQq| z8{6Y_bOPVcC0UkH$e5Rr`p@fDpxf}WXTlji9Gg>Lk2Z83U8>9GhZ&bZle9jX_3hF7 zeb8+-5(nc`=r;V%>qO$pXERd&JYUu1f{?8*pf7Y^7=BN8Kf0fnV>$c`AF%=a6vr(J z9d}$DlBzG-!DzIdIkCPv);~c9_!BP0bJ!P?&psC#N?Q^RnEdzzHbK_eym$I!0e>&D4Z=^mKo%sBi} zzl_9UF092W*llGvVkcl%>Mvpzp2uQX^yQ4yKiAa+n^OM6XqLZ*Cf7D}rr%-_Jc%}#`_-_08)7@^ zyKp65vpOU7cg(iqNb1vH3psZ2>+JuYT&PdsL7ayZFy9*)ssERo1z3lA&NZRI=9ruM z40LH0qXT>cYvQkH(q6YV)Z1ZW>W|_Kvi^PimHN$ZW~Baq!&c^ zF2&dA$@dGshNV6ZNxKi%QE$6FL^$)4aFUKim*PZ{LTd{BcVwjgL*vz0o)OR48P4jh zpN5Y5?g}3|W6-tD_$-9JBmPZ&0=|QfejfgmyxH!I)PEnGe@}RBD4N{Mu@8QYUt+S} z7a56z6!PuONSw#BI1|r&8P;&ZSK&7z@8X1XZhXzhHBQ_g&Vy;+5&;JMJwDIv(+4sV zk2`_y$acKuhm6D*TyJwIjyF+Xj2ZYRy7vD>^B)b{wE{Z8R(KKKh)$p@=E4DZ2@Xeh(Kt-~`TsNuZl8H* z2fNTU-h&S0+GF8lEQdy-DS94s##F=c`f#ku^~Ymvho?UynZ54vj=NoQyru_Ku82#s1Ht(B)Lv=flxtoQB2m^;rK3i&6g;glqWk`!J+Bk=_~^CRfzezxDkhej2=mU>4t0>ki99EB#;1T^$d zqf59b)?bXih9>vh=+bOM+e>~z!4vKznoK$V2qP_0So0 zMYr!LEQsUd^=HtJ<4y7Uk$C+=xSmWDKO6RG+vx4+3?4v7I1UTr^XSsNheqfyy4D$g zh5=uTu5mMTscu8p{$cd}XVHPKN834&spVw2F;yAXoqLfq|5V97+6`f-PY(AmD|t>+>J?-Y*M_jF1ih!`Il&N{e?E1 z?cXqu{N4BH{-qd5O%=h=mZ-k(=t(R))7wfywwf+i? z+z;pge+%_wB3ri1)IoCvx<(Dr8TCUu7=(`aNpww@pfg*EZSgg%hZoR;soq5)f&=g( z>SM49K8i+QExL4{<8^-ie@nrTr)3Wv7C_ggIy&+eXlQT5CfEaq;R5W8c`ptf_eW2`Z*1_zTWTyVoX%n17eFuJy z{c;f*8m^r?Gxc+Qr%UOG>!)!xF1#!=^&5{GmuIGa34L9j%+wE^f8tE;56YXFNSdYR zDHxJ#@`ag~K|@>@z1|q>V;gigJc)imS%^mNSL}vq`7=}JMR#-;^ox!~b7T&BU~Rw( zcr-u%{*ebu!7DOT+pa45Vrw)acf{)xqf5{MY(R5j7kZK%Lp#V`AiQ4|i&1Zesa!%Q zG6;QtIC|nvD!_mL8Q6gONvwty zvNBU&GW+0Y>a*|y<|!7Q%X4jJ>faM@kFNELn1x@W13ZU~u=I7Q?VC&tpkQ*X!IgL# z+u)+&nW>-Oe?j+ejS^v3+!>vYPjP)crjoN{X5vojPhu}Tg*~xDsm#!XQqBAU5B1vr_oQZODlwsH$tBu zgAH+gte-=3t9r$79t=X0Hmy?F-UTuB|NmEnLLP1uN0X%{zKwO!ko}3~M3u^!iI4C$ z%!j3`gygG_u60LrUq6h+@D=n!Y8N{21L$YK-{?u0vnu=FQ0A!`4xR#NC`(~stb&gC zMs!>CMH_wu{R;I0mch5tng4{>VTo!X*;=8IdJuho1v=*+*ul6Vxe@bZRXfK|}@ z&CsL13z`ehU~2!rO2HAWLp#`jj`Y1)--doD?L@yFA4QiWtx>4wMBl$QS^~|9(r9uv zK$Efs8o6F*g!?vP|J&i+@y77zDD-*~?dWlIK+|IVY0O1^VXXfTP0}~e=Qg3)|9-r` z8%tCF25mQ6<1mn1jg#R*9xiwUUx}%c5Ph&FW?%y}d77Xz>VPiQ&FFS~2o3QxwByC- z^RJ)-+lUVAL-hTf=yQ9M6x4V6@Bf9)^a2{$oXx{~xzU`;hnKql3sbP8a_E}YM?30;4(L8K5~I+WK8iLx3+;Fj z8tScR1&FbD%BSUuR7H{r?^m9MM3uqhaV;PC}DpX}rD)t5N>| z%i`bYelBrC7dGa9mNt-{C) zpffFvHc$^8d86nJ(e}}9=tO$qKpceaaSyh^;;qBS@;zvTXS8Pj`zf`C3%Uoh@ON}z z`P+njTp(HkJ=v2_gFYoq5!6Lfpsincch&86XJdr5R@W}r*D7+vDz%2?QnzVJ=- zr|2oP!@r|BZw${}g*IFq-37JKZQ3*5zYk5m(dcti(RQB04Y(Tjx&Mc>4{LHmhcJVI z=s-q9AI3$j#l%=I+bJ{k=lj*snf{E<>~}PG(mIEZ^P=~QM=PQC>qgt8uCxDo#s}_1 zLvtTG^0CqB@&1zN%jk1&q9NRh4&a-3|5)@4+D@WN7)ah|5p*D>t-Js0P_V(~@qrHU zfgZ6wBsvmJn(^`eQ|J-AB;J1u&6y9-bK={0{kQ19(d=F0fH3v@|03~1m1uqR^ZJHZ z?-Lyo9T^>u&TvYsFN&@}C$t6~$a}H=MZEt5dLaGUmHqD;o#8?%R5!(up$!y?^)hJ4 zs-rKqh}Un#qSU*``h(F&qtno(c?Ny|#dv*vbn8v*e-D&TxnRRzq67IpK5#nvAG+@^ z?iL1EBw8A6xEk6~b2Q64#p}06??>N%6zy*wI>G0XvG6h)iS_6JwxSL1MH@a6ub+w6 zv)>$^zcP9qy7m>(_gkQm=@##gMB5o3>(kNplk?+^mGQ=g==;%K=t%dY9UMXT`T2N1 zfA`Q(QFH>8(HYjm)Q3*I-WKh!8#<5yp`J{Phz~r0Cf$r!Ux{|SF4ni8GunwZbRu5A zfHs)(mT-PtiN04NS|!>59bl_ym(+FkUoQ$aFgW^PeBg=H0}Kf5aACZ@D%Ll|`gZjF zy=dqUp#wM@@2B?&5y_377gwMk&lRu){U_Q`sDk&R9~Mh73%8*U{)~ROT+}nZh<r>H4OpoQBf8{P_P>SKxnR<4MML=sx{dZlkH!0c zqXSF7Ei`mV^s;EaXu;^!(W24oqNSqcZe#!ZVN;0})Leu+--SdxM-{*A6_Mz7FuNlbmwKttRL9bgai#X;!N zIx5zu#`_Cn{pDESh`#>`+RuULk!bQ%Ec}Iji%stxeqJw%cGN!F3!U*$T!Q!Fi3nVrOnVg|qQ6`psr^-|z)v zE;_)C==FWkvuNb<_6q~3f!2GYyXg`1`Q=ywx5WELQ?mbZ^$!nLLLcmm9yCMIhNeYd zLmT`8eeSR56?cZ`s-R2K1r7NCG&e?}yX7(T>-VJS3{3s`|2zxaSc2 zpf7%nKKFgBAB+ALJ%>Jj0evplfRJnja542VXgeQcL;MVrK6v@S(BV~Rc2-7b*bHs3 z7y8@~^jq=>G@GABpL+#;?_+e}-^TmDqwnV$6s{LS->Zbhu;n23{{RYuxKI~&qanX^ zaA>d!mZRPrU6On7VVsVoFwc-MfI8@hQ&)5VL(q=Lqe(msZFdnmfX(s#{vpZG(a-V0 ze{eDnTyj@o>&ut?0-Hp-b@ynru^|&qdduk@yH}2Q@21d_ z!e}%(-j9BQj&L{n!cXYTen(%-aWC7E1EC<=VfFjMz}iH+Mth+V7>Kt2B--AzP){bF zjW?E}C*BIQ<4tJ8pJP2diZ!sr{oxl7JdlzL<%_(TI)0ruZaw#O?Sj z{U?fy$V~ksbQ`c2^%q9@=n~$IF2$pm`v3o(M8V{mi=Nr5(PTV`ekD7NhBDWvaD*1c+o-od-+LaL;Kq3W z0y^*#4~0m!M%TPQI)M9QeZoWRe@8MqURZ#3yaLDI1{{L5M~Cy_1+<~>(TrK#* z_mAhuJ?H=*iS_BxrD%I=(cJm~eePhAf+0DHhCbWF;YQ79GxSSi2lTlCXhUPs2uwvk z)s|xx?m&0N3ACdEo-P6pvj$F7$5jBdI+<)kr*FdD26uF3Y}>`T!}+*JQjW= zB;z8?qP_t=s`sM<{|Eil%=c($uNK;IFJuXli3y>Qn2vsI&Ot--QgkgAqrL?lz+v=T z@kw;%xgQH_Sq*)!E*hyD&~0}sn!JOfW8?j&QnLS+#~T~b26kaL{1$DX#^d22YK9Kr z7W8AfFZ%plXa}Rv18WLa!ROH=+l%G#TlD#yPXr6%74HAy6nwC5v`Mrj+F|=x?;h=q zHgqRC(_!cUCZf5qAYOkN{fyXxo)2Hf`{_@H{__M zUjGU0@OZqQn2?$J?}2lp?=L|ov+WLua0IVo0L= zXhY@E4jQ2YZi^=8ew>egqPt?|r0~^iCED>i^tmn3@1p-qiuH&?hZi)cMI;mgA?2}xVr@n z?(Xg$BzSPU&wIM~e*U}ey}j1v>FTbouBz_dd!I4fxU{ena(1Z9ErNO$Y=n9!9fZ2i zJb=1|C-la+&F7^Y=gw;psE$TZn`#V{0}EkkxC8125-{FPm=UVKEYw6zpq>@Opw@mK z)KV=qZiLG0UgL2{hCJUzDuw8H2zA3qIl&n$2z9=jm^>URl2uU0>lBoup(eUa#DxkV z7t|6pgR<8XYN^J-N$?w-1}9FEJFyOQIh01{KfhIx@6LS-;`W?26(8s~-59|h&;bg2H7GdcfiI6#Be=(2VA{&bGShw?NJRDV;b zfg_Czp&Zy@JZF4t{ojr8X1Q@$q4di^&D+SMqSSVQ@^ApuL}Q?K`6j62^$2S1qRe)B zg^cB)9I6fVRO|#Z!?92=rMqBG_!P=+(m8Iglr?%)s3^i(P@82SREkHN!Yr5uc_Azd zPe3^ucdm;d1=K{jp+7@V_C`YO@=Z`ncp1vk|4fcD&)@F((z=STB=jF6lLtZVg*i|I zcUt=;;~Qhpd^bUQV`*bkD0`l9p0)2Y`4)_=^B-z~GY}Ul^6XF(7l(?p3DlZ(FnI{n zahqWBbf~plZ0%d2?CgfRUz|36gSrD|Sm^BL5_SHIQ_+h<6)3|kq3&Sqr2q$7`&g(u z+7zfISq-Ik2}_l4R_CgF84!Ico1D1o*I}bgj_8%&xp>MGpSO#i9WtbM$ zf|_7}aSYU2&xBg*eNb!s94h4zm$(dMfXZ9}s0phwP6yCgUZAts5|H;m=o3f-r$X4{eMtkFqFYmn;f&l=*UHk)r`%c9O-WC2X*`gLw&TH z1hvV}K)p#lG5I@;uk#;ovwL&NW~=};pas+|)r0lmER#P$9oKkUT;?)EElnM$CpqB0gl-)K=GY! z*ZvA64}>x_5o*a6Lpi<+>J{!KR6tR7xf@O*sEjs+{>{3J^DocG(jdhtQ0I2BDIA7! zCAmE!2Si#u-o!ZGv)qH`Mq;CZC6z=o(xIKU)9ny-sfh)I3|D0`ZPf8B689DRkZE zItIWIw9kMVkaE9UqC9XHa($?bB|6|7$q1E^9LADRsjdk%z8jR|!%dz5ah%`(a~0ou zD1*D8j>{>i0S~PI1(cyL#-M{PqGZO*P~!`jT)`LuHLeBJowOI!X_*IubpE$c(L{$~ zVR#m5K#W7qk(5v=&TlLO6=@Bq30oMuLrpLgW`e7s#@&EAmQSGUMm_A96b9=2=b(}w z=7-vRJ=6iGLm8Y4HPK;fzihk(wKpC@O%(cwb2tcUZBs(oDFoGD5{AHPP#Inc{r~^> zUMd=J6H4(tR7S!cb#hcF&lAA5Fq5^^Vl5<0C>Y}hAEDPn> zvSXZoozt~6B!efQ9C-S>p

J*Z8&-1rb`Et8#h1~NcJ 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 r^Y&7shE*Sq>A%_-RMwV#)VOLUr5fw=nG-G\n" +"PO-Revision-Date: 2022-07-22 21:49+0800\n" +"Last-Translator: Bral@qq.com\n" "Language-Team: \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "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" #: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 msgid "Portions copyright" @@ -427,7 +427,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectLayers.cpp:29 src/slic3r/GUI/Tab.cpp:1449 #: src/libslic3r/PrintConfig.cpp:285 msgid "Layer height" -msgstr "层高" +msgstr "层高度" #: src/slic3r/GUI/ConfigManipulation.cpp:61 msgid "" @@ -435,13 +435,13 @@ msgid "" "\n" "The first layer height will be reset to 0.01." msgstr "" -"首层高度无效。\n" +"第一层高度无效。\n" "\n" -"首层高度将重置为0.01。" +"第一层高度将重置为 0.01。" #: src/slic3r/GUI/ConfigManipulation.cpp:62 src/libslic3r/PrintConfig.cpp:1226 msgid "First layer height" -msgstr "首层高度" +msgstr "第一层高度" #: src/slic3r/GUI/ConfigManipulation.cpp:82 msgid "" @@ -453,17 +453,17 @@ msgid "" "- Ensure vertical shell thickness enabled\n" "- Detect thin walls disabled" msgstr "" -"螺旋花瓶(单线打印)模式需要:\n" -"- 一圈轮廓\n" +"螺旋花瓶模式需要:\n" +"- 一个周长\n" "- 无顶部固体层\n" "- 0% 填充密度\n" "- 无支撑材料\n" -"- 启用确保垂直外壳厚度\n" +"- 确保启用垂直外壳厚度\n" "- 禁用检测薄壁" #: src/slic3r/GUI/ConfigManipulation.cpp:90 msgid "Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "要调整这些设置以启用螺旋花瓶吗?" +msgstr "要我调整这些设置以启用螺旋花瓶吗?" #: src/slic3r/GUI/ConfigManipulation.cpp:91 msgid "Spiral Vase" @@ -505,8 +505,8 @@ msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters" msgstr "" -"如果启用以下功能,则支撑工作得更好:\n" -"- 检测桥接轮廓" +"如果启用以下功能,则支撑工作得更好:\n" +"- 检测桥接周长" #: src/slic3r/GUI/ConfigManipulation.cpp:167 msgid "Shall I adjust those settings for supports?" @@ -2046,7 +2046,7 @@ msgstr "期间" #: src/slic3r/GUI/GCodeViewer.cpp:3609 src/slic3r/GUI/GUI_Preview.cpp:1049 #: src/libslic3r/PrintConfig.cpp:2905 msgid "Travel" -msgstr "空驶" +msgstr "旅行" #: src/slic3r/GUI/GCodeViewer.cpp:3612 msgid "Movement" @@ -2132,7 +2132,7 @@ msgstr "隐身模式" #: src/libslic3r/PrintConfig.cpp:1202 src/libslic3r/PrintConfig.cpp:1212 #: src/libslic3r/PrintConfig.cpp:1257 msgid "First layer" -msgstr "首层" +msgstr "第一层" #: src/slic3r/GUI/GCodeViewer.cpp:3767 msgid "Total" @@ -3152,7 +3152,7 @@ msgstr "" #: src/slic3r/GUI/GUI_App.cpp:270 msgid "Artwork model by Leslie Ing" -msgstr "" +msgstr "Leslie Ing 的艺术品模型" #: src/slic3r/GUI/GUI_App.cpp:411 #, boost-format @@ -3696,7 +3696,7 @@ msgstr "致命错误,捕获异常:%1%" #: src/libslic3r/PrintConfig.cpp:2826 src/libslic3r/PrintConfig.cpp:2886 #: src/libslic3r/PrintConfig.cpp:2895 src/libslic3r/PrintConfig.cpp:3066 msgid "Layers and Perimeters" -msgstr "图层和轮廓" +msgstr "图层和周长" #: src/slic3r/GUI/GUI_Factories.cpp:56 src/slic3r/GUI/GUI_Factories.cpp:131 #: src/slic3r/GUI/GUI_Preview.cpp:249 src/slic3r/GUI/Tab.cpp:1547 @@ -3773,7 +3773,7 @@ msgstr "挤出宽度" #: src/libslic3r/PrintConfig.cpp:516 src/libslic3r/PrintConfig.cpp:527 #: src/libslic3r/PrintConfig.cpp:543 msgid "Skirt and brim" -msgstr "裙边和brim" +msgstr "环绕和裙边" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 @@ -4682,7 +4682,7 @@ msgstr "功能类型" #: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/ExtrusionEntity.cpp:330 #: src/libslic3r/ExtrusionEntity.cpp:352 msgid "Perimeter" -msgstr "轮廓" +msgstr "周长" #: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/ExtrusionEntity.cpp:331 #: src/libslic3r/ExtrusionEntity.cpp:354 @@ -4933,7 +4933,7 @@ msgstr "导入完成。" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:187 msgid "The file does not exist." -msgstr "" +msgstr "该文件不存在。" #: src/slic3r/GUI/Jobs/SLAImportJob.cpp:221 msgid "" @@ -6556,7 +6556,7 @@ msgstr "提供的名称为空。无法保存。" #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:634 msgid "You have to enter a printer name." -msgstr "" +msgstr "您必须输入打印机名称。" #: src/slic3r/GUI/PhysicalPrinterDialog.cpp:642 #, boost-format @@ -6640,12 +6640,12 @@ msgstr "工具更换次数" #: src/slic3r/GUI/Plater.cpp:431 msgid "Select what kind of support do you need" -msgstr "选择需要的支撑类型" +msgstr "选择您需要何种支撑" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 #: src/libslic3r/PrintConfig.cpp:3640 msgid "Support on build plate only" -msgstr "仅生成打印面板上的支撑" +msgstr "仅从打印面板支撑" #: src/slic3r/GUI/Plater.cpp:434 src/slic3r/GUI/Plater.cpp:564 msgid "For support enforcers only" @@ -6663,7 +6663,7 @@ msgstr "裙边" msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." -msgstr "此标志启用将在首层上的每个对象周围打印裙边." +msgstr "此标志启用将在第一层上的每个对象周围打印裙边。" #: src/slic3r/GUI/Plater.cpp:477 msgid "Purging volumes" @@ -6736,7 +6736,7 @@ msgstr "挤出机上的长丝 %1%" #: src/slic3r/GUI/Plater.cpp:1402 msgid "(including spool)" -msgstr "(包括料盘)" +msgstr "(包括线轴)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 #: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 @@ -7777,7 +7777,7 @@ msgstr "除前 %1% 图层外。" #: src/slic3r/GUI/PresetHints.cpp:61 msgid "except for the first layer." -msgstr "首层除外。" +msgstr "第一层除外。" #: src/slic3r/GUI/PresetHints.cpp:64 msgid "During the other layers, fan will be turned off." @@ -8449,7 +8449,7 @@ msgstr "自动调速 (高级)" #: src/slic3r/GUI/Tab.cpp:1615 msgid "Pressure equalizer (experimental)" -msgstr "" +msgstr "压力均衡器(实验)" #: src/slic3r/GUI/Tab.cpp:1619 msgid "Multiple Extruders" @@ -8457,7 +8457,7 @@ msgstr "多个挤出机" #: src/slic3r/GUI/Tab.cpp:1627 msgid "Ooze prevention" -msgstr "预防漏料" +msgstr "Ooze 预防" #: src/slic3r/GUI/Tab.cpp:1647 msgid "Extrusion width" @@ -8477,7 +8477,7 @@ msgstr "其他" #: src/slic3r/GUI/Tab.cpp:1674 msgid "Arachne perimeter generator" -msgstr "" +msgstr "Arachne 轮廓生成器" #: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 msgid "Output options" @@ -9845,7 +9845,7 @@ msgstr "中止" #: src/libslic3r/GCode.cpp:539 msgid "There is an object with no extrusions in the first layer." -msgstr "首层中有一个没有拉伸的对象。" +msgstr "第一层中有一个没有拉伸的对象。" #: src/libslic3r/GCode.cpp:570 #, boost-format @@ -10135,7 +10135,7 @@ msgstr "擦料塔目前仅支持相对挤出机寻址 (use_relative_e_distances= #: src/libslic3r/Print.cpp:496 msgid "Ooze prevention is currently not supported with the wipe tower enabled." -msgstr "当前不支持启用擦料塔时同时启用预防漏料。" +msgstr "启用擦料塔时,当前不支持 Ooze 预防。" #: src/libslic3r/Print.cpp:498 msgid "" @@ -10225,7 +10225,7 @@ msgstr "" #: src/libslic3r/Print.cpp:651 msgid "First layer height can't be greater than nozzle diameter" -msgstr "首层高度不能大于喷嘴直径" +msgstr "第一层高度不能大于喷嘴直径" #: src/libslic3r/Print.cpp:656 msgid "Layer height can't be greater than nozzle diameter" @@ -10413,7 +10413,8 @@ msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -"首层将被相对于配置的值在 XY 平面上缩小, 以补偿首层斜视, 也就是大象脚的效果。" +"第一层将被相对于配置的值在 XY 平面上缩小, 以补偿第一层斜视, 也就是大象脚的效" +"果。" #: src/libslic3r/PrintConfig.cpp:268 msgid "G-code thumbnails" @@ -10429,13 +10430,13 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:275 msgid "Format of G-code thumbnails" -msgstr "" +msgstr "G-Code 缩略图格式" #: src/libslic3r/PrintConfig.cpp:276 msgid "" "Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " "QOI for low memory firmware" -msgstr "" +msgstr "G-Code 缩略图格式: PNG 质量最佳,JPG 尺寸最小,QOI 用于低内存固件" #: src/libslic3r/PrintConfig.cpp:287 msgid "" @@ -10543,12 +10544,12 @@ msgid "" "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." msgstr "" -"优化移动移动,以尽量减少周界交叉。这在远程(Bowden)挤出机中最有用,因为这些" -"挤出机更容易漏料。启用此功能会降低打印和 G 代码生成速度。" +"优化移动移动,以尽量减少周界交叉。这在鲍登挤出机中最有用,它们容易渗漏。此功" +"能可降低打印和 G-Code 生成速度。" #: src/libslic3r/PrintConfig.cpp:402 msgid "Avoid crossing perimeters - Max detour length" -msgstr "避免穿越轮廓-最大绕行长度" +msgstr "避免穿越周长-最大绕行长度" #: src/libslic3r/PrintConfig.cpp:404 msgid "" @@ -10557,8 +10558,8 @@ msgid "" "travel path. Detour length could be specified either as an absolute value or " "as percentage (for example 50%) of a direct travel path." msgstr "" -"避免跨越轮廓的最大绕行长度。如果绕道长度超过该值,则避免穿越轮廓不适用于该行" -"驶路径。迂回长度可以指定为绝对值或直接行驶路径的百分比(例如50%)。" +"避免穿越周长的最大绕行长度。如果绕道长度超过该值,则避免穿越周长不适用于该行" +"驶路径。迂回长度可以指定为绝对值或直接行驶路径的百分比(例如 50%)。" #: src/libslic3r/PrintConfig.cpp:407 msgid "mm or % (zero to disable)" @@ -10572,7 +10573,7 @@ msgstr "其他层" msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." -msgstr "首层之后层的床温。将此设置为零以禁用输出中的床温控制命令。" +msgstr "第一层之后层的床温。将此设置为零以禁用输出中的床温控制命令。" #: src/libslic3r/PrintConfig.cpp:418 msgid "Bed temperature" @@ -10726,18 +10727,18 @@ msgid "" "the first layer. When raft is used, no brim is generated (use " "raft_first_layer_expansion)." msgstr "" -"边缘的水平宽度,将围绕首层上的每个对象打印。使用筏板时,不会产生边缘(使用筏" -"板_首层_扩展)。" +"边缘的水平宽度,将围绕第一层上的每个对象打印。使用筏板时,不会产生边缘(使用" +"筏板_第一层_扩展)。" #: src/libslic3r/PrintConfig.cpp:526 msgid "Brim type" -msgstr "Brim 类型" +msgstr "裙边类型" #: src/libslic3r/PrintConfig.cpp:528 msgid "" "The places where the brim will be printed around each object on the first " "layer." -msgstr "边缘将在首层上的每个对象周围打印的位置。" +msgstr "边缘将在第一层上的每个对象周围打印的位置。" #: src/libslic3r/PrintConfig.cpp:534 msgid "No brim" @@ -10859,7 +10860,7 @@ msgid "" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -"这是打印机在使用特定于角色的加速值(轮廓/填充)后将重置为的加速。设置零以防止" +"这是打印机在使用特定于角色的加速值(周长/填充)后将重置为的加速。设置零以防止" "重置加速度。" #: src/libslic3r/PrintConfig.cpp:644 @@ -11010,8 +11011,8 @@ msgid "" "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " "(for example 200%), it will be computed over layer height." msgstr "" -"将其设置为非零值, 以设置外部轮廓的手动挤出宽度。如果为零, 将使用默认挤出宽" -"度, 如果没有设置默认值将使用 1.125 x 喷嘴直径。如果以百分比表示 (例如 200%), " +"将其设置为非零值, 以设置外部周长的手动挤出宽度。如果为零, 将使用默认挤出宽" +"度, 如果没有设置默认值将使用 1.125x 喷嘴直径。如果以百分比表示 (例如 200%), " "则将根据图层高度计算。" #: src/libslic3r/PrintConfig.cpp:754 src/libslic3r/PrintConfig.cpp:865 @@ -11048,7 +11049,7 @@ msgstr "首先打印外部轮廓" msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." -msgstr "将轮廓轮廓从最外层的轮廓打印到最里面的轮廓,而不是默认的反向顺序。" +msgstr "将轮廓周长从最外层的轮廓打印到最里面的轮廓,而不是默认的反向顺序。" #: src/libslic3r/PrintConfig.cpp:781 msgid "Extra perimeters if needed" @@ -11153,7 +11154,7 @@ msgid "" "height." msgstr "" "此值设置为非零值,以允许手动挤出宽度。如果向左留为零,Slic3r 将从喷嘴直径派生" -"挤出宽度(参见工具尖,了解轮廓挤出宽度、填充挤出宽度等)。如果以百分比表示" +"挤出宽度(参见工具尖,了解周长挤出宽度、填充挤出宽度等)。如果以百分比表示" "(例如:230%),则将在图层高度上计算。" #: src/libslic3r/PrintConfig.cpp:873 @@ -11278,7 +11279,7 @@ msgstr "冷却运动正逐渐以这个速度加速。" #: src/libslic3r/PrintConfig.cpp:974 msgid "Minimal purge on wipe tower" -msgstr "擦料塔上的最小擦料体积" +msgstr "擦料塔上的最小清理量" #: src/libslic3r/PrintConfig.cpp:975 msgid "" @@ -11396,7 +11397,7 @@ msgstr "元/公斤" #: src/libslic3r/PrintConfig.cpp:1074 msgid "Spool weight" -msgstr "料盘重量" +msgstr "线轴重量" #: src/libslic3r/PrintConfig.cpp:1075 msgid "" @@ -11405,8 +11406,8 @@ msgid "" "the calculated weight of the filament with the spool to find out whether the " "amount of filament on the spool is sufficient to finish the print." msgstr "" -"输入空耗材滑阀的重量。打印前,可以对部分消耗的耗材料盘进行称重,并将测量重量" -"与耗材和料盘的计算重量进行比较,以确定料盘上的耗材量是否足以完成打印。" +"输入空耗材滑阀的重量。打印前,可以对部分消耗的耗材线轴进行称重,并将测量重量" +"与耗材与线轴的计算重量进行比较,以确定线轴上的耗材量是否足以完成打印。" #: src/libslic3r/PrintConfig.cpp:1079 msgid "g" @@ -11475,7 +11476,7 @@ msgstr "螺旋形" #: src/libslic3r/PrintConfig.cpp:1178 msgid "Adaptive Cubic" -msgstr "自适应立方体" +msgstr "自适应立方" #: src/libslic3r/PrintConfig.cpp:1179 msgid "Support Cubic" @@ -11489,11 +11490,11 @@ msgstr "闪电" msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." -msgstr "这是打印机用于首层的加速。设置为零以禁用首层的加速度控制。" +msgstr "这是打印机用于第一层的加速。设置为零以禁用第一层的加速度控制。" #: src/libslic3r/PrintConfig.cpp:1193 msgid "First object layer over raft interface" -msgstr "筏接触面上的首个对象层" +msgstr "筏接口上的第一个对象层" #: src/libslic3r/PrintConfig.cpp:1194 msgid "" @@ -11501,18 +11502,18 @@ msgid "" "above raft interface. Set zero to disable acceleration control for first " "layer of object above raft interface." msgstr "" -"这是打印机将用于raft界面上方首层对象的加速度。设置为零可禁用筏接口上方首层物" -"体的加速度控制。" +"这是打印机将用于 raft 界面上方第一层对象的加速度。设置为零可禁用筏接口上方第" +"一层物体的加速度控制。" #: src/libslic3r/PrintConfig.cpp:1203 msgid "First layer bed temperature" -msgstr "首层床温" +msgstr "第一层床温" #: src/libslic3r/PrintConfig.cpp:1204 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." -msgstr "首层加热构建板温度。将此设置为零以禁用输出中的床温控制命令。" +msgstr "第一层加热构建板温度。将此设置为零以禁用输出中的床温控制命令。" #: src/libslic3r/PrintConfig.cpp:1214 msgid "" @@ -11521,9 +11522,9 @@ msgid "" "expressed as percentage (for example 120%) it will be computed over first " "layer height. If set to zero, it will use the default extrusion width." msgstr "" -"将其设置为非零值, 以设置首层的手动挤出宽度。您可以使用它强制挤出更多挤出物以" -"得到更好的附着力。如果以百分比表示 (例如 120%), 则将在首层高度上计算。如果设" -"置为零, 它将使用默认的挤出宽度。" +"将其设置为非零值, 以设置第一层的手动挤出宽度。您可以使用它强制挤出更多挤出物" +"以得到更好的附着力。如果以百分比表示 (例如 120%), 则将在第一层高度上计算。如" +"果设置为零, 它将使用默认的挤出宽度。" #: src/libslic3r/PrintConfig.cpp:1228 msgid "" @@ -11536,7 +11537,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1236 msgid "First layer speed" -msgstr "首层速度" +msgstr "第一层速度" #: src/libslic3r/PrintConfig.cpp:1237 msgid "" @@ -11544,12 +11545,12 @@ msgid "" "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -"如果以mm/s 表示为绝对值,则此速度将应用于首层的所有打印移动,而不管其类型如" -"何。如果以百分比表示(例如:40%)它将缩放默认速度。" +"如果以 mm/s 表示为绝对值,则此速度将应用于第一层的所有打印移动,而不管其类型" +"如何。如果以百分比表示(例如:40%)它将缩放默认速度。" #: src/libslic3r/PrintConfig.cpp:1247 msgid "Speed of object first layer over raft interface" -msgstr "首层物体在筏板界面上的速度" +msgstr "第一层物体在筏板界面上的速度" #: src/libslic3r/PrintConfig.cpp:1248 msgid "" @@ -11558,12 +11559,12 @@ msgid "" "of their type. If expressed as a percentage (for example: 40%) it will scale " "the default speeds." msgstr "" -"如果以毫米/秒的绝对值表示,该速度将应用于raft界面上方首个对象层的所有打印移" -"动,无论其类型如何。如果以百分比(例如:40%)表示,它将缩放默认速度。" +"如果以毫米/秒的绝对值表示,该速度将应用于 raft 界面上方第一个对象层的所有打印" +"移动,无论其类型如何。如果以百分比(例如:40%)表示,它将缩放默认速度。" #: src/libslic3r/PrintConfig.cpp:1258 msgid "First layer nozzle temperature" -msgstr "首层喷嘴温度" +msgstr "第一层喷嘴温度" #: src/libslic3r/PrintConfig.cpp:1259 msgid "" @@ -11571,12 +11572,12 @@ msgid "" "manually during print, set this to zero to disable temperature control " "commands in the output G-code." msgstr "" -"首层的喷嘴温度。如果要在打印期间手动控制温度,请将其设置为零,以禁用输出G代码" -"中的温度控制命令。" +"第一层的喷嘴温度。如果要在打印期间手动控制温度,请将其设置为零,以禁用输出 G-" +"Code 中的温度控制命令。" #: src/libslic3r/PrintConfig.cpp:1267 msgid "Full fan speed at layer" -msgstr "风扇全速度层高" +msgstr "层的全风扇速度" #: src/libslic3r/PrintConfig.cpp:1268 msgid "" @@ -11586,9 +11587,9 @@ msgid "" "\"disable_fan_first_layers\", in which case the fan will be running at " "maximum allowed speed at layer \"disable_fan_first_layers\" + 1." msgstr "" -"风扇速度将从“禁用风扇层后”的零线性上升到“风扇全速度层”的最大。如果低于“禁用风" -"扇首层”,则“全风扇速度首层”将被忽略,在这种情况下,风扇将在“禁用风扇首层”+1层" -"以最大允许速度运行。" +"风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" +"第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" +"层”+1层以最大允许速度运行。" #: src/libslic3r/PrintConfig.cpp:1280 msgid "Fuzzy skin type." @@ -11614,7 +11615,7 @@ msgstr "每个蒙皮点可以偏移的最大距离(双向),垂直于周界 #: src/libslic3r/PrintConfig.cpp:1303 msgid "Fuzzy skin point distance" -msgstr "模糊皮肤分割点距离" +msgstr "模糊皮肤点距离" #: src/libslic3r/PrintConfig.cpp:1305 msgid "" @@ -11622,8 +11623,8 @@ msgid "" "points. Lowering the Fuzzy skin point distance will increase the number of " "randomly offset points on the perimeter wall." msgstr "" -"通过插入分割点,轮廓将被分割成多个部分。降低“模糊皮肤分割点距离”(Fuzzy skin " -"point distance)将增加轮廓上随机偏移的点的数量。" +"通过插入模糊皮肤点,周长将被分割成多个部分。降低“模糊皮肤点距离”(Fuzzy skin " +"point distance)将增加周界墙上随机偏移的点的数量。" #: src/libslic3r/PrintConfig.cpp:1313 msgid "Fill gaps" @@ -11633,7 +11634,7 @@ msgstr "填补空白" msgid "" "Enables filling of gaps between perimeters and between the inner most " "perimeters and infill." -msgstr "允许填充轮廓之间以及最内侧轮廓和填充之间的间隙。" +msgstr "允许填充周长之间以及最内侧周长和填充之间的间隙。" #: src/libslic3r/PrintConfig.cpp:1322 msgid "" @@ -11749,11 +11750,11 @@ msgid "" "anchor_length_max. Set this parameter to zero to disable anchoring " "perimeters connected to a single infill line." msgstr "" -"用附加轮廓的一小段将填充线连接到内部轮廓。如果以百分比(例如:15%)表示,则计" -"算填充拉伸宽度。PrusaSlicer试图将两条紧密的填充线连接到一个短的轮廓段。如果找" -"不到短于“填充”和“锚定”最大值的轮廓线段,则填充线仅在一侧连接到轮廓线段,并且" -"所取轮廓线段的长度仅限于此参数,但不超过“锚定长度”最大值。将此参数设置为零," -"以禁用连接到单个填充线的锚定轮廓。" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" +"找不到短于“填充”和“锚点”最大值的周长线段,则填充线仅在一侧连接到周长线段,并" +"且所取周长线段的长度仅限于此参数,但不超过“锚点长度”最大值。将此参数设置为" +"零,以禁用连接到单个填充线的锚点周长。" #: src/libslic3r/PrintConfig.cpp:1431 msgid "0 (no open anchors)" @@ -11794,10 +11795,10 @@ msgid "" "segment taken is limited to infill_anchor, but no longer than this " "parameter. Set this parameter to zero to disable anchoring." msgstr "" -"用附加轮廓的一小段将填充线连接到内部轮廓。如果以百分比(例如:15%)表示,则计" -"算填充拉伸宽度。PrusaSlicer试图将两条紧密的填充线连接到一个短的轮廓段。如果找" -"不到比此参数短的轮廓线段,则填充线仅在一侧连接到轮廓线段,并且所采用的轮廓线" -"段的长度仅限于infl_anchor,但不超过此参数。将此参数设置为零以禁用锚定。" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" +"找不到比此参数短的周长线段,则填充线仅在一侧连接到周长线段,并且所采用的周长" +"线段的长度仅限于 infl_anchor,但不超过此参数。将此参数设置为零以禁用锚点。" #: src/libslic3r/PrintConfig.cpp:1454 msgid "0 (not anchored)" @@ -11910,7 +11911,7 @@ msgstr "使用热打印头熨烫顶层,使表面光滑" #: src/libslic3r/PrintConfig.cpp:1560 src/libslic3r/PrintConfig.cpp:1562 msgid "Ironing Type" -msgstr "熨烫模式" +msgstr "熨烫类型" #: src/libslic3r/PrintConfig.cpp:1567 msgid "All top surfaces" @@ -12191,6 +12192,9 @@ msgid "" "extrusion width, 0.2 mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s " "(feedrate 60 mm/s) will take at least 2 seconds." msgstr "" +"该实验设置用于限制挤出速率的变化速度,以便从较低速度过渡到较高速度。1.8 mm³/" +"s² 的值可确保挤出速率从 1.8 mm³/s(挤出宽度 0.45 mm,挤出高度 0.2 mm,进给速" +"率 20 mm/s)变为 5.4 mm³/s(进给速率 60 mm/s) 至少需要 2 秒。" #: src/libslic3r/PrintConfig.cpp:1812 src/libslic3r/PrintConfig.cpp:1824 msgid "mm³/s²" @@ -12208,6 +12212,9 @@ msgid "" "extrusion width, 0.2 mm extrusion height, feedrate 60 mm/s) to 1.8 mm³/s " "(feedrate 20 mm/s) will take at least 2 seconds." msgstr "" +"该实验设置用于限制挤出速率的变化速度,以便从较高速度过渡到较低速度。1.8 mm³/" +"s² 的值可确保挤出速率从 5.4 mm³/s(挤出宽度 0.45 mm,挤出高度 0.2 mm,进给速" +"率 60 mm/s)变为 1.8 mm³/s(进给速率 20 mm/s) 至少需要 2 秒。" #: src/libslic3r/PrintConfig.cpp:1830 src/libslic3r/PrintConfig.cpp:1839 msgid "Min" @@ -12349,7 +12356,7 @@ msgstr "轮廓" msgid "" "This is the acceleration your printer will use for perimeters. Set zero to " "disable acceleration control for perimeters." -msgstr "这是打印机将用于轮廓的加速度。设置为零可禁用轮廓的加速控制。" +msgstr "这是打印机将用于周长的加速度。设置为零可禁用周长的加速控制。" #: src/libslic3r/PrintConfig.cpp:1964 msgid "Perimeter extruder" @@ -12439,42 +12446,42 @@ msgstr "打印机变体的版本。例如, 打印机版本可以通过喷嘴直 #: src/libslic3r/PrintConfig.cpp:2062 msgid "Raft contact Z distance" -msgstr "筏的 Z 接触距离" +msgstr "筏板接触Z距离" #: src/libslic3r/PrintConfig.cpp:2064 msgid "" "The vertical distance between object and raft. Ignored for soluble interface." -msgstr "物体与筏之间的垂直距离。对于可溶解的界面忽略。" +msgstr "物体与木筏之间的垂直距离。对于可溶解的界面忽略。" #: src/libslic3r/PrintConfig.cpp:2071 msgid "Raft expansion" -msgstr "水平扩展伐" +msgstr "筏式膨胀" #: src/libslic3r/PrintConfig.cpp:2073 msgid "Expansion of the raft in XY plane for better stability." -msgstr "在XY平面上扩展筏,以获得更好的稳定性。" +msgstr "在 XY 平面上扩展筏板,以获得更好的稳定性。" #: src/libslic3r/PrintConfig.cpp:2080 msgid "First layer density" -msgstr "首层密度" +msgstr "第一层密度" #: src/libslic3r/PrintConfig.cpp:2082 msgid "Density of the first raft or support layer." -msgstr "首层筏或支撑层的密度。" +msgstr "第一个筏板或支撑层的密度。" #: src/libslic3r/PrintConfig.cpp:2090 msgid "First layer expansion" -msgstr "首层扩展" +msgstr "第一层扩展" #: src/libslic3r/PrintConfig.cpp:2092 msgid "" "Expansion of the first raft or support layer to improve adhesion to print " "bed." -msgstr "扩展首层筏或支撑层,以提高与印刷床的附着力。" +msgstr "扩展第一层筏板或支撑层,以提高与印刷床的附着力。" #: src/libslic3r/PrintConfig.cpp:2099 msgid "Raft layers" -msgstr "筏层数" +msgstr "筏层" #: src/libslic3r/PrintConfig.cpp:2101 msgid "" @@ -12644,7 +12651,7 @@ msgstr "回抽速度 (仅适用于挤出机电机)。" #: src/libslic3r/PrintConfig.cpp:2222 src/libslic3r/PrintConfig.cpp:2223 msgid "Deretraction Speed" -msgstr "再回填速度" +msgstr "减速速度" #: src/libslic3r/PrintConfig.cpp:2224 msgid "" @@ -12652,7 +12659,7 @@ msgid "" "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -"回抽后将耗材装入挤出机的速度 (仅适用于挤出机电机)。如果保持为零, 则使用回抽速" +"收回后将耗材装入挤出机的速度 (仅适用于挤出机电机)。如果保持为零, 则使用回抽速" "度。" #: src/libslic3r/PrintConfig.cpp:2231 @@ -12701,12 +12708,12 @@ msgstr "接缝的首选方向 - 抖动" #: src/libslic3r/PrintConfig.cpp:2269 msgid "Distance from brim/object" -msgstr "与边缘/物体的距离" +msgstr "与裙边/物体的距离" #: src/libslic3r/PrintConfig.cpp:2270 msgid "" "Distance between skirt and brim (when draft shield is not used) or objects." -msgstr "裙边和帽沿之间的距离(不使用导流板时)或物体。" +msgstr "环绕和裙边之间的距离(不使用导流板时)或物体。" #: src/libslic3r/PrintConfig.cpp:2276 msgid "Skirt height" @@ -12777,7 +12784,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2319 msgid "Small perimeters" -msgstr "微小轮廓" +msgstr "小边界" #: src/libslic3r/PrintConfig.cpp:2321 msgid "" @@ -12812,7 +12819,7 @@ msgstr "打印实体填充时使用的挤出机。" #: src/libslic3r/PrintConfig.cpp:2348 msgid "Solid infill every" -msgstr "固体填充每" +msgstr "固体填充每个" #: src/libslic3r/PrintConfig.cpp:2350 msgid "" @@ -12864,7 +12871,7 @@ msgid "" "any number of bottom solid layers as well as skirt/brim loops. It won't work " "when printing more than one single object." msgstr "" -"打印单壁对象时,此功能将逐渐升高Z,以移除任何可见接缝。此选项需要单个轮廓、无" +"打印单壁对象时,此功能将逐渐升高Z,以移除任何可见接缝。此选项需要单个周长、无" "填充、无顶部实体层和无支撑材料。您仍然可以设置任意数量的底部实体层以及裙子/帽" "檐环。当打印多个对象时,它将不起作用。" @@ -12942,13 +12949,13 @@ msgstr "打印机将耗材多路复用到一个热端。" #: src/libslic3r/PrintConfig.cpp:2483 msgid "Prime all printing extruders" -msgstr "预装填所有打印用挤出机" +msgstr "装填所有印刷挤出机" #: src/libslic3r/PrintConfig.cpp:2484 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." -msgstr "如果启用, 所有打印用挤出机都将在打印开始时在打印平台的前缘进行预装填。" +msgstr "如果启用, 所有打印挤出机都将在打印开始时在构建板的前缘进行装填。" #: src/libslic3r/PrintConfig.cpp:2489 msgid "No sparse layers (EXPERIMENTAL)" @@ -13058,8 +13065,8 @@ msgid "" "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -"对象与支撑材料界面之间的垂直距离。将此设置为 0 还会防止 Slic3r 对首个对象层使" -"用桥流和速度。" +"对象与支撑材料界面之间的垂直距离。将此设置为 0 还会防止 Slic3r 对第一个对象层" +"使用桥流和速度。" #: src/libslic3r/PrintConfig.cpp:2576 msgid "0 (soluble)" @@ -13094,7 +13101,7 @@ msgstr "和上面一样" #: src/libslic3r/PrintConfig.cpp:2601 msgid "Enforce support for the first" -msgstr "强制生成支撑,在前" +msgstr "强制支撑前" #: src/libslic3r/PrintConfig.cpp:2603 msgid "" @@ -13108,7 +13115,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2608 msgid "Enforce support for the first n layers" -msgstr "强制在前 n 层生成支撑" +msgstr "强制支撑前 n 层" #: src/libslic3r/PrintConfig.cpp:2614 msgid "Support material/raft/skirt extruder" @@ -13204,7 +13211,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2695 msgid "Interface pattern spacing" -msgstr "接触面图案间距" +msgstr "接触面模式间距" #: src/libslic3r/PrintConfig.cpp:2697 msgid "Spacing between interface lines. Set zero to get a solid interface." @@ -13246,7 +13253,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2745 msgid "Pattern spacing" -msgstr "图案间距" +msgstr "模式间距" #: src/libslic3r/PrintConfig.cpp:2747 msgid "Spacing between support material lines." @@ -13266,12 +13273,12 @@ msgid "" "regular grid will create more stable supports, while snug support towers " "will save material and reduce object scarring." msgstr "" -"支撑塔的样式和形状。将支架投影到规则的网格中将创建更稳定的支架,而紧贴的支撑" +"支撑塔的样式和形状。将支架投影到规则的网格中将创建更稳定的支架,而舒适的支撑" "塔将节省材料并减少物体疤痕。" #: src/libslic3r/PrintConfig.cpp:2772 msgid "Snug" -msgstr "紧贴" +msgstr "舒适的" #: src/libslic3r/PrintConfig.cpp:2777 msgid "Synchronize with object layers" @@ -13283,7 +13290,7 @@ msgid "" "multi-material printers, where the extruder switch is expensive." msgstr "" "将支撑图层与对象打印图层同步。这对于多材料打印机非常有用, 因为在这种打印机" -"中, 挤出机切换非常耗时." +"中, 挤出机切换非常不划算。" #: src/libslic3r/PrintConfig.cpp:2785 msgid "Overhang threshold" @@ -13316,7 +13323,8 @@ msgstr "" msgid "" "Nozzle temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output G-code." -msgstr "首层之后各层的喷嘴温度。将其设置为零可禁用输出G代码中的温度控制命令。" +msgstr "" +"第一层之后各层的喷嘴温度。将其设置为零可禁用输出 G-Code 中的温度控制命令。" #: src/libslic3r/PrintConfig.cpp:2811 msgid "Nozzle temperature" @@ -13324,7 +13332,7 @@ msgstr "喷嘴温度" #: src/libslic3r/PrintConfig.cpp:2817 msgid "Thick bridges" -msgstr "加粗拉桥" +msgstr "厚桥" #: src/libslic3r/PrintConfig.cpp:2819 msgid "" @@ -13332,8 +13340,8 @@ msgid "" "look worse. If disabled, bridges look better but are reliable just for " "shorter bridged distances." msgstr "" -"如启用,桥接可能更可靠,可以拉更长的桥,但可能不美观。如果禁用,桥可能更美" -"观,且仅在较短的拉桥距离内更可靠。" +"如果启用,桥接器更可靠,可以桥接更长的距离,但可能看起来更糟。如果禁用,桥梁" +"看起来更好,但仅在较短的桥梁距离内更可靠。" #: src/libslic3r/PrintConfig.cpp:2825 msgid "Detect thin walls" @@ -13367,9 +13375,9 @@ msgid "" "behaviour both before and after the toolchange." msgstr "" "此自定义代码在每次工具更改之前插入。可以使用所有 PrusaSlicer 设置的占位符变量" -"以及{toolchange_z}、{previous_extruder}和{next_extruder}。当包含更改为正确挤" -"出机的换刀命令时(如T{next_extruder}),PrusaSlicer 不会发出其他此类命令。因" -"此,可以在工具更改前后编写自定义行为脚本。" +"以及 {toolchange_z}、{previous_extruder} 和 {next_extruder}。当包含更改为正确" +"挤出机的换刀命令时(如 T{next_extruder}),PrusaSlicer 不会发出其他此类命令。" +"因此,可以在工具更改前后编写自定义行为脚本。" #: src/libslic3r/PrintConfig.cpp:2859 msgid "" @@ -13419,7 +13427,7 @@ msgstr "最小顶壳厚度" #: src/libslic3r/PrintConfig.cpp:2906 msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "空驶速度(在远处挤出点之间跳跃)。" +msgstr "打印移动的速度(在远处挤出点之间跳跃)。" #: src/libslic3r/PrintConfig.cpp:2914 msgid "Z travel" @@ -13431,8 +13439,8 @@ msgid "" "When set to zero, the value is ignored and regular travel speed is used " "instead." msgstr "" -"沿Z轴移动的速度。\n" -"当设置为零时,该值将被忽略,而使用常规空驶速度。" +"沿 Z 轴移动的速度。\n" +"当设置为零时,该值将被忽略,而使用常规行驶速度。" #: src/libslic3r/PrintConfig.cpp:2923 msgid "Use firmware retraction" @@ -13471,9 +13479,9 @@ msgid "" "only supported in recent Marlin." msgstr "" "此实验设置使用以立方 mm 为单位的 E 值而不是线性 mm。如果您的固件不知道耗材直" -"径,您可以将诸如\"M200D[filament_diameter_0]T0\"这样的命令放入起始 G-Code " -"中,以便打开体积模式并使用与 Slic3r 中选择的耗材相关的耗材直径。这在最近马林" -"中才得到支持。" +"径,您可以将诸如 \"M200D[filament_diameter_0]T0\" 这样的命令放入起始 G-Code " +"中,以便打开体积模式并使用与 Slic3r 中选择的耗材相关的耗材直径。这在最近 " +"Marlin 中才得到支持。" #: src/libslic3r/PrintConfig.cpp:2948 msgid "Enable variable layer height feature" @@ -13624,7 +13632,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:3065 msgid "Perimeter generator" -msgstr "" +msgstr "轮廓生成器" #: src/libslic3r/PrintConfig.cpp:3067 msgid "" @@ -13632,18 +13640,20 @@ msgid "" "width and for very thin areas is used gap-fill. Arachne engine produces " "perimeters with variable extrusion width." msgstr "" +"经典轮廓生成器产生具有恒定挤出宽度的轮廓,并且对于非常薄的区域使用间隙填充。 " +"Arachne 引擎产生具有可变挤出宽度的轮廓。" #: src/libslic3r/PrintConfig.cpp:3073 msgid "Classic" -msgstr "" +msgstr "经典" #: src/libslic3r/PrintConfig.cpp:3074 msgid "Arachne" -msgstr "" +msgstr "Arachne" #: src/libslic3r/PrintConfig.cpp:3079 msgid "Perimeter transition length" -msgstr "" +msgstr "轮廓过渡长度" #: src/libslic3r/PrintConfig.cpp:3081 msgid "" @@ -13651,10 +13661,12 @@ msgid "" "becomes thinner, a certain amount of space is allotted to split or join the " "perimeter segments." msgstr "" +"当随着零件变薄而在不同数量的周长之间过渡时,要分配出一定的空间来分割或连接周" +"长段。" #: src/libslic3r/PrintConfig.cpp:3089 msgid "Perimeter transitioning filter margin" -msgstr "" +msgstr "轮廓过渡过滤器余量" #: src/libslic3r/PrintConfig.cpp:3091 msgid "" @@ -13667,10 +13679,14 @@ msgid "" "as a percentage (for example 25%), it will be computed based on the nozzle " "diameter." msgstr "" +"防止在多一个轮廓和少一个轮廓之间来回过渡。这个余量将挤压宽度的范围扩大到 [最" +"小轮廓宽度-余量, 2*最小轮廓宽度+余量]。增加这个余量可以减少转换的次数,从而减" +"少挤压开始/停止的次数和移动时间。然而,大的挤出宽度变化会导致挤出不足或过度挤" +"出的问题。如果用百分比表示(例如25%),将根据喷嘴直径计算。" #: src/libslic3r/PrintConfig.cpp:3104 msgid "Perimeter transitioning threshold angle" -msgstr "" +msgstr "轮廓过渡阈值角度" #: src/libslic3r/PrintConfig.cpp:3106 msgid "" @@ -13680,10 +13696,13 @@ msgid "" "remaining space. Reducing this setting reduces the number and length of " "these center perimeters, but may leave gaps or overextrude." msgstr "" +"何时在偶数和奇数轮廓之间创建过渡。 角度大于此设置的楔形将没有过渡,并且不会在" +"中心打印轮廓以填充剩余空间。 减少此设置会减少这些中心轮廓的数量和长度,但可能" +"会留下间隙或过度拉伸。" #: src/libslic3r/PrintConfig.cpp:3117 msgid "Perimeter distribution count" -msgstr "" +msgstr "轮廓分布计数" #: src/libslic3r/PrintConfig.cpp:3119 msgid "" @@ -13691,10 +13710,12 @@ msgid "" "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" +"从中心开始计算的轮廓数量,变化需要在这些轮廓上展开。较低的值意味着外部轮廓的" +"宽度不发生变化。" #: src/libslic3r/PrintConfig.cpp:3126 msgid "Split middle perimeter threshold" -msgstr "" +msgstr "分割中间轮廓阈值" #: src/libslic3r/PrintConfig.cpp:3128 msgid "" @@ -13706,10 +13727,15 @@ msgid "" "between two outer edges of the shape, even if there actually is infill or " "other extrusion types in the print instead of the perimeter." msgstr "" +"最小的挤出宽度,作为正常挤出宽度的一个系数,超过这个宽度的中间轮廓(如果有的" +"话)将被分成两个。减少此设置以使用更多、更薄的轮廓。增加这个设置是为了使用更" +"少、更宽的轮廓。请注意,这适用整个形状应该用轮廓填充,所以这里的中间是指对象" +"的中间在形状的两个外边缘之间,即使实际上在打印中存在填充或其他挤压类型的轮" +"廓。" #: src/libslic3r/PrintConfig.cpp:3141 msgid "Add middle perimeter threshold" -msgstr "" +msgstr "添加中间轮廓阈值" #: src/libslic3r/PrintConfig.cpp:3143 msgid "" @@ -13721,10 +13747,15 @@ msgid "" "between two outer edges of the shape, even if there actually is infill or " "other extrusion types in the print instead of the perimeter." msgstr "" +"最小的挤出宽度,作为正常挤出宽度的一个系数,超过这个宽度将添加一个中间周长" +"(如果还没有)。减少此设置以使用更多、更薄的轮廓。增加这个设置是为了使用更" +"少、更宽的轮廓。请注意,这适用整个形状应该用轮廓填充,所以这里的中间是指对象" +"的中间在形状的两个外边缘之间,即使实际上在打印中存在填充或其他挤压类型的轮" +"廓。" #: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" -msgstr "" +msgstr "最小特征尺寸" #: src/libslic3r/PrintConfig.cpp:3158 msgid "" @@ -13732,10 +13763,12 @@ msgid "" "this value will not be printed, while features thicker than the Minimum " "feature size will be widened to the Minimum perimeter width." msgstr "" +"薄型特征的最小厚度。比这个值薄的模型特征将不被打印,而比最小特征尺寸厚的特征" +"将被加宽到最小轮廓的宽度。" #: src/libslic3r/PrintConfig.cpp:3167 msgid "Minimum perimeter width" -msgstr "" +msgstr "最小轮廓宽度" #: src/libslic3r/PrintConfig.cpp:3169 msgid "" @@ -13745,6 +13778,9 @@ msgid "" "thick as the feature itself. If expressed as a percentage (for example 85%), " "it will be computed based on the nozzle diameter." msgstr "" +"将替换模型的细特征(根据最小特征尺寸)的轮廓宽度。 如果最小轮廓宽度小于特征的" +"厚度,则轮廓将变得与特征本身一样厚。 如果以百分比表示(例如 85%),它将根据喷" +"嘴直径计算。" #: src/libslic3r/PrintConfig.cpp:3237 msgid "Display width" @@ -13845,15 +13881,15 @@ msgstr "缓慢倾斜的时间" #: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 msgid "High viscosity" -msgstr "" +msgstr "高粘性" #: src/libslic3r/PrintConfig.cpp:3308 msgid "Tilt for high viscosity resin" -msgstr "" +msgstr "高粘性树脂倾斜" #: src/libslic3r/PrintConfig.cpp:3309 msgid "Time of the super slow tilt" -msgstr "" +msgstr "超慢倾斜的时间" #: src/libslic3r/PrintConfig.cpp:3316 msgid "Area fill" @@ -14148,8 +14184,8 @@ msgid "" "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -"柱基与模型的最小距离(以 mm 为单位)在零高程模式下有意义,在模型和焊盘之间插入根" -"据此参数的间隙。" +"柱基与模型的最小距离 (以 mm 为单位) 在零高程模式下有意义,在模型和焊盘之间插入" +"根据此参数的间隙。" #: src/libslic3r/PrintConfig.cpp:3690 msgid "Critical angle" @@ -14390,7 +14426,7 @@ msgstr "将模型导出为 AMF。" #: src/libslic3r/PrintConfig.cpp:4411 msgid "Export STL" -msgstr "导出 STL Export STL" +msgstr "导出 STL" #: src/libslic3r/PrintConfig.cpp:4412 msgid "Export the model(s) as STL." @@ -14666,7 +14702,7 @@ msgid "" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" "设置日志敏感度。0:致命、1:错误、2:警告、3:信息、4:调试、5:跟踪\n" -"例如。loglevel=2记录致命、错误和警告级别的消息。" +"例如。loglevel=2 记录致命、错误和警告级别的消息。" #: src/libslic3r/PrintConfig.cpp:4609 msgid "Render with a software renderer" @@ -14819,7 +14855,7 @@ msgid "" "every." msgstr "" "组合内嵌\n" -"您是否知道可以使用设置组合内嵌间隔以比轮廓更高的层高打印内嵌,以节省打" +"您是否知道可以使用设置组合内嵌间隔以比周长更高的层高打印内嵌,以节省打" "印时间。" #: resources/data/hints.ini: [hint:Variable layer height] @@ -14853,7 +14889,7 @@ msgid "" msgstr "" "每个模型的层高不同\n" "您知道可以在制版机上以不同的层高打印每个模型吗?在三维视图中的模型上单击鼠标" -"右键,选择“层”和“轮廓”,然后调整右侧面板中的值。请阅读文档中的更多内容。" +"右键,选择“层”和“周长”,然后调整右侧面板中的值。请阅读文档中的更多内容。" #: resources/data/hints.ini: [hint:Solid infill threshold area] msgid "" @@ -14976,7 +15012,7 @@ msgid "" "a>feature. (Requires Advanced or Expert mode.)" msgstr "" "接缝绘制\n" -"您是否知道可以直接在对象上绘制,并选择每个轮廓循环的起点/终点的位置?尝试" +"您是否知道可以直接在对象上绘制,并选择每个周长循环的起点/终点的位置?尝试" "接缝绘制功能。(需要高级或专家模式。)" #: resources/data/hints.ini: [hint:Insert Pause] @@ -15056,6 +15092,9 @@ msgid "" "surfaces, save a lot of the filament, and decrease the print time? Read more " "in the documentation." msgstr "" +"闪电填充\n" +"您是否知道可以使用闪电填充来仅支撑顶部表面,从而节约许多耗材和减少打印时间?" +"请阅读文档中的更多内容。" #: resources/data/hints.ini: [hint:Fullscreen mode] msgid "" @@ -15064,7 +15103,7 @@ msgid "" "F11 hotkey." msgstr "" "全屏模式\n" -"您知道可以将PrusaSlicer切换到全屏模式吗?使用F11热键。" +"您知道可以将 PrusaSlicer 切换到全屏模式吗?使用F11热键。" #: ../src/common/debugrpt.cpp:586 msgid "" From 559173c2a11c93ee3b2307e5cf5fcc9395978e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Althaus?= Date: Sun, 10 Jul 2022 13:19:38 +0200 Subject: [PATCH 012/131] Don't change to color print view when no color change gcodes are set When changing custom gcodes the view type is always changed to color view when any custom gcode is set. This fix only changes to color view when the custom gcodes contain at least one color change. Fixes #8413 and #5837 --- src/slic3r/GUI/GUI_Preview.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 7ee4e7955..9e2fe46f6 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -1011,8 +1011,10 @@ void Preview::load_print_as_fff(bool keep_z_range) std::vector gcodes = wxGetApp().is_editor() ? wxGetApp().plater()->model().custom_gcode_per_print_z.gcodes : m_canvas->get_custom_gcode_per_print_z(); + const bool contains_color_gcodes = std::any_of(std::begin(gcodes), std::end(gcodes), + [] (auto const& item) { return item.type == CustomGCode::Type::ColorChange; }); #if ENABLE_PREVIEW_LAYOUT - const GCodeViewer::EViewType choice = !gcodes.empty() ? + const GCodeViewer::EViewType choice = contains_color_gcodes ? GCodeViewer::EViewType::ColorPrint : (number_extruders > 1) ? GCodeViewer::EViewType::Tool : GCodeViewer::EViewType::FeatureType; if (choice != gcode_view_type) { @@ -1022,7 +1024,7 @@ void Preview::load_print_as_fff(bool keep_z_range) refresh_print(); } #else - const wxString choice = !gcodes.empty() ? + const wxString choice = contains_color_gcodes ? _L("Color Print") : (number_extruders > 1) ? _L("Tool") : _L("Feature type"); int type = m_choice_view_type->FindString(choice); From a1e37803f75b5cee1c8e3e5e976e934f5a972b97 Mon Sep 17 00:00:00 2001 From: Michael Kirsch Date: Fri, 8 Jul 2022 21:52:43 +0200 Subject: [PATCH 013/131] fix frustum for off-bed origins --- src/slic3r/GUI/3DBed.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index 8dff7bc49..4319a28cf 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -342,6 +342,8 @@ BoundingBoxf3 Bed3D::calc_extended_bounding_box() const // Reset the build volume Z, we don't want to zoom to the top of the build volume if it is empty. out.min.z() = 0.0; out.max.z() = 0.0; + // extend to origin in case origin is off bed + out.merge(m_axes.get_origin()); // extend to contain axes out.merge(m_axes.get_origin() + m_axes.get_total_length() * Vec3d::Ones()); #if ENABLE_WORLD_COORDINATE From 6664ba3b80d2723f89a244096c8575c05477db3b Mon Sep 17 00:00:00 2001 From: Michael Kirsch Date: Tue, 5 Jul 2022 21:20:56 +0200 Subject: [PATCH 014/131] fix reload loosing positioning information --- src/slic3r/GUI/Plater.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b78a6db95..d0b56251d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3861,9 +3861,12 @@ void Plater::priv::reload_from_disk() new_volume->set_type(old_volume->type()); new_volume->set_material_id(old_volume->material_id()); #if ENABLE_WORLD_COORDINATE - new_volume->set_transformation(Geometry::translation_transform(old_volume->source.transform.get_offset()) * - old_volume->get_transformation().get_matrix_no_offset() * old_volume->source.transform.get_matrix_no_offset()); - new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); + new_volume->set_transformation( + old_volume->get_transformation().get_matrix() * + old_volume->source.transform.get_matrix() * + Geometry::translation_transform(new_volume->source.mesh_offset - old_volume->source.mesh_offset) * + new_volume->source.transform.get_matrix().inverse() + ); #else new_volume->set_transformation(Geometry::assemble_transform(old_volume->source.transform.get_offset()) * old_volume->get_transformation().get_matrix(true) * From f0c1f9ebbd1d6bed19e8080366a8b246a4492260 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 25 Jul 2022 08:54:24 +0200 Subject: [PATCH 015/131] Follow-up of 6664ba3b80d2723f89a244096c8575c05477db3b - Fixed part positions after reload from disk called after loading multipart 3mf project --- src/slic3r/GUI/Plater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d0b56251d..d8c368998 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3863,9 +3863,9 @@ void Plater::priv::reload_from_disk() #if ENABLE_WORLD_COORDINATE new_volume->set_transformation( old_volume->get_transformation().get_matrix() * - old_volume->source.transform.get_matrix() * + old_volume->source.transform.get_matrix_no_offset() * Geometry::translation_transform(new_volume->source.mesh_offset - old_volume->source.mesh_offset) * - new_volume->source.transform.get_matrix().inverse() + new_volume->source.transform.get_matrix_no_offset().inverse() ); #else new_volume->set_transformation(Geometry::assemble_transform(old_volume->source.transform.get_offset()) * From 0681f92130d0e0f5883c500fb279e58c3b983c61 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 25 Jul 2022 14:07:01 +0200 Subject: [PATCH 016/131] Fix segfault caused by unchecked mesh precondition CGALProc::does_bound_a_volume(mesh) can throw if CGAL::is_closed(mesh) is not met affects #8521 --- src/libslic3r/MeshBoolean.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 00ee1717f..86b50d156 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -274,7 +274,7 @@ void CGALMeshDeleter::operator()(CGALMesh *ptr) { delete ptr; } bool does_bound_a_volume(const CGALMesh &mesh) { - return CGALProc::does_bound_a_volume(mesh.m); + return CGAL::is_closed(mesh.m) && CGALProc::does_bound_a_volume(mesh.m); } bool empty(const CGALMesh &mesh) From 4865ca65e8a33a5ab2b48f22ea55dacd9b0e8544 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 26 Jul 2022 11:19:50 +0200 Subject: [PATCH 017/131] Fixes in tech ENABLE_SMOOTH_NORMALS --- src/slic3r/GUI/3DScene.cpp | 5 ++++- src/slic3r/GUI/GLModel.cpp | 7 ++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 83b8cae63..d66d101a3 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -814,7 +814,10 @@ int GLVolumeCollection::load_object_volume( v.set_color(color_from_model_volume(*model_volume)); #if ENABLE_LEGACY_OPENGL_REMOVAL #if ENABLE_SMOOTH_NORMALS - v.model.init_from(mesh, true); + v.model.init_from(*mesh, true); +#if ENABLE_RAYCAST_PICKING + v.mesh_raycaster = std::make_unique(mesh); +#endif // ENABLE_RAYCAST_PICKING #else #if ENABLE_RAYCAST_PICKING v.model.init_from(*mesh); diff --git a/src/slic3r/GUI/GLModel.cpp b/src/slic3r/GUI/GLModel.cpp index c8ffa71d1..228b07841 100644 --- a/src/slic3r/GUI/GLModel.cpp +++ b/src/slic3r/GUI/GLModel.cpp @@ -518,7 +518,7 @@ void GLModel::init_from(const TriangleMesh& mesh, bool smooth_normals) const indexed_triangle_set& its = mesh.its; Geometry& data = m_render_data.geometry; - data.format = { Geometry::EPrimitiveType::Triangles, Geometry::EVertexLayout::P3N3, GLModel::Geometry::index_type(3 * its.indices.size()) }; + data.format = { Geometry::EPrimitiveType::Triangles, Geometry::EVertexLayout::P3N3 }; data.reserve_vertices(3 * its.indices.size()); data.reserve_indices(3 * its.indices.size()); @@ -530,10 +530,7 @@ void GLModel::init_from(const TriangleMesh& mesh, bool smooth_normals) // indices for (size_t i = 0; i < its.indices.size(); ++i) { const stl_triangle_vertex_indices& idx = its.indices[i]; - if (data.format.index_type == GLModel::Geometry::EIndexType::USHORT) - data.add_ushort_triangle((unsigned short)idx(0), (unsigned short)idx(1), (unsigned short)idx(2)); - else - data.add_uint_triangle((unsigned int)idx(0), (unsigned int)idx(1), (unsigned int)idx(2)); + data.add_triangle((unsigned int)idx(0), (unsigned int)idx(1), (unsigned int)idx(2)); } // update bounding box From 77f5973c25ef0edc6db95de13c5976722b57a023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 26 Jul 2022 13:42:05 +0200 Subject: [PATCH 018/131] Fix of #8446: Non-planar Voronoi diagram. This is the follow-up to 63c66f4f189b6f3d3a3b95ddd158c66ee5166420. Detection of non-planar (degenerated) Voronoi diagrams was rewritten to check if all neighboring edges of the Voronoi vertex are CCW ordered. --- .../Arachne/SkeletalTrapezoidation.cpp | 73 ++++--------- .../Arachne/SkeletalTrapezoidation.hpp | 2 - src/libslic3r/CMakeLists.txt | 2 +- src/libslic3r/Geometry/VoronoiUtilsCgal.cpp | 100 ++++++++++++++++++ src/libslic3r/Geometry/VoronoiUtilsCgal.hpp | 21 ++++ tests/libslic3r/test_voronoi.cpp | 4 +- 6 files changed, 147 insertions(+), 55 deletions(-) create mode 100644 src/libslic3r/Geometry/VoronoiUtilsCgal.cpp create mode 100644 src/libslic3r/Geometry/VoronoiUtilsCgal.hpp diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index d98cf7ba9..34d6d058d 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -17,12 +17,9 @@ #include "Utils.hpp" #include "SVG.hpp" #include "Geometry/VoronoiVisualUtils.hpp" +#include "Geometry/VoronoiUtilsCgal.hpp" #include "../EdgeGrid.hpp" -#include -#include -#include - #define SKELETAL_TRAPEZOIDATION_BEAD_SEARCH_MAX 1000 //A limit to how long it'll keep searching for adjacent beads. Increasing will re-use beadings more often (saving performance), but search longer for beading (costing performance). //#define ARACHNE_DEBUG @@ -391,40 +388,6 @@ SkeletalTrapezoidation::SkeletalTrapezoidation(const Polygons& polys, const Bead constructFromPolygons(polys); } -using CGAL_Point = CGAL::Exact_predicates_exact_constructions_kernel::Point_2; -using CGAL_Segment = CGAL::Arr_segment_traits_2::Curve_2; - -inline static CGAL_Point to_cgal_point(const Voronoi::VD::vertex_type &pt) -{ - return {pt.x(), pt.y()}; -} - -bool is_voronoi_diagram_planar(const Geometry::VoronoiDiagram &voronoi_diagram) { - assert(std::all_of(voronoi_diagram.edges().cbegin(), voronoi_diagram.edges().cend(), - [](const Geometry::VoronoiDiagram::edge_type &edge) { return edge.color() == 0; })); - - std::vector segments; - segments.reserve(voronoi_diagram.num_edges()); - - for (const Geometry::VoronoiDiagram::edge_type &edge : voronoi_diagram.edges()) { - if (edge.color() != 0) - continue; - - if (edge.is_finite() && edge.is_linear()) { - segments.emplace_back(to_cgal_point(*edge.vertex0()), to_cgal_point(*edge.vertex1())); - edge.color(1); - assert(edge.twin() != nullptr); - edge.twin()->color(1); - } - } - - for (const Geometry::VoronoiDiagram::edge_type &edge : voronoi_diagram.edges()) - edge.color(0); - - std::vector intersections_pt; - CGAL::compute_intersection_points(segments.begin(), segments.end(), std::back_inserter(intersections_pt)); - return intersections_pt.empty(); -} static bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &voronoi_diagram, const std::vector &segments) { for (VoronoiUtils::vd_t::cell_type cell : voronoi_diagram.cells()) { @@ -506,7 +469,7 @@ inline static std::unordered_map try_to_fix_degenerated voronoi_diagram.clear(); construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram); - assert(is_voronoi_diagram_planar(voronoi_diagram)); + assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram)); return vertex_mapping; } @@ -562,26 +525,38 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) #endif #ifdef ARACHNE_DEBUG - assert(is_voronoi_diagram_planar(voronoi_diagram)); + assert(is_voronoi_diagram_planar_intersection(voronoi_diagram)); #endif - // Try to detect cases when some Voronoi vertex is missing. - // When any Voronoi vertex is missing, rotate input polygon and try again. - const bool has_missing_voronoi_vertex = detect_missing_voronoi_vertex(voronoi_diagram, segments); - const double fix_angle = PI / 6; + // Try to detect cases when some Voronoi vertex is missing and when + // the Voronoi diagram is not planar. + // When any Voronoi vertex is missing, or the Voronoi diagram is not + // planar, rotate the input polygon and try again. + const bool has_missing_voronoi_vertex = detect_missing_voronoi_vertex(voronoi_diagram, segments); + // Detection of non-planar Voronoi diagram detects at least GH issues #8474, #8514 and #8446. + const bool is_voronoi_diagram_planar = Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(voronoi_diagram); + const double fix_angle = PI / 6; + std::unordered_map vertex_mapping; // polys_copy is referenced through items stored in the std::vector segments. Polygons polys_copy = polys; - if (has_missing_voronoi_vertex) { - BOOST_LOG_TRIVIAL(warning) << "Detected missing Voronoi vertex, input polygons will be rotated back and forth."; + if (has_missing_voronoi_vertex || !is_voronoi_diagram_planar) { + if (has_missing_voronoi_vertex) + BOOST_LOG_TRIVIAL(warning) << "Detected missing Voronoi vertex, input polygons will be rotated back and forth."; + else if (!is_voronoi_diagram_planar) + BOOST_LOG_TRIVIAL(warning) << "Detected non-planar Voronoi diagram, input polygons will be rotated back and forth."; + vertex_mapping = try_to_fix_degenerated_voronoi_diagram_by_rotation(voronoi_diagram, polys, polys_copy, segments, fix_angle); assert(!detect_missing_voronoi_vertex(voronoi_diagram, segments)); + assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(voronoi_diagram)); if (detect_missing_voronoi_vertex(voronoi_diagram, segments)) BOOST_LOG_TRIVIAL(error) << "Detected missing Voronoi vertex even after the rotation of input."; + else if (!Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(voronoi_diagram)) + BOOST_LOG_TRIVIAL(error) << "Detected non-planar Voronoi diagram even after the rotation of input."; } - bool degenerated_voronoi_diagram = has_missing_voronoi_vertex; + bool degenerated_voronoi_diagram = has_missing_voronoi_vertex || !is_voronoi_diagram_planar; process_voronoi_diagram: assert(this->graph.edges.empty() && this->graph.nodes.empty() && this->vd_edge_to_he_edge.empty() && this->vd_node_to_he_node.empty()); @@ -644,8 +619,6 @@ process_voronoi_diagram: // When this degenerated Voronoi diagram is processed, the resulting half-edge structure contains some edges that don't have // a twin edge. Based on this, we created a fast mechanism that detects those causes and tries to recompute the Voronoi // diagram on slightly rotated input polygons that usually make the Voronoi generator generate a non-degenerated Voronoi diagram. - // FIXME Lukas H.: Replace has_missing_twin_edge with detection if the Voronoi diagram is planar using a custom algorithm based on the - // sweeping line algorithm. At least it is required to fix GH #8446. if (!degenerated_voronoi_diagram && has_missing_twin_edge(this->graph)) { BOOST_LOG_TRIVIAL(warning) << "Detected degenerated Voronoi diagram, input polygons will be rotated back and forth."; degenerated_voronoi_diagram = true; @@ -655,7 +628,7 @@ process_voronoi_diagram: if (detect_missing_voronoi_vertex(voronoi_diagram, segments)) BOOST_LOG_TRIVIAL(error) << "Detected missing Voronoi vertex after the rotation of input."; - assert(is_voronoi_diagram_planar(voronoi_diagram)); + assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram)); this->graph.edges.clear(); this->graph.nodes.clear(); diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp index 321ace9d7..83065cf87 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp @@ -592,7 +592,5 @@ protected: void generateLocalMaximaSingleBeads(); }; -bool is_voronoi_diagram_planar(const Geometry::VoronoiDiagram &voronoi_diagram); - } // namespace Slic3r::Arachne #endif // VORONOI_QUADRILATERALIZATION_H diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 498c01d87..41ad68db5 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -357,7 +357,7 @@ find_package(CGAL REQUIRED) cmake_policy(POP) add_library(libslic3r_cgal STATIC MeshBoolean.cpp MeshBoolean.hpp TryCatchSignal.hpp - TryCatchSignal.cpp) + TryCatchSignal.cpp Geometry/VoronoiUtilsCgal.hpp Geometry/VoronoiUtilsCgal.cpp) target_include_directories(libslic3r_cgal PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # Reset compile options of libslic3r_cgal. Despite it being linked privately, CGAL options diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp new file mode 100644 index 000000000..caaf1ee9c --- /dev/null +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp @@ -0,0 +1,100 @@ +#include +#include +#include + +#include "libslic3r/Geometry/Voronoi.hpp" + +#include "VoronoiUtilsCgal.hpp" + +using VD = Slic3r::Geometry::VoronoiDiagram; + +namespace Slic3r::Geometry { + +using CGAL_Point = CGAL::Exact_predicates_exact_constructions_kernel::Point_2; +using CGAL_Segment = CGAL::Arr_segment_traits_2::Curve_2; + +inline static CGAL_Point to_cgal_point(const VD::vertex_type &pt) { return {pt.x(), pt.y()}; } + +// FIXME Lukas H.: Also includes parabolic segments. +bool VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(const VD &voronoi_diagram) +{ + assert(std::all_of(voronoi_diagram.edges().cbegin(), voronoi_diagram.edges().cend(), + [](const VD::edge_type &edge) { return edge.color() == 0; })); + + std::vector segments; + segments.reserve(voronoi_diagram.num_edges()); + + for (const VD::edge_type &edge : voronoi_diagram.edges()) { + if (edge.color() != 0) + continue; + + if (edge.is_finite() && edge.is_linear()) { + segments.emplace_back(to_cgal_point(*edge.vertex0()), to_cgal_point(*edge.vertex1())); + edge.color(1); + assert(edge.twin() != nullptr); + edge.twin()->color(1); + } + } + + for (const VD::edge_type &edge : voronoi_diagram.edges()) + edge.color(0); + + std::vector intersections_pt; + CGAL::compute_intersection_points(segments.begin(), segments.end(), std::back_inserter(intersections_pt)); + return intersections_pt.empty(); +} + +static bool check_if_three_vectors_are_ccw(const CGAL_Point &common_pt, const CGAL_Point &pt_1, const CGAL_Point &pt_2, const CGAL_Point &test_pt) { + CGAL::Orientation orientation = CGAL::orientation(common_pt, pt_1, pt_2); + if (orientation == CGAL::Orientation::COLLINEAR) { + // The first two edges are collinear, so the third edge must be on the right side on the first of them. + return CGAL::orientation(common_pt, pt_1, test_pt) == CGAL::Orientation::RIGHT_TURN; + } else if (orientation == CGAL::Orientation::LEFT_TURN) { + // CCW oriented angle between vectors (common_pt, pt1) and (common_pt, pt2) is bellow PI. + // So we need to check if test_pt isn't between them. + CGAL::Orientation orientation1 = CGAL::orientation(common_pt, pt_1, test_pt); + CGAL::Orientation orientation2 = CGAL::orientation(common_pt, pt_2, test_pt); + return (orientation1 != CGAL::Orientation::LEFT_TURN || orientation2 != CGAL::Orientation::RIGHT_TURN); + } else { + assert(orientation == CGAL::Orientation::RIGHT_TURN); + // CCW oriented angle between vectors (common_pt, pt1) and (common_pt, pt2) is upper PI. + // So we need to check if test_pt is between them. + CGAL::Orientation orientation1 = CGAL::orientation(common_pt, pt_1, test_pt); + CGAL::Orientation orientation2 = CGAL::orientation(common_pt, pt_2, test_pt); + return (orientation1 == CGAL::Orientation::RIGHT_TURN || orientation2 == CGAL::Orientation::LEFT_TURN); + } +} + +bool VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(const VoronoiDiagram &voronoi_diagram) +{ + for (const VD::vertex_type &vertex : voronoi_diagram.vertices()) { + std::vector edges; + const VD::edge_type *edge = vertex.incident_edge(); + + do { + // FIXME Lukas H.: Also process parabolic segments. + if (edge->is_finite() && edge->is_linear()) + edges.emplace_back(edge); + + edge = edge->rot_next(); + } while (edge != vertex.incident_edge()); + + // Checking for CCW make sense for three and more edges. + if (edges.size() > 2) { + for (auto edge_it = edges.begin() ; edge_it != edges.end(); ++edge_it) { + const Geometry::VoronoiDiagram::edge_type *prev_edge = edge_it == edges.begin() ? edges.back() : *std::prev(edge_it); + const Geometry::VoronoiDiagram::edge_type *curr_edge = *edge_it; + const Geometry::VoronoiDiagram::edge_type *next_edge = std::next(edge_it) == edges.end() ? edges.front() : *std::next(edge_it); + + if (!check_if_three_vectors_are_ccw(to_cgal_point(*prev_edge->vertex0()), to_cgal_point(*prev_edge->vertex1()), + to_cgal_point(*curr_edge->vertex1()), to_cgal_point(*next_edge->vertex1()))) + return false; + } + } + } + + return true; +} + + +} // namespace Slic3r::Geometry \ No newline at end of file diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.hpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.hpp new file mode 100644 index 000000000..897891bd9 --- /dev/null +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.hpp @@ -0,0 +1,21 @@ +#ifndef slic3r_VoronoiUtilsCgal_hpp_ +#define slic3r_VoronoiUtilsCgal_hpp_ + +#include "Voronoi.hpp" + +namespace Slic3r::Geometry { +class VoronoiDiagram; + +class VoronoiUtilsCgal +{ +public: + // Check if the Voronoi diagram is planar using CGAL sweeping edge algorithm for enumerating all intersections between lines. + static bool is_voronoi_diagram_planar_intersection(const VoronoiDiagram &voronoi_diagram); + + // Check if the Voronoi diagram is planar using verification that all neighboring edges are ordered CCW for each vertex. + static bool is_voronoi_diagram_planar_angle(const VoronoiDiagram &voronoi_diagram); + +}; +} // namespace Slic3r::Geometry + +#endif // slic3r_VoronoiUtilsCgal_hpp_ diff --git a/tests/libslic3r/test_voronoi.cpp b/tests/libslic3r/test_voronoi.cpp index 5d8dce146..36323aa0a 100644 --- a/tests/libslic3r/test_voronoi.cpp +++ b/tests/libslic3r/test_voronoi.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include "libslic3r/Geometry/VoronoiUtilsCgal.hpp" #include #include @@ -2188,5 +2188,5 @@ TEST_CASE("Non-planar voronoi diagram", "[VoronoiNonPlanar]") dump_voronoi_to_svg(debug_out_path("voronoi-non-planar-out.svg").c_str(), vd, Points(), lines); #endif -// REQUIRE(Arachne::is_voronoi_diagram_planar(vd)); +// REQUIRE(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(vd)); } From 7831b4bd0736bc163cef9cf395a333b85a2b1341 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Tue, 26 Jul 2022 14:28:56 +0200 Subject: [PATCH 019/131] Notifications: hovering eject button will show tooltip even with idle mouse --- src/slic3r/GUI/NotificationManager.cpp | 25 ++++++++++++++++++++++--- src/slic3r/GUI/NotificationManager.hpp | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 737b8aa6c..2e74270da 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -789,6 +789,7 @@ void NotificationManager::ExportFinishedNotification::render_eject_button(ImGuiW ImVec2(win_pos.x - m_line_height * 2.5f, win_pos.y + win_size.y), true)) { + button_text = ImGui::EjectHoverButton; // tooltip long time_now = wxGetLocalTime(); @@ -798,12 +799,21 @@ void NotificationManager::ExportFinishedNotification::render_eject_button(ImGuiW imgui.text(_u8L("Eject drive") + " " + GUI::shortkey_ctrl_prefix() + "T"); ImGui::EndTooltip(); ImGui::PopStyleColor(); + // somehow the tooltip wont show if the render doesnt run twice + if (m_hover_once) { + wxGetApp().plater()->get_current_canvas3D()->schedule_extra_frame(0); + m_hover_once = false; + } } - if (m_hover_time == 0) + if (m_hover_time == 0) { m_hover_time = time_now; - } else + m_hover_once = true; + wxGetApp().plater()->get_current_canvas3D()->schedule_extra_frame(1500); + } + } else { m_hover_time = 0; - + m_hover_once = false; + } ImVec2 button_pic_size = ImGui::CalcTextSize(button_text.c_str()); ImVec2 button_size(button_pic_size.x * 1.25f, button_pic_size.y * 1.25f); ImGui::SetCursorPosX(win_size.x - m_line_height * 5.0f); @@ -828,6 +838,15 @@ void NotificationManager::ExportFinishedNotification::render_eject_button(ImGuiW } ImGui::PopStyleColor(5); } + +bool NotificationManager::ExportFinishedNotification::update_state(bool paused, const int64_t delta) +{ + bool ret = PopNotification::update_state(paused, delta); + if (!ret && m_hover_time != 0 && m_hover_time < wxGetLocalTime()) + return true; + return false; +} + bool NotificationManager::ExportFinishedNotification::on_text_click() { open_folder(m_export_dir_path); diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index d5dd9b48d..cbad18d8a 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -668,6 +668,8 @@ private: bool m_to_removable; std::string m_export_path; std::string m_export_dir_path; + + bool update_state(bool paused, const int64_t delta) override; protected: // Reserves space on right for more buttons void count_spaces() override; @@ -687,6 +689,7 @@ private: void on_eject_click(); // local time of last hover for showing tooltip long m_hover_time { 0 }; + bool m_hover_once { false }; bool m_eject_pending { false }; }; From b8a1ead9f3ecb28cd9efbaa1ff75083fcb4ade22 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 27 Jul 2022 10:57:52 +0200 Subject: [PATCH 020/131] Fix incorrect clamping of bounding box in GLCanvas3D::_max_bounding_box() --- src/slic3r/GUI/GLCanvas3D.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8f584942c..2f6f6bba7 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5380,9 +5380,10 @@ BoundingBoxf3 GLCanvas3D::_max_bounding_box(bool include_gizmos, bool include_be static const double max_scale_factor = 2.0; const Vec3d bb_size = bb.size(); const Vec3d bed_bb_size = m_bed.build_volume().bounding_volume().size(); - if (bb_size.x() > max_scale_factor * bed_bb_size.x() || - bb_size.y() > max_scale_factor * bed_bb_size.y() || - bb_size.z() > max_scale_factor * bed_bb_size.z()) { + + if ((bed_bb_size.x() > 0.0 && bb_size.x() > max_scale_factor * bed_bb_size.x()) || + (bed_bb_size.y() > 0.0 && bb_size.y() > max_scale_factor * bed_bb_size.y()) || + (bed_bb_size.z() > 0.0 && bb_size.z() > max_scale_factor * bed_bb_size.z())) { const Vec3d bed_bb_center = bed_bb.center(); const Vec3d extend_by = max_scale_factor * bed_bb_size; bb = BoundingBoxf3(bed_bb_center - extend_by, bed_bb_center + extend_by); From 7fbaa3e8fda261a8628ba88ffb3f11b6bede6093 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 27 Jul 2022 13:10:45 +0200 Subject: [PATCH 021/131] GCodeViewer - Added processing of gcode files produced by BambuStudio --- src/libslic3r/GCode/GCodeProcessor.cpp | 60 +++++++++++++++++++++++++- src/libslic3r/GCode/GCodeProcessor.hpp | 4 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index cfdcf6d1e..7025cc2f7 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -798,7 +798,8 @@ const std::vector> GCodeProces { EProducer::Simplify3D, "G-Code generated by Simplify3D(R)" }, { EProducer::CraftWare, "CraftWare" }, { EProducer::ideaMaker, "ideaMaker" }, - { EProducer::KissSlicer, "KISSlicer" } + { EProducer::KissSlicer, "KISSlicer" }, + { EProducer::BambuStudio, "BambuStudio" } }; unsigned int GCodeProcessor::s_result_id = 0; @@ -2054,6 +2055,7 @@ bool GCodeProcessor::process_producers_tags(const std::string_view comment) case EProducer::CraftWare: { return process_craftware_tags(comment); } case EProducer::ideaMaker: { return process_ideamaker_tags(comment); } case EProducer::KissSlicer: { return process_kissslicer_tags(comment); } + case EProducer::BambuStudio: { return process_bambustudio_tags(comment); } default: { return false; } } } @@ -2498,6 +2500,62 @@ bool GCodeProcessor::process_kissslicer_tags(const std::string_view comment) return false; } +bool GCodeProcessor::process_bambustudio_tags(const std::string_view comment) +{ + // extrusion roles + + std::string tag = "FEATURE: "; + size_t pos = comment.find(tag); + if (pos != comment.npos) { + const std::string_view type = comment.substr(pos + tag.length()); + if (type == "Custom") + set_extrusion_role(erCustom); + else if (type == "Inner wall") + set_extrusion_role(erPerimeter); + else if (type == "Outer wall") + set_extrusion_role(erExternalPerimeter); + else if (type == "Overhang wall") + set_extrusion_role(erOverhangPerimeter); + else if (type == "Gap infill") + set_extrusion_role(erGapFill); + else if (type == "Bridge") + set_extrusion_role(erBridgeInfill); + else if (type == "Sparse infill") + set_extrusion_role(erInternalInfill); + else if (type == "Internal solid infill") + set_extrusion_role(erSolidInfill); + else if (type == "Top surface") + set_extrusion_role(erTopSolidInfill); + else if (type == "Bottom surface") + set_extrusion_role(erNone); + else if (type == "Ironing") + set_extrusion_role(erIroning); + else if (type == "Skirt") + set_extrusion_role(erSkirt); + else if (type == "Brim") + set_extrusion_role(erSkirt); + else if (type == "Support") + set_extrusion_role(erSupportMaterial); + else if (type == "Support interface") + set_extrusion_role(erSupportMaterialInterface); + else if (type == "Support transition") + set_extrusion_role(erNone); + else if (type == "Prime tower") + set_extrusion_role(erWipeTower); + else { + set_extrusion_role(erNone); + BOOST_LOG_TRIVIAL(warning) << "GCodeProcessor found unknown extrusion role: " << type; + } + + if (m_extrusion_role == erExternalPerimeter) + m_seams_detector.activate(true); + + return true; + } + + return false; +} + bool GCodeProcessor::detect_producer(const std::string_view comment) { for (const auto& [id, search_string] : Producers) { diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 71388866e..3edea61f4 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -590,7 +590,8 @@ namespace Slic3r { Simplify3D, CraftWare, ideaMaker, - KissSlicer + KissSlicer, + BambuStudio }; static const std::vector> Producers; @@ -658,6 +659,7 @@ namespace Slic3r { bool process_craftware_tags(const std::string_view comment); bool process_ideamaker_tags(const std::string_view comment); bool process_kissslicer_tags(const std::string_view comment); + bool process_bambustudio_tags(const std::string_view comment); bool detect_producer(const std::string_view comment); From 828dd5ddf8bf6b4eb8307f39d0fe19ae728f4a28 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 27 Jul 2022 15:16:20 +0200 Subject: [PATCH 022/131] Fixed toolpaths generation for gcode line G2 and G3 --- src/libslic3r/GCode/GCodeProcessor.cpp | 50 +++++++++++++------------- src/slic3r/GUI/GCodeViewer.cpp | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 7025cc2f7..335a51696 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -2931,7 +2931,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) #if ENABLE_PROCESS_G2_G3_LINES void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise) { - if (!line.has('X') || !line.has('Y') || !line.has('I') || !line.has('J')) + if (!line.has('I') || !line.has('J')) return; // relative center @@ -2962,7 +2962,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc Vec3d relative_start() const { return start - center; } Vec3d relative_end() const { return end - center; } - bool closed() const { return end.isApprox(start); } + bool is_full_circle() const { return std::abs(delta_x()) < EPSILON && std::abs(delta_y()) < EPSILON; } }; Arc arc; @@ -3005,7 +3005,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc const Vec3d rel_arc_end = arc.relative_end(); // arc angle - if (arc.closed()) + if (arc.is_full_circle()) arc.angle = 2.0 * PI; else { arc.angle = std::atan2(rel_arc_start.x() * rel_arc_end.y() - rel_arc_start.y() * rel_arc_end.x(), @@ -3057,24 +3057,23 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc // calculate arc segments // reference: // Prusa-Firmware\Firmware\motion_control.cpp - mc_arc() + // https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/motion_control.cpp // segments count - static const double MM_PER_ARC_SEGMENT = 1.0; - const size_t segments = std::max(std::floor(travel_length / MM_PER_ARC_SEGMENT), 1); + static const double MM_PER_ARC_SEGMENT = 0.5; + const size_t segments = std::ceil(travel_length / MM_PER_ARC_SEGMENT); + assert(segments >= 1); const double theta_per_segment = arc.angle / double(segments); const double z_per_segment = arc.delta_z() / double(segments); const double extruder_per_segment = (extrusion.has_value()) ? *extrusion / double(segments) : 0.0; - double cos_T = 1.0 - 0.5 * sqr(theta_per_segment); // Small angle approximation - double sin_T = theta_per_segment; + const double sq_theta_per_segment = sqr(theta_per_segment); + const double cos_T = 1.0 - 0.5 * sq_theta_per_segment; // Small angle approximation + const double sin_T = theta_per_segment - sq_theta_per_segment * theta_per_segment / 6.0; // Small angle approximation AxisCoords prev_target = m_start_position; AxisCoords arc_target; - double sin_Ti; - double cos_Ti; - double r_axisi; - size_t count = 0; // Initialize the linear axis arc_target[Z] = m_start_position[Z]; @@ -3088,22 +3087,23 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc std::string gcode; - for (size_t i = 1; i < segments; ++i) { // Increment (segments-1) - if (count < N_ARC_CORRECTION) { - // Apply vector rotation matrix - r_axisi = curr_rel_arc_start.x() * sin_T + curr_rel_arc_start.y() * cos_T; - curr_rel_arc_start.x() = curr_rel_arc_start.x() * cos_T - curr_rel_arc_start.y() * sin_T; - curr_rel_arc_start.y() = r_axisi; - count++; - } - else { - // Arc correction to radius vector. Computed only every N_ARC_CORRECTION increments. - // Compute exact location by applying transformation matrix from initial radius vector(=-offset). - cos_Ti = ::cos(double(i) * theta_per_segment); - sin_Ti = ::sin(double(i) * theta_per_segment); + size_t n_arc_correction = N_ARC_CORRECTION; + + for (size_t i = 1; i < segments; ++i) { + if (n_arc_correction-- == 0) { + // Calculate the actual position for r_axis_x and r_axis_y + const double cos_Ti = ::cos((double)i * theta_per_segment); + const double sin_Ti = ::sin((double)i * theta_per_segment); curr_rel_arc_start.x() = -double(rel_center.x()) * cos_Ti + double(rel_center.y()) * sin_Ti; curr_rel_arc_start.y() = -double(rel_center.x()) * sin_Ti - double(rel_center.y()) * cos_Ti; - count = 0; + // reset n_arc_correction + n_arc_correction = N_ARC_CORRECTION; + } + else { + // Calculate X and Y using the small angle approximation + const float r_axisi = curr_rel_arc_start.x() * sin_T + curr_rel_arc_start.y() * cos_T; + curr_rel_arc_start.x() = curr_rel_arc_start.x() * cos_T - curr_rel_arc_start.y() * sin_T; + curr_rel_arc_start.y() = r_axisi; } // Update arc_target location diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index bf5443b03..7f82f21b0 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -2322,7 +2322,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result) if (move.type == EMoveType::Extrude) { #if ENABLE_PROCESS_G2_G3_LINES - if (move.extrusion_role != erNone && !move.internal_only) { + if (!move.internal_only) { #endif // ENABLE_PROCESS_G2_G3_LINES // layers zs const double* const last_z = m_layers.empty() ? nullptr : &m_layers.get_zs().back(); From 253b24e29897932cd0c67d7ed5a73a0f6030c829 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 27 Jul 2022 15:35:35 +0200 Subject: [PATCH 023/131] When pressing ESC key to clear the current selection do not repeatedly update the view if the user keeps the key pressed. --- src/slic3r/GUI/GLCanvas3D.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 2f6f6bba7..890e73773 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1827,6 +1827,9 @@ void GLCanvas3D::select_all() void GLCanvas3D::deselect_all() { + if (m_selection.is_empty()) + return; + m_selection.remove_all(); wxGetApp().obj_manipul()->set_dirty(); m_gizmos.reset_all_states(); From 5cf71bb0943608d675b7d825081719c6955c6280 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 27 Jul 2022 15:52:40 +0200 Subject: [PATCH 024/131] Tech ENABLE_SHOW_TOOLPATHS_COG set as default --- src/libslic3r/Technologies.hpp | 2 -- src/slic3r/GUI/GCodeViewer.cpp | 12 ------------ src/slic3r/GUI/GCodeViewer.hpp | 6 ------ src/slic3r/GUI/GLCanvas3D.cpp | 4 ---- src/slic3r/GUI/GLCanvas3D.hpp | 2 -- src/slic3r/GUI/GLModel.cpp | 2 -- src/slic3r/GUI/GLModel.hpp | 2 -- src/slic3r/GUI/GLShadersManager.cpp | 2 -- src/slic3r/GUI/GUI_Preview.hpp | 2 -- src/slic3r/GUI/ImGuiWrapper.cpp | 2 -- 10 files changed, 36 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index b2b02b643..eda70aae2 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -63,8 +63,6 @@ #define ENABLE_SHOW_NON_MANIFOLD_EDGES (1 && ENABLE_2_5_0_ALPHA1) // Enable rework of Reload from disk command #define ENABLE_RELOAD_FROM_DISK_REWORK (1 && ENABLE_2_5_0_ALPHA1) -// Enable showing toolpaths center of gravity -#define ENABLE_SHOW_TOOLPATHS_COG (1 && ENABLE_2_5_0_ALPHA1) // Enable recalculating toolpaths when switching to/from volumetric rate visualization #define ENABLE_VOLUMETRIC_RATE_TOOLPATHS_RECALC (1 && ENABLE_2_5_0_ALPHA1) // Enable editing volumes transformation in world coordinates and instances in local coordinates diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 7f82f21b0..c153e34dd 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -184,7 +184,6 @@ void GCodeViewer::TBuffer::add_path(const GCodeProcessorResult::MoveVertex& move move.volumetric_rate(), move.extruder_id, move.cp_color_id, { { endpoint, endpoint } } }); } -#if ENABLE_SHOW_TOOLPATHS_COG void GCodeViewer::COG::render() { if (!m_visible) @@ -256,7 +255,6 @@ void GCodeViewer::COG::render() //imgui.end(); //ImGui::PopStyleVar(); } -#endif // ENABLE_SHOW_TOOLPATHS_COG #if ENABLE_PREVIEW_LAYER_TIME float GCodeViewer::Extrusions::Range::step_size(EType type) const @@ -1098,9 +1096,7 @@ unsigned int GCodeViewer::get_options_visibility_flags() const flags = set_flag(flags, static_cast(Preview::OptionType::ColorChanges), is_toolpath_move_type_visible(EMoveType::Color_change)); flags = set_flag(flags, static_cast(Preview::OptionType::PausePrints), is_toolpath_move_type_visible(EMoveType::Pause_Print)); flags = set_flag(flags, static_cast(Preview::OptionType::CustomGCodes), is_toolpath_move_type_visible(EMoveType::Custom_GCode)); -#if ENABLE_SHOW_TOOLPATHS_COG flags = set_flag(flags, static_cast(Preview::OptionType::CenterOfGravity), m_cog.is_visible()); -#endif // ENABLE_SHOW_TOOLPATHS_COG flags = set_flag(flags, static_cast(Preview::OptionType::Shells), m_shells.visible); flags = set_flag(flags, static_cast(Preview::OptionType::ToolMarker), m_sequential_view.marker.is_visible()); #if !ENABLE_PREVIEW_LAYOUT @@ -1124,9 +1120,7 @@ void GCodeViewer::set_options_visibility_from_flags(unsigned int flags) set_toolpath_move_type_visible(EMoveType::Color_change, is_flag_set(static_cast(Preview::OptionType::ColorChanges))); set_toolpath_move_type_visible(EMoveType::Pause_Print, is_flag_set(static_cast(Preview::OptionType::PausePrints))); set_toolpath_move_type_visible(EMoveType::Custom_GCode, is_flag_set(static_cast(Preview::OptionType::CustomGCodes))); -#if ENABLE_SHOW_TOOLPATHS_COG m_cog.set_visible(is_flag_set(static_cast(Preview::OptionType::CenterOfGravity))); -#endif // ENABLE_SHOW_TOOLPATHS_COG m_shells.visible = is_flag_set(static_cast(Preview::OptionType::Shells)); m_sequential_view.marker.set_visible(is_flag_set(static_cast(Preview::OptionType::ToolMarker))); #if !ENABLE_PREVIEW_LAYOUT @@ -1714,9 +1708,7 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result) if (wxGetApp().is_editor()) m_contained_in_bed = wxGetApp().plater()->build_volume().all_paths_inside(gcode_result, m_paths_bounding_box); -#if ENABLE_SHOW_TOOLPATHS_COG m_cog.reset(); -#endif // ENABLE_SHOW_TOOLPATHS_COG m_sequential_view.gcode_ids.clear(); for (size_t i = 0; i < gcode_result.moves.size(); ++i) { @@ -1752,7 +1744,6 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result) const GCodeProcessorResult::MoveVertex& prev = gcode_result.moves[i - 1]; -#if ENABLE_SHOW_TOOLPATHS_COG if (curr.type == EMoveType::Extrude && curr.extrusion_role != erSkirt && curr.extrusion_role != erSupportMaterial && @@ -1764,7 +1755,6 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result) const Vec3d prev_pos = prev.position.cast(); m_cog.add_segment(curr_pos, prev_pos, curr.mm3_per_mm * (curr_pos - prev_pos).norm()); } -#endif // ENABLE_SHOW_TOOLPATHS_COG // update progress dialog ++progress_count; @@ -4557,7 +4547,6 @@ void GCodeViewer::render_legend(float& legend_height) #endif // ENABLE_LEGEND_TOOLBAR_ICONS }); ImGui::SameLine(); -#if ENABLE_SHOW_TOOLPATHS_COG #if ENABLE_LEGEND_TOOLBAR_ICONS toggle_button(Preview::OptionType::CenterOfGravity, _u8L("Center of gravity"), [image_icon](ImGuiWindow& window, const ImVec2& pos, float size) { image_icon(window, pos, size, ImGui::LegendCOG); @@ -4585,7 +4574,6 @@ void GCodeViewer::render_legend(float& legend_height) }); #endif // ENABLE_LEGEND_TOOLBAR_ICONS ImGui::SameLine(); -#endif // ENABLE_SHOW_TOOLPATHS_COG if (!wxGetApp().is_gcode_viewer()) { #if ENABLE_LEGEND_TOOLBAR_ICONS toggle_button(Preview::OptionType::Shells, _u8L("Shells"), [image_icon](ImGuiWindow& window, const ImVec2& pos, float size) { diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 0cdbf888b..81cc6e39a 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -387,7 +387,6 @@ class GCodeViewer bool visible{ false }; }; -#if ENABLE_SHOW_TOOLPATHS_COG // helper to render center of gravity class COG { @@ -431,7 +430,6 @@ class GCodeViewer #endif // ENABLE_LEGACY_OPENGL_REMOVAL } }; -#endif // ENABLE_SHOW_TOOLPATHS_COG // helper to render extrusion paths struct Extrusions @@ -791,9 +789,7 @@ private: Extrusions m_extrusions; SequentialView m_sequential_view; Shells m_shells; -#if ENABLE_SHOW_TOOLPATHS_COG COG m_cog; -#endif // ENABLE_SHOW_TOOLPATHS_COG EViewType m_view_type{ EViewType::FeatureType }; bool m_legend_enabled{ true }; #if ENABLE_PREVIEW_LAYOUT @@ -842,9 +838,7 @@ public: void reset(); void render(); -#if ENABLE_SHOW_TOOLPATHS_COG void render_cog() { m_cog.render(); } -#endif // ENABLE_SHOW_TOOLPATHS_COG bool has_data() const { return !m_roles.empty(); } bool can_export_toolpaths() const; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 890e73773..93fdae6db 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1696,10 +1696,8 @@ void GLCanvas3D::render() #if ENABLE_RENDER_SELECTION_CENTER _render_selection_center(); #endif // ENABLE_RENDER_SELECTION_CENTER -#if ENABLE_SHOW_TOOLPATHS_COG if (!m_main_toolbar.is_enabled()) _render_gcode_cog(); -#endif // ENABLE_SHOW_TOOLPATHS_COG // we need to set the mouse's scene position here because the depth buffer // could be invalidated by the following gizmo render methods @@ -6061,12 +6059,10 @@ void GLCanvas3D::_render_gcode() m_gcode_viewer.render(); } -#if ENABLE_SHOW_TOOLPATHS_COG void GLCanvas3D::_render_gcode_cog() { m_gcode_viewer.render_cog(); } -#endif // ENABLE_SHOW_TOOLPATHS_COG void GLCanvas3D::_render_selection() { diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e556c582e..2d3698980 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -1004,9 +1004,7 @@ private: #endif // ENABLE_LEGACY_OPENGL_REMOVAL void _render_objects(GLVolumeCollection::ERenderType type); void _render_gcode(); -#if ENABLE_SHOW_TOOLPATHS_COG void _render_gcode_cog(); -#endif // ENABLE_SHOW_TOOLPATHS_COG void _render_selection(); void _render_sequential_clearance(); #if ENABLE_RENDER_SELECTION_CENTER diff --git a/src/slic3r/GUI/GLModel.cpp b/src/slic3r/GUI/GLModel.cpp index 228b07841..50c53d1f7 100644 --- a/src/slic3r/GUI/GLModel.cpp +++ b/src/slic3r/GUI/GLModel.cpp @@ -2107,7 +2107,6 @@ GLModel::Geometry diamond(unsigned int resolution) } #if ENABLE_LEGACY_OPENGL_REMOVAL -#if ENABLE_SHOW_TOOLPATHS_COG GLModel::Geometry smooth_sphere(unsigned int resolution, float radius) { resolution = std::max(4, resolution); @@ -2170,7 +2169,6 @@ GLModel::Geometry smooth_sphere(unsigned int resolution, float radius) return data; } -#endif // ENABLE_SHOW_TOOLPATHS_COG #endif // ENABLE_LEGACY_OPENGL_REMOVAL } // namespace GUI diff --git a/src/slic3r/GUI/GLModel.hpp b/src/slic3r/GUI/GLModel.hpp index 43398f450..a73766fdf 100644 --- a/src/slic3r/GUI/GLModel.hpp +++ b/src/slic3r/GUI/GLModel.hpp @@ -347,11 +347,9 @@ namespace GUI { GLModel::Geometry diamond(unsigned int resolution); #if ENABLE_LEGACY_OPENGL_REMOVAL -#if ENABLE_SHOW_TOOLPATHS_COG // create a sphere with the given resolution and smooth normals // the origin of the sphere is in its center GLModel::Geometry smooth_sphere(unsigned int resolution, float radius); -#endif // ENABLE_SHOW_TOOLPATHS_COG #endif // ENABLE_LEGACY_OPENGL_REMOVAL } // namespace GUI diff --git a/src/slic3r/GUI/GLShadersManager.cpp b/src/slic3r/GUI/GLShadersManager.cpp index 0668ecec8..f09194fa0 100644 --- a/src/slic3r/GUI/GLShadersManager.cpp +++ b/src/slic3r/GUI/GLShadersManager.cpp @@ -54,14 +54,12 @@ std::pair GLShadersManager::init() valid &= append_shader("dashed_thick_lines", { prefix + "dashed_thick_lines.vs", prefix + "dashed_thick_lines.fs", prefix + "dashed_thick_lines.gs" }); #endif // ENABLE_GL_CORE_PROFILE #endif // ENABLE_LEGACY_OPENGL_REMOVAL -#if ENABLE_SHOW_TOOLPATHS_COG // used to render toolpaths center of gravity #if ENABLE_LEGACY_OPENGL_REMOVAL valid &= append_shader("toolpaths_cog", { prefix + "toolpaths_cog.vs", prefix + "toolpaths_cog.fs" }); #else valid &= append_shader("toolpaths_cog", { "toolpaths_cog.vs", "toolpaths_cog.fs" }); #endif // ENABLE_LEGACY_OPENGL_REMOVAL -#endif // ENABLE_SHOW_TOOLPATHS_COG #if ENABLE_LEGACY_OPENGL_REMOVAL // used to render bed axes and model, selection hints, gcode sequential view marker model, preview shells, options in gcode preview valid &= append_shader("gouraud_light", { prefix + "gouraud_light.vs", prefix + "gouraud_light.fs" }); diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 97f8edde3..1137f11b9 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -126,9 +126,7 @@ public: ColorChanges, PausePrints, CustomGCodes, -#if ENABLE_SHOW_TOOLPATHS_COG CenterOfGravity, -#endif // ENABLE_SHOW_TOOLPATHS_COG Shells, ToolMarker, #if !ENABLE_PREVIEW_LAYOUT diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index b8220d609..813c75419 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -67,9 +67,7 @@ static const std::map font_icons = { {ImGui::LegendColorChanges , "legend_colorchanges" }, {ImGui::LegendPausePrints , "legend_pauseprints" }, {ImGui::LegendCustomGCodes , "legend_customgcodes" }, -#if ENABLE_SHOW_TOOLPATHS_COG {ImGui::LegendCOG , "legend_cog" }, -#endif // ENABLE_SHOW_TOOLPATHS_COG {ImGui::LegendShells , "legend_shells" }, {ImGui::LegendToolMarker , "legend_toolmarker" }, #endif // ENABLE_LEGEND_TOOLBAR_ICONS From 72aba9a5be5a4274dad1ced78a0da34284263af6 Mon Sep 17 00:00:00 2001 From: Merill Date: Thu, 28 Jul 2022 03:02:29 +0200 Subject: [PATCH 025/131] Little fix: back() isn't front() --- src/libslic3r/Print.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 61151babd..d4829adb5 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -124,7 +124,7 @@ public: T * const * begin() const { return m_data->data(); } T * const * end() const { return m_data->data() + m_data->size(); } const T* front() const { return m_data->front(); } - const T* back() const { return m_data->front(); } + const T* back() const { return m_data->back(); } size_t size() const { return m_data->size(); } bool empty() const { return m_data->empty(); } const T* operator[](size_t i) const { return (*m_data)[i]; } From 0063734e78adc3253479ea80d4a159923b0e6706 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Thu, 28 Jul 2022 08:33:46 +0200 Subject: [PATCH 026/131] Tech ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE set as default --- src/libslic3r/PresetBundle.cpp | 4 ---- src/libslic3r/PresetBundle.hpp | 2 -- src/libslic3r/Technologies.hpp | 2 -- src/slic3r/GUI/ConfigWizard.cpp | 2 -- 4 files changed, 10 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index e744d72ca..d98998cc4 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -453,10 +453,8 @@ void PresetBundle::save_changes_for_preset(const std::string& new_name, Preset:: presets.get_edited_preset().config.apply_only(presets.get_selected_preset().config, unselected_options); } -#if ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE if (type == Preset::TYPE_PRINTER) copy_bed_model_and_texture_if_needed(presets.get_edited_preset().config); -#endif // ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE // Save the preset into Slic3r::data_dir / presets / section_name / preset_name.ini presets.save_current_preset(new_name); @@ -1865,7 +1863,6 @@ void PresetBundle::set_default_suppressed(bool default_suppressed) printers.set_default_suppressed(default_suppressed); } -#if ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE void copy_bed_model_and_texture_if_needed(DynamicPrintConfig& config) { const boost::filesystem::path user_dir = boost::filesystem::absolute(boost::filesystem::path(data_dir()) / "printer").make_preferred(); @@ -1891,6 +1888,5 @@ void copy_bed_model_and_texture_if_needed(DynamicPrintConfig& config) do_copy(config.option("bed_custom_texture"), "texture"); do_copy(config.option("bed_custom_model"), "model"); } -#endif // ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE } // namespace Slic3r diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index b36f6ed6e..021306967 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -178,11 +178,9 @@ private: ENABLE_ENUM_BITMASK_OPERATORS(PresetBundle::LoadConfigBundleAttribute) -#if ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE // Copies bed texture and model files to 'data_dir()\printer' folder, if needed // and updates the config accordingly extern void copy_bed_model_and_texture_if_needed(DynamicPrintConfig& config); -#endif // ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE } // namespace Slic3r diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index eda70aae2..744976df1 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -75,8 +75,6 @@ #define ENABLE_PROCESS_G2_G3_LINES (1 && ENABLE_2_5_0_ALPHA1) // Enable fix of used filament data exported to gcode file #define ENABLE_USED_FILAMENT_POST_PROCESS (1 && ENABLE_2_5_0_ALPHA1) -// Enable copy of custom bed model and texture -#define ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE (1 && ENABLE_2_5_0_ALPHA1) // Enable picking using raytracing #define ENABLE_RAYCAST_PICKING (1 && ENABLE_LEGACY_OPENGL_REMOVAL) #define ENABLE_RAYCAST_PICKING_DEBUG (0 && ENABLE_RAYCAST_PICKING) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 813804f0d..803a6bfed 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2780,9 +2780,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese page_diams->apply_custom_config(*custom_config); page_temps->apply_custom_config(*custom_config); -#if ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE copy_bed_model_and_texture_if_needed(*custom_config); -#endif // ENABLE_COPY_CUSTOM_BED_MODEL_AND_TEXTURE const std::string profile_name = page_custom->profile_name(); preset_bundle->load_config_from_wizard(profile_name, *custom_config); From 0388132acd52d18813af72c13ea9ec312b13da40 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Thu, 28 Jul 2022 08:55:53 +0200 Subject: [PATCH 027/131] Tech ENABLE_SHOW_NON_MANIFOLD_EDGES set as default --- src/libslic3r/AppConfig.cpp | 2 -- src/libslic3r/Technologies.hpp | 2 -- src/libslic3r/TriangleMesh.cpp | 2 -- src/libslic3r/TriangleMesh.hpp | 2 -- src/slic3r/GUI/3DScene.cpp | 8 -------- src/slic3r/GUI/3DScene.hpp | 8 -------- src/slic3r/GUI/GLCanvas3D.cpp | 2 -- src/slic3r/GUI/Preferences.cpp | 2 -- 8 files changed, 28 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 82c0a72a6..3ea1d80e4 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -150,10 +150,8 @@ void AppConfig::set_defaults() if (get("order_volumes").empty()) set("order_volumes", "1"); -#if ENABLE_SHOW_NON_MANIFOLD_EDGES if (get("non_manifold_edges").empty()) set("non_manifold_edges", "1"); -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES if (get("clear_undo_redo_stack_on_new_project").empty()) set("clear_undo_redo_stack_on_new_project", "1"); diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 744976df1..92f21e90a 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -59,8 +59,6 @@ #define ENABLE_OPENGL_DEBUG_OPTION (1 && ENABLE_GL_CORE_PROFILE) // Shows an imgui dialog with GLModel statistics data #define ENABLE_GLMODEL_STATISTICS (0 && ENABLE_LEGACY_OPENGL_REMOVAL) -// Enable show non-manifold edges -#define ENABLE_SHOW_NON_MANIFOLD_EDGES (1 && ENABLE_2_5_0_ALPHA1) // Enable rework of Reload from disk command #define ENABLE_RELOAD_FROM_DISK_REWORK (1 && ENABLE_2_5_0_ALPHA1) // Enable recalculating toolpaths when switching to/from volumetric rate visualization diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 0dffdaab0..61e84076a 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1246,7 +1246,6 @@ size_t its_num_open_edges(const std::vector &face_neighbors) return num_open_edges; } -#if ENABLE_SHOW_NON_MANIFOLD_EDGES std::vector> its_get_open_edges(const indexed_triangle_set& its) { std::vector> ret; @@ -1261,7 +1260,6 @@ std::vector> its_get_open_edges(const indexed_triangle_set& } return ret; } -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES size_t its_num_open_edges(const indexed_triangle_set &its) { diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 3f3af0261..85a8a24e1 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -227,11 +227,9 @@ bool its_is_splittable(const indexed_triangle_set &its, const std::vector size_t its_num_open_edges(const indexed_triangle_set &its); size_t its_num_open_edges(const std::vector &face_neighbors); -#if ENABLE_SHOW_NON_MANIFOLD_EDGES // Calculate and returns the list of unconnected face edges. // Each edge is represented by the indices of the two endpoint vertices std::vector> its_get_open_edges(const indexed_triangle_set& its); -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES // Shrink the vectors of its.vertices and its.faces to a minimum size by reallocating the two vectors. void its_shrink_to_fit(indexed_triangle_set &its); diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index d66d101a3..19c12b803 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -384,7 +384,6 @@ void GLVolume::SinkingContours::update() m_model.reset(); } -#if ENABLE_SHOW_NON_MANIFOLD_EDGES void GLVolume::NonManifoldEdges::render() { update(); @@ -475,7 +474,6 @@ void GLVolume::NonManifoldEdges::update() m_update_needed = false; } -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES const ColorRGBA GLVolume::SELECTED_COLOR = ColorRGBA::GREEN(); const ColorRGBA GLVolume::HOVER_SELECT_COLOR = { 0.4f, 0.9f, 0.1f, 1.0f }; @@ -496,9 +494,7 @@ const std::array GLVolume::MODEL_COLOR = { { GLVolume::GLVolume(float r, float g, float b, float a) : m_sla_shift_z(0.0) , m_sinking_contours(*this) -#if ENABLE_SHOW_NON_MANIFOLD_EDGES , m_non_manifold_edges(*this) -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES // geometry_id == 0 -> invalid , geometry_id(std::pair(0, 0)) , extruder_id(0) @@ -755,12 +751,10 @@ void GLVolume::render_sinking_contours() m_sinking_contours.render(); } -#if ENABLE_SHOW_NON_MANIFOLD_EDGES void GLVolume::render_non_manifold_edges() { m_non_manifold_edges.render(); } -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES #if ENABLE_LEGACY_OPENGL_REMOVAL std::vector GLVolumeCollection::load_object( @@ -1415,7 +1409,6 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab #endif // ENABLE_LEGACY_OPENGL_REMOVAL } -#if ENABLE_SHOW_NON_MANIFOLD_EDGES #if ENABLE_LEGACY_OPENGL_REMOVAL shader->stop_using(); if (edges_shader != nullptr) { @@ -1431,7 +1424,6 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab } shader->start_using(); #endif // ENABLE_LEGACY_OPENGL_REMOVAL -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES if (disable_cullface) glsafe(::glEnable(GL_CULL_FACE)); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index a47c8d05d..02a4715ee 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -309,7 +309,6 @@ private: SinkingContours m_sinking_contours; -#if ENABLE_SHOW_NON_MANIFOLD_EDGES class NonManifoldEdges { GLVolume& m_parent; @@ -326,7 +325,6 @@ private: }; NonManifoldEdges m_non_manifold_edges; -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES public: // Color of the triangles / quads held by this volume. @@ -574,9 +572,7 @@ public: bool is_sinking() const; bool is_below_printbed() const; void render_sinking_contours(); -#if ENABLE_SHOW_NON_MANIFOLD_EDGES void render_non_manifold_edges(); -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES // Return an estimate of the memory consumed by this class. size_t cpu_memory_used() const { @@ -642,9 +638,7 @@ private: Slope m_slope; bool m_show_sinking_contours{ false }; -#if ENABLE_SHOW_NON_MANIFOLD_EDGES bool m_show_non_manifold_edges{ true }; -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES public: GLVolumePtrs volumes; @@ -756,9 +750,7 @@ public: void set_slope_normal_z(float normal_z) { m_slope.normal_z = normal_z; } void set_default_slope_normal_z() { m_slope.normal_z = -::cos(Geometry::deg2rad(90.0f - 45.0f)); } void set_show_sinking_contours(bool show) { m_show_sinking_contours = show; } -#if ENABLE_SHOW_NON_MANIFOLD_EDGES void set_show_non_manifold_edges(bool show) { m_show_non_manifold_edges = show; } -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES // returns true if all the volumes are completely contained in the print volume // returns the containment state in the given out_state, if non-null diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 93fdae6db..9d74874a8 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5979,9 +5979,7 @@ void GLCanvas3D::_render_objects(GLVolumeCollection::ERenderType type) m_volumes.set_clipping_plane(m_camera_clipping_plane.get_data()); m_volumes.set_show_sinking_contours(! m_gizmos.is_hiding_instances()); -#if ENABLE_SHOW_NON_MANIFOLD_EDGES m_volumes.set_show_non_manifold_edges(!m_gizmos.is_hiding_instances() && m_gizmos.get_current_type() != GLGizmosManager::Simplify); -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES GLShaderProgram* shader = wxGetApp().get_shader("gouraud"); if (shader != nullptr) { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 27cd113fb..20fcedd05 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -454,12 +454,10 @@ void PreferencesDialog::build() "If disabled, you can reorder Model Parts, Negative Volumes and Modifiers. But one of the model parts have to be on the first place."), app_config->get("order_volumes") == "1"); -#if ENABLE_SHOW_NON_MANIFOLD_EDGES append_bool_option(m_optgroup_gui, "non_manifold_edges", L("Show non-manifold edges"), L("If enabled, shows non-manifold edges."), app_config->get("non_manifold_edges") == "1"); -#endif // ENABLE_SHOW_NON_MANIFOLD_EDGES #ifdef _MSW_DARK_MODE append_bool_option(m_optgroup_gui, "tabs_as_menu", From 9168b604636d62ea7ad70eff84963df2a9dca93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 27 Jul 2022 14:09:18 +0200 Subject: [PATCH 028/131] Prevented the pressure equalizer from emitting G-code settings feed rate when there are no G-code lines that will be affected (empty block of G-code lines with set feed rate). --- src/libslic3r/GCode/PressureEqualizer.cpp | 57 +++++++++++++++-------- src/libslic3r/GCode/PressureEqualizer.hpp | 14 ++++-- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index ab12ae485..03aa9d9df 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -1,6 +1,6 @@ #include -#include -#include +#include +#include #include "../libslic3r.h" #include "../PrintConfig.hpp" @@ -31,7 +31,8 @@ PressureEqualizer::PressureEqualizer(const Slic3r::GCodeConfig &config) : m_use_ { // Preallocate some data, so that output_buffer.data() will return an empty string. output_buffer.assign(32, 0); - output_buffer_length = 0; + output_buffer_length = 0; + output_buffer_prev_length = 0; m_current_extruder = 0; // Zero the position of the XYZE axes + the current feed @@ -117,9 +118,10 @@ LayerResult PressureEqualizer::process_layer(LayerResult &&input) LayerResult *prev_layer_result = m_layer_results.front(); m_layer_results.pop(); - output_buffer_length = 0; + output_buffer_length = 0; + output_buffer_prev_length = 0; for (size_t line_idx = 0; line_idx < next_layer_first_idx; ++line_idx) - output_gcode_line(m_gcode_lines[line_idx]); + output_gcode_line(line_idx); m_gcode_lines.erase(m_gcode_lines.begin(), m_gcode_lines.begin() + int(next_layer_first_idx)); if (output_buffer_length > 0) @@ -134,9 +136,9 @@ LayerResult PressureEqualizer::process_layer(LayerResult &&input) // Is a white space? static inline bool is_ws(const char c) { return c == ' ' || c == '\t'; } // Is it an end of line? Consider a comment to be an end of line as well. -static inline bool is_eol(const char c) { return c == 0 || c == '\r' || c == '\n' || c == ';'; }; +static inline bool is_eol(const char c) { return c == 0 || c == '\r' || c == '\n' || c == ';'; } // Is it a white space or end of line? -static inline bool is_ws_or_eol(const char c) { return is_ws(c) || is_eol(c); }; +static inline bool is_ws_or_eol(const char c) { return is_ws(c) || is_eol(c); } // Eat whitespaces. static void eatws(const char *&line) @@ -155,7 +157,7 @@ static inline int parse_int(const char *&line) throw Slic3r::InvalidArgument("PressureEqualizer: Error parsing an int"); line = endptr; return int(result); -}; +} float string_to_float_decimal_point(const char *line, const size_t str_len, size_t* pos) { @@ -176,7 +178,7 @@ static inline float parse_float(const char *&line, const size_t line_length) throw Slic3r::RuntimeError("PressureEqualizer: Error parsing a float"); line = line + endptr; return result; -}; +} bool PressureEqualizer::process_line(const char *line, const char *line_end, GCodeLine &buf) { @@ -213,8 +215,8 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo buf.extrusion_role = m_current_extrusion_role; std::string str_line(line, line_end); - bool found_extrude_set_speed_tag = boost::contains(str_line, ";_EXTRUDE_SET_SPEED"); - bool found_extrude_end_tag = boost::contains(str_line, ";_EXTRUDE_END"); + const bool found_extrude_set_speed_tag = boost::contains(str_line, EXTRUDE_SET_SPEED_TAG); + const bool found_extrude_end_tag = boost::contains(str_line, EXTRUDE_END_TAG); assert(!found_extrude_set_speed_tag || !found_extrude_end_tag); if (found_extrude_set_speed_tag) @@ -242,6 +244,8 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo { // G0, G1: A FFF 3D printer does not make a difference between the two. buf.adjustable_flow = this->opened_extrude_set_speed_block; + buf.extrude_set_speed_tag = found_extrude_set_speed_tag; + buf.extrude_end_tag = found_extrude_end_tag; float new_pos[5]; memcpy(new_pos, m_current_pos, sizeof(float)*5); bool changed[5] = { false, false, false, false, false }; @@ -386,8 +390,9 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo return true; } -void PressureEqualizer::output_gcode_line(GCodeLine &line) +void PressureEqualizer::output_gcode_line(const size_t line_idx) { + GCodeLine &line = m_gcode_lines[line_idx]; if (!line.modified) { push_to_output(line.raw.data(), line.raw_length, true); return; @@ -403,7 +408,7 @@ void PressureEqualizer::output_gcode_line(GCodeLine &line) // Emit the line with lowered extrusion rates. float l = line.dist_xyz(); if (auto nSegments = size_t(ceil(l / max_segment_length)); nSegments == 1) { // Just update this segment. - push_line_to_output(line, line.feedrate() * line.volumetric_correction_avg(), comment); + push_line_to_output(line_idx, line.feedrate() * line.volumetric_correction_avg(), comment); } else { bool accelerating = line.volumetric_extrusion_rate_start < line.volumetric_extrusion_rate_end; // Update the initial and final feed rate values. @@ -453,7 +458,7 @@ void PressureEqualizer::output_gcode_line(GCodeLine &line) line.pos_end[i] = pos_start[i] + (pos_end[i] - pos_start[i]) * t; line.pos_provided[i] = true; } - push_line_to_output(line, pos_start[4], comment); + push_line_to_output(line_idx, pos_start[4], comment); comment = nullptr; float new_pos_start_feedrate = pos_start[4]; @@ -473,7 +478,7 @@ void PressureEqualizer::output_gcode_line(GCodeLine &line) line.pos_provided[j] = true; } // Interpolate the feed rate at the center of the segment. - push_line_to_output(line, pos_start[4] + (pos_end[4] - pos_start[4]) * (float(i) - 0.5f) / float(nSegments), comment); + push_line_to_output(line_idx, pos_start[4] + (pos_end[4] - pos_start[4]) * (float(i) - 0.5f) / float(nSegments), comment); comment = nullptr; memcpy(line.pos_start, line.pos_end, sizeof(float)*5); } @@ -482,13 +487,13 @@ void PressureEqualizer::output_gcode_line(GCodeLine &line) line.pos_end[i] = pos_end2[i]; line.pos_provided[i] = true; } - push_line_to_output(line, pos_end[4], comment); + push_line_to_output(line_idx, pos_end[4], comment); } else { for (int i = 0; i < 4; ++ i) { line.pos_end[i] = pos_end[i]; line.pos_provided[i] = true; } - push_line_to_output(line, pos_end[4], comment); + push_line_to_output(line_idx, pos_end[4], comment); } } } @@ -643,6 +648,7 @@ inline void PressureEqualizer::push_to_output(const char *text, const size_t len // Copy the text to the output. if (len != 0) { memcpy(output_buffer.data() + output_buffer_length, text, len); + this->output_buffer_prev_length = this->output_buffer_length; output_buffer_length += len; } if (add_eol) @@ -650,9 +656,22 @@ inline void PressureEqualizer::push_to_output(const char *text, const size_t len output_buffer[output_buffer_length] = 0; } -void PressureEqualizer::push_line_to_output(const GCodeLine &line, const float new_feedrate, const char *comment) +inline bool PressureEqualizer::is_just_feedrate_provided(const GCodeLine &line) { - push_to_output(EXTRUDE_END_TAG.data(), EXTRUDE_END_TAG.length(), true); + return line.pos_provided[4] && !line.pos_provided[0] && !line.pos_provided[1] && !line.pos_provided[2] && !line.pos_provided[3]; +} + +void PressureEqualizer::push_line_to_output(const size_t line_idx, const float new_feedrate, const char *comment) +{ + const GCodeLine &line = this->m_gcode_lines[line_idx]; + if (line_idx > 0) { + const GCodeLine &prev_line = this->m_gcode_lines[line_idx - 1]; + if (prev_line.extrude_set_speed_tag && this->is_just_feedrate_provided(prev_line)) + this->output_buffer_length = this->output_buffer_prev_length; // Remove the last line because it only sets the speed for an empty block of g-code lines, so it is useless. + else + push_to_output(EXTRUDE_END_TAG.data(), EXTRUDE_END_TAG.length(), true); + } else + push_to_output(EXTRUDE_END_TAG.data(), EXTRUDE_END_TAG.length(), true); GCodeG1Formatter feedrate_formatter; feedrate_formatter.emit_f(new_feedrate); diff --git a/src/libslic3r/GCode/PressureEqualizer.hpp b/src/libslic3r/GCode/PressureEqualizer.hpp index 2973e26ea..068b01df4 100644 --- a/src/libslic3r/GCode/PressureEqualizer.hpp +++ b/src/libslic3r/GCode/PressureEqualizer.hpp @@ -143,7 +143,7 @@ private: // X,Y,Z,E,F. Storing the state of the currently active extruder only. float pos_start[5]; float pos_end[5]; - // Was the axis found on the G-code line? X,Y,Z,F + // Was the axis found on the G-code line? X,Y,Z,E,F bool pos_provided[5]; // Index of the active extruder. @@ -163,12 +163,16 @@ private: float max_volumetric_extrusion_rate_slope_positive; float max_volumetric_extrusion_rate_slope_negative; - bool adjustable_flow = false; + bool adjustable_flow = false; + + bool extrude_set_speed_tag = false; + bool extrude_end_tag = false; }; // Output buffer will only grow. It will not be reallocated over and over. std::vector output_buffer; size_t output_buffer_length; + size_t output_buffer_prev_length; #ifdef PRESSURE_EQUALIZER_DEBUG // For debugging purposes. Index of the G-code line processed. @@ -176,7 +180,7 @@ private: #endif bool process_line(const char *line, const char *line_end, GCodeLine &buf); - void output_gcode_line(GCodeLine &buf); + void output_gcode_line(size_t line_idx); // Go back from the current circular_buffer_pos and lower the feedtrate to decrease the slope of the extrusion rate changes. // Then go forward and adjust the feedrate to decrease the slope of the extrusion rate changes. @@ -187,7 +191,9 @@ private: inline void push_to_output(const std::string &text, bool add_eol); inline void push_to_output(const char *text, size_t len, bool add_eol = true); // Push a G-code line to the output. - void push_line_to_output(const GCodeLine &line, float new_feedrate, const char *comment); + void push_line_to_output(size_t line_idx, float new_feedrate, const char *comment); + + inline bool is_just_feedrate_provided(const GCodeLine &line); public: std::queue m_layer_results; From 394494b3acb9bd888b88b4257f977c4844ea76e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 27 Jul 2022 20:17:57 +0200 Subject: [PATCH 029/131] Fix of #8530: Pressure equalizer unintentionally decelerates before ironing. This is the follow-up to: 39404be75a723bde17add6acab7beba237821ebc --- src/libslic3r/GCode/PressureEqualizer.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index 03aa9d9df..943395c68 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -520,6 +520,11 @@ void PressureEqualizer::adjust_volumetric_rate() for (; !m_gcode_lines[idx_prev].extruding() && idx_prev != fist_line_idx; --idx_prev); if (!m_gcode_lines[idx_prev].extruding()) break; + // Don't decelerate before ironing. + if (m_gcode_lines[line_idx].extrusion_role == erIroning) { + line_idx = idx_prev; + continue; + } // Volumetric extrusion rate at the start of the succeding segment. float rate_succ = m_gcode_lines[line_idx].volumetric_extrusion_rate_start; // What is the gradient of the extrusion rate between idx_prev and idx? @@ -559,7 +564,9 @@ void PressureEqualizer::adjust_volumetric_rate() } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start; - feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start; + // Don't store feed rate for ironing. + if (line.extrusion_role != erIroning) + feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start; } } @@ -572,6 +579,11 @@ void PressureEqualizer::adjust_volumetric_rate() for (; !m_gcode_lines[idx_next].extruding() && idx_next != last_line_idx; ++idx_next); if (!m_gcode_lines[idx_next].extruding()) break; + // Don't accelerate after ironing. + if (m_gcode_lines[line_idx].extrusion_role == erIroning) { + line_idx = idx_next; + continue; + } float rate_prec = m_gcode_lines[line_idx].volumetric_extrusion_rate_end; // What is the gradient of the extrusion rate between idx_prev and idx? line_idx = idx_next; @@ -608,7 +620,9 @@ void PressureEqualizer::adjust_volumetric_rate() } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end; - feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end; + // Don't store feed rate for ironing. + if (line.extrusion_role != erIroning) + feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end; } } } From a8b10525e408c8e3c1c178b2f1060489e998a20b Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 29 Jul 2022 11:17:25 +0200 Subject: [PATCH 030/131] libnest2d: remove unused code and fix some warnings --- .../include/libnest2d/geometry_traits_nfp.hpp | 459 +----------------- .../libnest2d/placers/bottomleftplacer.hpp | 5 +- 2 files changed, 4 insertions(+), 460 deletions(-) diff --git a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp index d9f947802..cce1fdc39 100644 --- a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp +++ b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp @@ -315,460 +315,6 @@ inline NfpResult nfpConvexOnly(const RawShape& sh, return {rsh, top_nfp}; } -template -NfpResult nfpSimpleSimple(const RawShape& cstationary, - const RawShape& cother) -{ - - // Algorithms are from the original algorithm proposed in paper: - // https://eprints.soton.ac.uk/36850/1/CORMSIS-05-05.pdf - - // ///////////////////////////////////////////////////////////////////////// - // Algorithm 1: Obtaining the minkowski sum - // ///////////////////////////////////////////////////////////////////////// - - // I guess this is not a full minkowski sum of the two input polygons by - // definition. This yields a subset that is compatible with the next 2 - // algorithms. - - using Result = NfpResult; - using Vertex = TPoint; - using Coord = TCoord; - using Edge = _Segment; - namespace sl = shapelike; - using std::signbit; - using std::sort; - using std::vector; - using std::ref; - using std::reference_wrapper; - - // TODO The original algorithms expects the stationary polygon in - // counter clockwise and the orbiter in clockwise order. - // So for preventing any further complication, I will make the input - // the way it should be, than make my way around the orientations. - - // Reverse the stationary contour to counter clockwise - auto stcont = sl::contour(cstationary); - { - std::reverse(sl::begin(stcont), sl::end(stcont)); - stcont.pop_back(); - auto it = std::min_element(sl::begin(stcont), sl::end(stcont), - [](const Vertex& v1, const Vertex& v2) { - return getY(v1) < getY(v2); - }); - std::rotate(sl::begin(stcont), it, sl::end(stcont)); - sl::addVertex(stcont, sl::front(stcont)); - } - RawShape stationary; - sl::contour(stationary) = stcont; - - // Reverse the orbiter contour to counter clockwise - auto orbcont = sl::contour(cother); - { - std::reverse(orbcont.begin(), orbcont.end()); - - // Step 1: Make the orbiter reverse oriented - - orbcont.pop_back(); - auto it = std::min_element(orbcont.begin(), orbcont.end(), - [](const Vertex& v1, const Vertex& v2) { - return getY(v1) < getY(v2); - }); - - std::rotate(orbcont.begin(), it, orbcont.end()); - orbcont.emplace_back(orbcont.front()); - - for(auto &v : orbcont) v = -v; - - } - - // Copy the orbiter (contour only), we will have to work on it - RawShape orbiter; - sl::contour(orbiter) = orbcont; - - // An edge with additional data for marking it - struct MarkedEdge { - Edge e; Radians turn_angle = 0; bool is_turning_point = false; - MarkedEdge() = default; - MarkedEdge(const Edge& ed, Radians ta, bool tp): - e(ed), turn_angle(ta), is_turning_point(tp) {} - - // debug - std::string label; - }; - - // Container for marked edges - using EdgeList = vector; - - EdgeList A, B; - - // This is how an edge list is created from the polygons - auto fillEdgeList = [](EdgeList& L, const RawShape& ppoly, int dir) { - auto& poly = sl::contour(ppoly); - - L.reserve(sl::contourVertexCount(poly)); - - if(dir > 0) { - auto it = poly.begin(); - auto nextit = std::next(it); - - double turn_angle = 0; - bool is_turn_point = false; - - while(nextit != poly.end()) { - L.emplace_back(Edge(*it, *nextit), turn_angle, is_turn_point); - it++; nextit++; - } - } else { - auto it = sl::rbegin(poly); - auto nextit = std::next(it); - - double turn_angle = 0; - bool is_turn_point = false; - - while(nextit != sl::rend(poly)) { - L.emplace_back(Edge(*it, *nextit), turn_angle, is_turn_point); - it++; nextit++; - } - } - - auto getTurnAngle = [](const Edge& e1, const Edge& e2) { - auto phi = e1.angleToXaxis(); - auto phi_prev = e2.angleToXaxis(); - auto turn_angle = phi-phi_prev; - if(turn_angle > Pi) turn_angle -= TwoPi; - if(turn_angle < -Pi) turn_angle += TwoPi; - return turn_angle; - }; - - auto eit = L.begin(); - auto enext = std::next(eit); - - eit->turn_angle = getTurnAngle(L.front().e, L.back().e); - - while(enext != L.end()) { - enext->turn_angle = getTurnAngle( enext->e, eit->e); - eit->is_turning_point = - signbit(enext->turn_angle) != signbit(eit->turn_angle); - ++eit; ++enext; - } - - L.back().is_turning_point = signbit(L.back().turn_angle) != - signbit(L.front().turn_angle); - - }; - - // Step 2: Fill the edgelists - fillEdgeList(A, stationary, 1); - fillEdgeList(B, orbiter, 1); - - int i = 1; - for(MarkedEdge& me : A) { - std::cout << "a" << i << ":\n\t" - << getX(me.e.first()) << " " << getY(me.e.first()) << "\n\t" - << getX(me.e.second()) << " " << getY(me.e.second()) << "\n\t" - << "Turning point: " << (me.is_turning_point ? "yes" : "no") - << std::endl; - - me.label = "a"; me.label += std::to_string(i); - i++; - } - - i = 1; - for(MarkedEdge& me : B) { - std::cout << "b" << i << ":\n\t" - << getX(me.e.first()) << " " << getY(me.e.first()) << "\n\t" - << getX(me.e.second()) << " " << getY(me.e.second()) << "\n\t" - << "Turning point: " << (me.is_turning_point ? "yes" : "no") - << std::endl; - me.label = "b"; me.label += std::to_string(i); - i++; - } - - // A reference to a marked edge that also knows its container - struct MarkedEdgeRef { - reference_wrapper eref; - reference_wrapper> container; - Coord dir = 1; // Direction modifier - - inline Radians angleX() const { return eref.get().e.angleToXaxis(); } - inline const Edge& edge() const { return eref.get().e; } - inline Edge& edge() { return eref.get().e; } - inline bool isTurningPoint() const { - return eref.get().is_turning_point; - } - inline bool isFrom(const vector& cont ) { - return &(container.get()) == &cont; - } - inline bool eq(const MarkedEdgeRef& mr) { - return &(eref.get()) == &(mr.eref.get()); - } - - MarkedEdgeRef(reference_wrapper er, - reference_wrapper> ec): - eref(er), container(ec), dir(1) {} - - MarkedEdgeRef(reference_wrapper er, - reference_wrapper> ec, - Coord d): - eref(er), container(ec), dir(d) {} - }; - - using EdgeRefList = vector; - - // Comparing two marked edges - auto sortfn = [](const MarkedEdgeRef& e1, const MarkedEdgeRef& e2) { - return e1.angleX() < e2.angleX(); - }; - - EdgeRefList Aref, Bref; // We create containers for the references - Aref.reserve(A.size()); Bref.reserve(B.size()); - - // Fill reference container for the stationary polygon - std::for_each(A.begin(), A.end(), [&Aref](MarkedEdge& me) { - Aref.emplace_back( ref(me), ref(Aref) ); - }); - - // Fill reference container for the orbiting polygon - std::for_each(B.begin(), B.end(), [&Bref](MarkedEdge& me) { - Bref.emplace_back( ref(me), ref(Bref) ); - }); - - auto mink = [sortfn] // the Mink(Q, R, direction) sub-procedure - (const EdgeRefList& Q, const EdgeRefList& R, bool positive) - { - - // Step 1 "merge sort_list(Q) and sort_list(R) to form merge_list(Q,R)" - // Sort the containers of edge references and merge them. - // Q could be sorted only once and be reused here but we would still - // need to merge it with sorted(R). - - EdgeRefList merged; - EdgeRefList S, seq; - merged.reserve(Q.size() + R.size()); - - merged.insert(merged.end(), R.begin(), R.end()); - std::stable_sort(merged.begin(), merged.end(), sortfn); - merged.insert(merged.end(), Q.begin(), Q.end()); - std::stable_sort(merged.begin(), merged.end(), sortfn); - - // Step 2 "set i = 1, k = 1, direction = 1, s1 = q1" - // we don't use i, instead, q is an iterator into Q. k would be an index - // into the merged sequence but we use "it" as an iterator for that - - // here we obtain references for the containers for later comparisons - const auto& Rcont = R.begin()->container.get(); - const auto& Qcont = Q.begin()->container.get(); - - // Set the initial direction - Coord dir = 1; - - // roughly i = 1 (so q = Q.begin()) and s1 = q1 so S[0] = q; - if(positive) { - auto q = Q.begin(); - S.emplace_back(*q); - - // Roughly step 3 - - std::cout << "merged size: " << merged.size() << std::endl; - auto mit = merged.begin(); - for(bool finish = false; !finish && q != Q.end();) { - ++q; // "Set i = i + 1" - - while(!finish && mit != merged.end()) { - if(mit->isFrom(Rcont)) { - auto s = *mit; - s.dir = dir; - S.emplace_back(s); - } - - if(mit->eq(*q)) { - S.emplace_back(*q); - if(mit->isTurningPoint()) dir = -dir; - if(q == Q.begin()) finish = true; - break; - } - - mit += dir; - // __nfp::advance(mit, merged, dir > 0); - } - } - } else { - auto q = Q.rbegin(); - S.emplace_back(*q); - - // Roughly step 3 - - std::cout << "merged size: " << merged.size() << std::endl; - auto mit = merged.begin(); - for(bool finish = false; !finish && q != Q.rend();) { - ++q; // "Set i = i + 1" - - while(!finish && mit != merged.end()) { - if(mit->isFrom(Rcont)) { - auto s = *mit; - s.dir = dir; - S.emplace_back(s); - } - - if(mit->eq(*q)) { - S.emplace_back(*q); - S.back().dir = -1; - if(mit->isTurningPoint()) dir = -dir; - if(q == Q.rbegin()) finish = true; - break; - } - - mit += dir; - // __nfp::advance(mit, merged, dir > 0); - } - } - } - - - // Step 4: - - // "Let starting edge r1 be in position si in sequence" - // whaaat? I guess this means the following: - auto it = S.begin(); - while(!it->eq(*R.begin())) ++it; - - // "Set j = 1, next = 2, direction = 1, seq1 = si" - // we don't use j, seq is expanded dynamically. - dir = 1; - auto next = std::next(R.begin()); seq.emplace_back(*it); - - // Step 5: - // "If all si edges have been allocated to seqj" should mean that - // we loop until seq has equal size with S - auto send = it; //it == S.begin() ? it : std::prev(it); - while(it != S.end()) { - ++it; if(it == S.end()) it = S.begin(); - if(it == send) break; - - if(it->isFrom(Qcont)) { - seq.emplace_back(*it); // "If si is from Q, j = j + 1, seqj = si" - - // "If si is a turning point in Q, - // direction = - direction, next = next + direction" - if(it->isTurningPoint()) { - dir = -dir; - next += dir; -// __nfp::advance(next, R, dir > 0); - } - } - - if(it->eq(*next) /*&& dir == next->dir*/) { // "If si = direction.rnext" - // "j = j + 1, seqj = si, next = next + direction" - seq.emplace_back(*it); - next += dir; -// __nfp::advance(next, R, dir > 0); - } - } - - return seq; - }; - - std::vector seqlist; - seqlist.reserve(Bref.size()); - - EdgeRefList Bslope = Bref; // copy Bref, we will make a slope diagram - - // make the slope diagram of B - std::sort(Bslope.begin(), Bslope.end(), sortfn); - - auto slopeit = Bslope.begin(); // search for the first turning point - while(!slopeit->isTurningPoint() && slopeit != Bslope.end()) slopeit++; - - if(slopeit == Bslope.end()) { - // no turning point means convex polygon. - seqlist.emplace_back(mink(Aref, Bref, true)); - } else { - int dir = 1; - - auto firstturn = Bref.begin(); - while(!firstturn->eq(*slopeit)) ++firstturn; - - assert(firstturn != Bref.end()); - - EdgeRefList bgroup; bgroup.reserve(Bref.size()); - bgroup.emplace_back(*slopeit); - - auto b_it = std::next(firstturn); - while(b_it != firstturn) { - if(b_it == Bref.end()) b_it = Bref.begin(); - - while(!slopeit->eq(*b_it)) { - __nfp::advance(slopeit, Bslope, dir > 0); - } - - if(!slopeit->isTurningPoint()) { - bgroup.emplace_back(*slopeit); - } else { - if(!bgroup.empty()) { - if(dir > 0) bgroup.emplace_back(*slopeit); - for(auto& me : bgroup) { - std::cout << me.eref.get().label << ", "; - } - std::cout << std::endl; - seqlist.emplace_back(mink(Aref, bgroup, dir == 1 ? true : false)); - bgroup.clear(); - if(dir < 0) bgroup.emplace_back(*slopeit); - } else { - bgroup.emplace_back(*slopeit); - } - - dir *= -1; - } - ++b_it; - } - } - -// while(it != Bref.end()) // This is step 3 and step 4 in one loop -// if(it->isTurningPoint()) { -// R = {R.last, it++}; -// auto seq = mink(Q, R, orientation); - -// // TODO step 6 (should be 5 shouldn't it?): linking edges from A -// // I don't get this step - -// seqlist.insert(seqlist.end(), seq.begin(), seq.end()); -// orientation = !orientation; -// } else ++it; - -// if(seqlist.empty()) seqlist = mink(Q, {Bref.begin(), Bref.end()}, true); - - // ///////////////////////////////////////////////////////////////////////// - // Algorithm 2: breaking Minkowski sums into track line trips - // ///////////////////////////////////////////////////////////////////////// - - - // ///////////////////////////////////////////////////////////////////////// - // Algorithm 3: finding the boundary of the NFP from track line trips - // ///////////////////////////////////////////////////////////////////////// - - - for(auto& seq : seqlist) { - std::cout << "seqlist size: " << seq.size() << std::endl; - for(auto& s : seq) { - std::cout << (s.dir > 0 ? "" : "-") << s.eref.get().label << ", "; - } - std::cout << std::endl; - } - - auto& seq = seqlist.front(); - RawShape rsh; - Vertex top_nfp; - std::vector edgelist; edgelist.reserve(seq.size()); - for(auto& s : seq) { - edgelist.emplace_back(s.eref.get().e); - } - - __nfp::buildPolygon(edgelist, rsh, top_nfp); - - return Result(rsh, top_nfp); -} - // Specializable NFP implementation class. Specialize it if you have a faster // or better NFP implementation template @@ -793,8 +339,7 @@ inline NfpResult noFitPolygon(const RawShape& sh, return nfps(sh, other); } -} - -} +} // namespace nfp +} // namespace libnest2d #endif // GEOMETRIES_NOFITPOLYGON_HPP diff --git a/src/libnest2d/include/libnest2d/placers/bottomleftplacer.hpp b/src/libnest2d/include/libnest2d/placers/bottomleftplacer.hpp index a067194dc..b48466d1d 100644 --- a/src/libnest2d/include/libnest2d/placers/bottomleftplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/bottomleftplacer.hpp @@ -375,7 +375,7 @@ protected: sl::addVertex(rsh, item.vertex(static_cast(i))); }; - auto addOthers = [&addOthers_, &reverseAddOthers_]() { + auto addOthers = [&]() { if constexpr (!is_clockwise()) addOthers_(); else @@ -415,7 +415,6 @@ protected: }; -} -} +}} // namespace libnest2d::placers #endif //BOTTOMLEFT_HPP From 9a7e024f780c8e5ada3008f3ce6070a2fc219fb4 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 8 Jun 2022 12:25:01 +0200 Subject: [PATCH 031/131] Update wxWidgets to 3.1.7 added handling for nanosvg with cmake --- deps/CMakeLists.txt | 1 + deps/NanoSVG/NanoSVG.cmake | 4 + deps/wxWidgets/wxWidgets.cmake | 14 +- src/CMakeLists.txt | 5 +- src/nanosvg/README-prusa.txt | 1 - src/nanosvg/nanosvg.h | 2979 ------------------------------- src/nanosvg/nanosvgrast.h | 1452 --------------- src/slic3r/CMakeLists.txt | 4 +- src/slic3r/GUI/BitmapCache.cpp | 6 +- src/slic3r/GUI/GLTexture.cpp | 4 +- src/slic3r/GUI/ImGuiWrapper.cpp | 5 +- 11 files changed, 24 insertions(+), 4451 deletions(-) create mode 100644 deps/NanoSVG/NanoSVG.cmake delete mode 100644 src/nanosvg/README-prusa.txt delete mode 100644 src/nanosvg/nanosvg.h delete mode 100644 src/nanosvg/nanosvgrast.h diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index d129ff1c2..eb0c420fa 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -188,6 +188,7 @@ endif () include(JPEG/JPEG.cmake) include(TIFF/TIFF.cmake) +include(NanoSVG/NanoSVG.cmake) include(wxWidgets/wxWidgets.cmake) set(_dep_list diff --git a/deps/NanoSVG/NanoSVG.cmake b/deps/NanoSVG/NanoSVG.cmake new file mode 100644 index 000000000..9623d3226 --- /dev/null +++ b/deps/NanoSVG/NanoSVG.cmake @@ -0,0 +1,4 @@ +prusaslicer_add_cmake_project(NanoSVG + URL https://github.com/memononen/nanosvg/archive/4c8f0139b62c6e7faa3b67ce1fbe6e63590ed148.zip + URL_HASH SHA256=584e084af1a75bf633f79753ce2f6f6ec8686002ca27f35f1037c25675fecfb6 +) \ No newline at end of file diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index bf5fd6289..4a0875d62 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,5 +1,3 @@ -set(_wx_git_tag v3.1.4-patched) - set(_wx_toolkit "") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(_gtk_ver 2) @@ -15,11 +13,9 @@ if (UNIX AND NOT APPLE) # wxWidgets will not use char as the underlying type for endif() prusaslicer_add_cmake_project(wxWidgets - # GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets" - # GIT_TAG tm_cross_compile #${_wx_git_tag} - URL https://github.com/prusa3d/wxWidgets/archive/489f6118256853cf5b299d595868641938566cdb.zip - URL_HASH SHA256=5b22d465377cedd8044bba69bea958b248953fd3628c1de4913a84d4e6f6175b - DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG + URL https://github.com/prusa3d/wxWidgets/archive/5412ac15586da3ecb6952fcc875d2a23366c998f.zip + URL_HASH SHA256=85a6e13152289fbf1ea51f221fbe1452e7914bbaa665b89536780810e93948a6 + DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG dep_NanoSVG CMAKE_ARGS -DwxBUILD_PRECOMP=ON ${_wx_toolkit} @@ -32,7 +28,9 @@ prusaslicer_add_cmake_project(wxWidgets -DwxUSE_OPENGL=ON -DwxUSE_LIBPNG=sys -DwxUSE_ZLIB=sys - -DwxUSE_REGEX=builtin + -DwxUSE_NANOSVG=sys + -DwxUSE_NANOSVG_EXTERNAL=ON + -DwxUSE_REGEX=OFF -DwxUSE_LIBXPM=builtin -DwxUSE_LIBJPEG=sys -DwxUSE_LIBTIFF=sys diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 801760b8c..8a093f639 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -105,7 +105,10 @@ if (SLIC3R_GUI) # wrong libs for opengl in the link line and it does not link to it by himself. # libslic3r_gui will link to opengl anyway, so lets override wx list(FILTER wxWidgets_LIBRARIES EXCLUDE REGEX OpenGL) - + + if (UNIX AND NOT APPLE) + list(APPEND wxWidgets_LIBRARIES X11 wayland-client wayland-egl EGL) + endif () # list(REMOVE_ITEM wxWidgets_LIBRARIES oleacc) message(STATUS "wx libs: ${wxWidgets_LIBRARIES}") diff --git a/src/nanosvg/README-prusa.txt b/src/nanosvg/README-prusa.txt deleted file mode 100644 index 8388aa8ef..000000000 --- a/src/nanosvg/README-prusa.txt +++ /dev/null @@ -1 +0,0 @@ -Upstream source: https://github.com/memononen/nanosvg/tree/c1f6e209c16b18b46aa9f45d7e619acf42c29726 \ No newline at end of file diff --git a/src/nanosvg/nanosvg.h b/src/nanosvg/nanosvg.h deleted file mode 100644 index 57bcb7c2c..000000000 --- a/src/nanosvg/nanosvg.h +++ /dev/null @@ -1,2979 +0,0 @@ -/* - * Copyright (c) 2013-14 Mikko Mononen memon@inside.org - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - * - * The SVG parser is based on Anti-Grain Geometry 2.4 SVG example - * Copyright (C) 2002-2004 Maxim Shemanarev (McSeem) (http://www.antigrain.com/) - * - * Arc calculation code based on canvg (https://code.google.com/p/canvg/) - * - * Bounding box calculation based on http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html - * - */ - -#ifndef NANOSVG_H -#define NANOSVG_H - -#ifndef NANOSVG_CPLUSPLUS -#ifdef __cplusplus -extern "C" { -#endif -#endif - -// NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes. -// -// The library suits well for anything from rendering scalable icons in your editor application to prototyping a game. -// -// NanoSVG supports a wide range of SVG features, but something may be missing, feel free to create a pull request! -// -// The shapes in the SVG images are transformed by the viewBox and converted to specified units. -// That is, you should get the same looking data as your designed in your favorite app. -// -// NanoSVG can return the paths in few different units. For example if you want to render an image, you may choose -// to get the paths in pixels, or if you are feeding the data into a CNC-cutter, you may want to use millimeters. -// -// The units passed to NanoSVG should be one of: 'px', 'pt', 'pc' 'mm', 'cm', or 'in'. -// DPI (dots-per-inch) controls how the unit conversion is done. -// -// If you don't know or care about the units stuff, "px" and 96 should get you going. - - -/* Example Usage: - // Load SVG - NSVGimage* image; - image = nsvgParseFromFile("test.svg", "px", 96); - printf("size: %f x %f\n", image->width, image->height); - // Use... - for (NSVGshape *shape = image->shapes; shape != NULL; shape = shape->next) { - for (NSVGpath *path = shape->paths; path != NULL; path = path->next) { - for (int i = 0; i < path->npts-1; i += 3) { - float* p = &path->pts[i*2]; - drawCubicBez(p[0],p[1], p[2],p[3], p[4],p[5], p[6],p[7]); - } - } - } - // Delete - nsvgDelete(image); -*/ - -enum NSVGpaintType { - NSVG_PAINT_NONE = 0, - NSVG_PAINT_COLOR = 1, - NSVG_PAINT_LINEAR_GRADIENT = 2, - NSVG_PAINT_RADIAL_GRADIENT = 3 -}; - -enum NSVGspreadType { - NSVG_SPREAD_PAD = 0, - NSVG_SPREAD_REFLECT = 1, - NSVG_SPREAD_REPEAT = 2 -}; - -enum NSVGlineJoin { - NSVG_JOIN_MITER = 0, - NSVG_JOIN_ROUND = 1, - NSVG_JOIN_BEVEL = 2 -}; - -enum NSVGlineCap { - NSVG_CAP_BUTT = 0, - NSVG_CAP_ROUND = 1, - NSVG_CAP_SQUARE = 2 -}; - -enum NSVGfillRule { - NSVG_FILLRULE_NONZERO = 0, - NSVG_FILLRULE_EVENODD = 1 -}; - -enum NSVGflags { - NSVG_FLAGS_VISIBLE = 0x01 -}; - -typedef struct NSVGgradientStop { - unsigned int color; - float offset; -} NSVGgradientStop; - -typedef struct NSVGgradient { - float xform[6]; - char spread; - float fx, fy; - int nstops; - NSVGgradientStop stops[1]; -} NSVGgradient; - -typedef struct NSVGpaint { - char type; - union { - unsigned int color; - NSVGgradient* gradient; - }; -} NSVGpaint; - -typedef struct NSVGpath -{ - float* pts; // Cubic bezier points: x0,y0, [cpx1,cpx1,cpx2,cpy2,x1,y1], ... - int npts; // Total number of bezier points. - char closed; // Flag indicating if shapes should be treated as closed. - float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. - struct NSVGpath* next; // Pointer to next path, or NULL if last element. -} NSVGpath; - -typedef struct NSVGshape -{ - char id[64]; // Optional 'id' attr of the shape or its group - NSVGpaint fill; // Fill paint - NSVGpaint stroke; // Stroke paint - float opacity; // Opacity of the shape. - float strokeWidth; // Stroke width (scaled). - float strokeDashOffset; // Stroke dash offset (scaled). - float strokeDashArray[8]; // Stroke dash array (scaled). - char strokeDashCount; // Number of dash values in dash array. - char strokeLineJoin; // Stroke join type. - char strokeLineCap; // Stroke cap type. - float miterLimit; // Miter limit - char fillRule; // Fill rule, see NSVGfillRule. - unsigned char flags; // Logical or of NSVG_FLAGS_* flags - float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. - NSVGpath* paths; // Linked list of paths in the image. - struct NSVGshape* next; // Pointer to next shape, or NULL if last element. -} NSVGshape; - -typedef struct NSVGimage -{ - float width; // Width of the image. - float height; // Height of the image. - NSVGshape* shapes; // Linked list of shapes in the image. -} NSVGimage; - -// Parses SVG file from a file, returns SVG image as paths. -NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi); - -// Parses SVG file from a null terminated string, returns SVG image as paths. -// Important note: changes the string. -NSVGimage* nsvgParse(char* input, const char* units, float dpi); - -// Duplicates a path. -NSVGpath* nsvgDuplicatePath(NSVGpath* p); - -// Deletes an image. -void nsvgDelete(NSVGimage* image); - -#ifndef NANOSVG_CPLUSPLUS -#ifdef __cplusplus -} -#endif -#endif - -#endif // NANOSVG_H - -#ifdef NANOSVG_IMPLEMENTATION - -#include -#include -#include - -#include - -#define NSVG_PI (3.14159265358979323846264338327f) -#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs. - -#define NSVG_ALIGN_MIN 0 -#define NSVG_ALIGN_MID 1 -#define NSVG_ALIGN_MAX 2 -#define NSVG_ALIGN_NONE 0 -#define NSVG_ALIGN_MEET 1 -#define NSVG_ALIGN_SLICE 2 - -#define NSVG_NOTUSED(v) do { (void)(1 ? (void)0 : ( (void)(v) ) ); } while(0) -#define NSVG_RGB(r, g, b) (((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16)) - -#ifdef _MSC_VER - #pragma warning (disable: 4996) // Switch off security warnings - #pragma warning (disable: 4100) // Switch off unreferenced formal parameter warnings - #ifdef __cplusplus - #define NSVG_INLINE inline - #else - #define NSVG_INLINE - #endif -#else - #define NSVG_INLINE inline -#endif - - -static int nsvg__isspace(char c) -{ - return strchr(" \t\n\v\f\r", c) != 0; -} - -static int nsvg__isdigit(char c) -{ - return c >= '0' && c <= '9'; -} - -static int nsvg__isnum(char c) -{ - return strchr("0123456789+-.eE", c) != 0; -} - -static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; } -static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; } - - -// Simple XML parser - -#define NSVG_XML_TAG 1 -#define NSVG_XML_CONTENT 2 -#define NSVG_XML_MAX_ATTRIBS 256 - -static void nsvg__parseContent(char* s, - void (*contentCb)(void* ud, const char* s), - void* ud) -{ - // Trim start white spaces - while (*s && nsvg__isspace(*s)) s++; - if (!*s) return; - - if (contentCb) - (*contentCb)(ud, s); -} - -static void nsvg__parseElement(char* s, - void (*startelCb)(void* ud, const char* el, const char** attr), - void (*endelCb)(void* ud, const char* el), - void* ud) -{ - const char* attr[NSVG_XML_MAX_ATTRIBS]; - int nattr = 0; - char* name; - int start = 0; - int end = 0; - char quote; - - // Skip white space after the '<' - while (*s && nsvg__isspace(*s)) s++; - - // Check if the tag is end tag - if (*s == '/') { - s++; - end = 1; - } else { - start = 1; - } - - // Skip comments, data and preprocessor stuff. - if (!*s || *s == '?' || *s == '!') - return; - - // Get tag name - name = s; - while (*s && !nsvg__isspace(*s)) s++; - if (*s) { *s++ = '\0'; } - - // Get attribs - while (!end && *s && nattr < NSVG_XML_MAX_ATTRIBS-3) { - char* name = NULL; - char* value = NULL; - - // Skip white space before the attrib name - while (*s && nsvg__isspace(*s)) s++; - if (!*s) break; - if (*s == '/') { - end = 1; - break; - } - name = s; - // Find end of the attrib name. - while (*s && !nsvg__isspace(*s) && *s != '=') s++; - if (*s) { *s++ = '\0'; } - // Skip until the beginning of the value. - while (*s && *s != '\"' && *s != '\'') s++; - if (!*s) break; - quote = *s; - s++; - // Store value and find the end of it. - value = s; - while (*s && *s != quote) s++; - if (*s) { *s++ = '\0'; } - - // Store only well formed attributes - if (name && value) { - attr[nattr++] = name; - attr[nattr++] = value; - } - } - - // List terminator - attr[nattr++] = 0; - attr[nattr++] = 0; - - // Call callbacks. - if (start && startelCb) - (*startelCb)(ud, name, attr); - if (end && endelCb) - (*endelCb)(ud, name); -} - -int nsvg__parseXML(char* input, - void (*startelCb)(void* ud, const char* el, const char** attr), - void (*endelCb)(void* ud, const char* el), - void (*contentCb)(void* ud, const char* s), - void* ud) -{ - char* s = input; - char* mark = s; - int state = NSVG_XML_CONTENT; - while (*s) { - if (*s == '<' && state == NSVG_XML_CONTENT) { - // Start of a tag - *s++ = '\0'; - nsvg__parseContent(mark, contentCb, ud); - mark = s; - state = NSVG_XML_TAG; - } else if (*s == '>' && state == NSVG_XML_TAG) { - // Start of a content or new tag. - *s++ = '\0'; - nsvg__parseElement(mark, startelCb, endelCb, ud); - mark = s; - state = NSVG_XML_CONTENT; - } else { - s++; - } - } - - return 1; -} - - -/* Simple SVG parser. */ - -#define NSVG_MAX_ATTR 128 - -enum NSVGgradientUnits { - NSVG_USER_SPACE = 0, - NSVG_OBJECT_SPACE = 1 -}; - -#define NSVG_MAX_DASHES 8 - -enum NSVGunits { - NSVG_UNITS_USER, - NSVG_UNITS_PX, - NSVG_UNITS_PT, - NSVG_UNITS_PC, - NSVG_UNITS_MM, - NSVG_UNITS_CM, - NSVG_UNITS_IN, - NSVG_UNITS_PERCENT, - NSVG_UNITS_EM, - NSVG_UNITS_EX -}; - -typedef struct NSVGcoordinate { - float value; - int units; -} NSVGcoordinate; - -typedef struct NSVGlinearData { - NSVGcoordinate x1, y1, x2, y2; -} NSVGlinearData; - -typedef struct NSVGradialData { - NSVGcoordinate cx, cy, r, fx, fy; -} NSVGradialData; - -typedef struct NSVGgradientData -{ - char id[64]; - char ref[64]; - char type; - union { - NSVGlinearData linear; - NSVGradialData radial; - }; - char spread; - char units; - float xform[6]; - int nstops; - NSVGgradientStop* stops; - struct NSVGgradientData* next; -} NSVGgradientData; - -typedef struct NSVGattrib -{ - char id[64]; - float xform[6]; - unsigned int fillColor; - unsigned int strokeColor; - float opacity; - float fillOpacity; - float strokeOpacity; - char fillGradient[64]; - char strokeGradient[64]; - float strokeWidth; - float strokeDashOffset; - float strokeDashArray[NSVG_MAX_DASHES]; - int strokeDashCount; - char strokeLineJoin; - char strokeLineCap; - float miterLimit; - char fillRule; - float fontSize; - unsigned int stopColor; - float stopOpacity; - float stopOffset; - char hasFill; - char hasStroke; - char visible; -} NSVGattrib; - -typedef struct NSVGparser -{ - NSVGattrib attr[NSVG_MAX_ATTR]; - int attrHead; - float* pts; - int npts; - int cpts; - NSVGpath* plist; - NSVGimage* image; - NSVGgradientData* gradients; - NSVGshape* shapesTail; - float viewMinx, viewMiny, viewWidth, viewHeight; - int alignX, alignY, alignType; - float dpi; - char pathFlag; - char defsFlag; -} NSVGparser; - -static void nsvg__xformIdentity(float* t) -{ - t[0] = 1.0f; t[1] = 0.0f; - t[2] = 0.0f; t[3] = 1.0f; - t[4] = 0.0f; t[5] = 0.0f; -} - -static void nsvg__xformSetTranslation(float* t, float tx, float ty) -{ - t[0] = 1.0f; t[1] = 0.0f; - t[2] = 0.0f; t[3] = 1.0f; - t[4] = tx; t[5] = ty; -} - -static void nsvg__xformSetScale(float* t, float sx, float sy) -{ - t[0] = sx; t[1] = 0.0f; - t[2] = 0.0f; t[3] = sy; - t[4] = 0.0f; t[5] = 0.0f; -} - -static void nsvg__xformSetSkewX(float* t, float a) -{ - t[0] = 1.0f; t[1] = 0.0f; - t[2] = tanf(a); t[3] = 1.0f; - t[4] = 0.0f; t[5] = 0.0f; -} - -static void nsvg__xformSetSkewY(float* t, float a) -{ - t[0] = 1.0f; t[1] = tanf(a); - t[2] = 0.0f; t[3] = 1.0f; - t[4] = 0.0f; t[5] = 0.0f; -} - -static void nsvg__xformSetRotation(float* t, float a) -{ - float cs = cosf(a), sn = sinf(a); - t[0] = cs; t[1] = sn; - t[2] = -sn; t[3] = cs; - t[4] = 0.0f; t[5] = 0.0f; -} - -static void nsvg__xformMultiply(float* t, float* s) -{ - float t0 = t[0] * s[0] + t[1] * s[2]; - float t2 = t[2] * s[0] + t[3] * s[2]; - float t4 = t[4] * s[0] + t[5] * s[2] + s[4]; - t[1] = t[0] * s[1] + t[1] * s[3]; - t[3] = t[2] * s[1] + t[3] * s[3]; - t[5] = t[4] * s[1] + t[5] * s[3] + s[5]; - t[0] = t0; - t[2] = t2; - t[4] = t4; -} - -static void nsvg__xformInverse(float* inv, float* t) -{ - double invdet, det = (double)t[0] * t[3] - (double)t[2] * t[1]; - if (det > -1e-6 && det < 1e-6) { - nsvg__xformIdentity(t); - return; - } - invdet = 1.0 / det; - inv[0] = (float)(t[3] * invdet); - inv[2] = (float)(-t[2] * invdet); - inv[4] = (float)(((double)t[2] * t[5] - (double)t[3] * t[4]) * invdet); - inv[1] = (float)(-t[1] * invdet); - inv[3] = (float)(t[0] * invdet); - inv[5] = (float)(((double)t[1] * t[4] - (double)t[0] * t[5]) * invdet); -} - -static void nsvg__xformPremultiply(float* t, float* s) -{ - float s2[6]; - memcpy(s2, s, sizeof(float)*6); - nsvg__xformMultiply(s2, t); - memcpy(t, s2, sizeof(float)*6); -} - -static void nsvg__xformPoint(float* dx, float* dy, float x, float y, float* t) -{ - *dx = x*t[0] + y*t[2] + t[4]; - *dy = x*t[1] + y*t[3] + t[5]; -} - -static void nsvg__xformVec(float* dx, float* dy, float x, float y, float* t) -{ - *dx = x*t[0] + y*t[2]; - *dy = x*t[1] + y*t[3]; -} - -#define NSVG_EPSILON (1e-12) - -static int nsvg__ptInBounds(float* pt, float* bounds) -{ - return pt[0] >= bounds[0] && pt[0] <= bounds[2] && pt[1] >= bounds[1] && pt[1] <= bounds[3]; -} - - -static double nsvg__evalBezier(double t, double p0, double p1, double p2, double p3) -{ - double it = 1.0-t; - return it*it*it*p0 + 3.0*it*it*t*p1 + 3.0*it*t*t*p2 + t*t*t*p3; -} - -static void nsvg__curveBounds(float* bounds, float* curve) -{ - int i, j, count; - double roots[2], a, b, c, b2ac, t, v; - float* v0 = &curve[0]; - float* v1 = &curve[2]; - float* v2 = &curve[4]; - float* v3 = &curve[6]; - - // Start the bounding box by end points - bounds[0] = nsvg__minf(v0[0], v3[0]); - bounds[1] = nsvg__minf(v0[1], v3[1]); - bounds[2] = nsvg__maxf(v0[0], v3[0]); - bounds[3] = nsvg__maxf(v0[1], v3[1]); - - // Bezier curve fits inside the convex hull of it's control points. - // If control points are inside the bounds, we're done. - if (nsvg__ptInBounds(v1, bounds) && nsvg__ptInBounds(v2, bounds)) - return; - - // Add bezier curve inflection points in X and Y. - for (i = 0; i < 2; i++) { - a = -3.0 * v0[i] + 9.0 * v1[i] - 9.0 * v2[i] + 3.0 * v3[i]; - b = 6.0 * v0[i] - 12.0 * v1[i] + 6.0 * v2[i]; - c = 3.0 * v1[i] - 3.0 * v0[i]; - count = 0; - if (fabs(a) < NSVG_EPSILON) { - if (fabs(b) > NSVG_EPSILON) { - t = -c / b; - if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) - roots[count++] = t; - } - } else { - b2ac = b*b - 4.0*c*a; - if (b2ac > NSVG_EPSILON) { - t = (-b + sqrt(b2ac)) / (2.0 * a); - if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) - roots[count++] = t; - t = (-b - sqrt(b2ac)) / (2.0 * a); - if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON) - roots[count++] = t; - } - } - for (j = 0; j < count; j++) { - v = nsvg__evalBezier(roots[j], v0[i], v1[i], v2[i], v3[i]); - bounds[0+i] = nsvg__minf(bounds[0+i], (float)v); - bounds[2+i] = nsvg__maxf(bounds[2+i], (float)v); - } - } -} - -static NSVGparser* nsvg__createParser() -{ - NSVGparser* p; - p = (NSVGparser*)malloc(sizeof(NSVGparser)); - if (p == NULL) goto error; - memset(p, 0, sizeof(NSVGparser)); - - p->image = (NSVGimage*)malloc(sizeof(NSVGimage)); - if (p->image == NULL) goto error; - memset(p->image, 0, sizeof(NSVGimage)); - - // Init style - nsvg__xformIdentity(p->attr[0].xform); - memset(p->attr[0].id, 0, sizeof p->attr[0].id); - p->attr[0].fillColor = NSVG_RGB(0,0,0); - p->attr[0].strokeColor = NSVG_RGB(0,0,0); - p->attr[0].opacity = 1; - p->attr[0].fillOpacity = 1; - p->attr[0].strokeOpacity = 1; - p->attr[0].stopOpacity = 1; - p->attr[0].strokeWidth = 1; - p->attr[0].strokeLineJoin = NSVG_JOIN_MITER; - p->attr[0].strokeLineCap = NSVG_CAP_BUTT; - p->attr[0].miterLimit = 4; - p->attr[0].fillRule = NSVG_FILLRULE_NONZERO; - p->attr[0].hasFill = 1; - p->attr[0].visible = 1; - - return p; - -error: - if (p) { - if (p->image) free(p->image); - free(p); - } - return NULL; -} - -static void nsvg__deletePaths(NSVGpath* path) -{ - while (path) { - NSVGpath *next = path->next; - if (path->pts != NULL) - free(path->pts); - free(path); - path = next; - } -} - -static void nsvg__deletePaint(NSVGpaint* paint) -{ - if (paint->type == NSVG_PAINT_LINEAR_GRADIENT || paint->type == NSVG_PAINT_RADIAL_GRADIENT) - free(paint->gradient); -} - -static void nsvg__deleteGradientData(NSVGgradientData* grad) -{ - NSVGgradientData* next; - while (grad != NULL) { - next = grad->next; - free(grad->stops); - free(grad); - grad = next; - } -} - -static void nsvg__deleteParser(NSVGparser* p) -{ - if (p != NULL) { - nsvg__deletePaths(p->plist); - nsvg__deleteGradientData(p->gradients); - nsvgDelete(p->image); - free(p->pts); - free(p); - } -} - -static void nsvg__resetPath(NSVGparser* p) -{ - p->npts = 0; -} - -static void nsvg__addPoint(NSVGparser* p, float x, float y) -{ - if (p->npts+1 > p->cpts) { - p->cpts = p->cpts ? p->cpts*2 : 8; - p->pts = (float*)realloc(p->pts, p->cpts*2*sizeof(float)); - if (!p->pts) return; - } - p->pts[p->npts*2+0] = x; - p->pts[p->npts*2+1] = y; - p->npts++; -} - -static void nsvg__moveTo(NSVGparser* p, float x, float y) -{ - if (p->npts > 0) { - p->pts[(p->npts-1)*2+0] = x; - p->pts[(p->npts-1)*2+1] = y; - } else { - nsvg__addPoint(p, x, y); - } -} - -static void nsvg__lineTo(NSVGparser* p, float x, float y) -{ - float px,py, dx,dy; - if (p->npts > 0) { - px = p->pts[(p->npts-1)*2+0]; - py = p->pts[(p->npts-1)*2+1]; - dx = x - px; - dy = y - py; - nsvg__addPoint(p, px + dx/3.0f, py + dy/3.0f); - nsvg__addPoint(p, x - dx/3.0f, y - dy/3.0f); - nsvg__addPoint(p, x, y); - } -} - -static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y) -{ - nsvg__addPoint(p, cpx1, cpy1); - nsvg__addPoint(p, cpx2, cpy2); - nsvg__addPoint(p, x, y); -} - -static NSVGattrib* nsvg__getAttr(NSVGparser* p) -{ - return &p->attr[p->attrHead]; -} - -static void nsvg__pushAttr(NSVGparser* p) -{ - if (p->attrHead < NSVG_MAX_ATTR-1) { - p->attrHead++; - memcpy(&p->attr[p->attrHead], &p->attr[p->attrHead-1], sizeof(NSVGattrib)); - } -} - -static void nsvg__popAttr(NSVGparser* p) -{ - if (p->attrHead > 0) - p->attrHead--; -} - -static float nsvg__actualOrigX(NSVGparser* p) -{ - return p->viewMinx; -} - -static float nsvg__actualOrigY(NSVGparser* p) -{ - return p->viewMiny; -} - -static float nsvg__actualWidth(NSVGparser* p) -{ - return p->viewWidth; -} - -static float nsvg__actualHeight(NSVGparser* p) -{ - return p->viewHeight; -} - -static float nsvg__actualLength(NSVGparser* p) -{ - float w = nsvg__actualWidth(p), h = nsvg__actualHeight(p); - return sqrtf(w*w + h*h) / sqrtf(2.0f); -} - -static float nsvg__convertToPixels(NSVGparser* p, NSVGcoordinate c, float orig, float length) -{ - NSVGattrib* attr = nsvg__getAttr(p); - switch (c.units) { - case NSVG_UNITS_USER: return c.value; - case NSVG_UNITS_PX: return c.value; - case NSVG_UNITS_PT: return c.value / 72.0f * p->dpi; - case NSVG_UNITS_PC: return c.value / 6.0f * p->dpi; - case NSVG_UNITS_MM: return c.value / 25.4f * p->dpi; - case NSVG_UNITS_CM: return c.value / 2.54f * p->dpi; - case NSVG_UNITS_IN: return c.value * p->dpi; - case NSVG_UNITS_EM: return c.value * attr->fontSize; - case NSVG_UNITS_EX: return c.value * attr->fontSize * 0.52f; // x-height of Helvetica. - case NSVG_UNITS_PERCENT: return orig + c.value / 100.0f * length; - default: return c.value; - } - return c.value; -} - -static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id) -{ - NSVGgradientData* grad = p->gradients; - while (grad) { - if (strcmp(grad->id, id) == 0) - return grad; - grad = grad->next; - } - return NULL; -} - -static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, char* paintType) -{ - NSVGattrib* attr = nsvg__getAttr(p); - NSVGgradientData* data = NULL; - NSVGgradientData* ref = NULL; - NSVGgradientStop* stops = NULL; - NSVGgradient* grad; - float ox, oy, sw, sh, sl; - int nstops = 0; - - data = nsvg__findGradientData(p, id); - if (data == NULL) return NULL; - - // TODO: use ref to fill in all unset values too. - ref = data; - while (ref != NULL) { - if (stops == NULL && ref->stops != NULL) { - stops = ref->stops; - nstops = ref->nstops; - break; - } - ref = nsvg__findGradientData(p, ref->ref); - } - if (stops == NULL) return NULL; - - grad = (NSVGgradient*)malloc(sizeof(NSVGgradient) + sizeof(NSVGgradientStop)*(nstops-1)); - if (grad == NULL) return NULL; - - // The shape width and height. - if (data->units == NSVG_OBJECT_SPACE) { - ox = localBounds[0]; - oy = localBounds[1]; - sw = localBounds[2] - localBounds[0]; - sh = localBounds[3] - localBounds[1]; - } else { - ox = nsvg__actualOrigX(p); - oy = nsvg__actualOrigY(p); - sw = nsvg__actualWidth(p); - sh = nsvg__actualHeight(p); - } - sl = sqrtf(sw*sw + sh*sh) / sqrtf(2.0f); - - if (data->type == NSVG_PAINT_LINEAR_GRADIENT) { - float x1, y1, x2, y2, dx, dy; - x1 = nsvg__convertToPixels(p, data->linear.x1, ox, sw); - y1 = nsvg__convertToPixels(p, data->linear.y1, oy, sh); - x2 = nsvg__convertToPixels(p, data->linear.x2, ox, sw); - y2 = nsvg__convertToPixels(p, data->linear.y2, oy, sh); - // Calculate transform aligned to the line - dx = x2 - x1; - dy = y2 - y1; - grad->xform[0] = dy; grad->xform[1] = -dx; - grad->xform[2] = dx; grad->xform[3] = dy; - grad->xform[4] = x1; grad->xform[5] = y1; - } else { - float cx, cy, fx, fy, r; - cx = nsvg__convertToPixels(p, data->radial.cx, ox, sw); - cy = nsvg__convertToPixels(p, data->radial.cy, oy, sh); - fx = nsvg__convertToPixels(p, data->radial.fx, ox, sw); - fy = nsvg__convertToPixels(p, data->radial.fy, oy, sh); - r = nsvg__convertToPixels(p, data->radial.r, 0, sl); - // Calculate transform aligned to the circle - grad->xform[0] = r; grad->xform[1] = 0; - grad->xform[2] = 0; grad->xform[3] = r; - grad->xform[4] = cx; grad->xform[5] = cy; - grad->fx = fx / r; - grad->fy = fy / r; - } - - nsvg__xformMultiply(grad->xform, data->xform); - nsvg__xformMultiply(grad->xform, attr->xform); - - grad->spread = data->spread; - memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop)); - grad->nstops = nstops; - - *paintType = data->type; - - return grad; -} - -static float nsvg__getAverageScale(float* t) -{ - float sx = sqrtf(t[0]*t[0] + t[2]*t[2]); - float sy = sqrtf(t[1]*t[1] + t[3]*t[3]); - return (sx + sy) * 0.5f; -} - -static void nsvg__getLocalBounds(float* bounds, NSVGshape *shape, float* xform) -{ - NSVGpath* path; - float curve[4*2], curveBounds[4]; - int i, first = 1; - for (path = shape->paths; path != NULL; path = path->next) { - nsvg__xformPoint(&curve[0], &curve[1], path->pts[0], path->pts[1], xform); - for (i = 0; i < path->npts-1; i += 3) { - nsvg__xformPoint(&curve[2], &curve[3], path->pts[(i+1)*2], path->pts[(i+1)*2+1], xform); - nsvg__xformPoint(&curve[4], &curve[5], path->pts[(i+2)*2], path->pts[(i+2)*2+1], xform); - nsvg__xformPoint(&curve[6], &curve[7], path->pts[(i+3)*2], path->pts[(i+3)*2+1], xform); - nsvg__curveBounds(curveBounds, curve); - if (first) { - bounds[0] = curveBounds[0]; - bounds[1] = curveBounds[1]; - bounds[2] = curveBounds[2]; - bounds[3] = curveBounds[3]; - first = 0; - } else { - bounds[0] = nsvg__minf(bounds[0], curveBounds[0]); - bounds[1] = nsvg__minf(bounds[1], curveBounds[1]); - bounds[2] = nsvg__maxf(bounds[2], curveBounds[2]); - bounds[3] = nsvg__maxf(bounds[3], curveBounds[3]); - } - curve[0] = curve[6]; - curve[1] = curve[7]; - } - } -} - -static void nsvg__addShape(NSVGparser* p) -{ - NSVGattrib* attr = nsvg__getAttr(p); - float scale = 1.0f; - NSVGshape* shape; - NSVGpath* path; - int i; - - if (p->plist == NULL) - return; - - shape = (NSVGshape*)malloc(sizeof(NSVGshape)); - if (shape == NULL) goto error; - memset(shape, 0, sizeof(NSVGshape)); - - memcpy(shape->id, attr->id, sizeof shape->id); - scale = nsvg__getAverageScale(attr->xform); - shape->strokeWidth = attr->strokeWidth * scale; - shape->strokeDashOffset = attr->strokeDashOffset * scale; - shape->strokeDashCount = (char)attr->strokeDashCount; - for (i = 0; i < attr->strokeDashCount; i++) - shape->strokeDashArray[i] = attr->strokeDashArray[i] * scale; - shape->strokeLineJoin = attr->strokeLineJoin; - shape->strokeLineCap = attr->strokeLineCap; - shape->miterLimit = attr->miterLimit; - shape->fillRule = attr->fillRule; - shape->opacity = attr->opacity; - - shape->paths = p->plist; - p->plist = NULL; - - // Calculate shape bounds - shape->bounds[0] = shape->paths->bounds[0]; - shape->bounds[1] = shape->paths->bounds[1]; - shape->bounds[2] = shape->paths->bounds[2]; - shape->bounds[3] = shape->paths->bounds[3]; - for (path = shape->paths->next; path != NULL; path = path->next) { - shape->bounds[0] = nsvg__minf(shape->bounds[0], path->bounds[0]); - shape->bounds[1] = nsvg__minf(shape->bounds[1], path->bounds[1]); - shape->bounds[2] = nsvg__maxf(shape->bounds[2], path->bounds[2]); - shape->bounds[3] = nsvg__maxf(shape->bounds[3], path->bounds[3]); - } - - // Set fill - if (attr->hasFill == 0) { - shape->fill.type = NSVG_PAINT_NONE; - } else if (attr->hasFill == 1) { - shape->fill.type = NSVG_PAINT_COLOR; - shape->fill.color = attr->fillColor; - shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24; - } else if (attr->hasFill == 2) { - float inv[6], localBounds[4]; - nsvg__xformInverse(inv, attr->xform); - nsvg__getLocalBounds(localBounds, shape, inv); - shape->fill.gradient = nsvg__createGradient(p, attr->fillGradient, localBounds, &shape->fill.type); - if (shape->fill.gradient == NULL) { - shape->fill.type = NSVG_PAINT_NONE; - } - } - - // Set stroke - if (attr->hasStroke == 0) { - shape->stroke.type = NSVG_PAINT_NONE; - } else if (attr->hasStroke == 1) { - shape->stroke.type = NSVG_PAINT_COLOR; - shape->stroke.color = attr->strokeColor; - shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24; - } else if (attr->hasStroke == 2) { - float inv[6], localBounds[4]; - nsvg__xformInverse(inv, attr->xform); - nsvg__getLocalBounds(localBounds, shape, inv); - shape->stroke.gradient = nsvg__createGradient(p, attr->strokeGradient, localBounds, &shape->stroke.type); - if (shape->stroke.gradient == NULL) - shape->stroke.type = NSVG_PAINT_NONE; - } - - // Set flags - shape->flags = (attr->visible ? NSVG_FLAGS_VISIBLE : 0x00); - - // Add to tail - if (p->image->shapes == NULL) - p->image->shapes = shape; - else - p->shapesTail->next = shape; - p->shapesTail = shape; - - return; - -error: - if (shape) free(shape); -} - -static void nsvg__addPath(NSVGparser* p, char closed) -{ - NSVGattrib* attr = nsvg__getAttr(p); - NSVGpath* path = NULL; - float bounds[4]; - float* curve; - int i; - - if (p->npts < 4) - return; - - if (closed) - nsvg__lineTo(p, p->pts[0], p->pts[1]); - - path = (NSVGpath*)malloc(sizeof(NSVGpath)); - if (path == NULL) goto error; - memset(path, 0, sizeof(NSVGpath)); - - path->pts = (float*)malloc(p->npts*2*sizeof(float)); - if (path->pts == NULL) goto error; - path->closed = closed; - path->npts = p->npts; - - // Transform path. - for (i = 0; i < p->npts; ++i) - nsvg__xformPoint(&path->pts[i*2], &path->pts[i*2+1], p->pts[i*2], p->pts[i*2+1], attr->xform); - - // Find bounds - for (i = 0; i < path->npts-1; i += 3) { - curve = &path->pts[i*2]; - nsvg__curveBounds(bounds, curve); - if (i == 0) { - path->bounds[0] = bounds[0]; - path->bounds[1] = bounds[1]; - path->bounds[2] = bounds[2]; - path->bounds[3] = bounds[3]; - } else { - path->bounds[0] = nsvg__minf(path->bounds[0], bounds[0]); - path->bounds[1] = nsvg__minf(path->bounds[1], bounds[1]); - path->bounds[2] = nsvg__maxf(path->bounds[2], bounds[2]); - path->bounds[3] = nsvg__maxf(path->bounds[3], bounds[3]); - } - } - - path->next = p->plist; - p->plist = path; - - return; - -error: - if (path != NULL) { - if (path->pts != NULL) free(path->pts); - free(path); - } -} - -// We roll our own string to float because the std library one uses locale and messes things up. -static double nsvg__atof(const char* s) -{ - char* cur = (char*)s; - char* end = NULL; - double res = 0.0, sign = 1.0; - long long intPart = 0, fracPart = 0; - char hasIntPart = 0, hasFracPart = 0; - - // Parse optional sign - if (*cur == '+') { - cur++; - } else if (*cur == '-') { - sign = -1; - cur++; - } - - // Parse integer part - if (nsvg__isdigit(*cur)) { - // Parse digit sequence - intPart = (double)strtoll(cur, &end, 10); - if (cur != end) { - res = (double)intPart; - hasIntPart = 1; - cur = end; - } - } - - // Parse fractional part. - if (*cur == '.') { - cur++; // Skip '.' - if (nsvg__isdigit(*cur)) { - // Parse digit sequence - fracPart = strtoll(cur, &end, 10); - if (cur != end) { - res += (double)fracPart / pow(10.0, (double)(end - cur)); - hasFracPart = 1; - cur = end; - } - } - } - - // A valid number should have integer or fractional part. - if (!hasIntPart && !hasFracPart) - return 0.0; - - // Parse optional exponent - if (*cur == 'e' || *cur == 'E') { - int expPart = 0; - cur++; // skip 'E' - expPart = strtol(cur, &end, 10); // Parse digit sequence with sign - if (cur != end) { - res *= pow(10.0, (double)expPart); - } - } - - return res * sign; -} - - -static const char* nsvg__parseNumber(const char* s, char* it, const int size) -{ - const int last = size-1; - int i = 0; - - // sign - if (*s == '-' || *s == '+') { - if (i < last) it[i++] = *s; - s++; - } - // integer part - while (*s && nsvg__isdigit(*s)) { - if (i < last) it[i++] = *s; - s++; - } - if (*s == '.') { - // decimal point - if (i < last) it[i++] = *s; - s++; - // fraction part - while (*s && nsvg__isdigit(*s)) { - if (i < last) it[i++] = *s; - s++; - } - } - // exponent - if (*s == 'e' || *s == 'E') { - if (i < last) it[i++] = *s; - s++; - if (*s == '-' || *s == '+') { - if (i < last) it[i++] = *s; - s++; - } - while (*s && nsvg__isdigit(*s)) { - if (i < last) it[i++] = *s; - s++; - } - } - it[i] = '\0'; - - return s; -} - -static const char* nsvg__getNextPathItem(const char* s, char* it) -{ - it[0] = '\0'; - // Skip white spaces and commas - while (*s && (nsvg__isspace(*s) || *s == ',')) s++; - if (!*s) return s; - if (*s == '-' || *s == '+' || *s == '.' || nsvg__isdigit(*s)) { - s = nsvg__parseNumber(s, it, 64); - } else { - // Parse command - it[0] = *s++; - it[1] = '\0'; - return s; - } - - return s; -} - -static unsigned int nsvg__parseColorHex(const char* str) -{ - unsigned int c = 0, r = 0, g = 0, b = 0; - int n = 0; - str++; // skip # - // Calculate number of characters. - while(str[n] && !nsvg__isspace(str[n])) - n++; - if (n == 6) { - sscanf(str, "%x", &c); - } else if (n == 3) { - sscanf(str, "%x", &c); - c = (c&0xf) | ((c&0xf0) << 4) | ((c&0xf00) << 8); - c |= c<<4; - } - r = (c >> 16) & 0xff; - g = (c >> 8) & 0xff; - b = c & 0xff; - return NSVG_RGB(r,g,b); -} - -static unsigned int nsvg__parseColorRGB(const char* str) -{ - int r = -1, g = -1, b = -1; - char s1[32]="", s2[32]=""; - sscanf(str + 4, "%d%[%%, \t]%d%[%%, \t]%d", &r, s1, &g, s2, &b); - if (strchr(s1, '%')) { - return NSVG_RGB((r*255)/100,(g*255)/100,(b*255)/100); - } else { - return NSVG_RGB(r,g,b); - } -} - -typedef struct NSVGNamedColor { - const char* name; - unsigned int color; -} NSVGNamedColor; - -NSVGNamedColor nsvg__colors[] = { - - { "red", NSVG_RGB(255, 0, 0) }, - { "green", NSVG_RGB( 0, 128, 0) }, - { "blue", NSVG_RGB( 0, 0, 255) }, - { "yellow", NSVG_RGB(255, 255, 0) }, - { "cyan", NSVG_RGB( 0, 255, 255) }, - { "magenta", NSVG_RGB(255, 0, 255) }, - { "black", NSVG_RGB( 0, 0, 0) }, - { "grey", NSVG_RGB(128, 128, 128) }, - { "gray", NSVG_RGB(128, 128, 128) }, - { "white", NSVG_RGB(255, 255, 255) }, - -#ifdef NANOSVG_ALL_COLOR_KEYWORDS - { "aliceblue", NSVG_RGB(240, 248, 255) }, - { "antiquewhite", NSVG_RGB(250, 235, 215) }, - { "aqua", NSVG_RGB( 0, 255, 255) }, - { "aquamarine", NSVG_RGB(127, 255, 212) }, - { "azure", NSVG_RGB(240, 255, 255) }, - { "beige", NSVG_RGB(245, 245, 220) }, - { "bisque", NSVG_RGB(255, 228, 196) }, - { "blanchedalmond", NSVG_RGB(255, 235, 205) }, - { "blueviolet", NSVG_RGB(138, 43, 226) }, - { "brown", NSVG_RGB(165, 42, 42) }, - { "burlywood", NSVG_RGB(222, 184, 135) }, - { "cadetblue", NSVG_RGB( 95, 158, 160) }, - { "chartreuse", NSVG_RGB(127, 255, 0) }, - { "chocolate", NSVG_RGB(210, 105, 30) }, - { "coral", NSVG_RGB(255, 127, 80) }, - { "cornflowerblue", NSVG_RGB(100, 149, 237) }, - { "cornsilk", NSVG_RGB(255, 248, 220) }, - { "crimson", NSVG_RGB(220, 20, 60) }, - { "darkblue", NSVG_RGB( 0, 0, 139) }, - { "darkcyan", NSVG_RGB( 0, 139, 139) }, - { "darkgoldenrod", NSVG_RGB(184, 134, 11) }, - { "darkgray", NSVG_RGB(169, 169, 169) }, - { "darkgreen", NSVG_RGB( 0, 100, 0) }, - { "darkgrey", NSVG_RGB(169, 169, 169) }, - { "darkkhaki", NSVG_RGB(189, 183, 107) }, - { "darkmagenta", NSVG_RGB(139, 0, 139) }, - { "darkolivegreen", NSVG_RGB( 85, 107, 47) }, - { "darkorange", NSVG_RGB(255, 140, 0) }, - { "darkorchid", NSVG_RGB(153, 50, 204) }, - { "darkred", NSVG_RGB(139, 0, 0) }, - { "darksalmon", NSVG_RGB(233, 150, 122) }, - { "darkseagreen", NSVG_RGB(143, 188, 143) }, - { "darkslateblue", NSVG_RGB( 72, 61, 139) }, - { "darkslategray", NSVG_RGB( 47, 79, 79) }, - { "darkslategrey", NSVG_RGB( 47, 79, 79) }, - { "darkturquoise", NSVG_RGB( 0, 206, 209) }, - { "darkviolet", NSVG_RGB(148, 0, 211) }, - { "deeppink", NSVG_RGB(255, 20, 147) }, - { "deepskyblue", NSVG_RGB( 0, 191, 255) }, - { "dimgray", NSVG_RGB(105, 105, 105) }, - { "dimgrey", NSVG_RGB(105, 105, 105) }, - { "dodgerblue", NSVG_RGB( 30, 144, 255) }, - { "firebrick", NSVG_RGB(178, 34, 34) }, - { "floralwhite", NSVG_RGB(255, 250, 240) }, - { "forestgreen", NSVG_RGB( 34, 139, 34) }, - { "fuchsia", NSVG_RGB(255, 0, 255) }, - { "gainsboro", NSVG_RGB(220, 220, 220) }, - { "ghostwhite", NSVG_RGB(248, 248, 255) }, - { "gold", NSVG_RGB(255, 215, 0) }, - { "goldenrod", NSVG_RGB(218, 165, 32) }, - { "greenyellow", NSVG_RGB(173, 255, 47) }, - { "honeydew", NSVG_RGB(240, 255, 240) }, - { "hotpink", NSVG_RGB(255, 105, 180) }, - { "indianred", NSVG_RGB(205, 92, 92) }, - { "indigo", NSVG_RGB( 75, 0, 130) }, - { "ivory", NSVG_RGB(255, 255, 240) }, - { "khaki", NSVG_RGB(240, 230, 140) }, - { "lavender", NSVG_RGB(230, 230, 250) }, - { "lavenderblush", NSVG_RGB(255, 240, 245) }, - { "lawngreen", NSVG_RGB(124, 252, 0) }, - { "lemonchiffon", NSVG_RGB(255, 250, 205) }, - { "lightblue", NSVG_RGB(173, 216, 230) }, - { "lightcoral", NSVG_RGB(240, 128, 128) }, - { "lightcyan", NSVG_RGB(224, 255, 255) }, - { "lightgoldenrodyellow", NSVG_RGB(250, 250, 210) }, - { "lightgray", NSVG_RGB(211, 211, 211) }, - { "lightgreen", NSVG_RGB(144, 238, 144) }, - { "lightgrey", NSVG_RGB(211, 211, 211) }, - { "lightpink", NSVG_RGB(255, 182, 193) }, - { "lightsalmon", NSVG_RGB(255, 160, 122) }, - { "lightseagreen", NSVG_RGB( 32, 178, 170) }, - { "lightskyblue", NSVG_RGB(135, 206, 250) }, - { "lightslategray", NSVG_RGB(119, 136, 153) }, - { "lightslategrey", NSVG_RGB(119, 136, 153) }, - { "lightsteelblue", NSVG_RGB(176, 196, 222) }, - { "lightyellow", NSVG_RGB(255, 255, 224) }, - { "lime", NSVG_RGB( 0, 255, 0) }, - { "limegreen", NSVG_RGB( 50, 205, 50) }, - { "linen", NSVG_RGB(250, 240, 230) }, - { "maroon", NSVG_RGB(128, 0, 0) }, - { "mediumaquamarine", NSVG_RGB(102, 205, 170) }, - { "mediumblue", NSVG_RGB( 0, 0, 205) }, - { "mediumorchid", NSVG_RGB(186, 85, 211) }, - { "mediumpurple", NSVG_RGB(147, 112, 219) }, - { "mediumseagreen", NSVG_RGB( 60, 179, 113) }, - { "mediumslateblue", NSVG_RGB(123, 104, 238) }, - { "mediumspringgreen", NSVG_RGB( 0, 250, 154) }, - { "mediumturquoise", NSVG_RGB( 72, 209, 204) }, - { "mediumvioletred", NSVG_RGB(199, 21, 133) }, - { "midnightblue", NSVG_RGB( 25, 25, 112) }, - { "mintcream", NSVG_RGB(245, 255, 250) }, - { "mistyrose", NSVG_RGB(255, 228, 225) }, - { "moccasin", NSVG_RGB(255, 228, 181) }, - { "navajowhite", NSVG_RGB(255, 222, 173) }, - { "navy", NSVG_RGB( 0, 0, 128) }, - { "oldlace", NSVG_RGB(253, 245, 230) }, - { "olive", NSVG_RGB(128, 128, 0) }, - { "olivedrab", NSVG_RGB(107, 142, 35) }, - { "orange", NSVG_RGB(255, 165, 0) }, - { "orangered", NSVG_RGB(255, 69, 0) }, - { "orchid", NSVG_RGB(218, 112, 214) }, - { "palegoldenrod", NSVG_RGB(238, 232, 170) }, - { "palegreen", NSVG_RGB(152, 251, 152) }, - { "paleturquoise", NSVG_RGB(175, 238, 238) }, - { "palevioletred", NSVG_RGB(219, 112, 147) }, - { "papayawhip", NSVG_RGB(255, 239, 213) }, - { "peachpuff", NSVG_RGB(255, 218, 185) }, - { "peru", NSVG_RGB(205, 133, 63) }, - { "pink", NSVG_RGB(255, 192, 203) }, - { "plum", NSVG_RGB(221, 160, 221) }, - { "powderblue", NSVG_RGB(176, 224, 230) }, - { "purple", NSVG_RGB(128, 0, 128) }, - { "rosybrown", NSVG_RGB(188, 143, 143) }, - { "royalblue", NSVG_RGB( 65, 105, 225) }, - { "saddlebrown", NSVG_RGB(139, 69, 19) }, - { "salmon", NSVG_RGB(250, 128, 114) }, - { "sandybrown", NSVG_RGB(244, 164, 96) }, - { "seagreen", NSVG_RGB( 46, 139, 87) }, - { "seashell", NSVG_RGB(255, 245, 238) }, - { "sienna", NSVG_RGB(160, 82, 45) }, - { "silver", NSVG_RGB(192, 192, 192) }, - { "skyblue", NSVG_RGB(135, 206, 235) }, - { "slateblue", NSVG_RGB(106, 90, 205) }, - { "slategray", NSVG_RGB(112, 128, 144) }, - { "slategrey", NSVG_RGB(112, 128, 144) }, - { "snow", NSVG_RGB(255, 250, 250) }, - { "springgreen", NSVG_RGB( 0, 255, 127) }, - { "steelblue", NSVG_RGB( 70, 130, 180) }, - { "tan", NSVG_RGB(210, 180, 140) }, - { "teal", NSVG_RGB( 0, 128, 128) }, - { "thistle", NSVG_RGB(216, 191, 216) }, - { "tomato", NSVG_RGB(255, 99, 71) }, - { "turquoise", NSVG_RGB( 64, 224, 208) }, - { "violet", NSVG_RGB(238, 130, 238) }, - { "wheat", NSVG_RGB(245, 222, 179) }, - { "whitesmoke", NSVG_RGB(245, 245, 245) }, - { "yellowgreen", NSVG_RGB(154, 205, 50) }, -#endif -}; - -static unsigned int nsvg__parseColorName(const char* str) -{ - int i, ncolors = sizeof(nsvg__colors) / sizeof(NSVGNamedColor); - - for (i = 0; i < ncolors; i++) { - if (strcmp(nsvg__colors[i].name, str) == 0) { - return nsvg__colors[i].color; - } - } - - return NSVG_RGB(128, 128, 128); -} - -static unsigned int nsvg__parseColor(const char* str) -{ - size_t len = 0; - while(*str == ' ') ++str; - len = strlen(str); - if (len >= 1 && *str == '#') - return nsvg__parseColorHex(str); - else if (len >= 4 && str[0] == 'r' && str[1] == 'g' && str[2] == 'b' && str[3] == '(') - return nsvg__parseColorRGB(str); - return nsvg__parseColorName(str); -} - -static float nsvg__parseOpacity(const char* str) -{ - float val = nsvg__atof(str); - if (val < 0.0f) val = 0.0f; - if (val > 1.0f) val = 1.0f; - return val; -} - -static float nsvg__parseMiterLimit(const char* str) -{ - float val = nsvg__atof(str); - if (val < 0.0f) val = 0.0f; - return val; -} - -static int nsvg__parseUnits(const char* units) -{ - if (units[0] == 'p' && units[1] == 'x') - return NSVG_UNITS_PX; - else if (units[0] == 'p' && units[1] == 't') - return NSVG_UNITS_PT; - else if (units[0] == 'p' && units[1] == 'c') - return NSVG_UNITS_PC; - else if (units[0] == 'm' && units[1] == 'm') - return NSVG_UNITS_MM; - else if (units[0] == 'c' && units[1] == 'm') - return NSVG_UNITS_CM; - else if (units[0] == 'i' && units[1] == 'n') - return NSVG_UNITS_IN; - else if (units[0] == '%') - return NSVG_UNITS_PERCENT; - else if (units[0] == 'e' && units[1] == 'm') - return NSVG_UNITS_EM; - else if (units[0] == 'e' && units[1] == 'x') - return NSVG_UNITS_EX; - return NSVG_UNITS_USER; -} - -static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str) -{ - NSVGcoordinate coord = {0, NSVG_UNITS_USER}; - char buf[64]; - coord.units = nsvg__parseUnits(nsvg__parseNumber(str, buf, 64)); - coord.value = nsvg__atof(buf); - return coord; -} - -static NSVGcoordinate nsvg__coord(float v, int units) -{ - NSVGcoordinate coord = {v, units}; - return coord; -} - -static float nsvg__parseCoordinate(NSVGparser* p, const char* str, float orig, float length) -{ - NSVGcoordinate coord = nsvg__parseCoordinateRaw(str); - return nsvg__convertToPixels(p, coord, orig, length); -} - -static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int* na) -{ - const char* end; - const char* ptr; - char it[64]; - - *na = 0; - ptr = str; - while (*ptr && *ptr != '(') ++ptr; - if (*ptr == 0) - return 1; - end = ptr; - while (*end && *end != ')') ++end; - if (*end == 0) - return 1; - - while (ptr < end) { - if (*ptr == '-' || *ptr == '+' || *ptr == '.' || nsvg__isdigit(*ptr)) { - if (*na >= maxNa) return 0; - ptr = nsvg__parseNumber(ptr, it, 64); - args[(*na)++] = (float)nsvg__atof(it); - } else { - ++ptr; - } - } - return (int)(end - str); -} - - -static int nsvg__parseMatrix(float* xform, const char* str) -{ - float t[6]; - int na = 0; - int len = nsvg__parseTransformArgs(str, t, 6, &na); - if (na != 6) return len; - memcpy(xform, t, sizeof(float)*6); - return len; -} - -static int nsvg__parseTranslate(float* xform, const char* str) -{ - float args[2]; - float t[6]; - int na = 0; - int len = nsvg__parseTransformArgs(str, args, 2, &na); - if (na == 1) args[1] = 0.0; - - nsvg__xformSetTranslation(t, args[0], args[1]); - memcpy(xform, t, sizeof(float)*6); - return len; -} - -static int nsvg__parseScale(float* xform, const char* str) -{ - float args[2]; - int na = 0; - float t[6]; - int len = nsvg__parseTransformArgs(str, args, 2, &na); - if (na == 1) args[1] = args[0]; - nsvg__xformSetScale(t, args[0], args[1]); - memcpy(xform, t, sizeof(float)*6); - return len; -} - -static int nsvg__parseSkewX(float* xform, const char* str) -{ - float args[1]; - int na = 0; - float t[6]; - int len = nsvg__parseTransformArgs(str, args, 1, &na); - nsvg__xformSetSkewX(t, args[0]/180.0f*NSVG_PI); - memcpy(xform, t, sizeof(float)*6); - return len; -} - -static int nsvg__parseSkewY(float* xform, const char* str) -{ - float args[1]; - int na = 0; - float t[6]; - int len = nsvg__parseTransformArgs(str, args, 1, &na); - nsvg__xformSetSkewY(t, args[0]/180.0f*NSVG_PI); - memcpy(xform, t, sizeof(float)*6); - return len; -} - -static int nsvg__parseRotate(float* xform, const char* str) -{ - float args[3]; - int na = 0; - float m[6]; - float t[6]; - int len = nsvg__parseTransformArgs(str, args, 3, &na); - if (na == 1) - args[1] = args[2] = 0.0f; - nsvg__xformIdentity(m); - - if (na > 1) { - nsvg__xformSetTranslation(t, -args[1], -args[2]); - nsvg__xformMultiply(m, t); - } - - nsvg__xformSetRotation(t, args[0]/180.0f*NSVG_PI); - nsvg__xformMultiply(m, t); - - if (na > 1) { - nsvg__xformSetTranslation(t, args[1], args[2]); - nsvg__xformMultiply(m, t); - } - - memcpy(xform, m, sizeof(float)*6); - - return len; -} - -static void nsvg__parseTransform(float* xform, const char* str) -{ - float t[6]; - nsvg__xformIdentity(xform); - while (*str) - { - if (strncmp(str, "matrix", 6) == 0) - str += nsvg__parseMatrix(t, str); - else if (strncmp(str, "translate", 9) == 0) - str += nsvg__parseTranslate(t, str); - else if (strncmp(str, "scale", 5) == 0) - str += nsvg__parseScale(t, str); - else if (strncmp(str, "rotate", 6) == 0) - str += nsvg__parseRotate(t, str); - else if (strncmp(str, "skewX", 5) == 0) - str += nsvg__parseSkewX(t, str); - else if (strncmp(str, "skewY", 5) == 0) - str += nsvg__parseSkewY(t, str); - else{ - ++str; - continue; - } - - nsvg__xformPremultiply(xform, t); - } -} - -static void nsvg__parseUrl(char* id, const char* str) -{ - int i = 0; - str += 4; // "url("; - if (*str == '#') - str++; - while (i < 63 && *str != ')') { - id[i] = *str++; - i++; - } - id[i] = '\0'; -} - -static char nsvg__parseLineCap(const char* str) -{ - if (strcmp(str, "butt") == 0) - return NSVG_CAP_BUTT; - else if (strcmp(str, "round") == 0) - return NSVG_CAP_ROUND; - else if (strcmp(str, "square") == 0) - return NSVG_CAP_SQUARE; - // TODO: handle inherit. - return NSVG_CAP_BUTT; -} - -static char nsvg__parseLineJoin(const char* str) -{ - if (strcmp(str, "miter") == 0) - return NSVG_JOIN_MITER; - else if (strcmp(str, "round") == 0) - return NSVG_JOIN_ROUND; - else if (strcmp(str, "bevel") == 0) - return NSVG_JOIN_BEVEL; - // TODO: handle inherit. - return NSVG_JOIN_MITER; -} - -static char nsvg__parseFillRule(const char* str) -{ - if (strcmp(str, "nonzero") == 0) - return NSVG_FILLRULE_NONZERO; - else if (strcmp(str, "evenodd") == 0) - return NSVG_FILLRULE_EVENODD; - // TODO: handle inherit. - return NSVG_FILLRULE_NONZERO; -} - -static const char* nsvg__getNextDashItem(const char* s, char* it) -{ - int n = 0; - it[0] = '\0'; - // Skip white spaces and commas - while (*s && (nsvg__isspace(*s) || *s == ',')) s++; - // Advance until whitespace, comma or end. - while (*s && (!nsvg__isspace(*s) && *s != ',')) { - if (n < 63) - it[n++] = *s; - s++; - } - it[n++] = '\0'; - return s; -} - -static int nsvg__parseStrokeDashArray(NSVGparser* p, const char* str, float* strokeDashArray) -{ - char item[64]; - int count = 0, i; - float sum = 0.0f; - - // Handle "none" - if (str[0] == 'n') - return 0; - - // Parse dashes - while (*str) { - str = nsvg__getNextDashItem(str, item); - if (!*item) break; - if (count < NSVG_MAX_DASHES) - strokeDashArray[count++] = fabsf(nsvg__parseCoordinate(p, item, 0.0f, nsvg__actualLength(p))); - } - - for (i = 0; i < count; i++) - sum += strokeDashArray[i]; - if (sum <= 1e-6f) - count = 0; - - return count; -} - -static void nsvg__parseStyle(NSVGparser* p, const char* str); - -static int nsvg__parseAttr(NSVGparser* p, const char* name, const char* value) -{ - float xform[6]; - NSVGattrib* attr = nsvg__getAttr(p); - if (!attr) return 0; - - if (strcmp(name, "style") == 0) { - nsvg__parseStyle(p, value); - } else if (strcmp(name, "display") == 0) { - if (strcmp(value, "none") == 0) - attr->visible = 0; - // Don't reset ->visible on display:inline, one display:none hides the whole subtree - - } else if (strcmp(name, "fill") == 0) { - if (strcmp(value, "none") == 0) { - attr->hasFill = 0; - } else if (strncmp(value, "url(", 4) == 0) { - attr->hasFill = 2; - nsvg__parseUrl(attr->fillGradient, value); - } else { - attr->hasFill = 1; - attr->fillColor = nsvg__parseColor(value); - } - } else if (strcmp(name, "opacity") == 0) { - attr->opacity = nsvg__parseOpacity(value); - } else if (strcmp(name, "fill-opacity") == 0) { - attr->fillOpacity = nsvg__parseOpacity(value); - } else if (strcmp(name, "stroke") == 0) { - if (strcmp(value, "none") == 0) { - attr->hasStroke = 0; - } else if (strncmp(value, "url(", 4) == 0) { - attr->hasStroke = 2; - nsvg__parseUrl(attr->strokeGradient, value); - } else { - attr->hasStroke = 1; - attr->strokeColor = nsvg__parseColor(value); - } - } else if (strcmp(name, "stroke-width") == 0) { - attr->strokeWidth = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); - } else if (strcmp(name, "stroke-dasharray") == 0) { - attr->strokeDashCount = nsvg__parseStrokeDashArray(p, value, attr->strokeDashArray); - } else if (strcmp(name, "stroke-dashoffset") == 0) { - attr->strokeDashOffset = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); - } else if (strcmp(name, "stroke-opacity") == 0) { - attr->strokeOpacity = nsvg__parseOpacity(value); - } else if (strcmp(name, "stroke-linecap") == 0) { - attr->strokeLineCap = nsvg__parseLineCap(value); - } else if (strcmp(name, "stroke-linejoin") == 0) { - attr->strokeLineJoin = nsvg__parseLineJoin(value); - } else if (strcmp(name, "stroke-miterlimit") == 0) { - attr->miterLimit = nsvg__parseMiterLimit(value); - } else if (strcmp(name, "fill-rule") == 0) { - attr->fillRule = nsvg__parseFillRule(value); - } else if (strcmp(name, "font-size") == 0) { - attr->fontSize = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); - } else if (strcmp(name, "transform") == 0) { - nsvg__parseTransform(xform, value); - nsvg__xformPremultiply(attr->xform, xform); - } else if (strcmp(name, "stop-color") == 0) { - attr->stopColor = nsvg__parseColor(value); - } else if (strcmp(name, "stop-opacity") == 0) { - attr->stopOpacity = nsvg__parseOpacity(value); - } else if (strcmp(name, "offset") == 0) { - attr->stopOffset = nsvg__parseCoordinate(p, value, 0.0f, 1.0f); - } else if (strcmp(name, "id") == 0) { - strncpy(attr->id, value, 63); - attr->id[63] = '\0'; - } else { - return 0; - } - return 1; -} - -static int nsvg__parseNameValue(NSVGparser* p, const char* start, const char* end) -{ - const char* str; - const char* val; - char name[512]; - char value[512]; - int n; - - str = start; - while (str < end && *str != ':') ++str; - - val = str; - - // Right Trim - while (str > start && (*str == ':' || nsvg__isspace(*str))) --str; - ++str; - - n = (int)(str - start); - if (n > 511) n = 511; - if (n) memcpy(name, start, n); - name[n] = 0; - - while (val < end && (*val == ':' || nsvg__isspace(*val))) ++val; - - n = (int)(end - val); - if (n > 511) n = 511; - if (n) memcpy(value, val, n); - value[n] = 0; - - return nsvg__parseAttr(p, name, value); -} - -static void nsvg__parseStyle(NSVGparser* p, const char* str) -{ - const char* start; - const char* end; - - while (*str) { - // Left Trim - while(*str && nsvg__isspace(*str)) ++str; - start = str; - while(*str && *str != ';') ++str; - end = str; - - // Right Trim - while (end > start && (*end == ';' || nsvg__isspace(*end))) --end; - ++end; - - nsvg__parseNameValue(p, start, end); - if (*str) ++str; - } -} - -static void nsvg__parseAttribs(NSVGparser* p, const char** attr) -{ - int i; - for (i = 0; attr[i]; i += 2) - { - if (strcmp(attr[i], "style") == 0) - nsvg__parseStyle(p, attr[i + 1]); - else - nsvg__parseAttr(p, attr[i], attr[i + 1]); - } -} - -static int nsvg__getArgsPerElement(char cmd) -{ - switch (cmd) { - case 'v': - case 'V': - case 'h': - case 'H': - return 1; - case 'm': - case 'M': - case 'l': - case 'L': - case 't': - case 'T': - return 2; - case 'q': - case 'Q': - case 's': - case 'S': - return 4; - case 'c': - case 'C': - return 6; - case 'a': - case 'A': - return 7; - } - return 0; -} - -static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) -{ - if (rel) { - *cpx += args[0]; - *cpy += args[1]; - } else { - *cpx = args[0]; - *cpy = args[1]; - } - nsvg__moveTo(p, *cpx, *cpy); -} - -static void nsvg__pathLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) -{ - if (rel) { - *cpx += args[0]; - *cpy += args[1]; - } else { - *cpx = args[0]; - *cpy = args[1]; - } - nsvg__lineTo(p, *cpx, *cpy); -} - -static void nsvg__pathHLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) -{ - if (rel) - *cpx += args[0]; - else - *cpx = args[0]; - nsvg__lineTo(p, *cpx, *cpy); -} - -static void nsvg__pathVLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) -{ - if (rel) - *cpy += args[0]; - else - *cpy = args[0]; - nsvg__lineTo(p, *cpx, *cpy); -} - -static void nsvg__pathCubicBezTo(NSVGparser* p, float* cpx, float* cpy, - float* cpx2, float* cpy2, float* args, int rel) -{ - float x2, y2, cx1, cy1, cx2, cy2; - - if (rel) { - cx1 = *cpx + args[0]; - cy1 = *cpy + args[1]; - cx2 = *cpx + args[2]; - cy2 = *cpy + args[3]; - x2 = *cpx + args[4]; - y2 = *cpy + args[5]; - } else { - cx1 = args[0]; - cy1 = args[1]; - cx2 = args[2]; - cy2 = args[3]; - x2 = args[4]; - y2 = args[5]; - } - - nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - - *cpx2 = cx2; - *cpy2 = cy2; - *cpx = x2; - *cpy = y2; -} - -static void nsvg__pathCubicBezShortTo(NSVGparser* p, float* cpx, float* cpy, - float* cpx2, float* cpy2, float* args, int rel) -{ - float x1, y1, x2, y2, cx1, cy1, cx2, cy2; - - x1 = *cpx; - y1 = *cpy; - if (rel) { - cx2 = *cpx + args[0]; - cy2 = *cpy + args[1]; - x2 = *cpx + args[2]; - y2 = *cpy + args[3]; - } else { - cx2 = args[0]; - cy2 = args[1]; - x2 = args[2]; - y2 = args[3]; - } - - cx1 = 2*x1 - *cpx2; - cy1 = 2*y1 - *cpy2; - - nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - - *cpx2 = cx2; - *cpy2 = cy2; - *cpx = x2; - *cpy = y2; -} - -static void nsvg__pathQuadBezTo(NSVGparser* p, float* cpx, float* cpy, - float* cpx2, float* cpy2, float* args, int rel) -{ - float x1, y1, x2, y2, cx, cy; - float cx1, cy1, cx2, cy2; - - x1 = *cpx; - y1 = *cpy; - if (rel) { - cx = *cpx + args[0]; - cy = *cpy + args[1]; - x2 = *cpx + args[2]; - y2 = *cpy + args[3]; - } else { - cx = args[0]; - cy = args[1]; - x2 = args[2]; - y2 = args[3]; - } - - // Convert to cubic bezier - cx1 = x1 + 2.0f/3.0f*(cx - x1); - cy1 = y1 + 2.0f/3.0f*(cy - y1); - cx2 = x2 + 2.0f/3.0f*(cx - x2); - cy2 = y2 + 2.0f/3.0f*(cy - y2); - - nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - - *cpx2 = cx; - *cpy2 = cy; - *cpx = x2; - *cpy = y2; -} - -static void nsvg__pathQuadBezShortTo(NSVGparser* p, float* cpx, float* cpy, - float* cpx2, float* cpy2, float* args, int rel) -{ - float x1, y1, x2, y2, cx, cy; - float cx1, cy1, cx2, cy2; - - x1 = *cpx; - y1 = *cpy; - if (rel) { - x2 = *cpx + args[0]; - y2 = *cpy + args[1]; - } else { - x2 = args[0]; - y2 = args[1]; - } - - cx = 2*x1 - *cpx2; - cy = 2*y1 - *cpy2; - - // Convert to cubix bezier - cx1 = x1 + 2.0f/3.0f*(cx - x1); - cy1 = y1 + 2.0f/3.0f*(cy - y1); - cx2 = x2 + 2.0f/3.0f*(cx - x2); - cy2 = y2 + 2.0f/3.0f*(cy - y2); - - nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - - *cpx2 = cx; - *cpy2 = cy; - *cpx = x2; - *cpy = y2; -} - -static float nsvg__sqr(float x) { return x*x; } -static float nsvg__vmag(float x, float y) { return sqrtf(x*x + y*y); } - -static float nsvg__vecrat(float ux, float uy, float vx, float vy) -{ - return (ux*vx + uy*vy) / (nsvg__vmag(ux,uy) * nsvg__vmag(vx,vy)); -} - -static float nsvg__vecang(float ux, float uy, float vx, float vy) -{ - float r = nsvg__vecrat(ux,uy, vx,vy); - if (r < -1.0f) r = -1.0f; - if (r > 1.0f) r = 1.0f; - return ((ux*vy < uy*vx) ? -1.0f : 1.0f) * acosf(r); -} - -static void nsvg__pathArcTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) -{ - // Ported from canvg (https://code.google.com/p/canvg/) - float rx, ry, rotx; - float x1, y1, x2, y2, cx, cy, dx, dy, d; - float x1p, y1p, cxp, cyp, s, sa, sb; - float ux, uy, vx, vy, a1, da; - float x, y, tanx, tany, a, px = 0, py = 0, ptanx = 0, ptany = 0, t[6]; - float sinrx, cosrx; - int fa, fs; - int i, ndivs; - float hda, kappa; - - rx = fabsf(args[0]); // y radius - ry = fabsf(args[1]); // x radius - rotx = args[2] / 180.0f * NSVG_PI; // x rotation angle - fa = fabsf(args[3]) > 1e-6 ? 1 : 0; // Large arc - fs = fabsf(args[4]) > 1e-6 ? 1 : 0; // Sweep direction - x1 = *cpx; // start point - y1 = *cpy; - if (rel) { // end point - x2 = *cpx + args[5]; - y2 = *cpy + args[6]; - } else { - x2 = args[5]; - y2 = args[6]; - } - - dx = x1 - x2; - dy = y1 - y2; - d = sqrtf(dx*dx + dy*dy); - if (d < 1e-6f || rx < 1e-6f || ry < 1e-6f) { - // The arc degenerates to a line - nsvg__lineTo(p, x2, y2); - *cpx = x2; - *cpy = y2; - return; - } - - sinrx = sinf(rotx); - cosrx = cosf(rotx); - - // Convert to center point parameterization. - // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes - // 1) Compute x1', y1' - x1p = cosrx * dx / 2.0f + sinrx * dy / 2.0f; - y1p = -sinrx * dx / 2.0f + cosrx * dy / 2.0f; - d = nsvg__sqr(x1p)/nsvg__sqr(rx) + nsvg__sqr(y1p)/nsvg__sqr(ry); - if (d > 1) { - d = sqrtf(d); - rx *= d; - ry *= d; - } - // 2) Compute cx', cy' - s = 0.0f; - sa = nsvg__sqr(rx)*nsvg__sqr(ry) - nsvg__sqr(rx)*nsvg__sqr(y1p) - nsvg__sqr(ry)*nsvg__sqr(x1p); - sb = nsvg__sqr(rx)*nsvg__sqr(y1p) + nsvg__sqr(ry)*nsvg__sqr(x1p); - if (sa < 0.0f) sa = 0.0f; - if (sb > 0.0f) - s = sqrtf(sa / sb); - if (fa == fs) - s = -s; - cxp = s * rx * y1p / ry; - cyp = s * -ry * x1p / rx; - - // 3) Compute cx,cy from cx',cy' - cx = (x1 + x2)/2.0f + cosrx*cxp - sinrx*cyp; - cy = (y1 + y2)/2.0f + sinrx*cxp + cosrx*cyp; - - // 4) Calculate theta1, and delta theta. - ux = (x1p - cxp) / rx; - uy = (y1p - cyp) / ry; - vx = (-x1p - cxp) / rx; - vy = (-y1p - cyp) / ry; - a1 = nsvg__vecang(1.0f,0.0f, ux,uy); // Initial angle - da = nsvg__vecang(ux,uy, vx,vy); // Delta angle - -// if (vecrat(ux,uy,vx,vy) <= -1.0f) da = NSVG_PI; -// if (vecrat(ux,uy,vx,vy) >= 1.0f) da = 0; - - if (fs == 0 && da > 0) - da -= 2 * NSVG_PI; - else if (fs == 1 && da < 0) - da += 2 * NSVG_PI; - - // Approximate the arc using cubic spline segments. - t[0] = cosrx; t[1] = sinrx; - t[2] = -sinrx; t[3] = cosrx; - t[4] = cx; t[5] = cy; - - // Split arc into max 90 degree segments. - // The loop assumes an iteration per end point (including start and end), this +1. - ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f); - hda = (da / (float)ndivs) / 2.0f; - kappa = fabsf(4.0f / 3.0f * (1.0f - cosf(hda)) / sinf(hda)); - if (da < 0.0f) - kappa = -kappa; - - for (i = 0; i <= ndivs; i++) { - a = a1 + da * ((float)i/(float)ndivs); - dx = cosf(a); - dy = sinf(a); - nsvg__xformPoint(&x, &y, dx*rx, dy*ry, t); // position - nsvg__xformVec(&tanx, &tany, -dy*rx * kappa, dx*ry * kappa, t); // tangent - if (i > 0) - nsvg__cubicBezTo(p, px+ptanx,py+ptany, x-tanx, y-tany, x, y); - px = x; - py = y; - ptanx = tanx; - ptany = tany; - } - - *cpx = x2; - *cpy = y2; -} - -static void nsvg__parsePath(NSVGparser* p, const char** attr) -{ - const char* s = NULL; - char cmd = '\0'; - float args[10]; - int nargs; - int rargs = 0; - float cpx, cpy, cpx2, cpy2; - const char* tmp[4]; - char closedFlag; - int i; - char item[64]; - - for (i = 0; attr[i]; i += 2) { - if (strcmp(attr[i], "d") == 0) { - s = attr[i + 1]; - } else { - tmp[0] = attr[i]; - tmp[1] = attr[i + 1]; - tmp[2] = 0; - tmp[3] = 0; - nsvg__parseAttribs(p, tmp); - } - } - - if (s) { - nsvg__resetPath(p); - cpx = 0; cpy = 0; - cpx2 = 0; cpy2 = 0; - closedFlag = 0; - nargs = 0; - - while (*s) { - s = nsvg__getNextPathItem(s, item); - if (!*item) break; - if (nsvg__isnum(item[0])) { - if (nargs < 10) - args[nargs++] = (float)nsvg__atof(item); - if (nargs >= rargs) { - switch (cmd) { - case 'm': - case 'M': - nsvg__pathMoveTo(p, &cpx, &cpy, args, cmd == 'm' ? 1 : 0); - // Moveto can be followed by multiple coordinate pairs, - // which should be treated as linetos. - cmd = (cmd == 'm') ? 'l' : 'L'; - rargs = nsvg__getArgsPerElement(cmd); - cpx2 = cpx; cpy2 = cpy; - break; - case 'l': - case 'L': - nsvg__pathLineTo(p, &cpx, &cpy, args, cmd == 'l' ? 1 : 0); - cpx2 = cpx; cpy2 = cpy; - break; - case 'H': - case 'h': - nsvg__pathHLineTo(p, &cpx, &cpy, args, cmd == 'h' ? 1 : 0); - cpx2 = cpx; cpy2 = cpy; - break; - case 'V': - case 'v': - nsvg__pathVLineTo(p, &cpx, &cpy, args, cmd == 'v' ? 1 : 0); - cpx2 = cpx; cpy2 = cpy; - break; - case 'C': - case 'c': - nsvg__pathCubicBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'c' ? 1 : 0); - break; - case 'S': - case 's': - nsvg__pathCubicBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 's' ? 1 : 0); - break; - case 'Q': - case 'q': - nsvg__pathQuadBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'q' ? 1 : 0); - break; - case 'T': - case 't': - nsvg__pathQuadBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 't' ? 1 : 0); - break; - case 'A': - case 'a': - nsvg__pathArcTo(p, &cpx, &cpy, args, cmd == 'a' ? 1 : 0); - cpx2 = cpx; cpy2 = cpy; - break; - default: - if (nargs >= 2) { - cpx = args[nargs-2]; - cpy = args[nargs-1]; - cpx2 = cpx; cpy2 = cpy; - } - break; - } - nargs = 0; - } - } else { - cmd = item[0]; - rargs = nsvg__getArgsPerElement(cmd); - if (cmd == 'M' || cmd == 'm') { - // Commit path. - if (p->npts > 0) - nsvg__addPath(p, closedFlag); - // Start new subpath. - nsvg__resetPath(p); - closedFlag = 0; - nargs = 0; - } else if (cmd == 'Z' || cmd == 'z') { - closedFlag = 1; - // Commit path. - if (p->npts > 0) { - // Move current point to first point - cpx = p->pts[0]; - cpy = p->pts[1]; - cpx2 = cpx; cpy2 = cpy; - nsvg__addPath(p, closedFlag); - } - // Start new subpath. - nsvg__resetPath(p); - nsvg__moveTo(p, cpx, cpy); - closedFlag = 0; - nargs = 0; - } - } - } - // Commit path. - if (p->npts) - nsvg__addPath(p, closedFlag); - } - - nsvg__addShape(p); -} - -static void nsvg__parseRect(NSVGparser* p, const char** attr) -{ - float x = 0.0f; - float y = 0.0f; - float w = 0.0f; - float h = 0.0f; - float rx = -1.0f; // marks not set - float ry = -1.0f; - int i; - - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "x") == 0) x = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); - if (strcmp(attr[i], "y") == 0) y = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); - if (strcmp(attr[i], "width") == 0) w = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p)); - if (strcmp(attr[i], "height") == 0) h = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p)); - if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); - if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); - } - } - - if (rx < 0.0f && ry > 0.0f) rx = ry; - if (ry < 0.0f && rx > 0.0f) ry = rx; - if (rx < 0.0f) rx = 0.0f; - if (ry < 0.0f) ry = 0.0f; - if (rx > w/2.0f) rx = w/2.0f; - if (ry > h/2.0f) ry = h/2.0f; - - if (w != 0.0f && h != 0.0f) { - nsvg__resetPath(p); - - if (rx < 0.00001f || ry < 0.0001f) { - nsvg__moveTo(p, x, y); - nsvg__lineTo(p, x+w, y); - nsvg__lineTo(p, x+w, y+h); - nsvg__lineTo(p, x, y+h); - } else { - // Rounded rectangle - nsvg__moveTo(p, x+rx, y); - nsvg__lineTo(p, x+w-rx, y); - nsvg__cubicBezTo(p, x+w-rx*(1-NSVG_KAPPA90), y, x+w, y+ry*(1-NSVG_KAPPA90), x+w, y+ry); - nsvg__lineTo(p, x+w, y+h-ry); - nsvg__cubicBezTo(p, x+w, y+h-ry*(1-NSVG_KAPPA90), x+w-rx*(1-NSVG_KAPPA90), y+h, x+w-rx, y+h); - nsvg__lineTo(p, x+rx, y+h); - nsvg__cubicBezTo(p, x+rx*(1-NSVG_KAPPA90), y+h, x, y+h-ry*(1-NSVG_KAPPA90), x, y+h-ry); - nsvg__lineTo(p, x, y+ry); - nsvg__cubicBezTo(p, x, y+ry*(1-NSVG_KAPPA90), x+rx*(1-NSVG_KAPPA90), y, x+rx, y); - } - - nsvg__addPath(p, 1); - - nsvg__addShape(p); - } -} - -static void nsvg__parseCircle(NSVGparser* p, const char** attr) -{ - float cx = 0.0f; - float cy = 0.0f; - float r = 0.0f; - int i; - - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); - if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); - if (strcmp(attr[i], "r") == 0) r = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualLength(p))); - } - } - - if (r > 0.0f) { - nsvg__resetPath(p); - - nsvg__moveTo(p, cx+r, cy); - nsvg__cubicBezTo(p, cx+r, cy+r*NSVG_KAPPA90, cx+r*NSVG_KAPPA90, cy+r, cx, cy+r); - nsvg__cubicBezTo(p, cx-r*NSVG_KAPPA90, cy+r, cx-r, cy+r*NSVG_KAPPA90, cx-r, cy); - nsvg__cubicBezTo(p, cx-r, cy-r*NSVG_KAPPA90, cx-r*NSVG_KAPPA90, cy-r, cx, cy-r); - nsvg__cubicBezTo(p, cx+r*NSVG_KAPPA90, cy-r, cx+r, cy-r*NSVG_KAPPA90, cx+r, cy); - - nsvg__addPath(p, 1); - - nsvg__addShape(p); - } -} - -static void nsvg__parseEllipse(NSVGparser* p, const char** attr) -{ - float cx = 0.0f; - float cy = 0.0f; - float rx = 0.0f; - float ry = 0.0f; - int i; - - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); - if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); - if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); - if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); - } - } - - if (rx > 0.0f && ry > 0.0f) { - - nsvg__resetPath(p); - - nsvg__moveTo(p, cx+rx, cy); - nsvg__cubicBezTo(p, cx+rx, cy+ry*NSVG_KAPPA90, cx+rx*NSVG_KAPPA90, cy+ry, cx, cy+ry); - nsvg__cubicBezTo(p, cx-rx*NSVG_KAPPA90, cy+ry, cx-rx, cy+ry*NSVG_KAPPA90, cx-rx, cy); - nsvg__cubicBezTo(p, cx-rx, cy-ry*NSVG_KAPPA90, cx-rx*NSVG_KAPPA90, cy-ry, cx, cy-ry); - nsvg__cubicBezTo(p, cx+rx*NSVG_KAPPA90, cy-ry, cx+rx, cy-ry*NSVG_KAPPA90, cx+rx, cy); - - nsvg__addPath(p, 1); - - nsvg__addShape(p); - } -} - -static void nsvg__parseLine(NSVGparser* p, const char** attr) -{ - float x1 = 0.0; - float y1 = 0.0; - float x2 = 0.0; - float y2 = 0.0; - int i; - - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "x1") == 0) x1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); - if (strcmp(attr[i], "y1") == 0) y1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); - if (strcmp(attr[i], "x2") == 0) x2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); - if (strcmp(attr[i], "y2") == 0) y2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); - } - } - - nsvg__resetPath(p); - - nsvg__moveTo(p, x1, y1); - nsvg__lineTo(p, x2, y2); - - nsvg__addPath(p, 0); - - nsvg__addShape(p); -} - -static void nsvg__parsePoly(NSVGparser* p, const char** attr, int closeFlag) -{ - int i; - const char* s; - float args[2]; - int nargs, npts = 0; - char item[64]; - - nsvg__resetPath(p); - - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "points") == 0) { - s = attr[i + 1]; - nargs = 0; - while (*s) { - s = nsvg__getNextPathItem(s, item); - args[nargs++] = (float)nsvg__atof(item); - if (nargs >= 2) { - if (npts == 0) - nsvg__moveTo(p, args[0], args[1]); - else - nsvg__lineTo(p, args[0], args[1]); - nargs = 0; - npts++; - } - } - } - } - } - - nsvg__addPath(p, (char)closeFlag); - - nsvg__addShape(p); -} - -static void nsvg__parseSVG(NSVGparser* p, const char** attr) -{ - int i; - for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "width") == 0) { - p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); - } else if (strcmp(attr[i], "height") == 0) { - p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); - } else if (strcmp(attr[i], "viewBox") == 0) { - const char *s = attr[i + 1]; - char buf[64]; - s = nsvg__parseNumber(s, buf, 64); - p->viewMinx = nsvg__atof(buf); - while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; - if (!*s) return; - s = nsvg__parseNumber(s, buf, 64); - p->viewMiny = nsvg__atof(buf); - while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; - if (!*s) return; - s = nsvg__parseNumber(s, buf, 64); - p->viewWidth = nsvg__atof(buf); - while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; - if (!*s) return; - s = nsvg__parseNumber(s, buf, 64); - p->viewHeight = nsvg__atof(buf); - } else if (strcmp(attr[i], "preserveAspectRatio") == 0) { - if (strstr(attr[i + 1], "none") != 0) { - // No uniform scaling - p->alignType = NSVG_ALIGN_NONE; - } else { - // Parse X align - if (strstr(attr[i + 1], "xMin") != 0) - p->alignX = NSVG_ALIGN_MIN; - else if (strstr(attr[i + 1], "xMid") != 0) - p->alignX = NSVG_ALIGN_MID; - else if (strstr(attr[i + 1], "xMax") != 0) - p->alignX = NSVG_ALIGN_MAX; - // Parse X align - if (strstr(attr[i + 1], "yMin") != 0) - p->alignY = NSVG_ALIGN_MIN; - else if (strstr(attr[i + 1], "yMid") != 0) - p->alignY = NSVG_ALIGN_MID; - else if (strstr(attr[i + 1], "yMax") != 0) - p->alignY = NSVG_ALIGN_MAX; - // Parse meet/slice - p->alignType = NSVG_ALIGN_MEET; - if (strstr(attr[i + 1], "slice") != 0) - p->alignType = NSVG_ALIGN_SLICE; - } - } - } - } -} - -static void nsvg__parseGradient(NSVGparser* p, const char** attr, char type) -{ - int i; - NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData)); - if (grad == NULL) return; - memset(grad, 0, sizeof(NSVGgradientData)); - grad->units = NSVG_OBJECT_SPACE; - grad->type = type; - if (grad->type == NSVG_PAINT_LINEAR_GRADIENT) { - grad->linear.x1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); - grad->linear.y1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); - grad->linear.x2 = nsvg__coord(100.0f, NSVG_UNITS_PERCENT); - grad->linear.y2 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); - } else if (grad->type == NSVG_PAINT_RADIAL_GRADIENT) { - grad->radial.cx = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); - grad->radial.cy = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); - grad->radial.r = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); - } - - nsvg__xformIdentity(grad->xform); - - for (i = 0; attr[i]; i += 2) { - if (strcmp(attr[i], "id") == 0) { - strncpy(grad->id, attr[i+1], 63); - grad->id[63] = '\0'; - } else if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "gradientUnits") == 0) { - if (strcmp(attr[i+1], "objectBoundingBox") == 0) - grad->units = NSVG_OBJECT_SPACE; - else - grad->units = NSVG_USER_SPACE; - } else if (strcmp(attr[i], "gradientTransform") == 0) { - nsvg__parseTransform(grad->xform, attr[i + 1]); - } else if (strcmp(attr[i], "cx") == 0) { - grad->radial.cx = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "cy") == 0) { - grad->radial.cy = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "r") == 0) { - grad->radial.r = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "fx") == 0) { - grad->radial.fx = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "fy") == 0) { - grad->radial.fy = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "x1") == 0) { - grad->linear.x1 = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "y1") == 0) { - grad->linear.y1 = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "x2") == 0) { - grad->linear.x2 = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "y2") == 0) { - grad->linear.y2 = nsvg__parseCoordinateRaw(attr[i + 1]); - } else if (strcmp(attr[i], "spreadMethod") == 0) { - if (strcmp(attr[i+1], "pad") == 0) - grad->spread = NSVG_SPREAD_PAD; - else if (strcmp(attr[i+1], "reflect") == 0) - grad->spread = NSVG_SPREAD_REFLECT; - else if (strcmp(attr[i+1], "repeat") == 0) - grad->spread = NSVG_SPREAD_REPEAT; - } else if (strcmp(attr[i], "xlink:href") == 0) { - const char *href = attr[i+1]; - strncpy(grad->ref, href+1, 62); - grad->ref[62] = '\0'; - } - } - } - - grad->next = p->gradients; - p->gradients = grad; -} - -static void nsvg__parseGradientStop(NSVGparser* p, const char** attr) -{ - NSVGattrib* curAttr = nsvg__getAttr(p); - NSVGgradientData* grad; - NSVGgradientStop* stop; - int i, idx; - - curAttr->stopOffset = 0; - curAttr->stopColor = 0; - curAttr->stopOpacity = 1.0f; - - for (i = 0; attr[i]; i += 2) { - nsvg__parseAttr(p, attr[i], attr[i + 1]); - } - - // Add stop to the last gradient. - grad = p->gradients; - if (grad == NULL) return; - - grad->nstops++; - grad->stops = (NSVGgradientStop*)realloc(grad->stops, sizeof(NSVGgradientStop)*grad->nstops); - if (grad->stops == NULL) return; - - // Insert - idx = grad->nstops-1; - for (i = 0; i < grad->nstops-1; i++) { - if (curAttr->stopOffset < grad->stops[i].offset) { - idx = i; - break; - } - } - if (idx != grad->nstops-1) { - for (i = grad->nstops-1; i > idx; i--) - grad->stops[i] = grad->stops[i-1]; - } - - stop = &grad->stops[idx]; - stop->color = curAttr->stopColor; - stop->color |= (unsigned int)(curAttr->stopOpacity*255) << 24; - stop->offset = curAttr->stopOffset; -} - -static void nsvg__startElement(void* ud, const char* el, const char** attr) -{ - NSVGparser* p = (NSVGparser*)ud; - - if (p->defsFlag) { - // Skip everything but gradients in defs - if (strcmp(el, "linearGradient") == 0) { - nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT); - } else if (strcmp(el, "radialGradient") == 0) { - nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT); - } else if (strcmp(el, "stop") == 0) { - nsvg__parseGradientStop(p, attr); - } - return; - } - - if (strcmp(el, "g") == 0) { - nsvg__pushAttr(p); - nsvg__parseAttribs(p, attr); - } else if (strcmp(el, "path") == 0) { - if (p->pathFlag) // Do not allow nested paths. - return; - nsvg__pushAttr(p); - nsvg__parsePath(p, attr); - nsvg__popAttr(p); - } else if (strcmp(el, "rect") == 0) { - nsvg__pushAttr(p); - nsvg__parseRect(p, attr); - nsvg__popAttr(p); - } else if (strcmp(el, "circle") == 0) { - nsvg__pushAttr(p); - nsvg__parseCircle(p, attr); - nsvg__popAttr(p); - } else if (strcmp(el, "ellipse") == 0) { - nsvg__pushAttr(p); - nsvg__parseEllipse(p, attr); - nsvg__popAttr(p); - } else if (strcmp(el, "line") == 0) { - nsvg__pushAttr(p); - nsvg__parseLine(p, attr); - nsvg__popAttr(p); - } else if (strcmp(el, "polyline") == 0) { - nsvg__pushAttr(p); - nsvg__parsePoly(p, attr, 0); - nsvg__popAttr(p); - } else if (strcmp(el, "polygon") == 0) { - nsvg__pushAttr(p); - nsvg__parsePoly(p, attr, 1); - nsvg__popAttr(p); - } else if (strcmp(el, "linearGradient") == 0) { - nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT); - } else if (strcmp(el, "radialGradient") == 0) { - nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT); - } else if (strcmp(el, "stop") == 0) { - nsvg__parseGradientStop(p, attr); - } else if (strcmp(el, "defs") == 0) { - p->defsFlag = 1; - } else if (strcmp(el, "svg") == 0) { - nsvg__parseSVG(p, attr); - } -} - -static void nsvg__endElement(void* ud, const char* el) -{ - NSVGparser* p = (NSVGparser*)ud; - - if (strcmp(el, "g") == 0) { - nsvg__popAttr(p); - } else if (strcmp(el, "path") == 0) { - p->pathFlag = 0; - } else if (strcmp(el, "defs") == 0) { - p->defsFlag = 0; - } -} - -static void nsvg__content(void* ud, const char* s) -{ - NSVG_NOTUSED(ud); - NSVG_NOTUSED(s); - // empty -} - -static void nsvg__imageBounds(NSVGparser* p, float* bounds) -{ - NSVGshape* shape; - shape = p->image->shapes; - if (shape == NULL) { - bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; - return; - } - bounds[0] = shape->bounds[0]; - bounds[1] = shape->bounds[1]; - bounds[2] = shape->bounds[2]; - bounds[3] = shape->bounds[3]; - for (shape = shape->next; shape != NULL; shape = shape->next) { - bounds[0] = nsvg__minf(bounds[0], shape->bounds[0]); - bounds[1] = nsvg__minf(bounds[1], shape->bounds[1]); - bounds[2] = nsvg__maxf(bounds[2], shape->bounds[2]); - bounds[3] = nsvg__maxf(bounds[3], shape->bounds[3]); - } -} - -static float nsvg__viewAlign(float content, float container, int type) -{ - if (type == NSVG_ALIGN_MIN) - return 0; - else if (type == NSVG_ALIGN_MAX) - return container - content; - // mid - return (container - content) * 0.5f; -} - -static void nsvg__scaleGradient(NSVGgradient* grad, float tx, float ty, float sx, float sy) -{ - float t[6]; - nsvg__xformSetTranslation(t, tx, ty); - nsvg__xformMultiply (grad->xform, t); - - nsvg__xformSetScale(t, sx, sy); - nsvg__xformMultiply (grad->xform, t); -} - -static void nsvg__scaleToViewbox(NSVGparser* p, const char* units) -{ - NSVGshape* shape; - NSVGpath* path; - float tx, ty, sx, sy, us, bounds[4], t[6], avgs; - int i; - float* pt; - - // Guess image size if not set completely. - nsvg__imageBounds(p, bounds); - - if (p->viewWidth == 0) { - if (p->image->width > 0) { - p->viewWidth = p->image->width; - } else { - p->viewMinx = bounds[0]; - p->viewWidth = bounds[2] - bounds[0]; - } - } - if (p->viewHeight == 0) { - if (p->image->height > 0) { - p->viewHeight = p->image->height; - } else { - p->viewMiny = bounds[1]; - p->viewHeight = bounds[3] - bounds[1]; - } - } - if (p->image->width == 0) - p->image->width = p->viewWidth; - if (p->image->height == 0) - p->image->height = p->viewHeight; - - tx = -p->viewMinx; - ty = -p->viewMiny; - sx = p->viewWidth > 0 ? p->image->width / p->viewWidth : 0; - sy = p->viewHeight > 0 ? p->image->height / p->viewHeight : 0; - // Unit scaling - us = 1.0f / nsvg__convertToPixels(p, nsvg__coord(1.0f, nsvg__parseUnits(units)), 0.0f, 1.0f); - - // Fix aspect ratio - if (p->alignType == NSVG_ALIGN_MEET) { - // fit whole image into viewbox - sx = sy = nsvg__minf(sx, sy); - tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx; - ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy; - } else if (p->alignType == NSVG_ALIGN_SLICE) { - // fill whole viewbox with image - sx = sy = nsvg__maxf(sx, sy); - tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx; - ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy; - } - - // Transform - sx *= us; - sy *= us; - avgs = (sx+sy) / 2.0f; - for (shape = p->image->shapes; shape != NULL; shape = shape->next) { - shape->bounds[0] = (shape->bounds[0] + tx) * sx; - shape->bounds[1] = (shape->bounds[1] + ty) * sy; - shape->bounds[2] = (shape->bounds[2] + tx) * sx; - shape->bounds[3] = (shape->bounds[3] + ty) * sy; - for (path = shape->paths; path != NULL; path = path->next) { - path->bounds[0] = (path->bounds[0] + tx) * sx; - path->bounds[1] = (path->bounds[1] + ty) * sy; - path->bounds[2] = (path->bounds[2] + tx) * sx; - path->bounds[3] = (path->bounds[3] + ty) * sy; - for (i =0; i < path->npts; i++) { - pt = &path->pts[i*2]; - pt[0] = (pt[0] + tx) * sx; - pt[1] = (pt[1] + ty) * sy; - } - } - - if (shape->fill.type == NSVG_PAINT_LINEAR_GRADIENT || shape->fill.type == NSVG_PAINT_RADIAL_GRADIENT) { - nsvg__scaleGradient(shape->fill.gradient, tx,ty, sx,sy); - memcpy(t, shape->fill.gradient->xform, sizeof(float)*6); - nsvg__xformInverse(shape->fill.gradient->xform, t); - } - if (shape->stroke.type == NSVG_PAINT_LINEAR_GRADIENT || shape->stroke.type == NSVG_PAINT_RADIAL_GRADIENT) { - nsvg__scaleGradient(shape->stroke.gradient, tx,ty, sx,sy); - memcpy(t, shape->stroke.gradient->xform, sizeof(float)*6); - nsvg__xformInverse(shape->stroke.gradient->xform, t); - } - - shape->strokeWidth *= avgs; - shape->strokeDashOffset *= avgs; - for (i = 0; i < shape->strokeDashCount; i++) - shape->strokeDashArray[i] *= avgs; - } -} - -NSVGimage* nsvgParse(char* input, const char* units, float dpi) -{ - NSVGparser* p; - NSVGimage* ret = 0; - - p = nsvg__createParser(); - if (p == NULL) { - return NULL; - } - p->dpi = dpi; - - nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p); - - // Scale to viewBox - nsvg__scaleToViewbox(p, units); - - ret = p->image; - p->image = NULL; - - nsvg__deleteParser(p); - - return ret; -} - -#include - -NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) -{ - FILE* fp = NULL; - size_t size; - char* data = NULL; - NSVGimage* image = NULL; - - fp = boost::nowide::fopen(filename, "rb"); - if (!fp) goto error; - fseek(fp, 0, SEEK_END); - size = ftell(fp); - fseek(fp, 0, SEEK_SET); - data = (char*)malloc(size+1); - if (data == NULL) goto error; - if (fread(data, 1, size, fp) != size) goto error; - data[size] = '\0'; // Must be null terminated. - fclose(fp); - - image = nsvgParse(data, units, dpi); - free(data); - return image; - -error: - if (fp) fclose(fp); - if (data) free(data); - if (image) nsvgDelete(image); - return NULL; -} - -NSVGpath* nsvgDuplicatePath(NSVGpath* p) -{ - NSVGpath* res = NULL; - - if (p == NULL) - return NULL; - - res = (NSVGpath*)malloc(sizeof(NSVGpath)); - if (res == NULL) goto error; - memset(res, 0, sizeof(NSVGpath)); - - res->pts = (float*)malloc(p->npts*2*sizeof(float)); - if (res->pts == NULL) goto error; - memcpy(res->pts, p->pts, p->npts * sizeof(float) * 2); - res->npts = p->npts; - - memcpy(res->bounds, p->bounds, sizeof(p->bounds)); - - res->closed = p->closed; - - return res; - -error: - if (res != NULL) { - free(res->pts); - free(res); - } - return NULL; -} - -void nsvgDelete(NSVGimage* image) -{ - NSVGshape *snext, *shape; - if (image == NULL) return; - shape = image->shapes; - while (shape != NULL) { - snext = shape->next; - nsvg__deletePaths(shape->paths); - nsvg__deletePaint(&shape->fill); - nsvg__deletePaint(&shape->stroke); - free(shape); - shape = snext; - } - free(image); -} - -#endif diff --git a/src/nanosvg/nanosvgrast.h b/src/nanosvg/nanosvgrast.h deleted file mode 100644 index b740c316c..000000000 --- a/src/nanosvg/nanosvgrast.h +++ /dev/null @@ -1,1452 +0,0 @@ -/* - * Copyright (c) 2013-14 Mikko Mononen memon@inside.org - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - * - * The polygon rasterization is heavily based on stb_truetype rasterizer - * by Sean Barrett - http://nothings.org/ - * - */ - -#ifndef NANOSVGRAST_H -#define NANOSVGRAST_H - -#ifndef NANOSVGRAST_CPLUSPLUS -#ifdef __cplusplus -extern "C" { -#endif -#endif - -typedef struct NSVGrasterizer NSVGrasterizer; - -/* Example Usage: - // Load SVG - NSVGimage* image; - image = nsvgParseFromFile("test.svg", "px", 96); - - // Create rasterizer (can be used to render multiple images). - struct NSVGrasterizer* rast = nsvgCreateRasterizer(); - // Allocate memory for image - unsigned char* img = malloc(w*h*4); - // Rasterize - nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4); -*/ - -// Allocated rasterizer context. -NSVGrasterizer* nsvgCreateRasterizer(); - -// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha) -// r - pointer to rasterizer context -// image - pointer to image to rasterize -// tx,ty - image offset (applied after scaling) -// scale - image scale -// dst - pointer to destination image data, 4 bytes per pixel (RGBA) -// w - width of the image to render -// h - height of the image to render -// stride - number of bytes per scaleline in the destination buffer -void nsvgRasterize(NSVGrasterizer* r, - NSVGimage* image, float tx, float ty, float scale, - unsigned char* dst, int w, int h, int stride); - -// Deletes rasterizer context. -void nsvgDeleteRasterizer(NSVGrasterizer*); - - -#ifndef NANOSVGRAST_CPLUSPLUS -#ifdef __cplusplus -} -#endif -#endif - -#endif // NANOSVGRAST_H - -#ifdef NANOSVGRAST_IMPLEMENTATION - -#include - -#define NSVG__SUBSAMPLES 5 -#define NSVG__FIXSHIFT 10 -#define NSVG__FIX (1 << NSVG__FIXSHIFT) -#define NSVG__FIXMASK (NSVG__FIX-1) -#define NSVG__MEMPAGE_SIZE 1024 - -typedef struct NSVGedge { - float x0,y0, x1,y1; - int dir; - struct NSVGedge* next; -} NSVGedge; - -typedef struct NSVGpoint { - float x, y; - float dx, dy; - float len; - float dmx, dmy; - unsigned char flags; -} NSVGpoint; - -typedef struct NSVGactiveEdge { - int x,dx; - float ey; - int dir; - struct NSVGactiveEdge *next; -} NSVGactiveEdge; - -typedef struct NSVGmemPage { - unsigned char mem[NSVG__MEMPAGE_SIZE]; - int size; - struct NSVGmemPage* next; -} NSVGmemPage; - -typedef struct NSVGcachedPaint { - char type; - char spread; - float xform[6]; - unsigned int colors[256]; -} NSVGcachedPaint; - -struct NSVGrasterizer -{ - float px, py; - - float tessTol; - float distTol; - - NSVGedge* edges; - int nedges; - int cedges; - - NSVGpoint* points; - int npoints; - int cpoints; - - NSVGpoint* points2; - int npoints2; - int cpoints2; - - NSVGactiveEdge* freelist; - NSVGmemPage* pages; - NSVGmemPage* curpage; - - unsigned char* scanline; - int cscanline; - - unsigned char* bitmap; - int width, height, stride; -}; - -NSVGrasterizer* nsvgCreateRasterizer() -{ - NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer)); - if (r == NULL) goto error; - memset(r, 0, sizeof(NSVGrasterizer)); - - r->tessTol = 0.25f; - r->distTol = 0.01f; - - return r; - -error: - nsvgDeleteRasterizer(r); - return NULL; -} - -void nsvgDeleteRasterizer(NSVGrasterizer* r) -{ - NSVGmemPage* p; - - if (r == NULL) return; - - p = r->pages; - while (p != NULL) { - NSVGmemPage* next = p->next; - free(p); - p = next; - } - - if (r->edges) free(r->edges); - if (r->points) free(r->points); - if (r->points2) free(r->points2); - if (r->scanline) free(r->scanline); - - free(r); -} - -static NSVGmemPage* nsvg__nextPage(NSVGrasterizer* r, NSVGmemPage* cur) -{ - NSVGmemPage *newp; - - // If using existing chain, return the next page in chain - if (cur != NULL && cur->next != NULL) { - return cur->next; - } - - // Alloc new page - newp = (NSVGmemPage*)malloc(sizeof(NSVGmemPage)); - if (newp == NULL) return NULL; - memset(newp, 0, sizeof(NSVGmemPage)); - - // Add to linked list - if (cur != NULL) - cur->next = newp; - else - r->pages = newp; - - return newp; -} - -static void nsvg__resetPool(NSVGrasterizer* r) -{ - NSVGmemPage* p = r->pages; - while (p != NULL) { - p->size = 0; - p = p->next; - } - r->curpage = r->pages; -} - -static unsigned char* nsvg__alloc(NSVGrasterizer* r, int size) -{ - unsigned char* buf; - if (size > NSVG__MEMPAGE_SIZE) return NULL; - if (r->curpage == NULL || r->curpage->size+size > NSVG__MEMPAGE_SIZE) { - r->curpage = nsvg__nextPage(r, r->curpage); - } - buf = &r->curpage->mem[r->curpage->size]; - r->curpage->size += size; - return buf; -} - -static int nsvg__ptEquals(float x1, float y1, float x2, float y2, float tol) -{ - float dx = x2 - x1; - float dy = y2 - y1; - return dx*dx + dy*dy < tol*tol; -} - -static void nsvg__addPathPoint(NSVGrasterizer* r, float x, float y, int flags) -{ - NSVGpoint* pt; - - if (r->npoints > 0) { - pt = &r->points[r->npoints-1]; - if (nsvg__ptEquals(pt->x,pt->y, x,y, r->distTol)) { - pt->flags = (unsigned char)(pt->flags | flags); - return; - } - } - - if (r->npoints+1 > r->cpoints) { - r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; - r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); - if (r->points == NULL) return; - } - - pt = &r->points[r->npoints]; - pt->x = x; - pt->y = y; - pt->flags = (unsigned char)flags; - r->npoints++; -} - -static void nsvg__appendPathPoint(NSVGrasterizer* r, NSVGpoint pt) -{ - if (r->npoints+1 > r->cpoints) { - r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; - r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); - if (r->points == NULL) return; - } - r->points[r->npoints] = pt; - r->npoints++; -} - -static void nsvg__duplicatePoints(NSVGrasterizer* r) -{ - if (r->npoints > r->cpoints2) { - r->cpoints2 = r->npoints; - r->points2 = (NSVGpoint*)realloc(r->points2, sizeof(NSVGpoint) * r->cpoints2); - if (r->points2 == NULL) return; - } - - memcpy(r->points2, r->points, sizeof(NSVGpoint) * r->npoints); - r->npoints2 = r->npoints; -} - -static void nsvg__addEdge(NSVGrasterizer* r, float x0, float y0, float x1, float y1) -{ - NSVGedge* e; - - // Skip horizontal edges - if (y0 == y1) - return; - - if (r->nedges+1 > r->cedges) { - r->cedges = r->cedges > 0 ? r->cedges * 2 : 64; - r->edges = (NSVGedge*)realloc(r->edges, sizeof(NSVGedge) * r->cedges); - if (r->edges == NULL) return; - } - - e = &r->edges[r->nedges]; - r->nedges++; - - if (y0 < y1) { - e->x0 = x0; - e->y0 = y0; - e->x1 = x1; - e->y1 = y1; - e->dir = 1; - } else { - e->x0 = x1; - e->y0 = y1; - e->x1 = x0; - e->y1 = y0; - e->dir = -1; - } -} - -static float nsvg__normalize(float *x, float* y) -{ - float d = sqrtf((*x)*(*x) + (*y)*(*y)); - if (d > 1e-6f) { - float id = 1.0f / d; - *x *= id; - *y *= id; - } - return d; -} - -static float nsvg__absf(float x) { return x < 0 ? -x : x; } - -static void nsvg__flattenCubicBez(NSVGrasterizer* r, - float x1, float y1, float x2, float y2, - float x3, float y3, float x4, float y4, - int level, int type) -{ - float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234; - float dx,dy,d2,d3; - - if (level > 10) return; - - x12 = (x1+x2)*0.5f; - y12 = (y1+y2)*0.5f; - x23 = (x2+x3)*0.5f; - y23 = (y2+y3)*0.5f; - x34 = (x3+x4)*0.5f; - y34 = (y3+y4)*0.5f; - x123 = (x12+x23)*0.5f; - y123 = (y12+y23)*0.5f; - - dx = x4 - x1; - dy = y4 - y1; - d2 = nsvg__absf(((x2 - x4) * dy - (y2 - y4) * dx)); - d3 = nsvg__absf(((x3 - x4) * dy - (y3 - y4) * dx)); - - if ((d2 + d3)*(d2 + d3) < r->tessTol * (dx*dx + dy*dy)) { - nsvg__addPathPoint(r, x4, y4, type); - return; - } - - x234 = (x23+x34)*0.5f; - y234 = (y23+y34)*0.5f; - x1234 = (x123+x234)*0.5f; - y1234 = (y123+y234)*0.5f; - - nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0); - nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type); -} - -static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale) -{ - int i, j; - NSVGpath* path; - - for (path = shape->paths; path != NULL; path = path->next) { - r->npoints = 0; - // Flatten path - nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); - for (i = 0; i < path->npts-1; i += 3) { - float* p = &path->pts[i*2]; - nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, 0); - } - // Close path - nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); - // Build edges - for (i = 0, j = r->npoints-1; i < r->npoints; j = i++) - nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y); - } -} - -enum NSVGpointFlags -{ - NSVG_PT_CORNER = 0x01, - NSVG_PT_BEVEL = 0x02, - NSVG_PT_LEFT = 0x04 -}; - -static void nsvg__initClosed(NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) -{ - float w = lineWidth * 0.5f; - float dx = p1->x - p0->x; - float dy = p1->y - p0->y; - float len = nsvg__normalize(&dx, &dy); - float px = p0->x + dx*len*0.5f, py = p0->y + dy*len*0.5f; - float dlx = dy, dly = -dx; - float lx = px - dlx*w, ly = py - dly*w; - float rx = px + dlx*w, ry = py + dly*w; - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -static void nsvg__buttCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) -{ - float w = lineWidth * 0.5f; - float px = p->x, py = p->y; - float dlx = dy, dly = -dx; - float lx = px - dlx*w, ly = py - dly*w; - float rx = px + dlx*w, ry = py + dly*w; - - nsvg__addEdge(r, lx, ly, rx, ry); - - if (connect) { - nsvg__addEdge(r, left->x, left->y, lx, ly); - nsvg__addEdge(r, rx, ry, right->x, right->y); - } - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -static void nsvg__squareCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) -{ - float w = lineWidth * 0.5f; - float px = p->x - dx*w, py = p->y - dy*w; - float dlx = dy, dly = -dx; - float lx = px - dlx*w, ly = py - dly*w; - float rx = px + dlx*w, ry = py + dly*w; - - nsvg__addEdge(r, lx, ly, rx, ry); - - if (connect) { - nsvg__addEdge(r, left->x, left->y, lx, ly); - nsvg__addEdge(r, rx, ry, right->x, right->y); - } - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -#ifndef NSVG_PI -#define NSVG_PI (3.14159265358979323846264338327f) -#endif - -static void nsvg__roundCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int ncap, int connect) -{ - int i; - float w = lineWidth * 0.5f; - float px = p->x, py = p->y; - float dlx = dy, dly = -dx; - float lx = 0, ly = 0, rx = 0, ry = 0, prevx = 0, prevy = 0; - - for (i = 0; i < ncap; i++) { - float a = (float)i/(float)(ncap-1)*NSVG_PI; - float ax = cosf(a) * w, ay = sinf(a) * w; - float x = px - dlx*ax - dx*ay; - float y = py - dly*ax - dy*ay; - - if (i > 0) - nsvg__addEdge(r, prevx, prevy, x, y); - - prevx = x; - prevy = y; - - if (i == 0) { - lx = x; ly = y; - } else if (i == ncap-1) { - rx = x; ry = y; - } - } - - if (connect) { - nsvg__addEdge(r, left->x, left->y, lx, ly); - nsvg__addEdge(r, rx, ry, right->x, right->y); - } - - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -static void nsvg__bevelJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) -{ - float w = lineWidth * 0.5f; - float dlx0 = p0->dy, dly0 = -p0->dx; - float dlx1 = p1->dy, dly1 = -p1->dx; - float lx0 = p1->x - (dlx0 * w), ly0 = p1->y - (dly0 * w); - float rx0 = p1->x + (dlx0 * w), ry0 = p1->y + (dly0 * w); - float lx1 = p1->x - (dlx1 * w), ly1 = p1->y - (dly1 * w); - float rx1 = p1->x + (dlx1 * w), ry1 = p1->y + (dly1 * w); - - nsvg__addEdge(r, lx0, ly0, left->x, left->y); - nsvg__addEdge(r, lx1, ly1, lx0, ly0); - - nsvg__addEdge(r, right->x, right->y, rx0, ry0); - nsvg__addEdge(r, rx0, ry0, rx1, ry1); - - left->x = lx1; left->y = ly1; - right->x = rx1; right->y = ry1; -} - -static void nsvg__miterJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) -{ - float w = lineWidth * 0.5f; - float dlx0 = p0->dy, dly0 = -p0->dx; - float dlx1 = p1->dy, dly1 = -p1->dx; - float lx0, rx0, lx1, rx1; - float ly0, ry0, ly1, ry1; - - if (p1->flags & NSVG_PT_LEFT) { - lx0 = lx1 = p1->x - p1->dmx * w; - ly0 = ly1 = p1->y - p1->dmy * w; - nsvg__addEdge(r, lx1, ly1, left->x, left->y); - - rx0 = p1->x + (dlx0 * w); - ry0 = p1->y + (dly0 * w); - rx1 = p1->x + (dlx1 * w); - ry1 = p1->y + (dly1 * w); - nsvg__addEdge(r, right->x, right->y, rx0, ry0); - nsvg__addEdge(r, rx0, ry0, rx1, ry1); - } else { - lx0 = p1->x - (dlx0 * w); - ly0 = p1->y - (dly0 * w); - lx1 = p1->x - (dlx1 * w); - ly1 = p1->y - (dly1 * w); - nsvg__addEdge(r, lx0, ly0, left->x, left->y); - nsvg__addEdge(r, lx1, ly1, lx0, ly0); - - rx0 = rx1 = p1->x + p1->dmx * w; - ry0 = ry1 = p1->y + p1->dmy * w; - nsvg__addEdge(r, right->x, right->y, rx1, ry1); - } - - left->x = lx1; left->y = ly1; - right->x = rx1; right->y = ry1; -} - -static void nsvg__roundJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth, int ncap) -{ - int i, n; - float w = lineWidth * 0.5f; - float dlx0 = p0->dy, dly0 = -p0->dx; - float dlx1 = p1->dy, dly1 = -p1->dx; - float a0 = atan2f(dly0, dlx0); - float a1 = atan2f(dly1, dlx1); - float da = a1 - a0; - float lx, ly, rx, ry; - - if (da < NSVG_PI) da += NSVG_PI*2; - if (da > NSVG_PI) da -= NSVG_PI*2; - - n = (int)ceilf((nsvg__absf(da) / NSVG_PI) * (float)ncap); - if (n < 2) n = 2; - if (n > ncap) n = ncap; - - lx = left->x; - ly = left->y; - rx = right->x; - ry = right->y; - - for (i = 0; i < n; i++) { - float u = (float)i/(float)(n-1); - float a = a0 + u*da; - float ax = cosf(a) * w, ay = sinf(a) * w; - float lx1 = p1->x - ax, ly1 = p1->y - ay; - float rx1 = p1->x + ax, ry1 = p1->y + ay; - - nsvg__addEdge(r, lx1, ly1, lx, ly); - nsvg__addEdge(r, rx, ry, rx1, ry1); - - lx = lx1; ly = ly1; - rx = rx1; ry = ry1; - } - - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -static void nsvg__straightJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p1, float lineWidth) -{ - float w = lineWidth * 0.5f; - float lx = p1->x - (p1->dmx * w), ly = p1->y - (p1->dmy * w); - float rx = p1->x + (p1->dmx * w), ry = p1->y + (p1->dmy * w); - - nsvg__addEdge(r, lx, ly, left->x, left->y); - nsvg__addEdge(r, right->x, right->y, rx, ry); - - left->x = lx; left->y = ly; - right->x = rx; right->y = ry; -} - -static int nsvg__curveDivs(float r, float arc, float tol) -{ - float da = acosf(r / (r + tol)) * 2.0f; - int divs = (int)ceilf(arc / da); - if (divs < 2) divs = 2; - return divs; -} - -static void nsvg__expandStroke(NSVGrasterizer* r, NSVGpoint* points, int npoints, int closed, int lineJoin, int lineCap, float lineWidth) -{ - int ncap = nsvg__curveDivs(lineWidth*0.5f, NSVG_PI, r->tessTol); // Calculate divisions per half circle. - NSVGpoint left = {0,0,0,0,0,0,0,0}, right = {0,0,0,0,0,0,0,0}, firstLeft = {0,0,0,0,0,0,0,0}, firstRight = {0,0,0,0,0,0,0,0}; - NSVGpoint* p0, *p1; - int j, s, e; - - // Build stroke edges - if (closed) { - // Looping - p0 = &points[npoints-1]; - p1 = &points[0]; - s = 0; - e = npoints; - } else { - // Add cap - p0 = &points[0]; - p1 = &points[1]; - s = 1; - e = npoints-1; - } - - if (closed) { - nsvg__initClosed(&left, &right, p0, p1, lineWidth); - firstLeft = left; - firstRight = right; - } else { - // Add cap - float dx = p1->x - p0->x; - float dy = p1->y - p0->y; - nsvg__normalize(&dx, &dy); - if (lineCap == NSVG_CAP_BUTT) - nsvg__buttCap(r, &left, &right, p0, dx, dy, lineWidth, 0); - else if (lineCap == NSVG_CAP_SQUARE) - nsvg__squareCap(r, &left, &right, p0, dx, dy, lineWidth, 0); - else if (lineCap == NSVG_CAP_ROUND) - nsvg__roundCap(r, &left, &right, p0, dx, dy, lineWidth, ncap, 0); - } - - for (j = s; j < e; ++j) { - if (p1->flags & NSVG_PT_CORNER) { - if (lineJoin == NSVG_JOIN_ROUND) - nsvg__roundJoin(r, &left, &right, p0, p1, lineWidth, ncap); - else if (lineJoin == NSVG_JOIN_BEVEL || (p1->flags & NSVG_PT_BEVEL)) - nsvg__bevelJoin(r, &left, &right, p0, p1, lineWidth); - else - nsvg__miterJoin(r, &left, &right, p0, p1, lineWidth); - } else { - nsvg__straightJoin(r, &left, &right, p1, lineWidth); - } - p0 = p1++; - } - - if (closed) { - // Loop it - nsvg__addEdge(r, firstLeft.x, firstLeft.y, left.x, left.y); - nsvg__addEdge(r, right.x, right.y, firstRight.x, firstRight.y); - } else { - // Add cap - float dx = p1->x - p0->x; - float dy = p1->y - p0->y; - nsvg__normalize(&dx, &dy); - if (lineCap == NSVG_CAP_BUTT) - nsvg__buttCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); - else if (lineCap == NSVG_CAP_SQUARE) - nsvg__squareCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); - else if (lineCap == NSVG_CAP_ROUND) - nsvg__roundCap(r, &right, &left, p1, -dx, -dy, lineWidth, ncap, 1); - } -} - -static void nsvg__prepareStroke(NSVGrasterizer* r, float miterLimit, int lineJoin) -{ - int i, j; - NSVGpoint* p0, *p1; - - p0 = &r->points[r->npoints-1]; - p1 = &r->points[0]; - for (i = 0; i < r->npoints; i++) { - // Calculate segment direction and length - p0->dx = p1->x - p0->x; - p0->dy = p1->y - p0->y; - p0->len = nsvg__normalize(&p0->dx, &p0->dy); - // Advance - p0 = p1++; - } - - // calculate joins - p0 = &r->points[r->npoints-1]; - p1 = &r->points[0]; - for (j = 0; j < r->npoints; j++) { - float dlx0, dly0, dlx1, dly1, dmr2, cross; - dlx0 = p0->dy; - dly0 = -p0->dx; - dlx1 = p1->dy; - dly1 = -p1->dx; - // Calculate extrusions - p1->dmx = (dlx0 + dlx1) * 0.5f; - p1->dmy = (dly0 + dly1) * 0.5f; - dmr2 = p1->dmx*p1->dmx + p1->dmy*p1->dmy; - if (dmr2 > 0.000001f) { - float s2 = 1.0f / dmr2; - if (s2 > 600.0f) { - s2 = 600.0f; - } - p1->dmx *= s2; - p1->dmy *= s2; - } - - // Clear flags, but keep the corner. - p1->flags = (p1->flags & NSVG_PT_CORNER) ? NSVG_PT_CORNER : 0; - - // Keep track of left turns. - cross = p1->dx * p0->dy - p0->dx * p1->dy; - if (cross > 0.0f) - p1->flags |= NSVG_PT_LEFT; - - // Check to see if the corner needs to be beveled. - if (p1->flags & NSVG_PT_CORNER) { - if ((dmr2 * miterLimit*miterLimit) < 1.0f || lineJoin == NSVG_JOIN_BEVEL || lineJoin == NSVG_JOIN_ROUND) { - p1->flags |= NSVG_PT_BEVEL; - } - } - - p0 = p1++; - } -} - -static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float scale) -{ - int i, j, closed; - NSVGpath* path; - NSVGpoint* p0, *p1; - float miterLimit = shape->miterLimit; - int lineJoin = shape->strokeLineJoin; - int lineCap = shape->strokeLineCap; - float lineWidth = shape->strokeWidth * scale; - - for (path = shape->paths; path != NULL; path = path->next) { - // Flatten path - r->npoints = 0; - nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, NSVG_PT_CORNER); - for (i = 0; i < path->npts-1; i += 3) { - float* p = &path->pts[i*2]; - nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, NSVG_PT_CORNER); - } - if (r->npoints < 2) - continue; - - closed = path->closed; - - // If the first and last points are the same, remove the last, mark as closed path. - p0 = &r->points[r->npoints-1]; - p1 = &r->points[0]; - if (nsvg__ptEquals(p0->x,p0->y, p1->x,p1->y, r->distTol)) { - r->npoints--; - p0 = &r->points[r->npoints-1]; - closed = 1; - } - - if (shape->strokeDashCount > 0) { - int idash = 0, dashState = 1; - float totalDist = 0, dashLen, allDashLen, dashOffset; - NSVGpoint cur; - - if (closed) - nsvg__appendPathPoint(r, r->points[0]); - - // Duplicate points -> points2. - nsvg__duplicatePoints(r); - - r->npoints = 0; - cur = r->points2[0]; - nsvg__appendPathPoint(r, cur); - - // Figure out dash offset. - allDashLen = 0; - for (j = 0; j < shape->strokeDashCount; j++) - allDashLen += shape->strokeDashArray[j]; - if (shape->strokeDashCount & 1) - allDashLen *= 2.0f; - // Find location inside pattern - dashOffset = fmodf(shape->strokeDashOffset, allDashLen); - if (dashOffset < 0.0f) - dashOffset += allDashLen; - - while (dashOffset > shape->strokeDashArray[idash]) { - dashOffset -= shape->strokeDashArray[idash]; - idash = (idash + 1) % shape->strokeDashCount; - } - dashLen = (shape->strokeDashArray[idash] - dashOffset) * scale; - - for (j = 1; j < r->npoints2; ) { - float dx = r->points2[j].x - cur.x; - float dy = r->points2[j].y - cur.y; - float dist = sqrtf(dx*dx + dy*dy); - - if ((totalDist + dist) > dashLen) { - // Calculate intermediate point - float d = (dashLen - totalDist) / dist; - float x = cur.x + dx * d; - float y = cur.y + dy * d; - nsvg__addPathPoint(r, x, y, NSVG_PT_CORNER); - - // Stroke - if (r->npoints > 1 && dashState) { - nsvg__prepareStroke(r, miterLimit, lineJoin); - nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); - } - // Advance dash pattern - dashState = !dashState; - idash = (idash+1) % shape->strokeDashCount; - dashLen = shape->strokeDashArray[idash] * scale; - // Restart - cur.x = x; - cur.y = y; - cur.flags = NSVG_PT_CORNER; - totalDist = 0.0f; - r->npoints = 0; - nsvg__appendPathPoint(r, cur); - } else { - totalDist += dist; - cur = r->points2[j]; - nsvg__appendPathPoint(r, cur); - j++; - } - } - // Stroke any leftover path - if (r->npoints > 1 && dashState) - nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); - } else { - nsvg__prepareStroke(r, miterLimit, lineJoin); - nsvg__expandStroke(r, r->points, r->npoints, closed, lineJoin, lineCap, lineWidth); - } - } -} - -static int nsvg__cmpEdge(const void *p, const void *q) -{ - const NSVGedge* a = (const NSVGedge*)p; - const NSVGedge* b = (const NSVGedge*)q; - - if (a->y0 < b->y0) return -1; - if (a->y0 > b->y0) return 1; - return 0; -} - - -static NSVGactiveEdge* nsvg__addActive(NSVGrasterizer* r, NSVGedge* e, float startPoint) -{ - NSVGactiveEdge* z; - - if (r->freelist != NULL) { - // Restore from freelist. - z = r->freelist; - r->freelist = z->next; - } else { - // Alloc new edge. - z = (NSVGactiveEdge*)nsvg__alloc(r, sizeof(NSVGactiveEdge)); - if (z == NULL) return NULL; - } - - float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); -// STBTT_assert(e->y0 <= start_point); - // round dx down to avoid going too far - if (dxdy < 0) - z->dx = (int)(-floorf(NSVG__FIX * -dxdy)); - else - z->dx = (int)floorf(NSVG__FIX * dxdy); - z->x = (int)floorf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); -// z->x -= off_x * FIX; - z->ey = e->y1; - z->next = 0; - z->dir = e->dir; - - return z; -} - -static void nsvg__freeActive(NSVGrasterizer* r, NSVGactiveEdge* z) -{ - z->next = r->freelist; - r->freelist = z; -} - -static void nsvg__fillScanline(unsigned char* scanline, int len, int x0, int x1, int maxWeight, int* xmin, int* xmax) -{ - int i = x0 >> NSVG__FIXSHIFT; - int j = x1 >> NSVG__FIXSHIFT; - if (i < *xmin) *xmin = i; - if (j > *xmax) *xmax = j; - if (i < len && j >= 0) { - if (i == j) { - // x0,x1 are the same pixel, so compute combined coverage - scanline[i] = (unsigned char)(scanline[i] + ((x1 - x0) * maxWeight >> NSVG__FIXSHIFT)); - } else { - if (i >= 0) // add antialiasing for x0 - scanline[i] = (unsigned char)(scanline[i] + (((NSVG__FIX - (x0 & NSVG__FIXMASK)) * maxWeight) >> NSVG__FIXSHIFT)); - else - i = -1; // clip - - if (j < len) // add antialiasing for x1 - scanline[j] = (unsigned char)(scanline[j] + (((x1 & NSVG__FIXMASK) * maxWeight) >> NSVG__FIXSHIFT)); - else - j = len; // clip - - for (++i; i < j; ++i) // fill pixels between x0 and x1 - scanline[i] = (unsigned char)(scanline[i] + maxWeight); - } - } -} - -// note: this routine clips fills that extend off the edges... ideally this -// wouldn't happen, but it could happen if the truetype glyph bounding boxes -// are wrong, or if the user supplies a too-small bitmap -static void nsvg__fillActiveEdges(unsigned char* scanline, int len, NSVGactiveEdge* e, int maxWeight, int* xmin, int* xmax, char fillRule) -{ - // non-zero winding fill - int x0 = 0, w = 0; - - if (fillRule == NSVG_FILLRULE_NONZERO) { - // Non-zero - while (e != NULL) { - if (w == 0) { - // if we're currently at zero, we need to record the edge start point - x0 = e->x; w += e->dir; - } else { - int x1 = e->x; w += e->dir; - // if we went to zero, we need to draw - if (w == 0) - nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); - } - e = e->next; - } - } else if (fillRule == NSVG_FILLRULE_EVENODD) { - // Even-odd - while (e != NULL) { - if (w == 0) { - // if we're currently at zero, we need to record the edge start point - x0 = e->x; w = 1; - } else { - int x1 = e->x; w = 0; - nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); - } - e = e->next; - } - } -} - -static float nsvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a > mx ? mx : a); } - -static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - return (r) | (g << 8) | (b << 16) | (a << 24); -} - -static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u) -{ - int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); - int r = (((c0) & 0xff)*(256-iu) + (((c1) & 0xff)*iu)) >> 8; - int g = (((c0>>8) & 0xff)*(256-iu) + (((c1>>8) & 0xff)*iu)) >> 8; - int b = (((c0>>16) & 0xff)*(256-iu) + (((c1>>16) & 0xff)*iu)) >> 8; - int a = (((c0>>24) & 0xff)*(256-iu) + (((c1>>24) & 0xff)*iu)) >> 8; - return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); -} - -static unsigned int nsvg__applyOpacity(unsigned int c, float u) -{ - int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); - int r = (c) & 0xff; - int g = (c>>8) & 0xff; - int b = (c>>16) & 0xff; - int a = (((c>>24) & 0xff)*iu) >> 8; - return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); -} - -static inline int nsvg__div255(int x) -{ - return ((x+1) * 257) >> 16; -} - -static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y, - float tx, float ty, float scale, NSVGcachedPaint* cache) -{ - - if (cache->type == NSVG_PAINT_COLOR) { - int i, cr, cg, cb, ca; - cr = cache->colors[0] & 0xff; - cg = (cache->colors[0] >> 8) & 0xff; - cb = (cache->colors[0] >> 16) & 0xff; - ca = (cache->colors[0] >> 24) & 0xff; - - for (i = 0; i < count; i++) { - int r,g,b; - int a = nsvg__div255((int)cover[0] * ca); - int ia = 255 - a; - // Premultiply - r = nsvg__div255(cr * a); - g = nsvg__div255(cg * a); - b = nsvg__div255(cb * a); - - // Blend over - r += nsvg__div255(ia * (int)dst[0]); - g += nsvg__div255(ia * (int)dst[1]); - b += nsvg__div255(ia * (int)dst[2]); - a += nsvg__div255(ia * (int)dst[3]); - - dst[0] = (unsigned char)r; - dst[1] = (unsigned char)g; - dst[2] = (unsigned char)b; - dst[3] = (unsigned char)a; - - cover++; - dst += 4; - } - } else if (cache->type == NSVG_PAINT_LINEAR_GRADIENT) { - // TODO: spread modes. - // TODO: plenty of opportunities to optimize. - float fx, fy, dx, gy; - float* t = cache->xform; - int i, cr, cg, cb, ca; - unsigned int c; - - fx = ((float)x - tx) / scale; - fy = ((float)y - ty) / scale; - dx = 1.0f / scale; - - for (i = 0; i < count; i++) { - int r,g,b,a,ia; - gy = fx*t[1] + fy*t[3] + t[5]; - c = cache->colors[(int)nsvg__clampf(gy*255.0f, 0, 255.0f)]; - cr = (c) & 0xff; - cg = (c >> 8) & 0xff; - cb = (c >> 16) & 0xff; - ca = (c >> 24) & 0xff; - - a = nsvg__div255((int)cover[0] * ca); - ia = 255 - a; - - // Premultiply - r = nsvg__div255(cr * a); - g = nsvg__div255(cg * a); - b = nsvg__div255(cb * a); - - // Blend over - r += nsvg__div255(ia * (int)dst[0]); - g += nsvg__div255(ia * (int)dst[1]); - b += nsvg__div255(ia * (int)dst[2]); - a += nsvg__div255(ia * (int)dst[3]); - - dst[0] = (unsigned char)r; - dst[1] = (unsigned char)g; - dst[2] = (unsigned char)b; - dst[3] = (unsigned char)a; - - cover++; - dst += 4; - fx += dx; - } - } else if (cache->type == NSVG_PAINT_RADIAL_GRADIENT) { - // TODO: spread modes. - // TODO: plenty of opportunities to optimize. - // TODO: focus (fx,fy) - float fx, fy, dx, gx, gy, gd; - float* t = cache->xform; - int i, cr, cg, cb, ca; - unsigned int c; - - fx = ((float)x - tx) / scale; - fy = ((float)y - ty) / scale; - dx = 1.0f / scale; - - for (i = 0; i < count; i++) { - int r,g,b,a,ia; - gx = fx*t[0] + fy*t[2] + t[4]; - gy = fx*t[1] + fy*t[3] + t[5]; - gd = sqrtf(gx*gx + gy*gy); - c = cache->colors[(int)nsvg__clampf(gd*255.0f, 0, 255.0f)]; - cr = (c) & 0xff; - cg = (c >> 8) & 0xff; - cb = (c >> 16) & 0xff; - ca = (c >> 24) & 0xff; - - a = nsvg__div255((int)cover[0] * ca); - ia = 255 - a; - - // Premultiply - r = nsvg__div255(cr * a); - g = nsvg__div255(cg * a); - b = nsvg__div255(cb * a); - - // Blend over - r += nsvg__div255(ia * (int)dst[0]); - g += nsvg__div255(ia * (int)dst[1]); - b += nsvg__div255(ia * (int)dst[2]); - a += nsvg__div255(ia * (int)dst[3]); - - dst[0] = (unsigned char)r; - dst[1] = (unsigned char)g; - dst[2] = (unsigned char)b; - dst[3] = (unsigned char)a; - - cover++; - dst += 4; - fx += dx; - } - } -} - -static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float scale, NSVGcachedPaint* cache, char fillRule) -{ - NSVGactiveEdge *active = NULL; - int y, s; - int e = 0; - int maxWeight = (255 / NSVG__SUBSAMPLES); // weight per vertical scanline - int xmin, xmax; - - for (y = 0; y < r->height; y++) { - memset(r->scanline, 0, r->width); - xmin = r->width; - xmax = 0; - for (s = 0; s < NSVG__SUBSAMPLES; ++s) { - // find center of pixel for this scanline - float scany = (float)(y*NSVG__SUBSAMPLES + s) + 0.5f; - NSVGactiveEdge **step = &active; - - // update all active edges; - // remove all active edges that terminate before the center of this scanline - while (*step) { - NSVGactiveEdge *z = *step; - if (z->ey <= scany) { - *step = z->next; // delete from list -// NSVG__assert(z->valid); - nsvg__freeActive(r, z); - } else { - z->x += z->dx; // advance to position for current scanline - step = &((*step)->next); // advance through list - } - } - - // resort the list if needed - for (;;) { - int changed = 0; - step = &active; - while (*step && (*step)->next) { - if ((*step)->x > (*step)->next->x) { - NSVGactiveEdge* t = *step; - NSVGactiveEdge* q = t->next; - t->next = q->next; - q->next = t; - *step = q; - changed = 1; - } - step = &(*step)->next; - } - if (!changed) break; - } - - // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline - while (e < r->nedges && r->edges[e].y0 <= scany) { - if (r->edges[e].y1 > scany) { - NSVGactiveEdge* z = nsvg__addActive(r, &r->edges[e], scany); - if (z == NULL) break; - // find insertion point - if (active == NULL) { - active = z; - } else if (z->x < active->x) { - // insert at front - z->next = active; - active = z; - } else { - // find thing to insert AFTER - NSVGactiveEdge* p = active; - while (p->next && p->next->x < z->x) - p = p->next; - // at this point, p->next->x is NOT < z->x - z->next = p->next; - p->next = z; - } - } - e++; - } - - // now process all active edges in non-zero fashion - if (active != NULL) - nsvg__fillActiveEdges(r->scanline, r->width, active, maxWeight, &xmin, &xmax, fillRule); - } - // Blit - if (xmin < 0) xmin = 0; - if (xmax > r->width-1) xmax = r->width-1; - if (xmin <= xmax) { - nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, scale, cache); - } - } - -} - -static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int stride) -{ - int x,y; - - // Unpremultiply - for (y = 0; y < h; y++) { - unsigned char *row = &image[y*stride]; - for (x = 0; x < w; x++) { - int r = row[0], g = row[1], b = row[2], a = row[3]; - if (a != 0) { - row[0] = (unsigned char)(r*255/a); - row[1] = (unsigned char)(g*255/a); - row[2] = (unsigned char)(b*255/a); - } - row += 4; - } - } - - // Defringe - for (y = 0; y < h; y++) { - unsigned char *row = &image[y*stride]; - for (x = 0; x < w; x++) { - int r = 0, g = 0, b = 0, a = row[3], n = 0; - if (a == 0) { - if (x-1 > 0 && row[-1] != 0) { - r += row[-4]; - g += row[-3]; - b += row[-2]; - n++; - } - if (x+1 < w && row[7] != 0) { - r += row[4]; - g += row[5]; - b += row[6]; - n++; - } - if (y-1 > 0 && row[-stride+3] != 0) { - r += row[-stride]; - g += row[-stride+1]; - b += row[-stride+2]; - n++; - } - if (y+1 < h && row[stride+3] != 0) { - r += row[stride]; - g += row[stride+1]; - b += row[stride+2]; - n++; - } - if (n > 0) { - row[0] = (unsigned char)(r/n); - row[1] = (unsigned char)(g/n); - row[2] = (unsigned char)(b/n); - } - } - row += 4; - } - } -} - - -static void nsvg__initPaint(NSVGcachedPaint* cache, NSVGpaint* paint, float opacity) -{ - int i, j; - NSVGgradient* grad; - - cache->type = paint->type; - - if (paint->type == NSVG_PAINT_COLOR) { - cache->colors[0] = nsvg__applyOpacity(paint->color, opacity); - return; - } - - grad = paint->gradient; - - cache->spread = grad->spread; - memcpy(cache->xform, grad->xform, sizeof(float)*6); - - if (grad->nstops == 0) { - for (i = 0; i < 256; i++) - cache->colors[i] = 0; - } if (grad->nstops == 1) { - for (i = 0; i < 256; i++) - cache->colors[i] = nsvg__applyOpacity(grad->stops[i].color, opacity); - } else { - unsigned int ca, cb = 0; - float ua, ub, du, u; - int ia, ib, count; - - ca = nsvg__applyOpacity(grad->stops[0].color, opacity); - ua = nsvg__clampf(grad->stops[0].offset, 0, 1); - ub = nsvg__clampf(grad->stops[grad->nstops-1].offset, ua, 1); - ia = (int)(ua * 255.0f); - ib = (int)(ub * 255.0f); - for (i = 0; i < ia; i++) { - cache->colors[i] = ca; - } - - for (i = 0; i < grad->nstops-1; i++) { - ca = nsvg__applyOpacity(grad->stops[i].color, opacity); - cb = nsvg__applyOpacity(grad->stops[i+1].color, opacity); - ua = nsvg__clampf(grad->stops[i].offset, 0, 1); - ub = nsvg__clampf(grad->stops[i+1].offset, 0, 1); - ia = (int)(ua * 255.0f); - ib = (int)(ub * 255.0f); - count = ib - ia; - if (count <= 0) continue; - u = 0; - du = 1.0f / (float)count; - for (j = 0; j < count; j++) { - cache->colors[ia+j] = nsvg__lerpRGBA(ca,cb,u); - u += du; - } - } - - for (i = ib; i < 256; i++) - cache->colors[i] = cb; - } - -} - -/* -static void dumpEdges(NSVGrasterizer* r, const char* name) -{ - float xmin = 0, xmax = 0, ymin = 0, ymax = 0; - NSVGedge *e = NULL; - int i; - if (r->nedges == 0) return; - FILE* fp = fopen(name, "w"); - if (fp == NULL) return; - - xmin = xmax = r->edges[0].x0; - ymin = ymax = r->edges[0].y0; - for (i = 0; i < r->nedges; i++) { - e = &r->edges[i]; - xmin = nsvg__minf(xmin, e->x0); - xmin = nsvg__minf(xmin, e->x1); - xmax = nsvg__maxf(xmax, e->x0); - xmax = nsvg__maxf(xmax, e->x1); - ymin = nsvg__minf(ymin, e->y0); - ymin = nsvg__minf(ymin, e->y1); - ymax = nsvg__maxf(ymax, e->y0); - ymax = nsvg__maxf(ymax, e->y1); - } - - fprintf(fp, "", xmin, ymin, (xmax - xmin), (ymax - ymin)); - - for (i = 0; i < r->nedges; i++) { - e = &r->edges[i]; - fprintf(fp ,"", e->x0,e->y0, e->x1,e->y1); - } - - for (i = 0; i < r->npoints; i++) { - if (i+1 < r->npoints) - fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i+1].x, r->points[i+1].y); - fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i].flags == 0 ? "#f00" : "#0f0"); - } - - fprintf(fp, ""); - fclose(fp); -} -*/ - -void nsvgRasterize(NSVGrasterizer* r, - NSVGimage* image, float tx, float ty, float scale, - unsigned char* dst, int w, int h, int stride) -{ - NSVGshape *shape = NULL; - NSVGedge *e = NULL; - NSVGcachedPaint cache; - int i; - - r->bitmap = dst; - r->width = w; - r->height = h; - r->stride = stride; - - if (w > r->cscanline) { - r->cscanline = w; - r->scanline = (unsigned char*)realloc(r->scanline, w); - if (r->scanline == NULL) return; - } - - for (i = 0; i < h; i++) - memset(&dst[i*stride], 0, w*4); - - for (shape = image->shapes; shape != NULL; shape = shape->next) { - if (!(shape->flags & NSVG_FLAGS_VISIBLE)) - continue; - - if (shape->fill.type != NSVG_PAINT_NONE) { - nsvg__resetPool(r); - r->freelist = NULL; - r->nedges = 0; - - nsvg__flattenShape(r, shape, scale); - - // Scale and translate edges - for (i = 0; i < r->nedges; i++) { - e = &r->edges[i]; - e->x0 = tx + e->x0; - e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; - e->x1 = tx + e->x1; - e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; - } - - // Rasterize edges - qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); - - // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule - nsvg__initPaint(&cache, &shape->fill, shape->opacity); - - nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, shape->fillRule); - } - if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * scale) > 0.01f) { - nsvg__resetPool(r); - r->freelist = NULL; - r->nedges = 0; - - nsvg__flattenShapeStroke(r, shape, scale); - -// dumpEdges(r, "edge.svg"); - - // Scale and translate edges - for (i = 0; i < r->nedges; i++) { - e = &r->edges[i]; - e->x0 = tx + e->x0; - e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; - e->x1 = tx + e->x1; - e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; - } - - // Rasterize edges - qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); - - // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule - nsvg__initPaint(&cache, &shape->stroke, shape->opacity); - - nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, NSVG_FILLRULE_NONZERO); - } - } - - nsvg__unpremultiplyAlpha(dst, w, h, stride); - - r->bitmap = NULL; - r->width = 0; - r->height = 0; - r->stride = 0; -} - -#endif diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 09066bebd..5657ea3a3 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -257,6 +257,8 @@ set(SLIC3R_GUI_SOURCES Utils/WinRegistry.hpp ) +find_package(NanoSVG REQUIRED) + if (APPLE) list(APPEND SLIC3R_GUI_SOURCES Utils/RetinaHelperImpl.mm @@ -281,7 +283,7 @@ endforeach() encoding_check(libslic3r_gui) -target_link_libraries(libslic3r_gui libslic3r avrdude libcereal imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES}) +target_link_libraries(libslic3r_gui libslic3r avrdude libcereal imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES} NanoSVG::nanosvg NanoSVG::nanosvgrast) if (MSVC) target_link_libraries(libslic3r_gui Setupapi.lib) diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index b585798d3..844f6dea9 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -15,10 +15,8 @@ #include #endif /* __WXGTK2__ */ -//#define NANOSVG_IMPLEMENTATION -#include "nanosvg/nanosvg.h" -#define NANOSVGRAST_IMPLEMENTATION -#include "nanosvg/nanosvgrast.h" +#include +#include namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 17dfe9356..53566a9dc 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -23,8 +23,8 @@ #define STB_DXT_IMPLEMENTATION #include "stb_dxt/stb_dxt.h" -#include "nanosvg/nanosvg.h" -#include "nanosvg/nanosvgrast.h" +#include +#include #include "libslic3r/Utils.hpp" diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 813c75419..eb1ec72e4 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -35,9 +35,8 @@ #include "GUI_App.hpp" #include "../Utils/MacDarkMode.hpp" - -#include "nanosvg/nanosvg.h" -#include "nanosvg/nanosvgrast.h" +#include +#include namespace Slic3r { namespace GUI { From e21921f2ebd2b94c57459bd280f1b1bd8eec1b9c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 25 Jul 2022 14:19:03 +0200 Subject: [PATCH 032/131] Fixes to support wxWidgets 3.1.6(7), 3.2.0 +Updated URL and URL HASH for wxWidgets v3.2.0-patched --- deps/wxWidgets/wxWidgets.cmake | 4 +-- src/slic3r/GUI/AboutDialog.cpp | 9 ++++--- src/slic3r/GUI/BitmapComboBox.cpp | 4 ++- src/slic3r/GUI/GUI_App.cpp | 11 +++++++- src/slic3r/GUI/GUI_Factories.cpp | 14 ++++++++--- src/slic3r/GUI/GUI_Factories.hpp | 4 ++- src/slic3r/GUI/KBShortcutsDialog.cpp | 10 +++++--- src/slic3r/GUI/MsgDialog.cpp | 8 ++++++ src/slic3r/GUI/ObjectDataViewModel.cpp | 2 +- src/slic3r/GUI/PresetComboBoxes.cpp | 7 +++--- src/slic3r/GUI/SysInfoDialog.cpp | 10 +++++--- src/slic3r/GUI/Tab.cpp | 7 ++++-- src/slic3r/GUI/wxExtensions.cpp | 35 ++++++++++++++++++-------- src/slic3r/GUI/wxExtensions.hpp | 7 ++++-- 14 files changed, 93 insertions(+), 39 deletions(-) diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 4a0875d62..5f297b5db 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -13,8 +13,8 @@ if (UNIX AND NOT APPLE) # wxWidgets will not use char as the underlying type for endif() prusaslicer_add_cmake_project(wxWidgets - URL https://github.com/prusa3d/wxWidgets/archive/5412ac15586da3ecb6952fcc875d2a23366c998f.zip - URL_HASH SHA256=85a6e13152289fbf1ea51f221fbe1452e7914bbaa665b89536780810e93948a6 + URL https://github.com/prusa3d/wxWidgets/archive/2a0b365df947138c513a888d707d46248d78a341.zip + URL_HASH SHA256=9ab05cd5179196fad4ae702c78eaae9418e73a402cfd390f7438e469b13eb735 DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG dep_NanoSVG CMAKE_ARGS -DwxBUILD_PRECOMP=ON diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 103f321fd..b7b6b02ea 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -223,8 +223,9 @@ AboutDialog::AboutDialog() main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); // logo - m_logo_bitmap = ScalableBitmap(this, wxGetApp().logo_name(), 192); - m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); +// m_logo_bitmap = ScalableBitmap(this, wxGetApp().logo_name(), 192); +// m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); + m_logo = new wxStaticBitmap(this, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name()+".svg"), wxSize(192, 192))); hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); @@ -324,8 +325,8 @@ AboutDialog::AboutDialog() void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) { - m_logo_bitmap.msw_rescale(); - m_logo->SetBitmap(m_logo_bitmap.bmp()); +// m_logo_bitmap.msw_rescale(); +// m_logo->SetBitmap(m_logo_bitmap.bmp()); const wxFont& font = GetFont(); const int fs = font.GetPointSize() - 1; diff --git a/src/slic3r/GUI/BitmapComboBox.cpp b/src/slic3r/GUI/BitmapComboBox.cpp index 3396c627b..54e1a31fa 100644 --- a/src/slic3r/GUI/BitmapComboBox.cpp +++ b/src/slic3r/GUI/BitmapComboBox.cpp @@ -166,7 +166,8 @@ int BitmapComboBox::Append(const wxString& item) //2. But then set width to 0 value for no using of bitmap left and right spacing //3. Set this empty bitmap to the at list one item and BitmapCombobox will be recreated correct - wxBitmap bitmap(1, int(1.6 * wxGetApp().em_unit() + 1)); +// wxBitmap bitmap(1, int(1.6 * wxGetApp().em_unit() + 1)); + wxBitmap bitmap(1, 16); { // bitmap.SetWidth(0); is depricated now // so, use next code @@ -268,6 +269,7 @@ void BitmapComboBox::DrawBackground_(wxDC& dc, const wxRect& rect, int WXUNUSED( void BitmapComboBox::Rescale() { + return; // Next workaround: To correct scaling of a BitmapCombobox // we need to refill control with new bitmaps const wxString selection = this->GetValue(); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 533e46900..e38c371a2 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2099,6 +2099,15 @@ bool GUI_App::load_language(wxString language, bool initial) { // Allocating a temporary locale will switch the default wxTranslations to its internal wxTranslations instance. wxLocale temp_locale; +#ifdef __WXOSX__ + // ysFIXME - temporary workaround till it isn't fixed in wxWidgets: + // Use English as an initial language, because of under OSX it try to load "inappropriate" language for wxLANGUAGE_DEFAULT. + // For example in our case it's trying to load "en_CZ" and as a result PrusaSlicer catch warning message. + // But wxWidgets guys work on it. + temp_locale.Init(wxLANGUAGE_ENGLISH); +#else + temp_locale.Init(); +#endif // __WXOSX__ // Set the current translation's language to default, otherwise GetBestTranslation() may not work (see the wxWidgets source code). wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT); // Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer @@ -2239,7 +2248,7 @@ void GUI_App::update_mode() { sidebar().update_mode(); -#ifdef _MSW_DARK_MODE +#ifdef _WIN32 //_MSW_DARK_MODE if (!wxGetApp().tabs_as_menu()) dynamic_cast(mainframe->m_tabpanel)->UpdateMode(); #endif diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 7b3476d71..4adb161c2 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -142,13 +142,20 @@ std::map SettingsFactory::CATEGORY_ICON = { L("Hollowing") , "hollowing" } }; -wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp /*= true*/) +//wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp /*= true*/) +wxBitmap SettingsFactory::get_category_bitmap_(const std::string& category_name, bool menu_bmp /*= true*/) { if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) return wxNullBitmap; - return menu_bmp ? create_menu_bitmap(CATEGORY_ICON.at(category_name)) : create_scaled_bitmap(CATEGORY_ICON.at(category_name)); + return /*menu_bmp ? create_menu_bitmap(CATEGORY_ICON.at(category_name)) : */create_scaled_bitmap(CATEGORY_ICON.at(category_name)); } +wxBitmapBundle SettingsFactory::get_category_bitmap(const std::string& category_name) +{ + if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) + return wxNullBitmap; + return create_menu_bitmap(CATEGORY_ICON.at(category_name)); +} //------------------------------------- // MenuFactory @@ -435,7 +442,8 @@ std::vector MenuFactory::get_volume_bitmaps() std::vector volume_bmps; volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size()); for (auto item : ADD_VOLUME_MENU_ITEMS) - volume_bmps.push_back(create_menu_bitmap(item.second)); +// volume_bmps.push_back(create_menu_bitmap(item.second)); + volume_bmps.push_back(create_scaled_bitmap(item.second, nullptr, 16, false, "", true)); return volume_bmps; } diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index 0c478a97b..cba828c29 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -25,7 +25,9 @@ struct SettingsFactory typedef std::map> Bundle; static std::map CATEGORY_ICON; - static wxBitmap get_category_bitmap(const std::string& category_name, bool menu_bmp = true); +// static wxBitmap get_category_bitmap(const std::string& category_name, bool menu_bmp = true); + static wxBitmap get_category_bitmap_(const std::string& category_name, bool menu_bmp = true); + static wxBitmapBundle get_category_bitmap(const std::string& category_name); static Bundle get_bundle(const DynamicPrintConfig* config, bool is_object_settings); static std::vector get_options(bool is_part); }; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index d19925f31..95675590b 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -57,8 +57,8 @@ KBShortcutsDialog::KBShortcutsDialog() void KBShortcutsDialog::on_dpi_changed(const wxRect& suggested_rect) { - m_logo_bmp.msw_rescale(); - m_header_bitmap->SetBitmap(m_logo_bmp.bmp()); + //m_logo_bmp.msw_rescale(); + //m_header_bitmap->SetBitmap(m_logo_bmp.bmp()); msw_buttons_rescale(this, em_unit(), { wxID_OK }); Layout(); @@ -266,8 +266,10 @@ wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_f sizer->AddStretchSpacer(); // logo - m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 32); - m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()); + //m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 32); + //m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()); + m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name() + ".svg"), wxSize(32, 32))); + sizer->Add(m_header_bitmap, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); // text diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index 94e9ca5f3..76bcfdd4a 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -99,9 +99,17 @@ void MsgDialog::apply_style(long style) if (style & wxNO) add_button(wxID_NO, (style & wxNO_DEFAULT)); if (style & wxCANCEL) add_button(wxID_CANCEL, (style & wxCANCEL_DEFAULT)); +#if 0 logo->SetBitmap( create_scaled_bitmap(style & wxICON_WARNING ? "exclamation" : style & wxICON_INFORMATION ? "info" : style & wxICON_QUESTION ? "question" : "PrusaSlicer", this, 64, style & wxICON_ERROR)); +#else + std::string icon_name = style & wxICON_WARNING ? "exclamation" : + style & wxICON_INFORMATION ? "info" : + style & wxICON_QUESTION ? "question" : "PrusaSlicer"; + icon_name += ".svg"; + logo->SetBitmap(wxBitmapBundle::FromSVGFile(Slic3r::var(icon_name), wxSize(64, 64))); +#endif } void MsgDialog::finalize() diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 0869c1605..7baef6777 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -191,7 +191,7 @@ void ObjectDataViewModelNode::update_settings_digest_bitmaps() if (bmp == nullptr) { std::vector bmps; for (auto& category : m_opt_categories) - bmps.emplace_back(SettingsFactory::get_category_bitmap(category, false)); + bmps.emplace_back(SettingsFactory::get_category_bitmap_(category, false)); bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index ed4888a87..def48a1e4 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -376,8 +376,8 @@ void PresetComboBox::msw_rescale() { m_em_unit = em_unit(this); - m_bitmapIncompatible.msw_rescale(); - m_bitmapCompatible.msw_rescale(); + //m_bitmapIncompatible.msw_rescale(); + //m_bitmapCompatible.msw_rescale(); // parameters for an icon's drawing fill_width_height(); @@ -403,7 +403,8 @@ void PresetComboBox::fill_width_height() * So set sizes for solid_colored icons used for filament preset * and scale them in respect to em_unit value */ - const float scale_f = (float)m_em_unit * 0.1f; +// const float scale_f = (float)m_em_unit * 0.1f; + const float scale_f = 1.0f; thin_icon_width = lroundf(8 * scale_f); // analogue to 8px; wide_icon_width = norm_icon_width + thin_icon_width; diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index 53e7d637d..db8cfc9c2 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -102,8 +102,10 @@ SysInfoDialog::SysInfoDialog() main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); // logo - m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 192); - m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); + //m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 192); + //m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); + m_logo = new wxStaticBitmap(this, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name() + ".svg"), wxSize(192, 192))); + hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); @@ -194,8 +196,8 @@ SysInfoDialog::SysInfoDialog() void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect) { - m_logo_bmp.msw_rescale(); - m_logo->SetBitmap(m_logo_bmp.bmp()); + //m_logo_bmp.msw_rescale(); + //m_logo->SetBitmap(m_logo_bmp.bmp()); wxFont font = get_default_font(this); const int fs = font.GetPointSize() - 1; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 142f86a53..41276e89a 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -772,8 +772,11 @@ void Tab::update_changed_tree_ui() void Tab::update_undo_buttons() { - m_undo_btn-> SetBitmap_(m_is_modified_values ? m_bmp_value_revert: m_bmp_white_bullet); - m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); + m_undo_btn-> SetBitmap_(m_is_modified_values ? m_bmp_value_revert.name(): m_bmp_white_bullet.name()); + m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? m_bmp_non_system->name() : m_bmp_value_lock.name()); + + //m_undo_btn-> SetBitmap_(m_is_modified_values ? m_bmp_value_revert: m_bmp_white_bullet); + //m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); m_undo_btn->SetToolTip(m_is_modified_values ? m_ttg_value_revert : m_ttg_white_bullet); m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 876398510..9326c9258 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -16,6 +16,7 @@ #include "Plater.hpp" #include "../Utils/MacDarkMode.hpp" #include "BitmapComboBox.hpp" +#include "libslic3r/Utils.hpp" #include "OG_CustomCtrl.hpp" #include "libslic3r/Color.hpp" @@ -26,11 +27,13 @@ static std::map msw_menuitem_bitmaps; #ifdef __WXMSW__ void msw_rescale_menu(wxMenu* menu) { + return; struct update_icons { static void run(wxMenuItem* item) { const auto it = msw_menuitem_bitmaps.find(item->GetId()); if (it != msw_menuitem_bitmaps.end()) { - const wxBitmap& item_icon = create_menu_bitmap(it->second); +// const wxBitmap& item_icon = create_menu_bitmap(it->second); + const wxBitmapBundle& item_icon = create_menu_bitmap(it->second); if (item_icon.IsOk()) item->SetBitmap(item_icon); } @@ -63,7 +66,8 @@ void enable_menu_item(wxUpdateUIEvent& evt, std::function const cb_condi } wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, - std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler, +// std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler, + std::function cb, const wxBitmapBundle& icon, wxEvtHandler* event_handler, std::function const cb_condition, wxWindow* parent, int insert_pos/* = wxNOT_FOUND*/) { if (id == wxID_ANY) @@ -100,7 +104,9 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const if (id == wxID_ANY) id = wxNewId(); - const wxBitmap& bmp = !icon.empty() ? create_menu_bitmap(icon) : wxNullBitmap; // FIXME: pass window ptr +// const wxBitmap& bmp = !icon.empty() ? create_menu_bitmap(icon) : wxNullBitmap; // FIXME: pass window ptr + const wxBitmapBundle& bmp = !icon.empty() ? create_menu_bitmap(icon) : wxNullBitmap; // FIXME: pass window ptr + //#ifdef __WXMSW__ #ifndef __WXGTK__ if (bmp.IsOk()) @@ -420,9 +426,11 @@ int mode_icon_px_size() #endif } -wxBitmap create_menu_bitmap(const std::string& bmp_name) +//wxBitmap create_menu_bitmap(const std::string& bmp_name) +wxBitmapBundle create_menu_bitmap(const std::string& bmp_name) { - return create_scaled_bitmap(bmp_name, nullptr, 16, false, "", true); + // return create_scaled_bitmap(bmp_name, nullptr, 16, false, "", true); + return wxBitmapBundle::FromSVGFile(Slic3r::var(bmp_name + ".svg"), wxSize(16, 16)); } // win is used to get a correct em_unit value @@ -601,6 +609,7 @@ void LockButton::SetLock(bool lock) void LockButton::msw_rescale() { + return; m_bmp_lock_closed.msw_rescale(); m_bmp_lock_closed_f.msw_rescale(); m_bmp_lock_open.msw_rescale(); @@ -639,7 +648,8 @@ ModeButton::ModeButton( wxWindow* parent, const wxString& mode/* = wxEmptyString*/, const std::string& icon_name/* = ""*/, int px_cnt/* = 16*/) : - ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, icon_name, px_cnt), mode, wxBU_EXACTFIT) +// ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, icon_name, px_cnt), mode, wxBU_EXACTFIT) + ScalableButton(parent, wxID_ANY, icon_name, mode, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT) { Init(mode); } @@ -852,9 +862,10 @@ ScalableButton::ScalableButton( wxWindow * parent, Slic3r::GUI::wxGetApp().UpdateDarkUI(this); if (!icon_name.empty()) { - SetBitmap(create_scaled_bitmap(icon_name, parent, m_px_cnt)); - if (m_use_default_disabled_bitmap) - SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); +// SetBitmap(create_scaled_bitmap(icon_name, parent, m_px_cnt)); + SetBitmap(wxBitmapBundle::FromSVGFile(Slic3r::var(icon_name + ".svg"), wxSize(m_px_cnt, m_px_cnt))); + //if (m_use_default_disabled_bitmap) + // SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); if (!label.empty()) SetBitmapMargins(int(0.5* em_unit(parent)), 0); } @@ -896,7 +907,8 @@ bool ScalableButton::SetBitmap_(const std::string& bmp_name) if (m_current_icon_name.empty()) return false; - wxBitmap bmp = create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt); +// wxBitmap bmp = create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt); + wxBitmapBundle bmp = wxBitmapBundle::FromSVGFile(Slic3r::var(m_current_icon_name + ".svg"), wxSize(16, 16)); SetBitmap(bmp); SetBitmapCurrent(bmp); SetBitmapPressed(bmp); @@ -931,7 +943,8 @@ void ScalableButton::msw_rescale() { Slic3r::GUI::wxGetApp().UpdateDarkUI(this, m_has_border); - if (!m_current_icon_name.empty()) { +// if (!m_current_icon_name.empty()) { + if (0) { wxBitmap bmp = create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt); SetBitmap(bmp); SetBitmapCurrent(bmp); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index f3921919e..8387551f2 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,8 @@ inline void msw_rescale_menu(wxMenu* /* menu */) {} #endif /* __WXMSW__ */ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, - std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler = nullptr, +// std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler = nullptr, + std::function cb, const wxBitmapBundle& icon, wxEvtHandler* event_handler = nullptr, std::function const cb_condition = []() { return true;}, wxWindow* parent = nullptr, int insert_pos = wxNOT_FOUND); wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const std::string& icon = "", wxEvtHandler* event_handler = nullptr, @@ -49,7 +51,8 @@ void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector< int em_unit(wxWindow* win); int mode_icon_px_size(); -wxBitmap create_menu_bitmap(const std::string& bmp_name); +//wxBitmap create_menu_bitmap(const std::string& bmp_name); +wxBitmapBundle create_menu_bitmap(const std::string& bmp_name); wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullptr, const int px_cnt = 16, const bool grayscale = false, From 066b567714b572ce70101ee926d01b01e734f152 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 10 May 2022 12:24:04 +0200 Subject: [PATCH 033/131] Using of wxWidgets 3.1.6 WIP: * Create Cache of wxBitmapBundles instead of wxBitmaps * Use wxBitmapBundles instead of wxBitmap for most of Widgets * Use empty bitmabundles instead of wxNullBitmap for wxBitmapComboBoxes. * Updated wxWidgets.cmake * OSX specific: Discard BitmapComboBox overrides + some code cleaning --- src/slic3r/GUI/AboutDialog.cpp | 4 +- src/slic3r/GUI/BitmapCache.cpp | 327 +++++++++++++++++++++- src/slic3r/GUI/BitmapCache.hpp | 21 +- src/slic3r/GUI/BitmapComboBox.cpp | 92 +----- src/slic3r/GUI/BitmapComboBox.hpp | 17 +- src/slic3r/GUI/ButtonsDescription.cpp | 3 - src/slic3r/GUI/ConfigWizard.cpp | 24 +- src/slic3r/GUI/ConfigWizard_private.hpp | 2 +- src/slic3r/GUI/DoubleSlider.cpp | 101 +++---- src/slic3r/GUI/ExtraRenderers.cpp | 2 +- src/slic3r/GUI/ExtruderSequenceDialog.cpp | 3 - src/slic3r/GUI/Field.hpp | 16 +- src/slic3r/GUI/GUI_App.cpp | 4 +- src/slic3r/GUI/GUI_Factories.cpp | 42 +-- src/slic3r/GUI/GUI_Factories.hpp | 7 +- src/slic3r/GUI/GUI_ObjectLayers.cpp | 68 ++--- src/slic3r/GUI/GUI_ObjectList.cpp | 8 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 41 +-- src/slic3r/GUI/GUI_ObjectSettings.cpp | 13 +- src/slic3r/GUI/GUI_ObjectSettings.hpp | 1 - src/slic3r/GUI/GalleryDialog.cpp | 44 ++- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 +- src/slic3r/GUI/MainFrame.cpp | 9 +- src/slic3r/GUI/MsgDialog.cpp | 11 +- src/slic3r/GUI/Notebook.cpp | 12 +- src/slic3r/GUI/Notebook.hpp | 6 + src/slic3r/GUI/OG_CustomCtrl.cpp | 42 +-- src/slic3r/GUI/OG_CustomCtrl.hpp | 2 +- src/slic3r/GUI/ObjectDataViewModel.cpp | 84 +++--- src/slic3r/GUI/ObjectDataViewModel.hpp | 38 +-- src/slic3r/GUI/OptionsGroup.cpp | 3 +- src/slic3r/GUI/PhysicalPrinterDialog.cpp | 27 +- src/slic3r/GUI/PhysicalPrinterDialog.hpp | 5 +- src/slic3r/GUI/Plater.cpp | 41 +-- src/slic3r/GUI/PresetComboBoxes.cpp | 177 ++++++------ src/slic3r/GUI/PresetComboBoxes.hpp | 14 +- src/slic3r/GUI/SavePresetDialog.cpp | 4 +- src/slic3r/GUI/Search.cpp | 11 +- src/slic3r/GUI/Search.hpp | 2 +- src/slic3r/GUI/SysInfoDialog.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 116 +++----- src/slic3r/GUI/Tab.hpp | 6 - src/slic3r/GUI/UnsavedChangesDialog.cpp | 58 ++-- src/slic3r/GUI/wxExtensions.cpp | 223 +++++---------- src/slic3r/GUI/wxExtensions.hpp | 60 ++-- 45 files changed, 930 insertions(+), 867 deletions(-) diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index b7b6b02ea..f00259559 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -223,9 +223,7 @@ AboutDialog::AboutDialog() main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); // logo -// m_logo_bitmap = ScalableBitmap(this, wxGetApp().logo_name(), 192); -// m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); - m_logo = new wxStaticBitmap(this, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name()+".svg"), wxSize(192, 192))); + m_logo = new wxStaticBitmap(this, wxID_ANY, *get_bmp_bundle(wxGetApp().logo_name(), 192)); hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 844f6dea9..d2bf98b5b 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -60,7 +60,164 @@ static wxBitmap wxImage_to_wxBitmap_with_alpha(wxImage &&image, float scale = 1. #endif } -wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_t height) +wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vector& bmps) +{ + wxVector bitmaps; + + std::set scales = {1.0}; +#ifdef __APPLE__ + scales.emplace(m_scale); +#else + size_t disp_cnt = wxDisplay::GetCount(); + for (size_t disp = 0; disp < disp_cnt; ++disp) + scales.emplace(wxDisplay(disp).GetScaleFactor()); +#endif + + for (double scale : scales) { + size_t width = 0; + size_t height = 0; + for (const wxBitmapBundle* bmp_bndl : bmps) { +#ifdef __APPLE__ + wxSize size = bmp_bndl->GetPreferredBitmapSizeAtScale(1.0); +#else + wxSize size = bmp_bndl->GetPreferredBitmapSizeAtScale(scale); +#endif + width += size.GetWidth(); + height = std::max(height, size.GetHeight()); + } + + std::string bitmap_key = name + "," +float_to_string_decimal_point(scale); + +#ifdef __WXGTK2__ + // Broken alpha workaround + wxImage image(width, height); + image.InitAlpha(); + // Fill in with a white color. + memset(image.GetData(), 0x0ff, width * height * 3); + // Fill in with full transparency. + memset(image.GetAlpha(), 0, width * height); + size_t x = 0; + for (const wxBitmapBundle* bmp_bndl : bmps) { + wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetPreferredBitmapSizeAtScale(scale)); + if (bmp.GetWidth() > 0) { + if (bmp.GetDepth() == 32) { + wxAlphaPixelData data(bmp); + //FIXME The following method is missing from wxWidgets 3.1.1. + // It looks like the wxWidgets 3.0.3 called the wrapped bitmap's UseAlpha(). + //data.UseAlpha(); + if (data) { + for (int r = 0; r < bmp.GetHeight(); ++r) { + wxAlphaPixelData::Iterator src(data); + src.Offset(data, 0, r); + unsigned char* dst_pixels = image.GetData() + (x + r * width) * 3; + unsigned char* dst_alpha = image.GetAlpha() + x + r * width; + for (int c = 0; c < bmp.GetWidth(); ++c, ++src) { + *dst_pixels++ = src.Red(); + *dst_pixels++ = src.Green(); + *dst_pixels++ = src.Blue(); + *dst_alpha++ = src.Alpha(); + } + } + } + } + else if (bmp.GetDepth() == 24) { + wxNativePixelData data(bmp); + if (data) { + for (int r = 0; r < bmp.GetHeight(); ++r) { + wxNativePixelData::Iterator src(data); + src.Offset(data, 0, r); + unsigned char* dst_pixels = image.GetData() + (x + r * width) * 3; + unsigned char* dst_alpha = image.GetAlpha() + x + r * width; + for (int c = 0; c < bmp.GetWidth(); ++c, ++src) { + *dst_pixels++ = src.Red(); + *dst_pixels++ = src.Green(); + *dst_pixels++ = src.Blue(); + *dst_alpha++ = wxALPHA_OPAQUE; + } + } + } + } + } + x += bmp.GetWidth(); + } + + bitmaps.push_back(* this->insert(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image)))); + +#else + + wxBitmap* bitmap = this->insert(bitmap_key, width, height, scale); + wxMemoryDC memDC; + memDC.SelectObject(*bitmap); + memDC.SetBackground(*wxTRANSPARENT_BRUSH); + memDC.Clear(); + size_t x = 0; + for (const wxBitmapBundle* bmp_bndl : bmps) { + wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetPreferredBitmapSizeAtScale(scale)); + + if (bmp.GetWidth() > 0) + memDC.DrawBitmap(bmp, x, 0, true); +#ifdef __APPLE__ + // we should "move" with step equal to non-scaled width + x += bmp.GetScaledWidth(); +#else + x += bmp.GetWidth(); +#endif + } + memDC.SelectObject(wxNullBitmap); + bitmaps.push_back(*bitmap); + +#endif + } + + return insert_bndl(name, bitmaps); +} + +wxBitmapBundle* BitmapCache::insert_bndl(const std::string &bitmap_key, const char* data, size_t width, size_t height) +{ + wxBitmapBundle* bndl = nullptr; + auto it = m_bndl_map.find(bitmap_key); + if (it == m_bndl_map.end()) { + bndl = new wxBitmapBundle(wxBitmapBundle::FromSVG(data, wxSize(width, height))); + m_bndl_map[bitmap_key] = bndl; + } + else { + bndl = it->second; + *bndl = wxBitmapBundle::FromSVG(data, wxSize(width, height)); + } + return bndl; +} + +wxBitmapBundle* BitmapCache::insert_bndl(const std::string& bitmap_key, const wxBitmapBundle& bmp) +{ + wxBitmapBundle* bndl = nullptr; + auto it = m_bndl_map.find(bitmap_key); + if (it == m_bndl_map.end()) { + bndl = new wxBitmapBundle(bmp); + m_bndl_map[bitmap_key] = bndl; + } + else { + bndl = it->second; + *bndl = wxBitmapBundle(bmp); + } + return bndl; +} + +wxBitmapBundle* BitmapCache::insert_bndl(const std::string& bitmap_key, const wxVector& bmps) +{ + wxBitmapBundle* bndl = nullptr; + auto it = m_bndl_map.find(bitmap_key); + if (it == m_bndl_map.end()) { + bndl = new wxBitmapBundle(wxBitmapBundle::FromBitmaps(bmps)); + m_bndl_map[bitmap_key] = bndl; + } + else { + bndl = it->second; + *bndl = wxBitmapBundle::FromBitmaps(bmps); + } + return bndl; +} + +wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_t height, double scale/* = -1.0*/) { wxBitmap *bitmap = nullptr; auto it = m_map.find(bitmap_key); @@ -76,7 +233,7 @@ wxBitmap* BitmapCache::insert(const std::string &bitmap_key, size_t width, size_ // So, We need to let the Mac OS wxBitmap implementation // know that the image may already be scaled appropriately for Retina, // and thereby that it's not supposed to upscale it. - bitmap->CreateScaled(width, height, -1, m_scale); + bitmap->CreateScaled(width, height, -1, scale < 0.0 ? m_scale : scale); #endif m_map[bitmap_key] = bitmap; } else { @@ -297,6 +454,93 @@ error: return NULL; } +void BitmapCache::nsvgGetDataFromFileWithReplace(const char* filename, std::string& data_str, const std::map& replaces) +{ + FILE* fp = NULL; + size_t size; + char* data = NULL; + + fp = boost::nowide::fopen(filename, "rb"); + if (!fp) goto error; + fseek(fp, 0, SEEK_END); + size = ftell(fp); + fseek(fp, 0, SEEK_SET); + data = (char*)malloc(size + 1); + if (data == NULL) goto error; + if (fread(data, 1, size, fp) != size) goto error; + data[size] = '\0'; // Must be null terminated. + fclose(fp); + + data_str.assign(data); + for (auto val : replaces) + boost::replace_all(data_str, val.first, val.second); + + free(data); + return; + +error: + if (fp) fclose(fp); + if (data) free(data); + return; +} + +wxBitmapBundle* BitmapCache::from_svg(const std::string& bitmap_name, unsigned target_width, unsigned target_height, + const bool dark_mode, const std::string& new_color /*= ""*/) +{ + if (target_width == 0) + target_width = target_height; + std::string bitmap_key = bitmap_name + (target_height != 0 ? + "-h" + std::to_string(target_height) : + "-w" + std::to_string(target_width)) +// + (m_scale != 1.0f ? "-s" + float_to_string_decimal_point(m_scale) : "") + + (dark_mode ? "-dm" : "") + + new_color; + + auto it = m_bndl_map.find(bitmap_key); + if (it != m_bndl_map.end()) + return it->second; + + // map of color replaces + std::map replaces; + if (dark_mode) + replaces["\"#808080\""] = "\"#FFFFFF\""; + if (!new_color.empty()) + replaces["\"#ED6B21\""] = "\"" + new_color + "\""; + + std::string str; + nsvgGetDataFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), str, replaces); + if (str.empty()) + return nullptr; + + return insert_bndl(bitmap_key, str.data(), target_width, target_height); +} + +wxBitmapBundle* BitmapCache::from_png(const std::string& bitmap_name, unsigned width, unsigned height) +{ + std::string bitmap_key = bitmap_name + (height != 0 ? + "-h" + std::to_string(height) : + "-w" + std::to_string(width)); + + auto it = m_bndl_map.find(bitmap_key); + if (it != m_bndl_map.end()) + return it->second; + + wxImage image; + if (!image.LoadFile(Slic3r::GUI::from_u8(Slic3r::var(bitmap_name + ".png")), wxBITMAP_TYPE_PNG) || + image.GetWidth() == 0 || image.GetHeight() == 0) + return nullptr; + + if (height != 0 && unsigned(image.GetHeight()) != height) + width = unsigned(0.5f + float(image.GetWidth()) * height / image.GetHeight()); + else if (width != 0 && unsigned(image.GetWidth()) != width) + height = unsigned(0.5f + float(image.GetHeight()) * width / image.GetWidth()); + + if (height != 0 && width != 0) + image.Rescale(width, height, wxIMAGE_QUALITY_BILINEAR); + + return this->insert_bndl(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image))); +} + wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_width, unsigned target_height, const bool grayscale/* = false*/, const bool dark_mode/* = false*/, const std::string& new_color /*= ""*/) { @@ -395,5 +639,84 @@ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsi return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); } +//we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap +wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width /*= 0*/, bool dark_mode/* = false*/) +{ + wxVector bitmaps; + + std::set scales = { 1.0 }; +#ifdef __APPLE__ + scales.emplace(m_scale); +#else + size_t disp_cnt = wxDisplay::GetCount(); + for (size_t disp = 0; disp < disp_cnt; ++disp) + scales.emplace(wxDisplay(disp).GetScaleFactor()); +#endif + + for (double scale : scales) { + size_t width = width_in * scale; + size_t height = height_in * scale; + + wxImage image(width, height); + image.InitAlpha(); + unsigned char* imgdata = image.GetData(); + unsigned char* imgalpha = image.GetAlpha(); + for (size_t i = 0; i < width * height; ++i) { + *imgdata++ = r; + *imgdata++ = g; + *imgdata++ = b; + *imgalpha++ = transparency; + } + + // Add border, make white/light spools easier to see + if (border_width > 0) { + + // Restrict to width of image + if (border_width > height) border_width = height - 1; + if (border_width > width) border_width = width - 1; + + auto px_data = (uint8_t*)image.GetData(); + auto a_data = (uint8_t*)image.GetAlpha(); + + for (size_t x = 0; x < width; ++x) { + for (size_t y = 0; y < height; ++y) { + if (x < border_width || y < border_width || + x >= (width - border_width) || y >= (height - border_width)) { + const size_t idx = (x + y * width); + const size_t idx_rgb = (x + y * width) * 3; + px_data[idx_rgb] = px_data[idx_rgb + 1] = px_data[idx_rgb + 2] = dark_mode ? 245u : 110u; + a_data[idx] = 255u; + } + } + } + } + + bitmaps.push_back(wxImage_to_wxBitmap_with_alpha(std::move(image), scale)); + } + return wxBitmapBundle::FromBitmaps(bitmaps); +} + +wxBitmapBundle* BitmapCache::mksolid_bndl(size_t width, size_t height, const std::string& color, size_t border_width, bool dark_mode) +{ + std::string bitmap_key = (color.empty() ? "empty-w" : color) + "-h" + std::to_string(height) + "-w" + std::to_string(width) + (dark_mode ? "-dm" : ""); + + wxBitmapBundle* bndl = nullptr; + auto it = m_bndl_map.find(bitmap_key); + if (it == m_bndl_map.end()) { + if (color.empty()) + bndl = new wxBitmapBundle(mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT, size_t(0))); + else { + ColorRGB rgb;// [3] ; + decode_color(color, rgb); + bndl = new wxBitmapBundle(mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, border_width, dark_mode)); + } + m_bndl_map[bitmap_key] = bndl; + } + else + return it->second; + + return bndl; +} + } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/BitmapCache.hpp b/src/slic3r/GUI/BitmapCache.hpp index 5af90c5f7..28058d94b 100644 --- a/src/slic3r/GUI/BitmapCache.hpp +++ b/src/slic3r/GUI/BitmapCache.hpp @@ -24,10 +24,18 @@ public: void clear(); double scale() { return m_scale; } + wxBitmapBundle* find_bndl(const std::string &name) { auto it = m_bndl_map.find(name); return (it == m_bndl_map.end()) ? nullptr : it->second; } + const wxBitmapBundle* find_bndl(const std::string &name) const { return const_cast(this)->find_bndl(name); } wxBitmap* find(const std::string &name) { auto it = m_map.find(name); return (it == m_map.end()) ? nullptr : it->second; } const wxBitmap* find(const std::string &name) const { return const_cast(this)->find(name); } - wxBitmap* insert(const std::string &name, size_t width, size_t height); + wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const char* data, size_t width, size_t height); + wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const wxBitmapBundle &bmp); + wxBitmapBundle* insert_bndl(const std::string& bitmap_key, const wxVector& bmps); + wxBitmapBundle* insert_bndl(const std::string& name, const std::vector& bmps); + wxBitmapBundle* insert_raw_rgba_bndl(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale = false); + + wxBitmap* insert(const std::string &name, size_t width, size_t height, double scale = -1.0); wxBitmap* insert(const std::string &name, const wxBitmap &bmp); wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2); wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3); @@ -42,15 +50,24 @@ public: // And makes replases befor parsing // replace_map containes old_value->new_value static NSVGimage* nsvgParseFromFileWithReplace(const char* filename, const char* units, float dpi, const std::map& replaces); + // Gets a data from SVG file and makes replases + // replace_map containes old_value->new_value + static void nsvgGetDataFromFileWithReplace(const char* filename, std::string& data_str, const std::map& replaces); + wxBitmapBundle* from_svg(const std::string& bitmap_name, unsigned target_width, unsigned target_height, const bool dark_mode, const std::string& new_color = ""); + wxBitmapBundle* from_png(const std::string& bitmap_name, unsigned width, unsigned height); // Load svg from resources/icons. bitmap_key is given without the .svg suffix. SVG will be rasterized to provided height/width. wxBitmap* load_svg(const std::string &bitmap_key, unsigned width = 0, unsigned height = 0, const bool grayscale = false, const bool dark_mode = false, const std::string& new_color = ""); wxBitmap mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false); wxBitmap mksolid(size_t width, size_t height, const ColorRGB& rgb, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } - wxBitmap mkclear(size_t width, size_t height) { return mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT); } + wxBitmap mkclear(size_t width, size_t height) { return mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT, true, 0); } + wxBitmapBundle mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width = 0, bool dark_mode = false); + wxBitmapBundle* mksolid_bndl(size_t width, size_t height, const std::string& color = std::string(), size_t border_width = 0, bool dark_mode = false); + wxBitmapBundle* mkclear_bndl(size_t width, size_t height) { return mksolid_bndl(width, height); } private: std::map m_map; + std::map m_bndl_map; double m_gs = 0.2; // value, used for image.ConvertToGreyscale(m_gs, m_gs, m_gs) double m_scale = 1.0; // value, used for correct scaling of SVG icons on Retina display }; diff --git a/src/slic3r/GUI/BitmapComboBox.cpp b/src/slic3r/GUI/BitmapComboBox.cpp index 54e1a31fa..70c985cf9 100644 --- a/src/slic3r/GUI/BitmapComboBox.cpp +++ b/src/slic3r/GUI/BitmapComboBox.cpp @@ -54,17 +54,6 @@ using Slic3r::GUI::format_wxstr; namespace Slic3r { namespace GUI { -/* For PresetComboBox we use bitmaps that are created from images that are already scaled appropriately for Retina - * (Contrary to the intuition, the `scale` argument for Bitmap's constructor doesn't mean - * "please scale this to such and such" but rather - * "the wxImage is already sized for backing scale such and such". ) - * Unfortunately, the constructor changes the size of wxBitmap too. - * Thus We need to use unscaled size value for bitmaps that we use - * to avoid scaled size of control items. - * For this purpose control drawing methods and - * control size calculation methods (virtual) are overridden. - **/ - BitmapComboBox::BitmapComboBox(wxWindow* parent, wxWindowID id/* = wxID_ANY*/, const wxString& value/* = wxEmptyString*/, @@ -90,72 +79,6 @@ BitmapComboBox::~BitmapComboBox() { } -#ifdef __APPLE__ -bool BitmapComboBox::OnAddBitmap(const wxBitmap& bitmap) -{ - if (bitmap.IsOk()) - { - // we should use scaled! size values of bitmap - int width = (int)bitmap.GetScaledWidth(); - int height = (int)bitmap.GetScaledHeight(); - - if (m_usedImgSize.x < 0) - { - // If size not yet determined, get it from this image. - m_usedImgSize.x = width; - m_usedImgSize.y = height; - - // Adjust control size to vertically fit the bitmap - wxWindow* ctrl = GetControl(); - ctrl->InvalidateBestSize(); - wxSize newSz = ctrl->GetBestSize(); - wxSize sz = ctrl->GetSize(); - if (newSz.y > sz.y) - ctrl->SetSize(sz.x, newSz.y); - else - DetermineIndent(); - } - - wxCHECK_MSG(width == m_usedImgSize.x && height == m_usedImgSize.y, - false, - "you can only add images of same size"); - - return true; - } - - return false; -} - -void BitmapComboBox::OnDrawItem(wxDC& dc, - const wxRect& rect, - int item, - int flags) const -{ - const wxBitmap& bmp = *(static_cast(m_bitmaps[item])); - if (bmp.IsOk()) - { - // we should use scaled! size values of bitmap - wxCoord w = bmp.GetScaledWidth(); - wxCoord h = bmp.GetScaledHeight(); - - const int imgSpacingLeft = 4; - - // Draw the image centered - dc.DrawBitmap(bmp, - rect.x + (m_usedImgSize.x - w) / 2 + imgSpacingLeft, - rect.y + (rect.height - h) / 2, - true); - } - - wxString text = GetString(item); - if (!text.empty()) - dc.DrawText(text, - rect.x + m_imgAreaWidth + 1, - rect.y + (rect.height - dc.GetCharHeight()) / 2); -} -#endif - - #ifdef _WIN32 int BitmapComboBox::Append(const wxString& item) @@ -166,19 +89,11 @@ int BitmapComboBox::Append(const wxString& item) //2. But then set width to 0 value for no using of bitmap left and right spacing //3. Set this empty bitmap to the at list one item and BitmapCombobox will be recreated correct -// wxBitmap bitmap(1, int(1.6 * wxGetApp().em_unit() + 1)); - wxBitmap bitmap(1, 16); - { - // bitmap.SetWidth(0); is depricated now - // so, use next code - bitmap.UnShare();// AllocExclusive(); - bitmap.GetGDIImageData()->m_width = 0; - } - + wxBitmapBundle bitmap = *get_empty_bmp_bundle(1, 16); OnAddBitmap(bitmap); + const int n = wxComboBox::Append(item); - if (n != wxNOT_FOUND) - DoSetItemBitmap(n, bitmap); + return n; } @@ -269,7 +184,6 @@ void BitmapComboBox::DrawBackground_(wxDC& dc, const wxRect& rect, int WXUNUSED( void BitmapComboBox::Rescale() { - return; // Next workaround: To correct scaling of a BitmapCombobox // we need to refill control with new bitmaps const wxString selection = this->GetValue(); diff --git a/src/slic3r/GUI/BitmapComboBox.hpp b/src/slic3r/GUI/BitmapComboBox.hpp index a77bf401d..545213fc3 100644 --- a/src/slic3r/GUI/BitmapComboBox.hpp +++ b/src/slic3r/GUI/BitmapComboBox.hpp @@ -29,28 +29,13 @@ BitmapComboBox(wxWindow* parent, #ifdef _WIN32 int Append(const wxString& item); #endif - int Append(const wxString& item, const wxBitmap& bitmap) + int Append(const wxString& item, const wxBitmapBundle& bitmap) { return wxBitmapComboBox::Append(item, bitmap); } protected: -#ifdef __APPLE__ -/* For PresetComboBox we use bitmaps that are created from images that are already scaled appropriately for Retina - * (Contrary to the intuition, the `scale` argument for Bitmap's constructor doesn't mean - * "please scale this to such and such" but rather - * "the wxImage is already sized for backing scale such and such". ) - * Unfortunately, the constructor changes the size of wxBitmap too. - * Thus We need to use unscaled size value for bitmaps that we use - * to avoid scaled size of control items. - * For this purpose control drawing methods and - * control size calculation methods (virtual) are overridden. - **/ -bool OnAddBitmap(const wxBitmap& bitmap) override; -void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override; -#endif - #ifdef _WIN32 bool MSWOnDraw(WXDRAWITEMSTRUCT* item) override; void DrawBackground_(wxDC& dc, const wxRect& rect, int WXUNUSED(item), int flags) const; diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp index 2c5262d47..37daffd9d 100644 --- a/src/slic3r/GUI/ButtonsDescription.cpp +++ b/src/slic3r/GUI/ButtonsDescription.cpp @@ -17,9 +17,6 @@ void ButtonsDescription::FillSizerWithTextColorDescriptions(wxSizer* sizer, wxWi wxFlexGridSizer* grid_sizer = new wxFlexGridSizer(3, 5, 5); sizer->Add(grid_sizer, 0, wxEXPAND); - ScalableBitmap bmp_delete = ScalableBitmap(parent, "cross"); - ScalableBitmap bmp_delete_focus = ScalableBitmap(parent, "cross_focus"); - auto add_color = [grid_sizer, parent](wxColourPickerCtrl** color_picker, const wxColour& color, const wxColour& def_color, wxString label_text) { // wrap the label_text to the max 80 characters if (label_text.Len() > 80) { diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 803a6bfed..d95848300 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -1609,7 +1609,7 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent) #ifndef __WXOSX__ SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX #endif //__WXOSX__ - SetMinSize(bg.bmp().GetSize()); + SetMinSize(bg.GetSize()); const wxSize size = GetTextExtent("m"); em_w = size.x; @@ -1734,8 +1734,8 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) wxPaintDC dc(this); - const auto bullet_w = bullet_black.bmp().GetSize().GetWidth(); - const auto bullet_h = bullet_black.bmp().GetSize().GetHeight(); + const auto bullet_w = bullet_black.GetWidth(); + const auto bullet_h = bullet_black.GetHeight(); const int yoff_icon = bullet_h < em_h ? (em_h - bullet_h) / 2 : 0; const int yoff_text = bullet_h > em_h ? (bullet_h - em_h) / 2 : 0; const int yinc = item_height(); @@ -1748,10 +1748,10 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) unsigned x = em_w/2 + item.indent * em_w; if (i == item_active || (item_hover >= 0 && i == (size_t)item_hover)) { - dc.DrawBitmap(bullet_blue.bmp(), x, y + yoff_icon, false); + dc.DrawBitmap(bullet_blue.get_bitmap(), x, y + yoff_icon, false); } - else if (i < item_active) { dc.DrawBitmap(bullet_black.bmp(), x, y + yoff_icon, false); } - else if (i > item_active) { dc.DrawBitmap(bullet_white.bmp(), x, y + yoff_icon, false); } + else if (i < item_active) { dc.DrawBitmap(bullet_black.get_bitmap(), x, y + yoff_icon, false); } + else if (i > item_active) { dc.DrawBitmap(bullet_white.get_bitmap(), x, y + yoff_icon, false); } x += + bullet_w + em_w/2; const auto text_size = dc.GetTextExtent(item.label); @@ -1763,9 +1763,9 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt) } //draw logo - if (int y = size.y - bg.GetBmpHeight(); y>=0) { - dc.DrawBitmap(bg.bmp(), 0, y, false); - index_width = std::max(index_width, bg.GetBmpWidth() + em_w / 2); + if (int y = size.y - bg.GetHeight(); y>=0) { + dc.DrawBitmap(bg.get_bitmap(), 0, y, false); + index_width = std::max(index_width, bg.GetWidth() + em_w / 2); } if (GetMinSize().x < index_width) { @@ -1797,12 +1797,8 @@ void ConfigWizardIndex::msw_rescale() em_w = size.x; em_h = size.y; - bg.msw_rescale(); - SetMinSize(bg.bmp().GetSize()); + SetMinSize(bg.GetSize()); - bullet_black.msw_rescale(); - bullet_blue.msw_rescale(); - bullet_white.msw_rescale(); Refresh(); } diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 4de8381ff..aa074f925 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -519,7 +519,7 @@ private: ssize_t item_hover; size_t last_page; - int item_height() const { return std::max(bullet_black.bmp().GetSize().GetHeight(), em_w) + em_w; } + int item_height() const { return std::max(bullet_black.GetHeight(), em_w) + em_w; } void on_paint(wxPaintEvent &evt); void on_mouse_move(wxMouseEvent &evt); diff --git a/src/slic3r/GUI/DoubleSlider.cpp b/src/slic3r/GUI/DoubleSlider.cpp index dda50ec05..717af39ba 100644 --- a/src/slic3r/GUI/DoubleSlider.cpp +++ b/src/slic3r/GUI/DoubleSlider.cpp @@ -86,24 +86,24 @@ Control::Control( wxWindow *parent, m_bmp_thumb_higher = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "thumb_right") : ScalableBitmap(this, "thumb_up")); m_bmp_thumb_lower = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "thumb_left") : ScalableBitmap(this, "thumb_down")); - m_thumb_size = m_bmp_thumb_lower.GetBmpSize(); + m_thumb_size = m_bmp_thumb_lower.GetSize(); m_bmp_add_tick_on = ScalableBitmap(this, "colorchange_add"); m_bmp_add_tick_off = ScalableBitmap(this, "colorchange_add_f"); m_bmp_del_tick_on = ScalableBitmap(this, "colorchange_del"); m_bmp_del_tick_off = ScalableBitmap(this, "colorchange_del_f"); - m_tick_icon_dim = m_bmp_add_tick_on.GetBmpWidth(); + m_tick_icon_dim = m_bmp_add_tick_on.GetWidth(); m_bmp_one_layer_lock_on = ScalableBitmap(this, "lock_closed"); m_bmp_one_layer_lock_off = ScalableBitmap(this, "lock_closed_f"); m_bmp_one_layer_unlock_on = ScalableBitmap(this, "lock_open"); m_bmp_one_layer_unlock_off = ScalableBitmap(this, "lock_open_f"); - m_lock_icon_dim = m_bmp_one_layer_lock_on.GetBmpWidth(); + m_lock_icon_dim = m_bmp_one_layer_lock_on.GetWidth(); m_bmp_revert = ScalableBitmap(this, "undo"); - m_revert_icon_dim = m_bmp_revert.GetBmpWidth(); + m_revert_icon_dim = m_bmp_revert.GetWidth(); m_bmp_cog = ScalableBitmap(this, "cog"); - m_cog_icon_dim = m_bmp_cog.GetBmpWidth(); + m_cog_icon_dim = m_bmp_cog.GetWidth(); m_selection = ssUndef; m_ticks.set_pause_print_msg(_utf8(L("Place bearings in slots and resume printing"))); @@ -155,26 +155,11 @@ void Control::msw_rescale() { m_font = GUI::wxGetApp().normal_font(); - m_bmp_thumb_higher.msw_rescale(); - m_bmp_thumb_lower .msw_rescale(); - m_thumb_size = m_bmp_thumb_lower.bmp().GetSize(); - - m_bmp_add_tick_on .msw_rescale(); - m_bmp_add_tick_off.msw_rescale(); - m_bmp_del_tick_on .msw_rescale(); - m_bmp_del_tick_off.msw_rescale(); - m_tick_icon_dim = m_bmp_add_tick_on.bmp().GetSize().x; - - m_bmp_one_layer_lock_on .msw_rescale(); - m_bmp_one_layer_lock_off .msw_rescale(); - m_bmp_one_layer_unlock_on .msw_rescale(); - m_bmp_one_layer_unlock_off.msw_rescale(); - m_lock_icon_dim = m_bmp_one_layer_lock_on.bmp().GetSize().x; - - m_bmp_revert.msw_rescale(); - m_revert_icon_dim = m_bmp_revert.bmp().GetSize().x; - m_bmp_cog.msw_rescale(); - m_cog_icon_dim = m_bmp_cog.bmp().GetSize().x; + m_thumb_size = m_bmp_thumb_lower.GetSize(); + m_tick_icon_dim = m_bmp_add_tick_on.GetWidth(); + m_lock_icon_dim = m_bmp_one_layer_lock_on.GetWidth(); + m_revert_icon_dim = m_bmp_revert.GetWidth(); + m_cog_icon_dim = m_bmp_cog.GetWidth(); SLIDER_MARGIN = 4 + GUI::wxGetApp().em_unit(); @@ -189,22 +174,18 @@ void Control::sys_color_changed() { GUI::wxGetApp().UpdateDarkUI(GetParent()); - m_bmp_add_tick_on .msw_rescale(); - m_bmp_add_tick_off.msw_rescale(); - m_bmp_del_tick_on .msw_rescale(); - m_bmp_del_tick_off.msw_rescale(); - m_tick_icon_dim = m_bmp_add_tick_on.GetBmpWidth(); + m_bmp_add_tick_on .sys_color_changed(); + m_bmp_add_tick_off.sys_color_changed(); + m_bmp_del_tick_on .sys_color_changed(); + m_bmp_del_tick_off.sys_color_changed(); - m_bmp_one_layer_lock_on .msw_rescale(); - m_bmp_one_layer_lock_off .msw_rescale(); - m_bmp_one_layer_unlock_on .msw_rescale(); - m_bmp_one_layer_unlock_off.msw_rescale(); - m_lock_icon_dim = m_bmp_one_layer_lock_on.GetBmpWidth(); + m_bmp_one_layer_lock_on .sys_color_changed(); + m_bmp_one_layer_lock_off .sys_color_changed(); + m_bmp_one_layer_unlock_on .sys_color_changed(); + m_bmp_one_layer_unlock_off.sys_color_changed(); - m_bmp_revert.msw_rescale(); - m_revert_icon_dim = m_bmp_revert.GetBmpWidth(); - m_bmp_cog.msw_rescale(); - m_cog_icon_dim = m_bmp_cog.GetBmpWidth(); + m_bmp_revert.sys_color_changed(); + m_bmp_cog .sys_color_changed(); } int Control::GetActiveValue() const @@ -604,9 +585,12 @@ void Control::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_ return; } - wxBitmap* icon = m_focus == fiActionIcon ? &m_bmp_add_tick_off.bmp() : &m_bmp_add_tick_on.bmp(); + //wxBitmap* icon = m_focus == fiActionIcon ? &m_bmp_add_tick_off.bmp() : &m_bmp_add_tick_on.bmp(); + //if (m_ticks.ticks.find(TickCode{tick}) != m_ticks.ticks.end()) + // icon = m_focus == fiActionIcon ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp(); + ScalableBitmap* icon = m_focus == fiActionIcon ? &m_bmp_add_tick_off : &m_bmp_add_tick_on; if (m_ticks.ticks.find(TickCode{tick}) != m_ticks.ticks.end()) - icon = m_focus == fiActionIcon ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp(); + icon = m_focus == fiActionIcon ? &m_bmp_del_tick_off : &m_bmp_del_tick_on; wxCoord x_draw, y_draw; is_horizontal() ? x_draw = pt_beg.x - 0.5*m_tick_icon_dim : y_draw = pt_beg.y - 0.5*m_tick_icon_dim; @@ -615,10 +599,12 @@ void Control::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_ else is_horizontal() ? y_draw = pt_beg.y - m_tick_icon_dim-2 : x_draw = pt_end.x + 3; - if (m_draw_mode == dmSequentialFffPrint) - dc.DrawBitmap(create_scaled_bitmap("colorchange_add", nullptr, 16, true), x_draw, y_draw); + if (m_draw_mode == dmSequentialFffPrint) { + wxBitmap disabled_add = get_bmp_bundle("colorchange_add")->GetBitmapFor(this).ConvertToDisabled(); + dc.DrawBitmap(disabled_add, x_draw, y_draw); + } else - dc.DrawBitmap(*icon, x_draw, y_draw); + dc.DrawBitmap((*icon).get_bitmap(), x_draw, y_draw); //update rect of the tick action icon m_rect_tick_action = wxRect(x_draw, y_draw, m_tick_icon_dim, m_tick_icon_dim); @@ -851,7 +837,7 @@ void Control::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider { wxCoord x_draw = pos.x - int(0.5 * m_thumb_size.x); wxCoord y_draw = pos.y - int(0.5 * m_thumb_size.y); - dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower.bmp() : m_bmp_thumb_higher.bmp(), x_draw, y_draw); + dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower.get_bitmap() : m_bmp_thumb_higher.get_bitmap(), x_draw, y_draw); // Update thumb rect update_thumb_rect(x_draw, y_draw, selection); @@ -945,12 +931,12 @@ void Control::draw_ticks(wxDC& dc) // Draw icon for "Pause print", "Custom Gcode" or conflict tick if (!icon_name.empty()) { - wxBitmap icon = create_scaled_bitmap(icon_name); + wxBitmapBundle* icon = get_bmp_bundle(icon_name); wxCoord x_draw, y_draw; is_horizontal() ? x_draw = pos - 0.5 * m_tick_icon_dim : y_draw = pos - 0.5 * m_tick_icon_dim; is_horizontal() ? y_draw = mid + 22 : x_draw = mid + m_thumb_size.x + 3; - dc.DrawBitmap(icon, x_draw, y_draw); + dc.DrawBitmap(icon->GetBitmapFor(this), x_draw, y_draw); } } } @@ -1262,9 +1248,12 @@ void Control::draw_one_layer_icon(wxDC& dc) if (m_draw_mode == dmSequentialGCodeView) return; - const wxBitmap& icon = m_is_one_layer ? - m_focus == fiOneLayerIcon ? m_bmp_one_layer_lock_off.bmp() : m_bmp_one_layer_lock_on.bmp() : - m_focus == fiOneLayerIcon ? m_bmp_one_layer_unlock_off.bmp() : m_bmp_one_layer_unlock_on.bmp(); + //const wxBitmap& icon = m_is_one_layer ? + // m_focus == fiOneLayerIcon ? m_bmp_one_layer_lock_off.bmp() : m_bmp_one_layer_lock_on.bmp() : + // m_focus == fiOneLayerIcon ? m_bmp_one_layer_unlock_off.bmp() : m_bmp_one_layer_unlock_on.bmp(); + const ScalableBitmap& icon = m_is_one_layer ? + m_focus == fiOneLayerIcon ? m_bmp_one_layer_lock_off : m_bmp_one_layer_lock_on : + m_focus == fiOneLayerIcon ? m_bmp_one_layer_unlock_off : m_bmp_one_layer_unlock_on; int width, height; get_size(&width, &height); @@ -1273,7 +1262,7 @@ void Control::draw_one_layer_icon(wxDC& dc) is_horizontal() ? x_draw = width-2 : x_draw = 0.5*width - 0.5*m_lock_icon_dim; is_horizontal() ? y_draw = 0.5*height - 0.5*m_lock_icon_dim : y_draw = height-2; - dc.DrawBitmap(icon, x_draw, y_draw); + dc.DrawBitmap(icon.bmp().GetBitmapFor(this), x_draw, y_draw); //update rect of the lock/unlock icon m_rect_one_layer_icon = wxRect(x_draw, y_draw, m_lock_icon_dim, m_lock_icon_dim); @@ -1291,7 +1280,7 @@ void Control::draw_revert_icon(wxDC& dc) is_horizontal() ? x_draw = width-2 : x_draw = 0.25*SLIDER_MARGIN; is_horizontal() ? y_draw = 0.25*SLIDER_MARGIN: y_draw = height-2; - dc.DrawBitmap(m_bmp_revert.bmp(), x_draw, y_draw); + dc.DrawBitmap(m_bmp_revert.get_bitmap(), x_draw, y_draw); //update rect of the lock/unlock icon m_rect_revert_icon = wxRect(x_draw, y_draw, m_revert_icon_dim, m_revert_icon_dim); @@ -1315,7 +1304,7 @@ void Control::draw_cog_icon(wxDC& dc) is_horizontal() ? y_draw = height - m_cog_icon_dim - 2 : y_draw = height - 2; } - dc.DrawBitmap(m_bmp_cog.bmp(), x_draw, y_draw); + dc.DrawBitmap(m_bmp_cog.get_bitmap(), x_draw, y_draw); //update rect of the lock/unlock icon m_rect_cog_icon = wxRect(x_draw, y_draw, m_cog_icon_dim, m_cog_icon_dim); @@ -1673,7 +1662,7 @@ void Control::append_change_extruder_menu_item(wxMenu* menu, bool switch_current if (extruders_cnt > 1) { std::array active_extruders = get_active_extruders_for_tick(m_selection == ssLower ? m_lower_value : m_higher_value); - std::vector icons = get_extruder_color_icons(true); + std::vector icons = get_extruder_color_icons(true); wxMenu* change_extruder_menu = new wxMenu(); @@ -1684,7 +1673,7 @@ void Control::append_change_extruder_menu_item(wxMenu* menu, bool switch_current if (m_mode == MultiAsSingle) append_menu_item(change_extruder_menu, wxID_ANY, item_name, "", - [this, i](wxCommandEvent&) { add_code_as_tick(ToolChange, i); }, *icons[i-1], menu, + [this, i](wxCommandEvent&) { add_code_as_tick(ToolChange, i); }, icons[i-1], menu, [is_active_extruder]() { return !is_active_extruder; }, GUI::wxGetApp().plater()); } @@ -1722,7 +1711,7 @@ void Control::append_add_color_change_menu_item(wxMenu* menu, bool switch_curren format_wxstr(_L("Switch code to Color change (%1%) for:"), gcode(ColorChange)) : format_wxstr(_L("Add color change (%1%) for:"), gcode(ColorChange)); wxMenuItem* add_color_change_menu_item = menu->AppendSubMenu(add_color_change_menu, menu_name, ""); - add_color_change_menu_item->SetBitmap(create_menu_bitmap("colorchange_add_m")); + add_color_change_menu_item->SetBitmap(*get_bmp_bundle("colorchange_add_m")); } } diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index d72e1dd32..9bccb6b63 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -297,7 +297,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR if (can_create_editor_ctrl && !can_create_editor_ctrl()) return nullptr; - std::vector icons = get_extruder_color_icons(); + std::vector icons = get_extruder_color_icons(); if (icons.empty()) return nullptr; diff --git a/src/slic3r/GUI/ExtruderSequenceDialog.cpp b/src/slic3r/GUI/ExtruderSequenceDialog.cpp index 42313636e..e1c6a7ce0 100644 --- a/src/slic3r/GUI/ExtruderSequenceDialog.cpp +++ b/src/slic3r/GUI/ExtruderSequenceDialog.cpp @@ -264,9 +264,6 @@ void ExtruderSequenceDialog::on_dpi_changed(const wxRect& suggested_rect) { SetFont(wxGetApp().normal_font()); - m_bmp_add.msw_rescale(); - m_bmp_del.msw_rescale(); - const int em = em_unit(); m_intervals_grid_sizer->SetHGap(em); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 97db4ea7f..60a06427d 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -106,14 +106,14 @@ public: bool set_undo_to_sys_tooltip(const wxString* tip) { return m_undo_ui.set_undo_to_sys_tooltip(tip); } // ui items used for revert line value - bool has_undo_ui() const { return m_undo_ui.undo_bitmap != nullptr; } - const wxBitmap& undo_bitmap() const { return m_undo_ui.undo_bitmap->bmp(); } - const wxString* undo_tooltip() const { return m_undo_ui.undo_tooltip; } - const wxBitmap& undo_to_sys_bitmap() const { return m_undo_ui.undo_to_sys_bitmap->bmp(); } - const wxString* undo_to_sys_tooltip() const { return m_undo_ui.undo_to_sys_tooltip; } - const wxColour* label_color() const { return m_undo_ui.label_color; } - const bool blink() const { return m_undo_ui.blink; } - bool* get_blink_ptr() { return &m_undo_ui.blink; } + bool has_undo_ui() const { return m_undo_ui.undo_bitmap != nullptr; } + const wxBitmapBundle& undo_bitmap() const { return m_undo_ui.undo_bitmap->bmp(); } + const wxString* undo_tooltip() const { return m_undo_ui.undo_tooltip; } + const wxBitmapBundle& undo_to_sys_bitmap() const { return m_undo_ui.undo_to_sys_bitmap->bmp(); } + const wxString* undo_to_sys_tooltip() const { return m_undo_ui.undo_to_sys_tooltip; } + const wxColour* label_color() const { return m_undo_ui.label_color; } + const bool blink() const { return m_undo_ui.blink; } + bool* get_blink_ptr() { return &m_undo_ui.blink; } }; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index e38c371a2..69a42bf03 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -331,7 +331,7 @@ private: // See https://github.com/wxWidgets/wxWidgets/blob/master/src/msw/font.cpp // void wxNativeFontInfo::SetFractionalPointSize(float pointSizeNew) wxNativeFontInfo nfi= *font.GetNativeFontInfo(); - float pointSizeNew = scale * font.GetPointSize(); + float pointSizeNew = wxDisplay(this).GetScaleFactor() * scale * font.GetPointSize(); nfi.lf.lfHeight = nfi.GetLogFontHeightAtPPI(pointSizeNew, get_dpi_for_window(this)); nfi.pointSize = pointSizeNew; font = wxFont(nfi); @@ -1188,7 +1188,7 @@ bool GUI_App::on_init_inner() } // create splash screen with updated bmp - scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("PrusaSlicer", nullptr, 400), + scrn = new SplashScreen(bmp.IsOk() ? bmp : get_bmp_bundle("PrusaSlicer", 400)->GetPreferredBitmapSizeAtScale(1.0), wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); if (!default_splashscreen_pos) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 4adb161c2..6a3dad5f4 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -142,19 +142,11 @@ std::map SettingsFactory::CATEGORY_ICON = { L("Hollowing") , "hollowing" } }; -//wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp /*= true*/) -wxBitmap SettingsFactory::get_category_bitmap_(const std::string& category_name, bool menu_bmp /*= true*/) +wxBitmapBundle* SettingsFactory::get_category_bitmap(const std::string& category_name) { if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) - return wxNullBitmap; - return /*menu_bmp ? create_menu_bitmap(CATEGORY_ICON.at(category_name)) : */create_scaled_bitmap(CATEGORY_ICON.at(category_name)); -} - -wxBitmapBundle SettingsFactory::get_category_bitmap(const std::string& category_name) -{ - if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) - return wxNullBitmap; - return create_menu_bitmap(CATEGORY_ICON.at(category_name)); + return get_bmp_bundle("empty"); + return get_bmp_bundle(CATEGORY_ICON.at(category_name)); } //------------------------------------- @@ -437,13 +429,12 @@ static void create_freq_settings_popupmenu(wxMenu* menu, const bool is_object_se #endif } -std::vector MenuFactory::get_volume_bitmaps() +std::vector MenuFactory::get_volume_bitmaps() { - std::vector volume_bmps; + std::vector volume_bmps; volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size()); for (auto item : ADD_VOLUME_MENU_ITEMS) -// volume_bmps.push_back(create_menu_bitmap(item.second)); - volume_bmps.push_back(create_scaled_bitmap(item.second, nullptr, 16, false, "", true)); + volume_bmps.push_back(get_bmp_bundle(item.second)); return volume_bmps; } @@ -623,7 +614,7 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_) // Add full settings list auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); - menu_item->SetBitmap(create_menu_bitmap("cog")); + menu_item->SetBitmap(*get_bmp_bundle("cog")); menu_item->SetSubMenu(create_settings_popupmenu(menu, is_object_settings, item)); return menu->Append(menu_item); @@ -768,7 +759,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) return; } - std::vector icons = get_extruder_color_icons(true); + std::vector icons = get_extruder_color_icons(true); wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; @@ -787,7 +778,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) (is_active_extruder ? " (" + _L("active") + ")" : ""); append_menu_item(extruder_selection_menu, wxID_ANY, item_name, "", - [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, *icons[icon_idx], menu, + [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, icons[icon_idx], menu, [is_active_extruder]() { return !is_active_extruder; }, m_parent); } @@ -1147,12 +1138,6 @@ void MenuFactory::update_default_menu() create_default_menu(); } -void MenuFactory::msw_rescale() -{ - for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu }) - msw_rescale_menu(dynamic_cast(menu)); -} - #ifdef _WIN32 // For this class is used code from stackoverflow: // https://stackoverflow.com/questions/257288/is-it-possible-to-write-a-template-to-check-for-a-functions-existence @@ -1182,7 +1167,7 @@ static void update_menu_item_def_colors(T* item) void MenuFactory::sys_color_changed() { for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu }) { - msw_rescale_menu(dynamic_cast(menu));// msw_rescale_menu updates just icons, so use it + sys_color_changed_menu(dynamic_cast(menu));// msw_rescale_menu updates just icons, so use it #ifdef _WIN32 // but under MSW we have to update item's bachground color for (wxMenuItem* item : menu->GetMenuItems()) @@ -1195,14 +1180,17 @@ void MenuFactory::sys_color_changed(wxMenuBar* menubar) { for (size_t id = 0; id < menubar->GetMenuCount(); id++) { wxMenu* menu = menubar->GetMenu(id); - msw_rescale_menu(menu); + sys_color_changed_menu(menu); +#ifndef __linux__ + menu->SetupBitmaps(); #ifdef _WIN32 // but under MSW we have to update item's bachground color for (wxMenuItem* item : menu->GetMenuItems()) update_menu_item_def_colors(item); +#endif #endif } - menubar->Refresh(); +// menubar->Refresh(); } diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index cba828c29..bbbc00d42 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -25,9 +25,7 @@ struct SettingsFactory typedef std::map> Bundle; static std::map CATEGORY_ICON; -// static wxBitmap get_category_bitmap(const std::string& category_name, bool menu_bmp = true); - static wxBitmap get_category_bitmap_(const std::string& category_name, bool menu_bmp = true); - static wxBitmapBundle get_category_bitmap(const std::string& category_name); + static wxBitmapBundle* get_category_bitmap(const std::string& category_name); static Bundle get_bundle(const DynamicPrintConfig* config, bool is_object_settings); static std::vector get_options(bool is_part); }; @@ -36,7 +34,7 @@ class MenuFactory { public: static const std::vector> ADD_VOLUME_MENU_ITEMS; - static std::vector get_volume_bitmaps(); + static std::vector get_volume_bitmaps(); MenuFactory(); ~MenuFactory() = default; @@ -45,7 +43,6 @@ public: void update(); void update_object_menu(); void update_default_menu(); - void msw_rescale(); void sys_color_changed(); static void sys_color_changed(wxMenuBar* menu_bar); diff --git a/src/slic3r/GUI/GUI_ObjectLayers.cpp b/src/slic3r/GUI/GUI_ObjectLayers.cpp index 0587f353f..6f6ec5238 100644 --- a/src/slic3r/GUI/GUI_ObjectLayers.cpp +++ b/src/slic3r/GUI/GUI_ObjectLayers.cpp @@ -234,47 +234,47 @@ void ObjectLayers::UpdateAndShow(const bool show) void ObjectLayers::msw_rescale() { - m_bmp_delete.msw_rescale(); - m_bmp_add.msw_rescale(); + //m_bmp_delete.msw_rescale(); + //m_bmp_add.msw_rescale(); - m_grid_sizer->SetHGap(wxGetApp().em_unit()); + //m_grid_sizer->SetHGap(wxGetApp().em_unit()); - // rescale edit-boxes - const int cells_cnt = m_grid_sizer->GetCols() * m_grid_sizer->GetEffectiveRowsCount(); - for (int i = 0; i < cells_cnt; ++i) { - const wxSizerItem* item = m_grid_sizer->GetItem(i); - if (item->IsWindow()) { - LayerRangeEditor* editor = dynamic_cast(item->GetWindow()); - if (editor != nullptr) - editor->msw_rescale(); - } - else if (item->IsSizer()) // case when we have editor with buttons - { - wxSizerItem* e_item = item->GetSizer()->GetItem(size_t(0)); // editor - if (e_item->IsWindow()) { - LayerRangeEditor* editor = dynamic_cast(e_item->GetWindow()); - if (editor != nullptr) - editor->msw_rescale(); - } + //// rescale edit-boxes + //const int cells_cnt = m_grid_sizer->GetCols() * m_grid_sizer->GetEffectiveRowsCount(); + //for (int i = 0; i < cells_cnt; ++i) { + // const wxSizerItem* item = m_grid_sizer->GetItem(i); + // if (item->IsWindow()) { + // LayerRangeEditor* editor = dynamic_cast(item->GetWindow()); + // if (editor != nullptr) + // editor->msw_rescale(); + // } + // else if (item->IsSizer()) // case when we have editor with buttons + // { + // wxSizerItem* e_item = item->GetSizer()->GetItem(size_t(0)); // editor + // if (e_item->IsWindow()) { + // LayerRangeEditor* editor = dynamic_cast(e_item->GetWindow()); + // if (editor != nullptr) + // editor->msw_rescale(); + // } - if (item->GetSizer()->GetItemCount() > 2) // if there are Add/Del buttons - for (size_t btn : {2, 3}) { // del_btn, add_btn - wxSizerItem* b_item = item->GetSizer()->GetItem(btn); - if (b_item->IsWindow()) { - auto button = dynamic_cast(b_item->GetWindow()); - if (button != nullptr) - button->msw_rescale(); - } - } - } - } + // if (item->GetSizer()->GetItemCount() > 2) // if there are Add/Del buttons + // for (size_t btn : {2, 3}) { // del_btn, add_btn + // wxSizerItem* b_item = item->GetSizer()->GetItem(btn); + // if (b_item->IsWindow()) { + // auto button = dynamic_cast(b_item->GetWindow()); + // if (button != nullptr) + // button->msw_rescale(); + // } + // } + // } + //} m_grid_sizer->Layout(); } void ObjectLayers::sys_color_changed() { - m_bmp_delete.msw_rescale(); - m_bmp_add.msw_rescale(); + m_bmp_delete.sys_color_changed(); + m_bmp_add.sys_color_changed(); // rescale edit-boxes const int cells_cnt = m_grid_sizer->GetCols() * m_grid_sizer->GetEffectiveRowsCount(); @@ -286,7 +286,7 @@ void ObjectLayers::sys_color_changed() if (b_item->IsWindow()) { auto button = dynamic_cast(b_item->GetWindow()); if (button != nullptr) - button->msw_rescale(); + button->sys_color_changed(); } } } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index c1fdf1c9f..04a5ed6fa 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -4239,9 +4239,6 @@ void ObjectList::msw_rescale() GetColumn(colExtruder)->SetWidth( 8 * em); GetColumn(colEditing )->SetWidth( 3 * em); - // rescale/update existing items with bitmaps - m_objects_model->Rescale(); - Layout(); } @@ -4249,7 +4246,10 @@ void ObjectList::sys_color_changed() { wxGetApp().UpdateDVCDarkUI(this, true); - msw_rescale(); + // update existing items with bitmaps + m_objects_model->UpdateBitmaps(); + + Layout(); } void ObjectList::ItemValueChanged(wxDataViewEvent &event) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 24ae01389..a538f2b33 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -126,7 +126,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Load bitmaps to be used for the mirroring buttons: m_mirror_bitmap_on = ScalableBitmap(parent, "mirroring_on"); m_mirror_bitmap_off = ScalableBitmap(parent, "mirroring_off"); - m_mirror_bitmap_hidden = ScalableBitmap(parent, "mirroring_transparent.png"); + m_mirror_bitmap_hidden = ScalableBitmap(parent, "mirroring_transparent"); const int border = wxOSX ? 0 : 4; const int em = wxGetApp().em_unit(); @@ -1009,7 +1009,7 @@ void ObjectManipulation::update_warning_icon_state(const MeshErrorsInfo& warning m_manifold_warning_bmp = ScalableBitmap(m_parent, warning_icon_name); const wxString& tooltip = warning.tooltip; m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); - m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0,0) : m_manifold_warning_bmp.bmp().GetSize()); + m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0,0) : m_manifold_warning_bmp.GetSize()); m_fix_throught_netfab_bitmap->SetToolTip(tooltip); } @@ -1336,25 +1336,10 @@ void ObjectManipulation::msw_rescale() m_item_name->SetMinSize(wxSize(20*em, wxDefaultCoord)); msw_rescale_word_local_combo(m_word_local_combo); m_word_local_combo_sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); - m_manifold_warning_bmp.msw_rescale(); const wxString& tooltip = m_fix_throught_netfab_bitmap->GetToolTipText(); m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); - m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0, 0) : m_manifold_warning_bmp.bmp().GetSize()); - - m_mirror_bitmap_on.msw_rescale(); - m_mirror_bitmap_off.msw_rescale(); - m_mirror_bitmap_hidden.msw_rescale(); - m_reset_scale_button->msw_rescale(); - m_reset_rotation_button->msw_rescale(); -#if ENABLE_WORLD_COORDINATE - m_reset_skew_button->msw_rescale(); -#endif /// ENABLE_WORLD_COORDINATE - m_drop_to_bed_button->msw_rescale(); - m_lock_bnt->msw_rescale(); - - for (int id = 0; id < 3; ++id) - m_mirror_buttons[id].first->msw_rescale(); + m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0, 0) : m_manifold_warning_bmp.GetSize()); // rescale label-heights // Text trick to grid sizer layout: @@ -1383,20 +1368,16 @@ void ObjectManipulation::sys_color_changed() for (ManipulationEditor* editor : m_editors) editor->sys_color_changed(this); - // btn...->msw_rescale() updates icon on button, so use it - m_mirror_bitmap_on.msw_rescale(); - m_mirror_bitmap_off.msw_rescale(); - m_mirror_bitmap_hidden.msw_rescale(); - m_reset_scale_button->msw_rescale(); - m_reset_rotation_button->msw_rescale(); -#if ENABLE_WORLD_COORDINATE - m_reset_skew_button->msw_rescale(); -#endif // ENABLE_WORLD_COORDINATE - m_drop_to_bed_button->msw_rescale(); - m_lock_bnt->msw_rescale(); + m_mirror_bitmap_on.sys_color_changed(); + m_mirror_bitmap_off.sys_color_changed(); + m_mirror_bitmap_hidden.sys_color_changed(); + m_reset_scale_button->sys_color_changed(); + m_reset_rotation_button->sys_color_changed(); + m_drop_to_bed_button->sys_color_changed(); + m_lock_bnt->sys_color_changed(); for (int id = 0; id < 3; ++id) - m_mirror_buttons[id].first->msw_rescale(); + m_mirror_buttons[id].first->sys_color_changed(); } #if ENABLE_WORLD_COORDINATE diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index 291013fe9..97eb5f10d 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -99,7 +99,7 @@ bool ObjectSettings::update_settings_list() btn->SetToolTip(_(L("Remove parameter"))); btn->SetBitmapFocus(m_bmp_delete_focus.bmp()); - btn->SetBitmapHover(m_bmp_delete_focus.bmp()); + btn->SetBitmapCurrent(m_bmp_delete_focus.bmp()); btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { wxGetApp().plater()->take_snapshot(from_u8((boost::format(_utf8(L("Delete Option %s"))) % opt_key).str())); @@ -133,7 +133,7 @@ bool ObjectSettings::update_settings_list() return; ctrl->SetBitmap_(m_bmp_delete); ctrl->SetBitmapFocus(m_bmp_delete_focus.bmp()); - ctrl->SetBitmapHover(m_bmp_delete_focus.bmp()); + ctrl->SetBitmapCurrent(m_bmp_delete_focus.bmp()); }; const bool is_extruders_cat = cat.first == "Extruders"; @@ -268,15 +268,6 @@ void ObjectSettings::UpdateAndShow(const bool show) OG_Settings::UpdateAndShow(show ? update_settings_list() : false); } -void ObjectSettings::msw_rescale() -{ - m_bmp_delete.msw_rescale(); - m_bmp_delete_focus.msw_rescale(); - - for (auto group : m_og_settings) - group->msw_rescale(); -} - void ObjectSettings::sys_color_changed() { m_og->sys_color_changed(); diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp index e5a6937f1..5d0be1308 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp @@ -56,7 +56,6 @@ public: bool add_missed_options(ModelConfig *config_to, const DynamicPrintConfig &config_from); void update_config_values(ModelConfig *config); void UpdateAndShow(const bool show) override; - void msw_rescale(); void sys_color_changed(); }; diff --git a/src/slic3r/GUI/GalleryDialog.cpp b/src/slic3r/GUI/GalleryDialog.cpp index 975b807dc..6be6a94fe 100644 --- a/src/slic3r/GUI/GalleryDialog.cpp +++ b/src/slic3r/GUI/GalleryDialog.cpp @@ -157,8 +157,9 @@ bool GalleryDialog::can_change_thumbnail() void GalleryDialog::on_dpi_changed(const wxRect& suggested_rect) { - const int& em = em_unit(); + update(); + const int& em = em_unit(); msw_buttons_rescale(this, em, { ID_BTN_ADD_CUSTOM_SHAPE, ID_BTN_DEL_CUSTOM_SHAPE, ID_BTN_REPLACE_CUSTOM_PNG, wxID_OK, wxID_CLOSE }); wxSize size = wxSize(50 * em, 35 * em); @@ -169,13 +170,14 @@ void GalleryDialog::on_dpi_changed(const wxRect& suggested_rect) Refresh(); } -static void add_lock(wxImage& image) +static void add_lock(wxImage& image, wxWindow* parent_win) { - int lock_sz = 22; + wxBitmapBundle* bmp_bndl = get_bmp_bundle("lock", 22); #ifdef __APPLE__ - lock_sz /= mac_max_scaling_factor(); + wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetDefaultSize() * mac_max_scaling_factor()); +#else + wxBitmap bmp = bmp_bndl->GetBitmapFor(parent_win); #endif - wxBitmap bmp = create_scaled_bitmap("lock", nullptr, lock_sz); wxImage lock_image = bmp.ConvertToImage(); if (!lock_image.IsOk() || lock_image.GetWidth() == 0 || lock_image.GetHeight() == 0) @@ -213,21 +215,28 @@ static void add_lock(wxImage& image) } } -static void add_default_image(wxImageList* img_list, bool is_system) +static void add_default_image(wxImageList* img_list, bool is_system, wxWindow* parent_win) { - int sz = IMG_PX_CNT; + wxBitmapBundle* bmp_bndl = get_bmp_bundle("cog", IMG_PX_CNT); #ifdef __APPLE__ - sz /= mac_max_scaling_factor(); + wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetDefaultSize() * mac_max_scaling_factor()); +#else + wxBitmap bmp = bmp_bndl->GetBitmapFor(parent_win); #endif - wxBitmap bmp = create_scaled_bitmap("cog", nullptr, sz, true); + bmp = bmp.ConvertToDisabled(); if (is_system) { wxImage image = bmp.ConvertToImage(); if (image.IsOk() && image.GetWidth() != 0 && image.GetHeight() != 0) { - add_lock(image); + add_lock(image, parent_win); +#ifdef __APPLE__ + bmp = wxBitmap(std::move(image), -1, mac_max_scaling_factor()); +#else bmp = wxBitmap(std::move(image)); +#endif } } + img_list->Add(bmp); }; @@ -344,8 +353,13 @@ void GalleryDialog::load_label_icon_list() // Make an image list containing large icons +#ifdef __APPLE__ + m_image_list = new wxImageList(IMG_PX_CNT, IMG_PX_CNT); + int px_cnt = IMG_PX_CNT * mac_max_scaling_factor(); +#else int px_cnt = (int)(em_unit() * IMG_PX_CNT * 0.1f + 0.5f); m_image_list = new wxImageList(px_cnt, px_cnt); +#endif std::string ext = ".png"; @@ -364,7 +378,7 @@ void GalleryDialog::load_label_icon_list() if (can_generate_thumbnail) generate_thumbnail_from_model(model_name); else { - add_default_image(m_image_list, item.is_system); + add_default_image(m_image_list, item.is_system, this); continue; } } @@ -373,14 +387,18 @@ void GalleryDialog::load_label_icon_list() if (!image.CanRead(from_u8(img_name)) || !image.LoadFile(from_u8(img_name), wxBITMAP_TYPE_PNG) || image.GetWidth() == 0 || image.GetHeight() == 0) { - add_default_image(m_image_list, item.is_system); + add_default_image(m_image_list, item.is_system, this); continue; } image.Rescale(px_cnt, px_cnt, wxIMAGE_QUALITY_BILINEAR); if (item.is_system) - add_lock(image); + add_lock(image, this); +#ifdef __APPLE__ + wxBitmap bmp = wxBitmap(std::move(image), -1, mac_max_scaling_factor()); +#else wxBitmap bmp = wxBitmap(std::move(image)); +#endif m_image_list->Add(bmp); } diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 95675590b..01b6cd626 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -266,9 +266,7 @@ wxPanel* KBShortcutsDialog::create_header(wxWindow* parent, const wxFont& bold_f sizer->AddStretchSpacer(); // logo - //m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 32); - //m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()); - m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name() + ".svg"), wxSize(32, 32))); + m_header_bitmap = new wxStaticBitmap(panel, wxID_ANY, *get_bmp_bundle(wxGetApp().logo_name(), 32)); sizer->Add(m_header_bitmap, 0, wxEXPAND | wxLEFT | wxRIGHT, 10); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 0ec2b9964..fe2f18769 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1014,9 +1014,6 @@ void MainFrame::on_dpi_changed(const wxRect& suggested_rect) for (auto tab : wxGetApp().tabs_list) tab->msw_rescale(); - for (size_t id = 0; id < m_menubar->GetMenuCount(); id++) - msw_rescale_menu(m_menubar->GetMenu(id)); - // Workarounds for correct Window rendering after rescale /* Even if Window is maximized during moving, @@ -1051,7 +1048,7 @@ void MainFrame::on_sys_color_changed() #ifdef _MSW_DARK_MODE // update common mode sizer if (!wxGetApp().tabs_as_menu()) - dynamic_cast(m_tabpanel)->Rescale(); + dynamic_cast(m_tabpanel)->OnColorsChanged(); #endif #endif @@ -1612,9 +1609,9 @@ void MainFrame::update_menubar() m_changeable_menu_items[miSend] ->SetItemLabel((is_fff ? _L("S&end G-code") : _L("S&end to print")) + dots + "\tCtrl+Shift+G"); m_changeable_menu_items[miMaterialTab] ->SetItemLabel((is_fff ? _L("&Filament Settings Tab") : _L("Mate&rial Settings Tab")) + "\tCtrl+3"); - m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_menu_bitmap(is_fff ? "spool" : "resin")); + m_changeable_menu_items[miMaterialTab] ->SetBitmap(*get_bmp_bundle(is_fff ? "spool" : "resin")); - m_changeable_menu_items[miPrinterTab] ->SetBitmap(create_menu_bitmap(is_fff ? "printer" : "sla_printer")); + m_changeable_menu_items[miPrinterTab] ->SetBitmap(*get_bmp_bundle(is_fff ? "printer" : "sla_printer")); } #if 0 diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index 76bcfdd4a..43e13841c 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -99,17 +99,10 @@ void MsgDialog::apply_style(long style) if (style & wxNO) add_button(wxID_NO, (style & wxNO_DEFAULT)); if (style & wxCANCEL) add_button(wxID_CANCEL, (style & wxCANCEL_DEFAULT)); -#if 0 - logo->SetBitmap( create_scaled_bitmap(style & wxICON_WARNING ? "exclamation" : - style & wxICON_INFORMATION ? "info" : - style & wxICON_QUESTION ? "question" : "PrusaSlicer", this, 64, style & wxICON_ERROR)); -#else std::string icon_name = style & wxICON_WARNING ? "exclamation" : style & wxICON_INFORMATION ? "info" : style & wxICON_QUESTION ? "question" : "PrusaSlicer"; - icon_name += ".svg"; - logo->SetBitmap(wxBitmapBundle::FromSVGFile(Slic3r::var(icon_name), wxSize(64, 64))); -#endif + logo->SetBitmap(*get_bmp_bundle(icon_name, 64)); } void MsgDialog::finalize() @@ -238,7 +231,7 @@ ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_ add_msg_content(this, content_sizer, msg, monospaced_font); // Use a small bitmap with monospaced font, as the error text will not be wrapped. - logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84)); + logo->SetBitmap(*get_bmp_bundle("PrusaSlicer_192px_grayscale.png", monospaced_font ? 48 : /*1*/84)); SetMaxSize(wxSize(-1, CONTENT_MAX_HEIGHT*wxGetApp().em_unit())); diff --git a/src/slic3r/GUI/Notebook.cpp b/src/slic3r/GUI/Notebook.cpp index 9c5ccb834..380b402d5 100644 --- a/src/slic3r/GUI/Notebook.cpp +++ b/src/slic3r/GUI/Notebook.cpp @@ -95,10 +95,6 @@ void ButtonsListCtrl::UpdateMode() void ButtonsListCtrl::Rescale() { - m_mode_sizer->msw_rescale(); - for (ScalableButton* btn : m_pageButtons) - btn->msw_rescale(); - int em = em_unit(this); m_btn_margin = std::lround(0.3 * em); m_line_margin = std::lround(0.1 * em); @@ -108,6 +104,14 @@ void ButtonsListCtrl::Rescale() m_sizer->Layout(); } +void ButtonsListCtrl::OnColorsChanged() +{ + for (ScalableButton* btn : m_pageButtons) + btn->sys_color_changed(); + + m_sizer->Layout(); +} + void ButtonsListCtrl::SetSelection(int sel) { if (m_selection == sel) diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index af03a6a08..bd6c5d85a 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -21,6 +21,7 @@ public: void SetSelection(int sel); void UpdateMode(); void Rescale(); + void OnColorsChanged(); bool InsertPage(size_t n, const wxString& text, bool bSelect = false, const std::string& bmp_name = ""); void RemovePage(size_t n); bool SetPageImage(size_t n, const std::string& bmp_name) const; @@ -245,6 +246,11 @@ public: GetBtnsListCtrl()->Rescale(); } + void OnColorsChanged() + { + GetBtnsListCtrl()->OnColorsChanged(); + } + void OnNavigationKey(wxNavigationKeyEvent& event) { if (event.IsWindowChange()) { diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 836ad0c38..45d51fb63 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -19,12 +19,12 @@ static bool is_point_in_rect(const wxPoint& pt, const wxRect& rect) rect.GetTop() <= pt.y && pt.y <= rect.GetBottom(); } -static wxSize get_bitmap_size(const wxBitmap& bmp) +static wxSize get_bitmap_size(const wxBitmapBundle* bmp, wxWindow* parent) { #ifdef __APPLE__ - return bmp.GetScaledSize(); + return bmp->GetDefaultSize(); #else - return bmp.GetSize(); + return bmp->GetBitmapFor(parent).GetSize(); #endif } @@ -45,8 +45,8 @@ OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent, m_v_gap = lround(1.0 * m_em_unit); m_h_gap = lround(0.2 * m_em_unit); - m_bmp_mode_sz = get_bitmap_size(create_scaled_bitmap("mode_simple", this, wxOSX ? 10 : 12)); - m_bmp_blinking_sz = get_bitmap_size(create_scaled_bitmap("search_blink", this)); + m_bmp_mode_sz = get_bitmap_size(get_bmp_bundle("mode_simple", wxOSX ? 10 : 12), this); + m_bmp_blinking_sz = get_bitmap_size(get_bmp_bundle("search_blink"), this); init_ctrl_lines();// from og.lines() @@ -416,8 +416,8 @@ void OG_CustomCtrl::msw_rescale() m_v_gap = lround(1.0 * m_em_unit); m_h_gap = lround(0.2 * m_em_unit); - m_bmp_mode_sz = create_scaled_bitmap("mode_simple", this, wxOSX ? 10 : 12).GetSize(); - m_bmp_blinking_sz = create_scaled_bitmap("search_blink", this).GetSize(); + m_bmp_mode_sz = get_bitmap_size(get_bmp_bundle("mode_simple", wxOSX ? 10 : 12), this); + m_bmp_blinking_sz = get_bitmap_size(get_bmp_bundle("search_blink"), this); m_max_win_width = 0; @@ -497,7 +497,7 @@ void OG_CustomCtrl::CtrlLine::msw_rescale() { // if we have a single option with no label, no sidetext if (draw_just_act_buttons) - height = get_bitmap_size(create_scaled_bitmap("empty")).GetHeight(); + height = get_bitmap_size(get_bmp_bundle("empty"), ctrl).GetHeight(); if (ctrl->opt_group->label_width != 0 && !og_line.label.IsEmpty()) { wxSize label_sz = ctrl->GetTextExtent(og_line.label); @@ -666,13 +666,13 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_mode_bmp(wxDC& dc, wxCoord v_pos) ConfigOptionMode mode = og_line.get_options()[0].opt.mode; const std::string& bmp_name = mode == ConfigOptionMode::comSimple ? "mode_simple" : mode == ConfigOptionMode::comAdvanced ? "mode_advanced" : "mode_expert"; - wxBitmap bmp = create_scaled_bitmap(bmp_name, ctrl, wxOSX ? 10 : 12); - wxCoord y_draw = v_pos + lround((height - get_bitmap_size(bmp).GetHeight()) / 2); + wxBitmapBundle* bmp = get_bmp_bundle(bmp_name, wxOSX ? 10 : 12); + wxCoord y_draw = v_pos + lround((height - get_bitmap_size(bmp, ctrl).GetHeight()) / 2); if (og_line.get_options().front().opt.gui_type != ConfigOptionDef::GUIType::legend) - dc.DrawBitmap(bmp, 0, y_draw); + dc.DrawBitmap(bmp->GetBitmapFor(ctrl), 0, y_draw); - return get_bitmap_size(bmp).GetWidth() + ctrl->m_h_gap; + return get_bitmap_size(bmp, ctrl).GetWidth() + ctrl->m_h_gap; } wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url/* = false*/) @@ -734,33 +734,33 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxStr wxPoint OG_CustomCtrl::CtrlLine::draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking) { - wxBitmap bmp_blinking = create_scaled_bitmap(is_blinking ? "search_blink" : "empty", ctrl); + wxBitmapBundle* bmp_blinking = get_bmp_bundle(is_blinking ? "search_blink" : "empty"); wxCoord h_pos = pos.x; - wxCoord v_pos = pos.y + lround((height - get_bitmap_size(bmp_blinking).GetHeight()) / 2); + wxCoord v_pos = pos.y + lround((height - get_bitmap_size(bmp_blinking, ctrl).GetHeight()) / 2); - dc.DrawBitmap(bmp_blinking, h_pos, v_pos); + dc.DrawBitmap(bmp_blinking->GetBitmapFor(ctrl), h_pos, v_pos); - int bmp_dim = get_bitmap_size(bmp_blinking).GetWidth(); + int bmp_dim = get_bitmap_size(bmp_blinking, ctrl).GetWidth(); h_pos += bmp_dim + ctrl->m_h_gap; return wxPoint(h_pos, v_pos); } -wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmap& bmp_undo_to_sys, const wxBitmap& bmp_undo, bool is_blinking, size_t rect_id) +wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id) { pos = draw_blinking_bmp(dc, pos, is_blinking); wxCoord h_pos = pos.x; wxCoord v_pos = pos.y; - dc.DrawBitmap(bmp_undo_to_sys, h_pos, v_pos); + dc.DrawBitmap(bmp_undo_to_sys.GetBitmapFor(ctrl), h_pos, v_pos); - int bmp_dim = get_bitmap_size(bmp_undo_to_sys).GetWidth(); + int bmp_dim = get_bitmap_size(&bmp_undo_to_sys, ctrl).GetWidth(); rects_undo_to_sys_icon[rect_id] = wxRect(h_pos, v_pos, bmp_dim, bmp_dim); h_pos += bmp_dim + ctrl->m_h_gap; - dc.DrawBitmap(bmp_undo, h_pos, v_pos); + dc.DrawBitmap(bmp_undo.GetBitmapFor(ctrl), h_pos, v_pos); - bmp_dim = get_bitmap_size(bmp_undo).GetWidth(); + bmp_dim = get_bitmap_size(&bmp_undo, ctrl).GetWidth(); rects_undo_icon[rect_id] = wxRect(h_pos, v_pos, bmp_dim, bmp_dim); h_pos += bmp_dim + ctrl->m_h_gap; diff --git a/src/slic3r/GUI/OG_CustomCtrl.hpp b/src/slic3r/GUI/OG_CustomCtrl.hpp index c15132fec..0308322f7 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.hpp +++ b/src/slic3r/GUI/OG_CustomCtrl.hpp @@ -63,7 +63,7 @@ class OG_CustomCtrl :public wxPanel wxCoord draw_mode_bmp(wxDC& dc, wxCoord v_pos); wxCoord draw_text (wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url = 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); + wxCoord draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id = 0); bool launch_browser() const; bool is_separator() const { return og_line.is_separator(); } diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 7baef6777..ba70f0ebd 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -56,7 +56,7 @@ const std::map INFO_ITEMS{ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const wxString& sub_obj_name, Slic3r::ModelVolumeType type, - const wxBitmap& bmp, + const wxBitmapBundle& bmp, const wxString& extruder, const int idx/* = -1*/, const std::string& warning_icon_name /*= std::string*/) : @@ -101,7 +101,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent } else if (type == itLayerRoot) { - m_bmp = create_scaled_bitmap(LayerRootIcon); // FIXME: pass window ptr + m_bmp = *get_bmp_bundle(LayerRootIcon); m_name = _(L("Layers")); } else if (type == itInfo) @@ -132,7 +132,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent } const std::string label_range = (boost::format(" %.2f-%.2f ") % layer_range.first % layer_range.second).str(); m_name = _(L("Range")) + label_range + "(" + _(L("mm")) + ")"; - m_bmp = create_scaled_bitmap(LayerIcon); // FIXME: pass window ptr + m_bmp = *get_bmp_bundle(LayerIcon); set_action_and_extruder_icons(); init_container(); @@ -151,7 +151,7 @@ void ObjectDataViewModelNode::set_action_and_extruder_icons() { m_action_icon_name = m_type & itObject ? "advanced_plus" : m_type & (itVolume | itLayer) ? "cog" : /*m_type & itInstance*/ "set_separate_obj"; - m_action_icon = create_scaled_bitmap(m_action_icon_name); // FIXME: pass window ptr + m_action_icon = *get_bmp_bundle(m_action_icon_name); // set extruder bitmap set_extruder_icon(); @@ -170,7 +170,7 @@ void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable) { m_printable = printable; m_printable_icon = m_printable == piUndef ? m_empty_bmp : - create_scaled_bitmap(m_printable == piPrintable ? "eye_open.png" : "eye_closed.png"); + *get_bmp_bundle(m_printable == piPrintable ? "eye_open" : "eye_closed"); } void ObjectDataViewModelNode::set_warning_icon(const std::string& warning_icon_name) @@ -185,14 +185,14 @@ void ObjectDataViewModelNode::update_settings_digest_bitmaps() m_bmp = m_empty_bmp; std::string scaled_bitmap_name = m_name.ToUTF8().data(); - scaled_bitmap_name += "-em" + std::to_string(wxGetApp().em_unit()) + (wxGetApp().dark_mode() ? "-dm" : ""); + scaled_bitmap_name += (wxGetApp().dark_mode() ? "-dm" : ""); - wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); + wxBitmapBundle *bmp = m_bitmap_cache->find_bndl(scaled_bitmap_name); if (bmp == nullptr) { - std::vector bmps; + std::vector bmps; for (auto& category : m_opt_categories) - bmps.emplace_back(SettingsFactory::get_category_bitmap_(category, false)); - bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); + bmps.emplace_back(SettingsFactory::get_category_bitmap(category)); + bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps); } m_bmp = *bmp; @@ -216,13 +216,13 @@ bool ObjectDataViewModelNode::update_settings_digest(const std::vectorGetExtruder().IsEmpty()) @@ -1676,14 +1676,14 @@ wxDataViewItem ObjectDataViewModel::SetObjectPrintableState( return obj_item; } -void ObjectDataViewModel::Rescale() +void ObjectDataViewModel::UpdateBitmaps() { m_volume_bmps = MenuFactory::get_volume_bitmaps(); - m_warning_bmp = create_scaled_bitmap(WarningIcon); - m_warning_manifold_bmp = create_scaled_bitmap(WarningManifoldIcon); + m_warning_bmp = *get_bmp_bundle(WarningIcon); + m_warning_manifold_bmp = *get_bmp_bundle(WarningManifoldIcon); for (auto item : INFO_ITEMS) - m_info_bmps[item.first] = create_scaled_bitmap(item.second.bmp_name); + m_info_bmps[item.first] = get_bmp_bundle(item.second.bmp_name); wxDataViewItemArray all_items; GetAllChildren(wxDataViewItem(0), all_items); @@ -1694,7 +1694,7 @@ void ObjectDataViewModel::Rescale() continue; ObjectDataViewModelNode *node = static_cast(item.GetID()); - node->msw_rescale(); + node->sys_color_changed(); switch (node->m_type) { @@ -1705,13 +1705,13 @@ void ObjectDataViewModel::Rescale() node->m_bmp = GetVolumeIcon(node->m_volume_type, node->m_warning_icon_name); break; case itLayerRoot: - node->m_bmp = create_scaled_bitmap(LayerRootIcon); + node->m_bmp = *get_bmp_bundle(LayerRootIcon); break; case itLayer: - node->m_bmp = create_scaled_bitmap(LayerIcon); + node->m_bmp = *get_bmp_bundle(LayerIcon); break; case itInfo: - node->m_bmp = m_info_bmps.at(node->m_info_item_type); + node->m_bmp = *m_info_bmps.at(node->m_info_item_type); break; default: break; } @@ -1720,22 +1720,22 @@ void ObjectDataViewModel::Rescale() } } -wxBitmap ObjectDataViewModel::GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const std::string& warning_icon_name/* = std::string()*/) +wxBitmapBundle ObjectDataViewModel::GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const std::string& warning_icon_name/* = std::string()*/) { if (warning_icon_name.empty()) - return m_volume_bmps[static_cast(vol_type)]; + return *m_volume_bmps[static_cast(vol_type)]; std::string scaled_bitmap_name = warning_icon_name + std::to_string(static_cast(vol_type)); scaled_bitmap_name += "-em" + std::to_string(wxGetApp().em_unit()) + (wxGetApp().dark_mode() ? "-dm" : "-lm"); - wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); + wxBitmapBundle *bmp = m_bitmap_cache->find_bndl(scaled_bitmap_name); if (bmp == nullptr) { - std::vector bmps; + std::vector bmps; - bmps.emplace_back(GetWarningBitmap(warning_icon_name)); + bmps.emplace_back(&GetWarningBitmap(warning_icon_name)); bmps.emplace_back(m_volume_bmps[static_cast(vol_type)]); - bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); + bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps); } return *bmp; @@ -1770,7 +1770,7 @@ void ObjectDataViewModel::DeleteWarningIcon(const wxDataViewItem& item, const bo return; if (node->GetType() & itVolume) { - node->SetWarningBitmap(m_volume_bmps[static_cast(node->volume_type())], ""); + node->SetWarningBitmap(*m_volume_bmps[static_cast(node->volume_type())], ""); return; } diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index f8885b206..7014acccb 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -63,21 +63,21 @@ class ObjectDataViewModelNode { ObjectDataViewModelNode* m_parent; MyObjectTreeModelNodePtrArray m_children; - wxBitmap m_empty_bmp; + wxBitmapBundle m_empty_bmp; size_t m_volumes_cnt = 0; std::vector< std::string > m_opt_categories; t_layer_height_range m_layer_range = { 0.0f, 0.0f }; wxString m_name; - wxBitmap& m_bmp = m_empty_bmp; + wxBitmapBundle& m_bmp = m_empty_bmp; ItemType m_type; int m_idx = -1; bool m_container = false; wxString m_extruder = "default"; - wxBitmap m_extruder_bmp; - wxBitmap m_action_icon; + wxBitmapBundle m_extruder_bmp; + wxBitmapBundle m_action_icon; PrintIndicator m_printable {piUndef}; - wxBitmap m_printable_icon; + wxBitmapBundle m_printable_icon; std::string m_warning_icon_name{ "" }; std::string m_action_icon_name = ""; @@ -99,7 +99,7 @@ public: ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const wxString& sub_obj_name, Slic3r::ModelVolumeType type, - const wxBitmap& bmp, + const wxBitmapBundle& bmp, const wxString& extruder, const int idx = -1, const std::string& warning_icon_name = std::string()); @@ -179,10 +179,10 @@ public: bool SetValue(const wxVariant &variant, unsigned int col); void SetVolumeType(ModelVolumeType type) { m_volume_type = type; } - void SetBitmap(const wxBitmap &icon) { m_bmp = icon; } + void SetBitmap(const wxBitmapBundle &icon) { m_bmp = icon; } void SetExtruder(const wxString &extruder) { m_extruder = extruder; } - void SetWarningBitmap(const wxBitmap& icon, const std::string& warning_icon_name) { m_bmp = icon; m_warning_icon_name = warning_icon_name; } - const wxBitmap& GetBitmap() const { return m_bmp; } + void SetWarningBitmap(const wxBitmapBundle& icon, const std::string& warning_icon_name) { m_bmp = icon; m_warning_icon_name = warning_icon_name; } + const wxBitmapBundle& GetBitmap() const { return m_bmp; } const wxString& GetName() const { return m_name; } ItemType GetType() const { return m_type; } InfoItemType GetInfoItemType() const { return m_info_item_type; } @@ -234,7 +234,7 @@ public: void update_settings_digest_bitmaps(); bool update_settings_digest(const std::vector& categories); int volume_type() const { return int(m_volume_type); } - void msw_rescale(); + void sys_color_changed(); #ifndef NDEBUG bool valid(); @@ -257,11 +257,11 @@ wxDECLARE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); class ObjectDataViewModel :public wxDataViewModel { std::vector m_objects; - std::vector m_volume_bmps; - std::map m_info_bmps; - wxBitmap m_empty_bmp; - wxBitmap m_warning_bmp; - wxBitmap m_warning_manifold_bmp; + std::vector m_volume_bmps; + std::map m_info_bmps; + wxBitmapBundle m_empty_bmp; + wxBitmapBundle m_warning_bmp; + wxBitmapBundle m_warning_manifold_bmp; wxDataViewCtrl* m_ctrl { nullptr }; @@ -315,7 +315,7 @@ public: // helper method for wxLog wxString GetName(const wxDataViewItem &item) const; - wxBitmap& GetBitmap(const wxDataViewItem &item) const; + wxBitmapBundle& GetBitmap(const wxDataViewItem &item) const; wxString GetExtruder(const wxDataViewItem &item) const; int GetExtruderNumber(const wxDataViewItem &item) const; @@ -383,9 +383,9 @@ public: void SetAssociatedControl(wxDataViewCtrl* ctrl) { m_ctrl = ctrl; } // Rescale bitmaps for existing Items - void Rescale(); + void UpdateBitmaps(); - wxBitmap GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, + wxBitmapBundle GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const std::string& warning_icon_name = std::string()); void AddWarningIcon(const wxDataViewItem& item, const std::string& warning_name); void DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object = false); @@ -403,7 +403,7 @@ private: wxDataViewItem AddInstanceRoot(const wxDataViewItem& parent_item); void AddAllChildren(const wxDataViewItem& parent); - wxBitmap& GetWarningBitmap(const std::string& warning_icon_name); + wxBitmapBundle& GetWarningBitmap(const std::string& warning_icon_name); }; diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 257fe2532..6055a8e78 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -728,7 +728,6 @@ void ConfigOptionsGroup::msw_rescale() // check if window is ScalableButton ScalableButton* sc_btn = dynamic_cast(win); if (sc_btn) { - sc_btn->msw_rescale(); sc_btn->SetSize(sc_btn->GetBestSize()); return; } @@ -773,7 +772,7 @@ void ConfigOptionsGroup::sys_color_changed() wxWindow* win = item->GetWindow(); // check if window is ScalableButton if (ScalableButton* sc_btn = dynamic_cast(win)) { - sc_btn->msw_rescale(); + sc_btn->sys_color_changed(); return; } wxGetApp().UpdateDarkUI(win, dynamic_cast(win) != nullptr); diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index 83c7e592a..dfebad442 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -142,10 +142,10 @@ void PresetForPrinter::AllowDelete() m_presets_list->update(); } -void PresetForPrinter::msw_rescale() +void PresetForPrinter::on_sys_color_changed() { - m_presets_list->msw_rescale(); - m_delete_preset_btn->msw_rescale(); + m_presets_list->sys_color_changed(); + m_delete_preset_btn->sys_color_changed(); } @@ -603,19 +603,10 @@ void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect) { const int& em = em_unit(); - m_add_preset_btn->msw_rescale(); - m_printhost_browse_btn->msw_rescale(); - m_printhost_test_btn->msw_rescale(); - if (m_printhost_cafile_browse_btn) - m_printhost_cafile_browse_btn->msw_rescale(); - m_optgroup->msw_rescale(); msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL }); - for (PresetForPrinter* preset : m_presets) - preset->msw_rescale(); - const wxSize& size = wxSize(45 * em, 35 * em); SetMinSize(size); @@ -623,6 +614,18 @@ void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect) Refresh(); } +void PhysicalPrinterDialog::on_sys_color_changed() +{ + m_add_preset_btn->sys_color_changed(); + m_printhost_browse_btn->sys_color_changed(); + m_printhost_test_btn->sys_color_changed(); + if (m_printhost_cafile_browse_btn) + m_printhost_cafile_browse_btn->sys_color_changed(); + + for (PresetForPrinter* preset : m_presets) + preset->on_sys_color_changed(); +} + void PhysicalPrinterDialog::OnOK(wxEvent& event) { wxString printer_name = m_printer_name->GetValue(); diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.hpp b/src/slic3r/GUI/PhysicalPrinterDialog.hpp index cb9a48b3e..d8bb70d3c 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.hpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.hpp @@ -48,8 +48,7 @@ public: void SuppressDelete(); void AllowDelete(); - void msw_rescale(); - void on_sys_color_changed() {}; + void on_sys_color_changed(); }; @@ -98,7 +97,7 @@ public: void DeletePreset(PresetForPrinter* preset_for_printer); protected: void on_dpi_changed(const wxRect& suggested_rect) override; - void on_sys_color_changed() override {}; + void on_sys_color_changed() override; bool had_all_mk3; }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d8c368998..7133db3fa 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -180,7 +180,6 @@ public: bool showing_manifold_warning_icon; void show_sizer(bool show); - void msw_rescale(); void update_warning_icon(const std::string& warning_icon_name); }; @@ -210,7 +209,7 @@ ObjectInfo::ObjectInfo(wxWindow *parent) : init_info_label(&info_size, _L("Size")); - info_icon = new wxStaticBitmap(parent, wxID_ANY, create_scaled_bitmap("info")); + info_icon = new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("info")); info_icon->SetToolTip(_L("For a multipart object, this value isn't accurate.\n" "It doesn't take account of intersections and negative volumes.")); auto* volume_info_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -223,7 +222,7 @@ ObjectInfo::ObjectInfo(wxWindow *parent) : info_manifold = new wxStaticText(parent, wxID_ANY, ""); info_manifold->SetFont(wxGetApp().small_font()); - manifold_warning_icon = new wxStaticBitmap(parent, wxID_ANY, create_scaled_bitmap(m_warning_icon_name)); + manifold_warning_icon = new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle(m_warning_icon_name)); auto *sizer_manifold = new wxBoxSizer(wxHORIZONTAL); sizer_manifold->Add(manifold_warning_icon, 0, wxLEFT, 2); sizer_manifold->Add(info_manifold, 0, wxLEFT, 2); @@ -242,17 +241,11 @@ void ObjectInfo::show_sizer(bool show) manifold_warning_icon->Show(showing_manifold_warning_icon && show); } -void ObjectInfo::msw_rescale() -{ - manifold_warning_icon->SetBitmap(create_scaled_bitmap(m_warning_icon_name)); - info_icon->SetBitmap(create_scaled_bitmap("info")); -} - void ObjectInfo::update_warning_icon(const std::string& warning_icon_name) { if ((showing_manifold_warning_icon = !warning_icon_name.empty())) { m_warning_icon_name = warning_icon_name; - manifold_warning_icon->SetBitmap(create_scaled_bitmap(m_warning_icon_name)); + manifold_warning_icon->SetBitmap(*get_bmp_bundle(m_warning_icon_name)); } } @@ -350,9 +343,6 @@ void FreqChangedParams::msw_rescale() { m_og->msw_rescale(); m_og_sla->msw_rescale(); - - for (auto btn: m_empty_buttons) - btn->msw_rescale(); } void FreqChangedParams::sys_color_changed() @@ -361,7 +351,7 @@ void FreqChangedParams::sys_color_changed() m_og_sla->sys_color_changed(); for (auto btn: m_empty_buttons) - btn->msw_rescale(); + btn->sys_color_changed(); wxGetApp().UpdateDarkUI(m_wiping_dialog_button, true); } @@ -450,7 +440,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : */ auto empty_widget = [this] (wxWindow* parent) { auto sizer = new wxBoxSizer(wxHORIZONTAL); - auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_transparent.png", wxEmptyString, + auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_transparent", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER | wxTRANSPARENT_WINDOW); sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, int(0.3 * wxGetApp().em_unit())); m_empty_buttons.push_back(btn); @@ -508,7 +498,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : } })); - auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_transparent.png", wxEmptyString, + auto btn = new ScalableButton(parent, wxID_ANY, "mirroring_transparent", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER | wxTRANSPARENT_WINDOW); sizer->Add(btn , 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, int(0.3 * wxGetApp().em_unit())); @@ -1103,9 +1093,6 @@ void Sidebar::msw_rescale() { SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1)); - if (p->mode_sizer) - p->mode_sizer->msw_rescale(); - for (PlaterPresetComboBox* combo : std::vector { p->combo_print, p->combo_sla_print, p->combo_sla_material, @@ -1117,14 +1104,8 @@ void Sidebar::msw_rescale() p->frequently_changed_parameters->msw_rescale(); p->object_list->msw_rescale(); p->object_manipulation->msw_rescale(); - p->object_settings->msw_rescale(); p->object_layers->msw_rescale(); - p->object_info->msw_rescale(); - - p->btn_send_gcode->msw_rescale(); -// p->btn_eject_device->msw_rescale(); - p->btn_export_gcode_removable->msw_rescale(); #ifdef _WIN32 const int scaled_height = p->btn_export_gcode_removable->GetBitmapHeight(); #else @@ -1145,14 +1126,13 @@ void Sidebar::sys_color_changed() for (wxWindow* win : std::vector{ this, p->sliced_info->GetStaticBox(), p->object_info->GetStaticBox(), p->btn_reslice, p->btn_export_gcode }) wxGetApp().UpdateDarkUI(win); - p->object_info->msw_rescale(); for (wxWindow* win : std::vector{ p->scrolled, p->presets_panel }) wxGetApp().UpdateAllStaticTextDarkUI(win); for (wxWindow* btn : std::vector{ p->btn_reslice, p->btn_export_gcode }) wxGetApp().UpdateDarkUI(btn, true); if (p->mode_sizer) - p->mode_sizer->msw_rescale(); + p->mode_sizer->sys_color_changed(); p->frequently_changed_parameters->sys_color_changed(); p->object_settings->sys_color_changed(); #endif @@ -1170,11 +1150,12 @@ void Sidebar::sys_color_changed() p->object_layers->sys_color_changed(); // btn...->msw_rescale() updates icon on button, so use it - p->btn_send_gcode->msw_rescale(); + p->btn_send_gcode->sys_color_changed(); // p->btn_eject_device->msw_rescale(); - p->btn_export_gcode_removable->msw_rescale(); + p->btn_export_gcode_removable->sys_color_changed(); p->scrolled->Layout(); + p->scrolled->Refresh(); p->searcher.dlg_sys_color_changed(); } @@ -6974,8 +6955,6 @@ void Plater::msw_rescale() p->sidebar->msw_rescale(); - p->menus.msw_rescale(); - Layout(); GetParent()->Layout(); } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index def48a1e4..93a5fe433 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -108,8 +108,8 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const default: break; } - m_bitmapCompatible = ScalableBitmap(this, "flag_green"); - m_bitmapIncompatible = ScalableBitmap(this, "flag_red"); + m_bitmapCompatible = get_bmp_bundle("flag_green"); + m_bitmapIncompatible = get_bmp_bundle("flag_red"); // parameters for an icon's drawing fill_width_height(); @@ -242,12 +242,12 @@ void PresetComboBox::update(std::string select_preset_name) const std::deque& presets = m_collection->get_presets(); - std::map> nonsys_presets; - std::map incomp_presets; + std::map> nonsys_presets; + std::map incomp_presets; wxString selected = ""; if (!presets.front().is_visible) - set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); + set_label_marker(Append(separator(L("System presets")), NullBitmapBndl())); for (size_t i = presets.front().is_visible ? 0 : m_collection->num_default_presets(); i < presets.size(); ++i) { @@ -268,7 +268,7 @@ void PresetComboBox::update(std::string select_preset_name) } std::string main_icon_name = m_type == Preset::TYPE_PRINTER && preset.printer_technology() == ptSLA ? "sla_printer" : m_main_bitmap_name; - wxBitmap* bmp = get_bmp(bitmap_key, main_icon_name, "lock_closed", is_enabled, preset.is_compatible, preset.is_system || preset.is_default); + auto bmp = get_bmp(bitmap_key, main_icon_name, "lock_closed", is_enabled, preset.is_compatible, preset.is_system || preset.is_default); assert(bmp); if (!is_enabled) @@ -280,17 +280,17 @@ void PresetComboBox::update(std::string select_preset_name) } else { - nonsys_presets.emplace(get_preset_name(preset), std::pair(bmp, is_enabled)); + nonsys_presets.emplace(get_preset_name(preset), std::pair(bmp, is_enabled)); if (preset.name == select_preset_name || (select_preset_name.empty() && is_enabled)) selected = get_preset_name(preset); } if (i + 1 == m_collection->num_default_presets()) - set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); + set_label_marker(Append(separator(L("System presets")), NullBitmapBndl())); } if (!nonsys_presets.empty()) { - set_label_marker(Append(separator(L("User presets")), wxNullBitmap)); - for (std::map>::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { + set_label_marker(Append(separator(L("User presets")), NullBitmapBndl())); + for (std::map>::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { int item_id = Append(it->first, *it->second.first); bool is_enabled = it->second.second; if (!is_enabled) @@ -300,8 +300,8 @@ void PresetComboBox::update(std::string select_preset_name) } if (!incomp_presets.empty()) { - set_label_marker(Append(separator(L("Incompatible presets")), wxNullBitmap)); - for (std::map::iterator it = incomp_presets.begin(); it != incomp_presets.end(); ++it) { + set_label_marker(Append(separator(L("Incompatible presets")), NullBitmapBndl())); + for (std::map::iterator it = incomp_presets.begin(); it != incomp_presets.end(); ++it) { set_label_marker(Append(it->first, *it->second), LABEL_ITEM_DISABLED); } } @@ -337,7 +337,6 @@ bool PresetComboBox::del_physical_printer(const wxString& note_string/* = wxEmpt msg += note_string + "\n"; msg += format_wxstr(_L("Are you sure you want to delete \"%1%\" printer?"), printer_name); - //if (wxMessageDialog(this, msg, _L("Delete Physical Printer"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION).ShowModal() != wxID_YES) if (MessageDialog(this, msg, _L("Delete Physical Printer"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION).ShowModal() != wxID_YES) return false; @@ -364,7 +363,8 @@ void PresetComboBox::show_all(bool show_all) void PresetComboBox::update() { - this->update(into_u8(this->GetString(this->GetSelection()))); + int n = this->GetSelection(); + this->update(n < 0 ? "" : into_u8(this->GetString(n))); } void PresetComboBox::update_from_bundle() @@ -375,43 +375,31 @@ void PresetComboBox::update_from_bundle() void PresetComboBox::msw_rescale() { m_em_unit = em_unit(this); +} - //m_bitmapIncompatible.msw_rescale(); - //m_bitmapCompatible.msw_rescale(); - - // parameters for an icon's drawing - fill_width_height(); +void PresetComboBox::sys_color_changed() +{ + m_bitmapCompatible = get_bmp_bundle("flag_green"); + m_bitmapIncompatible = get_bmp_bundle("flag_red"); + wxGetApp().UpdateDarkUI(this); // update the control to redraw the icons update(); } -void PresetComboBox::sys_color_changed() -{ - wxGetApp().UpdateDarkUI(this); - msw_rescale(); -} - void PresetComboBox::fill_width_height() { - // To avoid asserts, each added bitmap to wxBitmapCombobox should be the same size, so - // set a bitmap's height to m_bitmapCompatible->GetHeight() and norm_icon_width to m_bitmapCompatible->GetWidth() - icon_height = m_bitmapCompatible.GetBmpHeight(); - norm_icon_width = m_bitmapCompatible.GetBmpWidth(); + icon_height = m_bitmapCompatible->GetPreferredBitmapSizeAtScale(1.0).GetHeight(); + norm_icon_width = m_bitmapCompatible->GetPreferredBitmapSizeAtScale(1.0).GetWidth(); - /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display. - * So set sizes for solid_colored icons used for filament preset - * and scale them in respect to em_unit value - */ -// const float scale_f = (float)m_em_unit * 0.1f; - const float scale_f = 1.0f; + null_icon_width = 2 * norm_icon_width; - thin_icon_width = lroundf(8 * scale_f); // analogue to 8px; + thin_icon_width = 8; wide_icon_width = norm_icon_width + thin_icon_width; - space_icon_width = lroundf(2 * scale_f); - thin_space_icon_width = lroundf(4 * scale_f); - wide_space_icon_width = lroundf(6 * scale_f); + space_icon_width = 2; + thin_space_icon_width = 4; + wide_space_icon_width = 6; } wxString PresetComboBox::separator(const std::string& label) @@ -419,7 +407,8 @@ wxString PresetComboBox::separator(const std::string& label) return wxString::FromUTF8(separator_head()) + _(label) + wxString::FromUTF8(separator_tail()); } -wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, bool wide_icons, const std::string& main_icon_name, + +wxBitmapBundle* PresetComboBox::get_bmp( std::string bitmap_key, bool wide_icons, const std::string& main_icon_name, bool is_compatible/* = true*/, bool is_system/* = false*/, bool is_single_bar/* = false*/, const std::string& filament_rgb/* = ""*/, const std::string& extruder_rgb/* = ""*/, const std::string& material_rgb/* = ""*/) { @@ -435,45 +424,41 @@ wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, bool wide_icons, con bitmap_key += ",dark"; bitmap_key += material_rgb; - wxBitmap* bmp = bitmap_cache().find(bitmap_key); - if (bmp == nullptr) { + wxBitmapBundle* bmp_bndl = bitmap_cache().find_bndl(bitmap_key); + if (bmp_bndl == nullptr) { // Create the bitmap with color bars. - std::vector bmps; + std::vector bmps; if (wide_icons) // Paint a red flag for incompatible presets. - bmps.emplace_back(is_compatible ? bitmap_cache().mkclear(norm_icon_width, icon_height) : m_bitmapIncompatible.bmp()); + bmps.emplace_back(is_compatible ? get_empty_bmp_bundle(norm_icon_width, icon_height) : m_bitmapIncompatible); if (m_type == Preset::TYPE_FILAMENT && !filament_rgb.empty()) { // Paint the color bars. - ColorRGB color; - decode_color(filament_rgb, color); - bmps.emplace_back(bitmap_cache().mksolid(is_single_bar ? wide_icon_width : norm_icon_width, icon_height, color, false, 1, dark_mode)); - if (!is_single_bar) { - decode_color(extruder_rgb, color); - bmps.emplace_back(bitmap_cache().mksolid(thin_icon_width, icon_height, color, false, 1, dark_mode)); - } + bmps.emplace_back(get_solid_bmp_bundle(is_single_bar ? wide_icon_width : norm_icon_width, icon_height, filament_rgb)); + if (!is_single_bar) + bmps.emplace_back(get_solid_bmp_bundle(thin_icon_width, icon_height, extruder_rgb)); // Paint a lock at the system presets. - bmps.emplace_back(bitmap_cache().mkclear(space_icon_width, icon_height)); + bmps.emplace_back(get_empty_bmp_bundle(space_icon_width, icon_height)); } else { // Paint the color bars. - bmps.emplace_back(bitmap_cache().mkclear(thin_space_icon_width, icon_height)); + bmps.emplace_back(get_empty_bmp_bundle(thin_space_icon_width, icon_height)); if (m_type == Preset::TYPE_SLA_MATERIAL) - bmps.emplace_back(create_scaled_bitmap(main_icon_name, this, 16, false, material_rgb)); + bmps.emplace_back(bitmap_cache().from_svg(main_icon_name, 16, 16, dark_mode, material_rgb)); else - bmps.emplace_back(create_scaled_bitmap(main_icon_name)); + bmps.emplace_back(get_bmp_bundle(main_icon_name)); // Paint a lock at the system presets. - bmps.emplace_back(bitmap_cache().mkclear(wide_space_icon_width, icon_height)); + bmps.emplace_back(get_empty_bmp_bundle(wide_space_icon_width, icon_height)); } - bmps.emplace_back(is_system ? create_scaled_bitmap("lock_closed") : bitmap_cache().mkclear(norm_icon_width, icon_height)); - bmp = bitmap_cache().insert(bitmap_key, bmps); + bmps.emplace_back(is_system ? get_bmp_bundle("lock_closed") : get_empty_bmp_bundle(norm_icon_width, icon_height)); + bmp_bndl = bitmap_cache().insert_bndl(bitmap_key, bmps); } - return bmp; + return bmp_bndl; } -wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, const std::string& main_icon_name, const std::string& next_icon_name, +wxBitmapBundle* PresetComboBox::get_bmp( std::string bitmap_key, const std::string& main_icon_name, const std::string& next_icon_name, bool is_enabled/* = true*/, bool is_compatible/* = true*/, bool is_system/* = false*/) { bitmap_key += !is_enabled ? "_disabled" : ""; @@ -483,20 +468,25 @@ wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, const std::string& m if (wxGetApp().dark_mode()) bitmap_key += ",dark"; - wxBitmap* bmp = bitmap_cache().find(bitmap_key); + wxBitmapBundle* bmp = bitmap_cache().find_bndl(bitmap_key); if (bmp == nullptr) { // Create the bitmap with color bars. - std::vector bmps; - bmps.emplace_back(m_type == Preset::TYPE_PRINTER ? create_scaled_bitmap(main_icon_name, this, 16, !is_enabled) : - is_compatible ? m_bitmapCompatible.bmp() : m_bitmapIncompatible.bmp()); + std::vector bmps; + bmps.emplace_back(m_type == Preset::TYPE_PRINTER ? get_bmp_bundle(main_icon_name) : + is_compatible ? m_bitmapCompatible : m_bitmapIncompatible); // Paint a lock at the system presets. - bmps.emplace_back(is_system ? create_scaled_bitmap(next_icon_name, this, 16, !is_enabled) : bitmap_cache().mkclear(norm_icon_width, icon_height)); - bmp = bitmap_cache().insert(bitmap_key, bmps); + bmps.emplace_back(is_system ? get_bmp_bundle(next_icon_name) : get_empty_bmp_bundle(norm_icon_width, icon_height)); + bmp = bitmap_cache().insert_bndl(bitmap_key, bmps); } return bmp; } +wxBitmapBundle PresetComboBox::NullBitmapBndl() +{ + return *get_empty_bmp_bundle(null_icon_width, icon_height); +} + bool PresetComboBox::is_selected_physical_printer() { auto selected_item = this->GetSelection(); @@ -783,14 +773,16 @@ void PlaterPresetComboBox::update() // and draw a red flag in front of the selected preset. bool wide_icons = selected_preset && !selected_preset->is_compatible; - std::map nonsys_presets; + null_icon_width = (wide_icons ? 3 : 2) * norm_icon_width + thin_space_icon_width + wide_space_icon_width; + + std::map nonsys_presets; wxString selected_user_preset; wxString tooltip; const std::deque& presets = m_collection->get_presets(); if (!presets.front().is_visible) - this->set_label_marker(this->Append(separator(L("System presets")), wxNullBitmap)); + this->set_label_marker(this->Append(separator(L("System presets")), NullBitmapBndl())); for (size_t i = presets.front().is_visible ? 0 : m_collection->num_default_presets(); i < presets.size(); ++i) { @@ -824,7 +816,7 @@ void PlaterPresetComboBox::update() material_rgb = print_config_def.get("material_colour")->get_default_value()->value; } - wxBitmap* bmp = get_bmp(bitmap_key, wide_icons, bitmap_type_name, + auto bmp = get_bmp(bitmap_key, wide_icons, bitmap_type_name, preset.is_compatible, preset.is_system || preset.is_default, single_bar, filament_rgb, extruder_rgb, material_rgb); assert(bmp); @@ -845,12 +837,12 @@ void PlaterPresetComboBox::update() } } if (i + 1 == m_collection->num_default_presets()) - set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); + set_label_marker(Append(separator(L("System presets")), NullBitmapBndl())); } if (!nonsys_presets.empty()) { - set_label_marker(Append(separator(L("User presets")), wxNullBitmap)); - for (std::map::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { + set_label_marker(Append(separator(L("User presets")), NullBitmapBndl())); + for (std::map::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { Append(it->first, *it->second); validate_selection(it->first == selected_user_preset); } @@ -860,7 +852,7 @@ void PlaterPresetComboBox::update() { // add Physical printers, if any exists if (!m_preset_bundle->physical_printers.empty()) { - set_label_marker(Append(separator(L("Physical printers")), wxNullBitmap)); + set_label_marker(Append(separator(L("Physical printers")), NullBitmapBndl())); const PhysicalPrinterCollection& ph_printers = m_preset_bundle->physical_printers; for (PhysicalPrinterCollection::ConstIterator it = ph_printers.begin(); it != ph_printers.end(); ++it) { @@ -869,7 +861,7 @@ void PlaterPresetComboBox::update() if (!preset || !preset->is_visible) continue; std::string main_icon_name, bitmap_key = main_icon_name = preset->printer_technology() == ptSLA ? "sla_printer" : m_main_bitmap_name; - wxBitmap* bmp = get_bmp(main_icon_name, wide_icons, main_icon_name); + auto bmp = get_bmp(main_icon_name, wide_icons, main_icon_name); assert(bmp); set_label_marker(Append(from_u8(it->get_full_name(preset_name) + suffix(preset)), *bmp), LABEL_ITEM_PHYSICAL_PRINTER); @@ -880,7 +872,7 @@ void PlaterPresetComboBox::update() } if (m_type == Preset::TYPE_PRINTER || m_type == Preset::TYPE_FILAMENT || m_type == Preset::TYPE_SLA_MATERIAL) { - wxBitmap* bmp = get_bmp("edit_preset_list", wide_icons, "edit_uni"); + auto bmp = get_bmp("edit_preset_list", wide_icons, "edit_uni"); assert(bmp); if (m_type == Preset::TYPE_FILAMENT) @@ -917,9 +909,20 @@ void PlaterPresetComboBox::update() void PlaterPresetComboBox::msw_rescale() { PresetComboBox::msw_rescale(); - edit_btn->msw_rescale(); +#ifdef __WXMSW__ + // Use this part of code just on Windows to avoid of some layout issues on Linux + // see https://github.com/prusa3d/PrusaSlicer/issues/5163 and https://github.com/prusa3d/PrusaSlicer/issues/5505 + // Update control min size after rescale (changed Display DPI under MSW) + if (GetMinWidth() != 20 * m_em_unit) + SetMinSize(wxSize(20 * m_em_unit, GetSize().GetHeight())); +#endif //__WXMSW__ } +void PlaterPresetComboBox::sys_color_changed() +{ + PresetComboBox::sys_color_changed(); + edit_btn->sys_color_changed(); +} // --------------------------------- // *** TabPresetComboBox *** @@ -982,10 +985,10 @@ void TabPresetComboBox::update() const std::deque& presets = m_collection->get_presets(); - std::map> nonsys_presets; + std::map> nonsys_presets; wxString selected = ""; if (!presets.front().is_visible) - set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); + set_label_marker(Append(separator(L("System presets")), NullBitmapBndl())); size_t idx_selected = m_collection->get_selected_idx(); if (m_type == Preset::TYPE_PRINTER && m_preset_bundle->physical_printers.has_selection()) { @@ -1012,7 +1015,7 @@ void TabPresetComboBox::update() } std::string main_icon_name = m_type == Preset::TYPE_PRINTER && preset.printer_technology() == ptSLA ? "sla_printer" : m_main_bitmap_name; - wxBitmap* bmp = get_bmp(bitmap_key, main_icon_name, "lock_closed", is_enabled, preset.is_compatible, preset.is_system || preset.is_default); + auto bmp = get_bmp(bitmap_key, main_icon_name, "lock_closed", is_enabled, preset.is_compatible, preset.is_system || preset.is_default); assert(bmp); if (preset.is_default || preset.is_system) { @@ -1023,18 +1026,18 @@ void TabPresetComboBox::update() } else { - std::pair pair(bmp, is_enabled); - nonsys_presets.emplace(get_preset_name(preset), std::pair(bmp, is_enabled)); + std::pair pair(bmp, is_enabled); + nonsys_presets.emplace(get_preset_name(preset), std::pair(bmp, is_enabled)); if (i == idx_selected) selected = get_preset_name(preset); } if (i + 1 == m_collection->num_default_presets()) - set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); + set_label_marker(Append(separator(L("System presets")), NullBitmapBndl())); } if (!nonsys_presets.empty()) { - set_label_marker(Append(separator(L("User presets")), wxNullBitmap)); - for (std::map>::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { + set_label_marker(Append(separator(L("User presets")), NullBitmapBndl())); + for (std::map>::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { int item_id = Append(it->first, *it->second.first); bool is_enabled = it->second.second; if (!is_enabled) @@ -1047,7 +1050,7 @@ void TabPresetComboBox::update() { // add Physical printers, if any exists if (!m_preset_bundle->physical_printers.empty()) { - set_label_marker(Append(separator(L("Physical printers")), wxNullBitmap)); + set_label_marker(Append(separator(L("Physical printers")), NullBitmapBndl())); const PhysicalPrinterCollection& ph_printers = m_preset_bundle->physical_printers; for (PhysicalPrinterCollection::ConstIterator it = ph_printers.begin(); it != ph_printers.end(); ++it) { @@ -1057,7 +1060,7 @@ void TabPresetComboBox::update() continue; std::string main_icon_name = preset->printer_technology() == ptSLA ? "sla_printer" : m_main_bitmap_name; - wxBitmap* bmp = get_bmp(main_icon_name, main_icon_name, "", true, true, false); + auto bmp = get_bmp(main_icon_name, main_icon_name, "", true, true, false); assert(bmp); set_label_marker(Append(from_u8(it->get_full_name(preset_name) + suffix(preset)), *bmp), LABEL_ITEM_PHYSICAL_PRINTER); @@ -1068,7 +1071,7 @@ void TabPresetComboBox::update() // add "Add/Remove printers" item std::string icon_name = "edit_uni"; - wxBitmap* bmp = get_bmp("edit_preset_list, tab,", icon_name, ""); + auto bmp = get_bmp("edit_preset_list, tab,", icon_name, ""); assert(bmp); set_label_marker(Append(separator(L("Add/Remove printers")), *bmp), LABEL_ITEM_WIZARD_PRINTERS); diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index 40a0cfc28..9fe75c126 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -1,7 +1,7 @@ #ifndef slic3r_PresetComboBoxes_hpp_ #define slic3r_PresetComboBoxes_hpp_ -//#include +#include #include #include "libslic3r/Preset.hpp" @@ -88,9 +88,9 @@ protected: static BitmapCache& bitmap_cache(); // Indicator, that the preset is compatible with the selected printer. - ScalableBitmap m_bitmapCompatible; + wxBitmapBundle* m_bitmapCompatible; // Indicator, that the preset is NOT compatible with the selected printer. - ScalableBitmap m_bitmapIncompatible; + wxBitmapBundle* m_bitmapIncompatible; int m_last_selected; int m_em_unit; @@ -99,6 +99,7 @@ protected: // parameters for an icon's drawing int icon_height; int norm_icon_width; + int null_icon_width; int thin_icon_width; int wide_icon_width; int space_icon_width; @@ -120,13 +121,15 @@ protected: #endif // __linux__ static wxString separator(const std::string& label); - wxBitmap* get_bmp( std::string bitmap_key, bool wide_icons, const std::string& main_icon_name, + wxBitmapBundle* get_bmp( std::string bitmap_key, bool wide_icons, const std::string& main_icon_name, bool is_compatible = true, bool is_system = false, bool is_single_bar = false, const std::string& filament_rgb = "", const std::string& extruder_rgb = "", const std::string& material_rgb = ""); - wxBitmap* get_bmp( std::string bitmap_key, const std::string& main_icon_name, const std::string& next_icon_name, + wxBitmapBundle* get_bmp( std::string bitmap_key, const std::string& main_icon_name, const std::string& next_icon_name, bool is_enabled = true, bool is_compatible = true, bool is_system = false); + wxBitmapBundle NullBitmapBndl(); + private: void fill_width_height(); }; @@ -155,6 +158,7 @@ public: wxString get_preset_name(const Preset& preset) override; void update() override; void msw_rescale() override; + void sys_color_changed() override; void OnSelect(wxCommandEvent& evt) override; private: diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index 460b30126..2a2e3bb10 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -56,7 +56,7 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string& suffix, wxBox wxStaticText* label_top = new wxStaticText(m_parent, wxID_ANY, from_u8((boost::format(_utf8(L("Save %s as:"))) % into_u8(tab->title())).str())); - m_valid_bmp = new wxStaticBitmap(m_parent, wxID_ANY, create_scaled_bitmap("tick_mark", m_parent)); + m_valid_bmp = new wxStaticBitmap(m_parent, wxID_ANY, *get_bmp_bundle("tick_mark")); m_combo = new wxComboBox(m_parent, wxID_ANY, from_u8(preset_name), wxDefaultPosition, wxSize(35 * wxGetApp().em_unit(), -1)); for (const std::string& value : values) @@ -173,7 +173,7 @@ void SavePresetDialog::Item::update_valid_bmp() { std::string bmp_name = m_valid_type == Warning ? "exclamation" : m_valid_type == NoValid ? "cross" : "tick_mark" ; - m_valid_bmp->SetBitmap(create_scaled_bitmap(bmp_name, m_parent)); + m_valid_bmp->SetBitmap(*get_bmp_bundle(bmp_name)); } void SavePresetDialog::Item::accept() diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 6b5edc30e..52e58193c 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -720,12 +720,9 @@ void SearchDialog::msw_rescale() { const int& em = em_unit(); - search_list_model->msw_rescale(); search_list->GetColumn(SearchListModel::colIcon )->SetWidth(3 * em); search_list->GetColumn(SearchListModel::colMarkedText)->SetWidth(45 * em); - msw_buttons_rescale(this, em, { wxID_CANCEL }); - const wxSize& size = wxSize(40 * em, 30 * em); SetMinSize(size); @@ -743,7 +740,7 @@ void SearchDialog::on_sys_color_changed() #endif // msw_rescale updates just icons, so use it - search_list_model->msw_rescale(); + search_list_model->sys_color_changed(); Refresh(); } @@ -776,10 +773,10 @@ void SearchListModel::Prepend(const std::string& label) RowPrepended(); } -void SearchListModel::msw_rescale() +void SearchListModel::sys_color_changed() { for (ScalableBitmap& bmp : m_icon) - bmp.msw_rescale(); + bmp.sys_color_changed(); } wxString SearchListModel::GetColumnType(unsigned int col) const @@ -795,7 +792,7 @@ void SearchListModel::GetValueByRow(wxVariant& variant, switch (col) { case colIcon: - variant << m_icon[m_values[row].second].bmp(); + variant << m_icon[m_values[row].second].bmp().GetBitmapFor(m_icon[m_values[row].second].parent()); break; case colMarkedText: variant = m_values[row].first; diff --git a/src/slic3r/GUI/Search.hpp b/src/slic3r/GUI/Search.hpp index 49866d066..0d7851132 100644 --- a/src/slic3r/GUI/Search.hpp +++ b/src/slic3r/GUI/Search.hpp @@ -213,7 +213,7 @@ public: void Clear(); void Prepend(const std::string& text); - void msw_rescale(); + void sys_color_changed(); // implementation of base class virtuals to define model diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index db8cfc9c2..d4d83dfda 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -104,7 +104,7 @@ SysInfoDialog::SysInfoDialog() // logo //m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 192); //m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); - m_logo = new wxStaticBitmap(this, wxID_ANY, wxBitmapBundle::FromSVGFile(Slic3r::var(wxGetApp().logo_name() + ".svg"), wxSize(192, 192))); + m_logo = new wxStaticBitmap(this, wxID_ANY, *get_bmp_bundle(wxGetApp().logo_name(), 192)); hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 41276e89a..a5b4c7f7d 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -155,10 +155,8 @@ void Tab::create_preset_tab() add_scaled_button(panel, &m_btn_edit_ph_printer, "cog"); m_show_incompatible_presets = false; - add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red"); - add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green"); - add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name()); + add_scaled_button(panel, &m_btn_hide_incompatible_presets, "flag_green"); m_btn_compare_preset->SetToolTip(_L("Compare this preset with some another")); // TRN "Save current Settings" @@ -207,7 +205,7 @@ void Tab::create_preset_tab() #endif m_mode_sizer = new ModeSizer(panel, int (0.5*em_unit(this))); - const float scale_factor = /*wxGetApp().*/em_unit(this)*0.1;// GetContentScaleFactor(); + const float scale_factor = em_unit(this)*0.1;// GetContentScaleFactor(); m_hsizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_hsizer, 0, wxEXPAND | wxBOTTOM, 3); m_hsizer->Add(m_presets_choice, 0, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3); @@ -254,11 +252,8 @@ void Tab::create_preset_tab() m_treectrl = new wxTreeCtrl(panel, wxID_ANY, wxDefaultPosition, wxSize(20 * m_em_unit, -1), wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_SUNKEN | wxWANTS_CHARS); m_left_sizer->Add(m_treectrl, 1, wxEXPAND); - const int img_sz = int(16 * scale_factor + 0.5f); - m_icons = new wxImageList(img_sz, img_sz, true, 1); - // Index of the last icon inserted into $self->{icons}. + // Index of the last icon inserted into m_treectrl m_icon_count = -1; - m_treectrl->AssignImageList(m_icons); m_treectrl->AddRoot("root"); m_treectrl->SetIndent(0); wxGetApp().UpdateDarkUI(m_treectrl); @@ -321,6 +316,14 @@ void Tab::create_preset_tab() // Initialize the DynamicPrintConfig by default keys/values. build(); + if (!m_scaled_icons_list.empty()) { + // update icons for tree_ctrl + wxVector img_bundles; + for (const ScalableBitmap& bmp : m_scaled_icons_list) + img_bundles.push_back(bmp.bmp()); + m_treectrl->SetImages(img_bundles); + } + // ys_FIXME: Following should not be needed, the function will be called later // (update_mode->update_visibility->rebuild_page_tree). This does not work, during the // second call of rebuild_page_tree m_treectrl->GetFirstVisibleItem(); returns zero @@ -336,7 +339,7 @@ void Tab::add_scaled_button(wxWindow* parent, const wxString& label/* = wxEmptyString*/, long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) { - *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style, true); + *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style); m_scaled_buttons.push_back(*btn); } @@ -366,7 +369,6 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str if (icon_idx == -1) { // Add a new icon to the icon list. m_scaled_icons_list.push_back(ScalableBitmap(this, icon)); - m_icons->Add(m_scaled_icons_list.back().bmp()); icon_idx = ++m_icon_count; m_icon_index[icon] = icon_idx; } @@ -656,16 +658,6 @@ void TabPrinter::init_options_list() m_options_list.emplace("extruders_count", m_opt_status_value); } -void TabPrinter::msw_rescale() -{ - Tab::msw_rescale(); - - if (m_reset_to_filament_color) - m_reset_to_filament_color->msw_rescale(); - - Layout(); -} - void TabSLAMaterial::init_options_list() { if (!m_options_list.empty()) @@ -924,31 +916,9 @@ void Tab::msw_rescale() { m_em_unit = em_unit(m_parent); - if (m_mode_sizer) - m_mode_sizer->msw_rescale(); m_presets_choice->msw_rescale(); - m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1)); - // rescale buttons and cached bitmaps - for (const auto btn : m_scaled_buttons) - btn->msw_rescale(); - for (const auto bmp : m_scaled_bitmaps) - bmp->msw_rescale(); - - if (m_detach_preset_btn) - m_detach_preset_btn->msw_rescale(); - - // rescale icons for tree_ctrl - for (ScalableBitmap& bmp : m_scaled_icons_list) - bmp.msw_rescale(); - // recreate and set new ImageList for tree_ctrl - m_icons->RemoveAll(); - m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight()); - for (ScalableBitmap& bmp : m_scaled_icons_list) - m_icons->Add(bmp.bmp()); - m_treectrl->AssignImageList(m_icons); - // rescale options_groups if (m_active_page) m_active_page->msw_rescale(); @@ -962,28 +932,28 @@ void Tab::sys_color_changed() // update buttons and cached bitmaps for (const auto btn : m_scaled_buttons) - btn->msw_rescale(); + btn->sys_color_changed(); for (const auto bmp : m_scaled_bitmaps) - bmp->msw_rescale(); + bmp->sys_color_changed(); if (m_detach_preset_btn) - m_detach_preset_btn->msw_rescale(); + m_detach_preset_btn->sys_color_changed(); + + update_show_hide_incompatible_button(); // update icons for tree_ctrl - for (ScalableBitmap& bmp : m_scaled_icons_list) - bmp.msw_rescale(); - // recreate and set new ImageList for tree_ctrl - m_icons->RemoveAll(); - m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight()); - for (ScalableBitmap& bmp : m_scaled_icons_list) - m_icons->Add(bmp.bmp()); - m_treectrl->AssignImageList(m_icons); + wxVector img_bundles; + for (ScalableBitmap& bmp : m_scaled_icons_list) { + bmp.sys_color_changed(); + img_bundles.push_back(bmp.bmp()); + } + m_treectrl->SetImages(img_bundles); // Colors for ui "decoration" update_label_colours(); #ifdef _WIN32 wxWindowUpdateLocker noUpdates(this); if (m_mode_sizer) - m_mode_sizer->msw_rescale(); + m_mode_sizer->sys_color_changed(); wxGetApp().UpdateDarkUI(this); wxGetApp().UpdateDarkUI(m_treectrl); #endif @@ -994,6 +964,7 @@ void Tab::sys_color_changed() m_active_page->sys_color_changed(); Layout(); + Refresh(); } Field* Tab::get_field(const t_config_option_key& opt_key, int opt_index/* = -1*/) const @@ -1257,7 +1228,7 @@ void Tab::build_preset_description_line(ConfigOptionsGroup* optgroup) auto detach_preset_btn = [this](wxWindow* parent) { m_detach_preset_btn = new ScalableButton(parent, wxID_ANY, "lock_open_sys", _L("Detach from system preset"), - wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); ScalableButton* btn = m_detach_preset_btn; btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -1681,14 +1652,14 @@ void TabPrint::build() option.opt.height = 5;//50; optgroup->append_single_option_line(option); - page = add_options_page(L("Notes"), "note.png"); + page = add_options_page(L("Notes"), "note"); optgroup = page->new_optgroup(L("Notes"), 0); option = optgroup->get_option("notes"); option.opt.full_width = true; option.opt.height = 25;//250; optgroup->append_single_option_line(option); - page = add_options_page(L("Dependencies"), "wrench.png"); + page = add_options_page(L("Dependencies"), "wrench"); optgroup = page->new_optgroup(L("Profile dependencies")); create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { @@ -1928,7 +1899,7 @@ void TabFilament::build() m_presets = &m_preset_bundle->filaments; load_initial_data(); - auto page = add_options_page(L("Filament"), "spool.png"); + auto page = add_options_page(L("Filament"), "spool"); auto optgroup = page->new_optgroup(L("Filament")); optgroup->append_single_option_line("filament_colour"); optgroup->append_single_option_line("filament_diameter"); @@ -2068,7 +2039,7 @@ void TabFilament::build() option.opt.height = gcode_field_height;// 150; optgroup->append_single_option_line(option); - page = add_options_page(L("Notes"), "note.png"); + page = add_options_page(L("Notes"), "note"); optgroup = page->new_optgroup(L("Notes"), 0); optgroup->label_width = 0; option = optgroup->get_option("filament_notes"); @@ -2076,7 +2047,7 @@ void TabFilament::build() option.opt.height = notes_field_height;// 250; optgroup->append_single_option_line(option); - page = add_options_page(L("Dependencies"), "wrench.png"); + page = add_options_page(L("Dependencies"), "wrench"); optgroup = page->new_optgroup(L("Profile dependencies")); create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { return compatible_widget_create(parent, m_compatible_printers); @@ -2460,14 +2431,14 @@ void TabPrinter::build_fff() option.opt.height = gcode_field_height;//150; optgroup->append_single_option_line(option); - page = add_options_page(L("Notes"), "note.png"); + page = add_options_page(L("Notes"), "note"); optgroup = page->new_optgroup(L("Notes"), 0); option = optgroup->get_option("printer_notes"); option.opt.full_width = true; option.opt.height = notes_field_height;//250; optgroup->append_single_option_line(option); - page = add_options_page(L("Dependencies"), "wrench.png"); + page = add_options_page(L("Dependencies"), "wrench"); optgroup = page->new_optgroup(L("Profile dependencies")); build_preset_description_line(optgroup.get()); @@ -2538,14 +2509,14 @@ void TabPrinter::build_sla() const int notes_field_height = 25; // 250 - page = add_options_page(L("Notes"), "note.png"); + page = add_options_page(L("Notes"), "note"); optgroup = page->new_optgroup(L("Notes"), 0); option = optgroup->get_option("printer_notes"); option.opt.full_width = true; option.opt.height = notes_field_height;//250; optgroup->append_single_option_line(option); - page = add_options_page(L("Dependencies"), "wrench.png"); + page = add_options_page(L("Dependencies"), "wrench"); optgroup = page->new_optgroup(L("Profile dependencies")); build_preset_description_line(optgroup.get()); @@ -2803,7 +2774,7 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) auto reset_to_filament_color = [this, extruder_idx](wxWindow* parent) { m_reset_to_filament_color = new ScalableButton(parent, wxID_ANY, "undo", _L("Reset to Filament Color"), - wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); ScalableButton* btn = m_reset_to_filament_color; btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); btn->SetSize(btn->GetBestSize()); @@ -3780,8 +3751,7 @@ void Tab::toggle_show_hide_incompatible() void Tab::update_show_hide_incompatible_button() { - m_btn_hide_incompatible_presets->SetBitmap_(m_show_incompatible_presets ? - m_bmp_show_incompatible_presets : m_bmp_hide_incompatible_presets); + m_btn_hide_incompatible_presets->SetBitmap(*get_bmp_bundle(m_show_incompatible_presets ? "flag_red" : "flag_green")); m_btn_hide_incompatible_presets->SetToolTip(m_show_incompatible_presets ? "Both compatible an incompatible presets are shown. Click to hide presets not compatible with the current printer." : "Only compatible presets are shown. Click to show both the presets compatible and not compatible with the current printer."); @@ -3830,7 +3800,7 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font()); wxGetApp().UpdateDarkUI(deps.checkbox, false, true); deps.btn = new ScalableButton(parent, wxID_ANY, "printer", from_u8((boost::format(" %s %s") % _utf8(L("Set")) % std::string(dots.ToUTF8())).str()), - wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); deps.btn->SetSize(deps.btn->GetBestSize()); @@ -4139,7 +4109,7 @@ bool SubstitutionManager::is_empty_substitutions() wxSizer* TabPrint::create_manage_substitution_widget(wxWindow* parent) { auto create_btn = [parent](ScalableButton** btn, const wxString& label, const std::string& icon_name) { - *btn = new ScalableButton(parent, wxID_ANY, icon_name, " " + label + " ", wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + *btn = new ScalableButton(parent, wxID_ANY, icon_name, " " + label + " ", wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); (*btn)->SetFont(wxGetApp().normal_font()); (*btn)->SetSize((*btn)->GetBestSize()); }; @@ -4192,7 +4162,7 @@ wxSizer* TabPrint::create_substitutions_widget(wxWindow* parent) wxSizer* TabPrinter::create_bed_shape_widget(wxWindow* parent) { ScalableButton* btn = new ScalableButton(parent, wxID_ANY, "printer", " " + _(L("Set")) + " " + dots, - wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); btn->SetFont(wxGetApp().normal_font()); btn->SetSize(btn->GetBestSize()); @@ -4586,7 +4556,7 @@ void TabSLAMaterial::build() optgroup->append_line(line); - page = add_options_page(L("Notes"), "note.png"); + page = add_options_page(L("Notes"), "note"); optgroup = page->new_optgroup(L("Notes"), 0); optgroup->label_width = 0; Option option = optgroup->get_option("material_notes"); @@ -4594,7 +4564,7 @@ void TabSLAMaterial::build() option.opt.height = 25;//250; optgroup->append_single_option_line(option); - page = add_options_page(L("Dependencies"), "wrench.png"); + page = add_options_page(L("Dependencies"), "wrench"); optgroup = page->new_optgroup(L("Profile dependencies")); create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { @@ -4615,7 +4585,7 @@ void TabSLAMaterial::build() build_preset_description_line(optgroup.get()); - page = add_options_page(L("Material printing profile"), "note.png"); + page = add_options_page(L("Material printing profile"), "note"); optgroup = page->new_optgroup(L("Material printing profile")); option = optgroup->get_option("material_print_speed"); optgroup->append_single_option_line(option); diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index d6f6e0112..6625f71f6 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -174,7 +174,6 @@ protected: wxBoxSizer* m_hsizer; wxBoxSizer* m_left_sizer; wxTreeCtrl* m_treectrl; - wxImageList* m_icons; wxScrolledWindow* m_page_view {nullptr}; wxBoxSizer* m_page_sizer {nullptr}; @@ -203,10 +202,6 @@ protected: ScalableButton* m_undo_to_sys_btn; ScalableButton* m_question_btn; - // Cached bitmaps. - // A "flag" icon to be displayned next to the preset name in the Tab's combo box. - ScalableBitmap m_bmp_show_incompatible_presets; - ScalableBitmap m_bmp_hide_incompatible_presets; // Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field. ScalableBitmap m_bmp_value_lock; ScalableBitmap m_bmp_value_unlock; @@ -505,7 +500,6 @@ public: void build_unregular_pages(bool from_initial_build = false); void on_preset_loaded() override; void init_options_list() override; - void msw_rescale() override; bool supports_printer_technology(const PrinterTechnology /* tech */) const override { return true; } wxSizer* create_bed_shape_widget(wxWindow* parent); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index b6555585b..e9b497638 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -115,29 +115,21 @@ wxIcon ModelNode::get_bitmap(const wxString& color) wxBitmap ModelNode::get_bitmap(const wxString& color) #endif // __linux__ { - /* It's supposed that standard size of an icon is 48px*16px for 100% scaled display. - * So set sizes for solid_colored icons used for filament preset - * and scale them in respect to em_unit value - */ - const double em = em_unit(m_parent_win); - const int icon_width = lround(6.4 * em); - const int icon_height = lround(1.6 * em); - - BitmapCache bmp_cache; - ColorRGB rgb; - decode_color(into_u8(color), rgb); - // there is no need to scale created solid bitmap + wxBitmap bmp = get_solid_bmp_bundle(64, 16, into_u8(color))->GetBitmapFor(m_parent_win); + if (!m_toggle) + bmp = bmp.ConvertToDisabled(); #ifndef __linux__ - return bmp_cache.mksolid(icon_width, icon_height, rgb, true); + return bmp; #else wxIcon icon; - icon.CopyFromBitmap(bmp_cache.mksolid(icon_width, icon_height, rgb, true)); + icon.CopyFromBitmap(bmp); return icon; #endif // __linux__ } // option node ModelNode::ModelNode(ModelNode* parent, const wxString& text, const wxString& old_value, const wxString& new_value) : + m_parent_win(parent->m_parent_win), m_parent(parent), m_old_color(old_value.StartsWith("#") ? old_value : ""), m_new_color(new_value.StartsWith("#") ? new_value : ""), @@ -202,18 +194,22 @@ void ModelNode::UpdateIcons() { // update icons for the colors, if any exists if (!m_old_color.IsEmpty()) - m_old_color_bmp = get_bitmap(m_toggle ? m_old_color : wxString::FromUTF8(grey.c_str())); + m_old_color_bmp = get_bitmap(m_old_color); if (!m_new_color.IsEmpty()) - m_new_color_bmp = get_bitmap(m_toggle ? m_new_color : wxString::FromUTF8(grey.c_str())); + m_new_color_bmp = get_bitmap(m_new_color); // update main icon, if any exists if (m_icon_name.empty()) return; + wxBitmap bmp = get_bmp_bundle(m_icon_name)->GetBitmapFor(m_parent_win); + if (!m_toggle) + bmp = bmp.ConvertToDisabled(); + #ifdef __linux__ - m_icon.CopyFromBitmap(create_scaled_bitmap(m_icon_name, m_parent_win, 16, !m_toggle)); + m_icon.CopyFromBitmap(bmp); #else - m_icon = create_scaled_bitmap(m_icon_name, m_parent_win, 16, !m_toggle); + m_icon = bmp; #endif //__linux__ } @@ -838,7 +834,7 @@ void UnsavedChangesDialog::build(Preset::Type type, PresetCollection* dependent_ auto add_btn = [this, buttons, btn_font, dependent_presets](ScalableButton** btn, int& btn_id, const std::string& icon_name, Action close_act, const wxString& label, bool process_enable = true) { - *btn = new ScalableButton(this, btn_id = NewControlId(), icon_name, label, wxDefaultSize, wxDefaultPosition, wxBORDER_DEFAULT, true, 24); + *btn = new ScalableButton(this, btn_id = NewControlId(), icon_name, label, wxDefaultSize, wxDefaultPosition, wxBORDER_DEFAULT, 24); buttons->Add(*btn, 1, wxLEFT, 5); (*btn)->SetFont(btn_font); @@ -876,7 +872,7 @@ void UnsavedChangesDialog::build(Preset::Type type, PresetCollection* dependent_ if (ActionButtons::SAVE & m_buttons) add_btn(&m_save_btn, m_save_btn_id, "save", Action::Save, _L("Save")); - ScalableButton* cancel_btn = new ScalableButton(this, wxID_CANCEL, "cross", _L("Cancel"), wxDefaultSize, wxDefaultPosition, wxBORDER_DEFAULT, true, 24); + ScalableButton* cancel_btn = new ScalableButton(this, wxID_CANCEL, "cross", _L("Cancel"), wxDefaultSize, wxDefaultPosition, wxBORDER_DEFAULT, 24); buttons->Add(cancel_btn, 1, wxLEFT|wxRIGHT, 5); cancel_btn->SetFont(btn_font); cancel_btn->Bind(wxEVT_BUTTON, [this](wxEvent&) { this->EndModal(wxID_CANCEL); }); @@ -1310,8 +1306,6 @@ void UnsavedChangesDialog::on_dpi_changed(const wxRect& suggested_rect) int em = em_unit(); msw_buttons_rescale(this, em, { wxID_CANCEL, m_save_btn_id, m_move_btn_id, m_continue_btn_id }); - for (auto btn : { m_save_btn, m_transfer_btn, m_discard_btn } ) - if (btn) btn->msw_rescale(); const wxSize& size = wxSize(70 * em, 30 * em); SetMinSize(size); @@ -1325,7 +1319,7 @@ void UnsavedChangesDialog::on_dpi_changed(const wxRect& suggested_rect) void UnsavedChangesDialog::on_sys_color_changed() { for (auto btn : { m_save_btn, m_transfer_btn, m_discard_btn } ) - btn->msw_rescale(); + btn->sys_color_changed(); // msw_rescale updates just icons, so use it m_tree->Rescale(); @@ -1726,10 +1720,16 @@ void DiffPresetDialog::on_dpi_changed(const wxRect&) const wxSize& size = wxSize(80 * em, 30 * em); SetMinSize(size); + auto rescale = [em](PresetComboBox* pcb) { + pcb->msw_rescale(); + wxSize sz = wxSize(35 * em, -1); + pcb->SetMinSize(sz); + pcb->SetSize(sz); + }; + for (auto preset_combos : m_preset_combos) { - preset_combos.presets_left->msw_rescale(); - preset_combos.equal_bmp->msw_rescale(); - preset_combos.presets_right->msw_rescale(); + rescale(preset_combos.presets_left); + rescale(preset_combos.presets_right); } m_tree->Rescale(em); @@ -1747,9 +1747,9 @@ void DiffPresetDialog::on_sys_color_changed() #endif for (auto preset_combos : m_preset_combos) { - preset_combos.presets_left->msw_rescale(); - preset_combos.equal_bmp->msw_rescale(); - preset_combos.presets_right->msw_rescale(); + preset_combos.presets_left->sys_color_changed(); + preset_combos.equal_bmp->sys_color_changed(); + preset_combos.presets_right->sys_color_changed(); } // msw_rescale updates just icons, so use it m_tree->Rescale(); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 9326c9258..67890bac8 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -24,18 +24,15 @@ #ifndef __linux__ // msw_menuitem_bitmaps is used for MSW and OSX static std::map msw_menuitem_bitmaps; -#ifdef __WXMSW__ -void msw_rescale_menu(wxMenu* menu) +void sys_color_changed_menu(wxMenu* menu) { - return; struct update_icons { static void run(wxMenuItem* item) { const auto it = msw_menuitem_bitmaps.find(item->GetId()); if (it != msw_menuitem_bitmaps.end()) { -// const wxBitmap& item_icon = create_menu_bitmap(it->second); - const wxBitmapBundle& item_icon = create_menu_bitmap(it->second); - if (item_icon.IsOk()) - item->SetBitmap(item_icon); + wxBitmapBundle* item_icon = get_bmp_bundle(it->second); + if (item_icon->IsOk()) + item->SetBitmap(*item_icon); } if (item->IsSubMenu()) for (wxMenuItem *sub_item : item->GetSubMenu()->GetMenuItems()) @@ -46,36 +43,24 @@ void msw_rescale_menu(wxMenu* menu) for (wxMenuItem *item : menu->GetMenuItems()) update_icons::run(item); } -#endif /* __WXMSW__ */ -#endif /* no __WXGTK__ */ +#endif /* no __linux__ */ void enable_menu_item(wxUpdateUIEvent& evt, std::function const cb_condition, wxMenuItem* item, wxWindow* win) { const bool enable = cb_condition(); evt.Enable(enable); - -#ifdef __WXOSX__ - const auto it = msw_menuitem_bitmaps.find(item->GetId()); - if (it != msw_menuitem_bitmaps.end()) - { - const wxBitmap& item_icon = create_scaled_bitmap(it->second, win, 16, !enable); - if (item_icon.IsOk()) - item->SetBitmap(item_icon); - } -#endif // __WXOSX__ } wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, -// std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler, - std::function cb, const wxBitmapBundle& icon, wxEvtHandler* event_handler, + std::function cb, wxBitmapBundle* icon, wxEvtHandler* event_handler, std::function const cb_condition, wxWindow* parent, int insert_pos/* = wxNOT_FOUND*/) { if (id == wxID_ANY) id = wxNewId(); auto *item = new wxMenuItem(menu, id, string, description); - if (icon.IsOk()) { - item->SetBitmap(icon); + if (icon && icon->IsOk()) { + item->SetBitmap(*icon); } if (insert_pos == wxNOT_FOUND) menu->Append(item); @@ -104,14 +89,12 @@ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const if (id == wxID_ANY) id = wxNewId(); -// const wxBitmap& bmp = !icon.empty() ? create_menu_bitmap(icon) : wxNullBitmap; // FIXME: pass window ptr - const wxBitmapBundle& bmp = !icon.empty() ? create_menu_bitmap(icon) : wxNullBitmap; // FIXME: pass window ptr + wxBitmapBundle* bmp = icon.empty() ? nullptr : get_bmp_bundle(icon); -//#ifdef __WXMSW__ -#ifndef __WXGTK__ - if (bmp.IsOk()) +#ifndef __linux__ + if (bmp && bmp->IsOk()) msw_menuitem_bitmaps[id] = icon; -#endif /* __WXMSW__ */ +#endif /* no __linux__ */ return append_menu_item(menu, id, string, description, cb, bmp, event_handler, cb_condition, parent, insert_pos); } @@ -124,7 +107,7 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin wxMenuItem* item = new wxMenuItem(menu, id, string, description); if (!icon.empty()) { - item->SetBitmap(create_menu_bitmap(icon)); // FIXME: pass window ptr + item->SetBitmap(*get_bmp_bundle(icon)); //#ifdef __WXMSW__ #ifndef __WXGTK__ msw_menuitem_bitmaps[id] = icon; @@ -426,11 +409,34 @@ int mode_icon_px_size() #endif } -//wxBitmap create_menu_bitmap(const std::string& bmp_name) -wxBitmapBundle create_menu_bitmap(const std::string& bmp_name) +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16*/) { - // return create_scaled_bitmap(bmp_name, nullptr, 16, false, "", true); - return wxBitmapBundle::FromSVGFile(Slic3r::var(bmp_name + ".svg"), wxSize(16, 16)); + static Slic3r::GUI::BitmapCache cache; + + std::string bmp_name = bmp_name_in; + boost::replace_last(bmp_name, ".png", ""); + + // Try loading an SVG first, then PNG if SVG is not found: + wxBitmapBundle* bmp = cache.from_svg(bmp_name, px_cnt, px_cnt, Slic3r::GUI::wxGetApp().dark_mode()); + if (bmp == nullptr) { + bmp = cache.from_png(bmp_name, px_cnt, px_cnt); + if (!bmp) + // Neither SVG nor PNG has been found, raise error + throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); + } + return bmp; +} + +wxBitmapBundle* get_empty_bmp_bundle(int width, int height) +{ + static Slic3r::GUI::BitmapCache cache; + return cache.mkclear_bndl(width, height); +} + +wxBitmapBundle* get_solid_bmp_bundle(int width, int height, const std::string& color ) +{ + static Slic3r::GUI::BitmapCache cache; + return cache.mksolid_bndl(width, height, color, 1, Slic3r::GUI::wxGetApp().dark_mode()); } // win is used to get a correct em_unit value @@ -471,41 +477,19 @@ wxBitmap create_scaled_bitmap( const std::string& bmp_name_in, return *bmp; } -std::vector get_extruder_color_icons(bool thin_icon/* = false*/) +std::vector get_extruder_color_icons(bool thin_icon/* = false*/) { - static Slic3r::GUI::BitmapCache bmp_cache; - // Create the bitmap with color bars. - std::vector bmps; + std::vector bmps; std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); if (colors.empty()) return bmps; - /* It's supposed that standard size of an icon is 36px*16px for 100% scaled display. - * So set sizes for solid_colored icons used for filament preset - * and scale them in respect to em_unit value - */ - const double em = Slic3r::GUI::wxGetApp().em_unit(); - const int icon_width = lround((thin_icon ? 1.6 : 3.2) * em); - const int icon_height = lround(1.6 * em); - bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); for (const std::string& color : colors) - { - std::string bitmap_key = color + "-h" + std::to_string(icon_height) + "-w" + std::to_string(icon_width); - - wxBitmap* bitmap = bmp_cache.find(bitmap_key); - if (bitmap == nullptr) { - // Paint the color icon. - Slic3r::ColorRGB rgb; - Slic3r::decode_color(color, rgb); - // there is no neede to scale created solid bitmap - bitmap = bmp_cache.insert(bitmap_key, bmp_cache.mksolid(icon_width, icon_height, rgb, true, 1, dark_mode)); - } - bmps.emplace_back(bitmap); - } + bmps.emplace_back(get_solid_bmp_bundle(thin_icon ? 16 : 32, 16, color)); return bmps; } @@ -518,7 +502,7 @@ void apply_extruder_selector(Slic3r::GUI::BitmapComboBox** ctrl, wxSize size/* = wxDefaultSize*/, bool use_thin_icon/* = false*/) { - std::vector icons = get_extruder_color_icons(use_thin_icon); + std::vector icons = get_extruder_color_icons(use_thin_icon); if (!*ctrl) { *ctrl = new Slic3r::GUI::BitmapComboBox(parent, wxID_ANY, wxEmptyString, pos, size, 0, nullptr, wxCB_READONLY); @@ -544,7 +528,7 @@ void apply_extruder_selector(Slic3r::GUI::BitmapComboBox** ctrl, int i = 0; wxString str = _(L("Extruder")); - for (wxBitmap* bmp : icons) { + for (wxBitmapBundle* bmp : icons) { if (i == 0) { if (!first_item.empty()) (*ctrl)->Append(_(first_item), *bmp); @@ -578,7 +562,7 @@ LockButton::LockButton( wxWindow *parent, Slic3r::GUI::wxGetApp().UpdateDarkUI(this); SetBitmap(m_bmp_lock_open.bmp()); SetBitmapDisabled(m_bmp_lock_open.bmp()); - SetBitmapHover(m_bmp_lock_closed_f.bmp()); + SetBitmapCurrent(m_bmp_lock_closed_f.bmp()); //button events Bind(wxEVT_BUTTON, &LockButton::OnButton, this); @@ -607,13 +591,14 @@ void LockButton::SetLock(bool lock) } } -void LockButton::msw_rescale() +void LockButton::sys_color_changed() { - return; - m_bmp_lock_closed.msw_rescale(); - m_bmp_lock_closed_f.msw_rescale(); - m_bmp_lock_open.msw_rescale(); - m_bmp_lock_open_f.msw_rescale(); + Slic3r::GUI::wxGetApp().UpdateDarkUI(this); + + m_bmp_lock_closed.sys_color_changed(); + m_bmp_lock_closed_f.sys_color_changed(); + m_bmp_lock_open.sys_color_changed(); + m_bmp_lock_open_f.sys_color_changed(); update_button_bitmaps(); } @@ -621,7 +606,7 @@ void LockButton::msw_rescale() void LockButton::update_button_bitmaps() { SetBitmap(m_is_pushed ? m_bmp_lock_closed.bmp() : m_bmp_lock_open.bmp()); - SetBitmapHover(m_is_pushed ? m_bmp_lock_closed_f.bmp() : m_bmp_lock_open_f.bmp()); + SetBitmapCurrent(m_is_pushed ? m_bmp_lock_closed_f.bmp() : m_bmp_lock_open_f.bmp()); Refresh(); Update(); @@ -648,8 +633,7 @@ ModeButton::ModeButton( wxWindow* parent, const wxString& mode/* = wxEmptyString*/, const std::string& icon_name/* = ""*/, int px_cnt/* = 16*/) : -// ScalableButton(parent, wxID_ANY, ScalableBitmap(parent, icon_name, px_cnt), mode, wxBU_EXACTFIT) - ScalableButton(parent, wxID_ANY, icon_name, mode, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT) + ScalableButton(parent, wxID_ANY, icon_name, mode, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT, px_cnt) { Init(mode); } @@ -759,11 +743,10 @@ void ModeSizer::set_items_border(int border) item->SetBorder(border); } -void ModeSizer::msw_rescale() +void ModeSizer::sys_color_changed() { - this->SetHGap(std::lround(m_hgap_unscaled * em_unit(m_parent))); for (size_t m = 0; m < m_mode_btns.size(); m++) - m_mode_btns[m]->msw_rescale(); + m_mode_btns[m]->sys_color_changed(); } // ---------------------------------------------------------------------------- @@ -803,40 +786,13 @@ ScalableBitmap::ScalableBitmap( wxWindow *parent, m_parent(parent), m_icon_name(icon_name), m_px_cnt(px_cnt) { - m_bmp = create_scaled_bitmap(icon_name, parent, px_cnt, grayscale); + m_bmp = *get_bmp_bundle(icon_name, px_cnt); + m_bitmap = m_bmp.GetBitmapFor(m_parent); } -wxSize ScalableBitmap::GetBmpSize() const +void ScalableBitmap::sys_color_changed() { -#ifdef __APPLE__ - return m_bmp.GetScaledSize(); -#else - return m_bmp.GetSize(); -#endif -} - -int ScalableBitmap::GetBmpWidth() const -{ -#ifdef __APPLE__ - return m_bmp.GetScaledWidth(); -#else - return m_bmp.GetWidth(); -#endif -} - -int ScalableBitmap::GetBmpHeight() const -{ -#ifdef __APPLE__ - return m_bmp.GetScaledHeight(); -#else - return m_bmp.GetHeight(); -#endif -} - - -void ScalableBitmap::msw_rescale() -{ - m_bmp = create_scaled_bitmap(m_icon_name, m_parent, m_px_cnt, m_grayscale); + m_bmp = *get_bmp_bundle(m_icon_name, m_px_cnt); } // ---------------------------------------------------------------------------- @@ -850,11 +806,9 @@ ScalableButton::ScalableButton( wxWindow * parent, const wxSize& size /* = wxDefaultSize*/, const wxPoint& pos /* = wxDefaultPosition*/, long style /*= wxBU_EXACTFIT | wxNO_BORDER*/, - bool use_default_disabled_bitmap/* = false*/, int bmp_px_cnt/* = 16*/) : m_parent(parent), m_current_icon_name(icon_name), - m_use_default_disabled_bitmap (use_default_disabled_bitmap), m_px_cnt(bmp_px_cnt), m_has_border(!(style & wxNO_BORDER)) { @@ -862,10 +816,7 @@ ScalableButton::ScalableButton( wxWindow * parent, Slic3r::GUI::wxGetApp().UpdateDarkUI(this); if (!icon_name.empty()) { -// SetBitmap(create_scaled_bitmap(icon_name, parent, m_px_cnt)); - SetBitmap(wxBitmapBundle::FromSVGFile(Slic3r::var(icon_name + ".svg"), wxSize(m_px_cnt, m_px_cnt))); - //if (m_use_default_disabled_bitmap) - // SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); + SetBitmap(*get_bmp_bundle(icon_name, m_px_cnt)); if (!label.empty()) SetBitmapMargins(int(0.5* em_unit(parent)), 0); } @@ -907,14 +858,12 @@ bool ScalableButton::SetBitmap_(const std::string& bmp_name) if (m_current_icon_name.empty()) return false; -// wxBitmap bmp = create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt); - wxBitmapBundle bmp = wxBitmapBundle::FromSVGFile(Slic3r::var(m_current_icon_name + ".svg"), wxSize(16, 16)); + wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_px_cnt); SetBitmap(bmp); SetBitmapCurrent(bmp); SetBitmapPressed(bmp); SetBitmapFocus(bmp); - if (m_use_default_disabled_bitmap) - SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); + SetBitmapDisabled(bmp); return true; } @@ -933,38 +882,21 @@ int ScalableButton::GetBitmapHeight() #endif } -void ScalableButton::UseDefaultBitmapDisabled() -{ - m_use_default_disabled_bitmap = true; - SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); -} - -void ScalableButton::msw_rescale() +void ScalableButton::sys_color_changed() { Slic3r::GUI::wxGetApp().UpdateDarkUI(this, m_has_border); -// if (!m_current_icon_name.empty()) { - if (0) { - wxBitmap bmp = create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt); - SetBitmap(bmp); - SetBitmapCurrent(bmp); - SetBitmapPressed(bmp); - SetBitmapFocus(bmp); - if (!m_disabled_icon_name.empty()) - SetBitmapDisabled(create_scaled_bitmap(m_disabled_icon_name, m_parent, m_px_cnt)); - else if (m_use_default_disabled_bitmap) - SetBitmapDisabled(create_scaled_bitmap(m_current_icon_name, m_parent, m_px_cnt, true)); - } - - if (m_width > 0 || m_height>0) - { - const int em = em_unit(m_parent); - wxSize size(m_width * em, m_height * em); - SetMinSize(size); - } + wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_px_cnt); + SetBitmap(bmp); + SetBitmapCurrent(bmp); + SetBitmapPressed(bmp); + SetBitmapFocus(bmp); + if (!m_disabled_icon_name.empty()) + SetBitmapDisabled(*get_bmp_bundle(m_disabled_icon_name, m_px_cnt)); + if (!GetLabelText().IsEmpty()) + SetBitmapMargins(int(0.5 * em_unit(m_parent)), 0); } - // ---------------------------------------------------------------------------- // BlinkingBitmap // ---------------------------------------------------------------------------- @@ -975,13 +907,6 @@ BlinkingBitmap::BlinkingBitmap(wxWindow* parent, const std::string& icon_name) : bmp = ScalableBitmap(parent, icon_name); } -void BlinkingBitmap::msw_rescale() -{ - bmp.msw_rescale(); - this->SetSize(bmp.GetBmpSize()); - this->SetMinSize(bmp.GetBmpSize()); -} - void BlinkingBitmap::invalidate() { this->SetBitmap(wxNullBitmap); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 8387551f2..a22622d39 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -16,15 +16,14 @@ #include -#ifdef __WXMSW__ -void msw_rescale_menu(wxMenu* menu); -#else /* __WXMSW__ */ -inline void msw_rescale_menu(wxMenu* /* menu */) {} -#endif /* __WXMSW__ */ +#ifndef __linux__ +void sys_color_changed_menu(wxMenu* menu); +#else +inline void sys_color_changed_menu(wxMenu* /* menu */) {} +#endif // no __linux__ wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, -// std::function cb, const wxBitmap& icon, wxEvtHandler* event_handler = nullptr, - std::function cb, const wxBitmapBundle& icon, wxEvtHandler* event_handler = nullptr, + std::function cb, wxBitmapBundle* icon, wxEvtHandler* event_handler = nullptr, std::function const cb_condition = []() { return true;}, wxWindow* parent = nullptr, int insert_pos = wxNOT_FOUND); wxMenuItem* append_menu_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, const std::string& icon = "", wxEvtHandler* event_handler = nullptr, @@ -51,15 +50,16 @@ void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector< int em_unit(wxWindow* win); int mode_icon_px_size(); -//wxBitmap create_menu_bitmap(const std::string& bmp_name); -wxBitmapBundle create_menu_bitmap(const std::string& bmp_name); +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name, int px_cnt = 16); +wxBitmapBundle* get_empty_bmp_bundle(int width, int height); +wxBitmapBundle* get_solid_bmp_bundle(int width, int height, const std::string& color); wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullptr, const int px_cnt = 16, const bool grayscale = false, const std::string& new_color = std::string(), // color witch will used instead of orange const bool menu_bitmap = false); -std::vector get_extruder_color_icons(bool thin_icon = false); +std::vector get_extruder_color_icons(bool thin_icon = false); namespace Slic3r { namespace GUI { @@ -148,21 +148,28 @@ public: ~ScalableBitmap() {} - wxSize GetBmpSize() const; - int GetBmpWidth() const; - int GetBmpHeight() const; + void sys_color_changed(); - void msw_rescale(); + const wxBitmapBundle& bmp() const { return m_bmp; } + wxBitmap get_bitmap() { return m_bmp.GetBitmapFor(m_parent); } + wxWindow* parent() const { return m_parent;} + const std::string& name() const { return m_icon_name; } + int px_cnt() const { return m_px_cnt;} - const wxBitmap& bmp() const { return m_bmp; } - wxBitmap& bmp() { return m_bmp; } - const std::string& name() const{ return m_icon_name; } - - int px_cnt()const {return m_px_cnt;} + wxSize GetSize() const { +#ifdef __APPLE__ + return m_bmp.GetDefaultSize(); +#else + return m_bmp.GetPreferredBitmapSizeFor(m_parent); +#endif + } + int GetWidth() const { return GetSize().GetWidth(); } + int GetHeight() const { return GetSize().GetHeight(); } private: wxWindow* m_parent{ nullptr }; - wxBitmap m_bmp = wxBitmap(); + wxBitmapBundle m_bmp = wxBitmapBundle(); + wxBitmap m_bitmap = wxBitmap(); std::string m_icon_name = ""; int m_px_cnt {16}; bool m_grayscale {false}; @@ -192,7 +199,7 @@ public: void enable() { m_disabled = false; } void disable() { m_disabled = true; } - void msw_rescale(); + void sys_color_changed(); protected: void update_button_bitmaps(); @@ -224,7 +231,6 @@ public: const wxSize& size = wxDefaultSize, const wxPoint& pos = wxDefaultPosition, long style = wxBU_EXACTFIT | wxNO_BORDER, - bool use_default_disabled_bitmap = false, int bmp_px_cnt = 16); ScalableButton( @@ -240,9 +246,8 @@ public: bool SetBitmap_(const std::string& bmp_name); void SetBitmapDisabled_(const ScalableBitmap &bmp); int GetBitmapHeight(); - void UseDefaultBitmapDisabled(); - void msw_rescale(); + void sys_color_changed(); private: wxWindow* m_parent { nullptr }; @@ -251,8 +256,6 @@ private: int m_width {-1}; // should be multiplied to em_unit int m_height{-1}; // should be multiplied to em_unit - bool m_use_default_disabled_bitmap {false}; - // bitmap dimensions int m_px_cnt{ 16 }; bool m_has_border {false}; @@ -318,7 +321,7 @@ public: void set_items_flag(int flag); void set_items_border(int border); - void msw_rescale(); + void sys_color_changed(); const std::vector& get_btns() { return m_mode_btns; } private: @@ -366,12 +369,11 @@ public: ~BlinkingBitmap() {} - void msw_rescale(); void invalidate(); void activate(); void blink(); - const wxBitmap& get_bmp() const { return bmp.bmp(); } + const wxBitmapBundle& get_bmp() const { return bmp.bmp(); } private: ScalableBitmap bmp; From f8477d1be6ff35446e850feeb71c056ad083c766 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 3 Jun 2022 12:49:21 +0200 Subject: [PATCH 034/131] Using of wxWidgets 3.1.6 WIP: Linux/OSX specific fixes OSX specific: Fixed get_mouse_position_in_control(). + Use GetItemRect() to calculation of the position and size for Extruder selector Linux specific: * Use just 1.0 scale for wxBitmapComboboxes under GTK3 and gtk3 * GTK2 specific: use GTK2 doesn't suppost get_scale, so scale bitmap size form em_unit() --- src/slic3r/GUI/BitmapCache.cpp | 129 ++++------------------------ src/slic3r/GUI/BitmapCache.hpp | 7 -- src/slic3r/GUI/ExtraRenderers.cpp | 23 +++-- src/slic3r/GUI/GUI_ObjectList.cpp | 26 ++++-- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/OG_CustomCtrl.cpp | 6 +- src/slic3r/GUI/PresetComboBoxes.cpp | 9 +- src/slic3r/GUI/wxExtensions.cpp | 27 ++++-- src/slic3r/GUI/wxExtensions.hpp | 6 +- 9 files changed, 85 insertions(+), 150 deletions(-) diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index d2bf98b5b..147615277 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -65,6 +65,8 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vec wxVector bitmaps; std::set scales = {1.0}; +#ifndef __linux__ + #ifdef __APPLE__ scales.emplace(m_scale); #else @@ -73,12 +75,14 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vec scales.emplace(wxDisplay(disp).GetScaleFactor()); #endif +#endif // !__linux__ + for (double scale : scales) { size_t width = 0; size_t height = 0; for (const wxBitmapBundle* bmp_bndl : bmps) { #ifdef __APPLE__ - wxSize size = bmp_bndl->GetPreferredBitmapSizeAtScale(1.0); + wxSize size = bmp_bndl->GetDefaultSize(); #else wxSize size = bmp_bndl->GetPreferredBitmapSizeAtScale(scale); #endif @@ -98,7 +102,7 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vec memset(image.GetAlpha(), 0, width * height); size_t x = 0; for (const wxBitmapBundle* bmp_bndl : bmps) { - wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetPreferredBitmapSizeAtScale(scale)); + wxBitmap bmp = bmp_bndl->GetBitmap(bmp_bndl->GetDefaultSize()); if (bmp.GetWidth() > 0) { if (bmp.GetDepth() == 32) { wxAlphaPixelData data(bmp); @@ -138,7 +142,7 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vec } } } - x += bmp.GetWidth(); + x += bmp.GetScaledWidth(); } bitmaps.push_back(* this->insert(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image)))); @@ -156,8 +160,8 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::string& name, const std::vec if (bmp.GetWidth() > 0) memDC.DrawBitmap(bmp, x, 0, true); -#ifdef __APPLE__ // we should "move" with step equal to non-scaled width +#ifdef __APPLE__ x += bmp.GetScaledWidth(); #else x += bmp.GetWidth(); @@ -262,110 +266,6 @@ wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp return bitmap; } -wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp, const wxBitmap &bmp2) -{ - // Copying the wxBitmaps is cheap as the bitmap's content is reference counted. - const wxBitmap bmps[2] = { bmp, bmp2 }; - return this->insert(bitmap_key, bmps, bmps + 2); -} - -wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3) -{ - // Copying the wxBitmaps is cheap as the bitmap's content is reference counted. - const wxBitmap bmps[3] = { bmp, bmp2, bmp3 }; - return this->insert(bitmap_key, bmps, bmps + 3); -} - -wxBitmap* BitmapCache::insert(const std::string &bitmap_key, const wxBitmap *begin, const wxBitmap *end) -{ - size_t width = 0; - size_t height = 0; - for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { -#ifdef __APPLE__ - width += bmp->GetScaledWidth(); - height = std::max(height, bmp->GetScaledHeight()); -#else - width += bmp->GetWidth(); - height = std::max(height, bmp->GetHeight()); -#endif - } - -#ifdef __WXGTK2__ - // Broken alpha workaround - wxImage image(width, height); - image.InitAlpha(); - // Fill in with a white color. - memset(image.GetData(), 0x0ff, width * height * 3); - // Fill in with full transparency. - memset(image.GetAlpha(), 0, width * height); - size_t x = 0; - for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { - if (bmp->GetWidth() > 0) { - if (bmp->GetDepth() == 32) { - wxAlphaPixelData data(*const_cast(bmp)); - //FIXME The following method is missing from wxWidgets 3.1.1. - // It looks like the wxWidgets 3.0.3 called the wrapped bitmap's UseAlpha(). - //data.UseAlpha(); - if (data) { - for (int r = 0; r < bmp->GetHeight(); ++ r) { - wxAlphaPixelData::Iterator src(data); - src.Offset(data, 0, r); - unsigned char *dst_pixels = image.GetData() + (x + r * width) * 3; - unsigned char *dst_alpha = image.GetAlpha() + x + r * width; - for (int c = 0; c < bmp->GetWidth(); ++ c, ++ src) { - *dst_pixels ++ = src.Red(); - *dst_pixels ++ = src.Green(); - *dst_pixels ++ = src.Blue(); - *dst_alpha ++ = src.Alpha(); - } - } - } - } else if (bmp->GetDepth() == 24) { - wxNativePixelData data(*const_cast(bmp)); - if (data) { - for (int r = 0; r < bmp->GetHeight(); ++ r) { - wxNativePixelData::Iterator src(data); - src.Offset(data, 0, r); - unsigned char *dst_pixels = image.GetData() + (x + r * width) * 3; - unsigned char *dst_alpha = image.GetAlpha() + x + r * width; - for (int c = 0; c < bmp->GetWidth(); ++ c, ++ src) { - *dst_pixels ++ = src.Red(); - *dst_pixels ++ = src.Green(); - *dst_pixels ++ = src.Blue(); - *dst_alpha ++ = wxALPHA_OPAQUE; - } - } - } - } - } - x += bmp->GetWidth(); - } - return this->insert(bitmap_key, wxImage_to_wxBitmap_with_alpha(std::move(image))); - -#else - - wxBitmap *bitmap = this->insert(bitmap_key, width, height); - wxMemoryDC memDC; - memDC.SelectObject(*bitmap); - memDC.SetBackground(*wxTRANSPARENT_BRUSH); - memDC.Clear(); - size_t x = 0; - for (const wxBitmap *bmp = begin; bmp != end; ++ bmp) { - if (bmp->GetWidth() > 0) - memDC.DrawBitmap(*bmp, x, 0, true); -#ifdef __APPLE__ - // we should "move" with step equal to non-scaled width - x += bmp->GetScaledWidth(); -#else - x += bmp->GetWidth(); -#endif - } - memDC.SelectObject(wxNullBitmap); - return bitmap; - -#endif -} - wxBitmap* BitmapCache::insert_raw_rgba(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale/* = false*/) { wxImage image(width, height); @@ -492,7 +392,6 @@ wxBitmapBundle* BitmapCache::from_svg(const std::string& bitmap_name, unsigned t std::string bitmap_key = bitmap_name + (target_height != 0 ? "-h" + std::to_string(target_height) : "-w" + std::to_string(target_width)) -// + (m_scale != 1.0f ? "-s" + float_to_string_decimal_point(m_scale) : "") + (dark_mode ? "-dm" : "") + new_color; @@ -594,9 +493,9 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ return this->insert_raw_rgba(bitmap_key, width, height, data.data(), grayscale); } - +/* //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap -wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false*/, size_t border_width /*= 0*/, bool dark_mode/* = false*/) +wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false* /, size_t border_width /*= 0* /, bool dark_mode/* = false* /) { double scale = suppress_scaling ? 1.0f : m_scale; width *= scale; @@ -638,13 +537,15 @@ wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsi return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); } - +*/ //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width /*= 0*/, bool dark_mode/* = false*/) { wxVector bitmaps; std::set scales = { 1.0 }; +#ifndef __linux__ + #ifdef __APPLE__ scales.emplace(m_scale); #else @@ -653,6 +554,8 @@ wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned scales.emplace(wxDisplay(disp).GetScaleFactor()); #endif +#endif // !__linux__ + for (double scale : scales) { size_t width = width_in * scale; size_t height = height_in * scale; @@ -698,7 +601,7 @@ wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned wxBitmapBundle* BitmapCache::mksolid_bndl(size_t width, size_t height, const std::string& color, size_t border_width, bool dark_mode) { - std::string bitmap_key = (color.empty() ? "empty-w" : color) + "-h" + std::to_string(height) + "-w" + std::to_string(width) + (dark_mode ? "-dm" : ""); + std::string bitmap_key = (color.empty() ? "empty" : color) + "-h" + std::to_string(height) + "-w" + std::to_string(width) + (dark_mode ? "-dm" : ""); wxBitmapBundle* bndl = nullptr; auto it = m_bndl_map.find(bitmap_key); diff --git a/src/slic3r/GUI/BitmapCache.hpp b/src/slic3r/GUI/BitmapCache.hpp index 28058d94b..6ba9ae15b 100644 --- a/src/slic3r/GUI/BitmapCache.hpp +++ b/src/slic3r/GUI/BitmapCache.hpp @@ -37,10 +37,6 @@ public: wxBitmap* insert(const std::string &name, size_t width, size_t height, double scale = -1.0); wxBitmap* insert(const std::string &name, const wxBitmap &bmp); - wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2); - wxBitmap* insert(const std::string &name, const wxBitmap &bmp, const wxBitmap &bmp2, const wxBitmap &bmp3); - wxBitmap* insert(const std::string &name, const std::vector &bmps) { return this->insert(name, &bmps.front(), &bmps.front() + bmps.size()); } - wxBitmap* insert(const std::string &name, const wxBitmap *begin, const wxBitmap *end); wxBitmap* insert_raw_rgba(const std::string &bitmap_key, unsigned width, unsigned height, const unsigned char *raw_data, const bool grayscale = false); // Load png from resources/icons. bitmap_key is given without the .png suffix. Bitmap will be rescaled to provided height/width if nonzero. @@ -58,9 +54,6 @@ public: // Load svg from resources/icons. bitmap_key is given without the .svg suffix. SVG will be rasterized to provided height/width. wxBitmap* load_svg(const std::string &bitmap_key, unsigned width = 0, unsigned height = 0, const bool grayscale = false, const bool dark_mode = false, const std::string& new_color = ""); - wxBitmap mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false); - wxBitmap mksolid(size_t width, size_t height, const ColorRGB& rgb, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb.r_uchar(), rgb.g_uchar(), rgb.b_uchar(), wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } - wxBitmap mkclear(size_t width, size_t height) { return mksolid(width, height, 0, 0, 0, wxALPHA_TRANSPARENT, true, 0); } wxBitmapBundle mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width = 0, bool dark_mode = false); wxBitmapBundle* mksolid_bndl(size_t width, size_t height, const std::string& color = std::string(), size_t border_width = 0, bool dark_mode = false); wxBitmapBundle* mkclear_bndl(size_t width, size_t height) { return mksolid_bndl(width, height); } diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 9bccb6b63..0368a2fe2 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -33,6 +33,15 @@ wxIMPLEMENT_DYNAMIC_CLASS(DataViewBitmapText, wxObject) IMPLEMENT_VARIANT_OBJECT(DataViewBitmapText) +static wxSize get_size(const wxBitmap& icon) +{ +#ifdef __WIN32__ + return icon.GetSize(); +#else + return icon.GetScaledSize(); +#endif +} + // --------------------------------------------------------- // BitmapTextRenderer // --------------------------------------------------------- @@ -124,11 +133,7 @@ bool BitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state) const wxBitmap& icon = m_value.GetBitmap(); if (icon.IsOk()) { -#ifdef __APPLE__ - wxSize icon_sz = icon.GetScaledSize(); -#else - wxSize icon_sz = icon.GetSize(); -#endif + wxSize icon_sz = get_size(icon); dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon_sz.y) / 2); xoffset = icon_sz.x + 4; } @@ -264,11 +269,13 @@ bool BitmapChoiceRenderer::Render(wxRect rect, wxDC* dc, int state) const wxBitmap& icon = m_value.GetBitmap(); if (icon.IsOk()) { - dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon.GetHeight()) / 2); - xoffset = icon.GetWidth() + 4; + wxSize icon_sz = get_size(icon); + + dc->DrawBitmap(icon, rect.x, rect.y + (rect.height - icon_sz.GetHeight()) / 2); + xoffset = icon_sz.GetWidth() + 4; if (rect.height==0) - rect.height= icon.GetHeight(); + rect.height= icon_sz.GetHeight(); } #ifdef _WIN32 diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 04a5ed6fa..90fbd9d5e 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -971,12 +971,11 @@ void ObjectList::extruder_editing() if (!item || !(m_objects_model->GetItemType(item) & (itVolume | itObject))) return; - const int column_width = GetColumn(colExtruder)->GetWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X) + 5; - - wxPoint pos = this->get_mouse_position_in_control(); - wxSize size = wxSize(column_width, -1); - pos.x = GetColumn(colName)->GetWidth() + GetColumn(colPrint)->GetWidth() + 5; - pos.y -= GetTextExtent("m").y; + wxRect rect = this->GetItemRect(item, GetColumn(colExtruder)); + wxPoint pos = rect.GetPosition(); + pos.y -= 4; + wxSize size = rect.GetSize(); + size.SetWidth(size.GetWidth() + 8); apply_extruder_selector(&m_extruder_editor, this, L("default"), pos, size); @@ -2433,6 +2432,21 @@ bool ObjectList::can_merge_to_single_object() const return (*m_objects)[obj_idx]->volumes.size() > 1; } +wxPoint ObjectList::get_mouse_position_in_control() const +{ + wxPoint pt = wxGetMousePosition() - this->GetScreenPosition(); + +#ifdef __APPLE__ + // Workaround for OSX. From wxWidgets 3.1.6 Hittest doesn't respect to the header of wxDataViewCtrl + if (wxDataViewItem top_item = this->GetTopItem(); top_item.IsOk()) { + auto rect = this->GetItemRect(top_item, this->GetColumn(0)); + pt.y -= rect.y; + } +#endif // __APPLE__ + + return pt; +} + // NO_PARAMETERS function call means that changed object index will be determine from Selection() void ObjectList::changed_object(const int obj_idx/* = -1*/) const { diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index b9b816b7b..c838203ae 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -280,7 +280,7 @@ public: bool can_merge_to_multipart_object() const; bool can_merge_to_single_object() const; - wxPoint get_mouse_position_in_control() const { return wxGetMousePosition() - this->GetScreenPosition(); } + wxPoint get_mouse_position_in_control() const; wxBoxSizer* get_sizer() {return m_sizer;} int get_selected_obj_idx() const; ModelConfig& get_item_config(const wxDataViewItem& item) const; diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 45d51fb63..6c088aa79 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -21,10 +21,10 @@ static bool is_point_in_rect(const wxPoint& pt, const wxRect& rect) static wxSize get_bitmap_size(const wxBitmapBundle* bmp, wxWindow* parent) { -#ifdef __APPLE__ - return bmp->GetDefaultSize(); -#else +#ifdef __WIN32__ return bmp->GetBitmapFor(parent).GetSize(); +#else + return bmp->GetDefaultSize(); #endif } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 93a5fe433..597c30312 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -389,14 +389,14 @@ void PresetComboBox::sys_color_changed() void PresetComboBox::fill_width_height() { - icon_height = m_bitmapCompatible->GetPreferredBitmapSizeAtScale(1.0).GetHeight(); - norm_icon_width = m_bitmapCompatible->GetPreferredBitmapSizeAtScale(1.0).GetWidth(); - - null_icon_width = 2 * norm_icon_width; + icon_height = 16; + norm_icon_width = 16; thin_icon_width = 8; wide_icon_width = norm_icon_width + thin_icon_width; + null_icon_width = 2 * norm_icon_width; + space_icon_width = 2; thin_space_icon_width = 4; wide_space_icon_width = 6; @@ -484,6 +484,7 @@ wxBitmapBundle* PresetComboBox::get_bmp( std::string bitmap_key, const std::str wxBitmapBundle PresetComboBox::NullBitmapBndl() { + assert(null_icon_width > 0); return *get_empty_bmp_bundle(null_icon_width, icon_height); } diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 67890bac8..c397b4b39 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -108,10 +108,10 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin wxMenuItem* item = new wxMenuItem(menu, id, string, description); if (!icon.empty()) { item->SetBitmap(*get_bmp_bundle(icon)); -//#ifdef __WXMSW__ -#ifndef __WXGTK__ + +#ifndef __linux__ msw_menuitem_bitmaps[id] = icon; -#endif /* __WXMSW__ */ +#endif // no __linux__ } item->SetSubMenu(sub_menu); @@ -409,8 +409,19 @@ int mode_icon_px_size() #endif } +#ifdef __WXGTK2__ +static int scale() +{ + return int(em_unit(nullptr) * 0.1f + 0.5f); +} +#endif // __WXGTK2__ + wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16*/) { +#ifdef __WXGTK2__ + px_cnt *= scale(); +#endif // __WXGTK2__ + static Slic3r::GUI::BitmapCache cache; std::string bmp_name = bmp_name_in; @@ -430,13 +441,21 @@ wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16 wxBitmapBundle* get_empty_bmp_bundle(int width, int height) { static Slic3r::GUI::BitmapCache cache; +#ifdef __WXGTK2__ + return cache.mkclear_bndl(width * scale(), height * scale()); +#else return cache.mkclear_bndl(width, height); +#endif // __WXGTK2__ } wxBitmapBundle* get_solid_bmp_bundle(int width, int height, const std::string& color ) { static Slic3r::GUI::BitmapCache cache; +#ifdef __WXGTK2__ + return cache.mksolid_bndl(width * scale(), height * scale(), color, 1, Slic3r::GUI::wxGetApp().dark_mode()); +#else return cache.mksolid_bndl(width, height, color, 1, Slic3r::GUI::wxGetApp().dark_mode()); +#endif // __WXGTK2__ } // win is used to get a correct em_unit value @@ -486,8 +505,6 @@ std::vector get_extruder_color_icons(bool thin_icon/* = false*/ if (colors.empty()) return bmps; - bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); - for (const std::string& color : colors) bmps.emplace_back(get_solid_bmp_bundle(thin_icon ? 16 : 32, 16, color)); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index a22622d39..db05af9eb 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -157,10 +157,10 @@ public: int px_cnt() const { return m_px_cnt;} wxSize GetSize() const { -#ifdef __APPLE__ - return m_bmp.GetDefaultSize(); -#else +#ifdef __WIN32__ return m_bmp.GetPreferredBitmapSizeFor(m_parent); +#else + return m_bmp.GetDefaultSize(); #endif } int GetWidth() const { return GetSize().GetWidth(); } From 3f32bb1a520ed4ffe4a927727708ccc4b8c736ff Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 19 Jan 2022 13:24:37 +0100 Subject: [PATCH 035/131] Update to GLEW 2.2 to prevent initialization crash with wx >= 3.1.6 Revert "Revert to GLEW 2.1 as most Linux distros as using that" This reverts commit 46c8f82f24127dc992e904b9b3f1c75a719f0491. --- deps/GLEW/GLEW.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/GLEW/GLEW.cmake b/deps/GLEW/GLEW.cmake index ae2832577..76ffc0a8d 100644 --- a/deps/GLEW/GLEW.cmake +++ b/deps/GLEW/GLEW.cmake @@ -4,8 +4,8 @@ find_package(OpenGL QUIET REQUIRED) prusaslicer_add_cmake_project( GLEW - URL https://sourceforge.net/projects/glew/files/glew/2.1.0/glew-2.1.0.zip - URL_HASH SHA256=2700383d4de2455f06114fbaf872684f15529d4bdc5cdea69b5fb0e9aa7763f1 + URL https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip + URL_HASH SHA256=a9046a913774395a095edcc0b0ac2d81c3aacca61787b39839b941e9be14e0d4 SOURCE_SUBDIR build/cmake CMAKE_ARGS -DBUILD_UTILS=OFF From 25b2ff5fb8c215dab885c9660056d01cc83a9fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Mon, 27 Jun 2022 09:25:38 +0200 Subject: [PATCH 036/131] Tried to disable EGL. --- deps/wxWidgets/wxWidgets.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 5f297b5db..29374974b 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -37,6 +37,7 @@ prusaslicer_add_cmake_project(wxWidgets -DwxUSE_EXPAT=sys -DwxUSE_LIBSDL=OFF -DwxUSE_XTEST=OFF + -DwxUSE_GLCANVAS_EGL=OFF ) if (MSVC) From d1c92ded7c82f064f677bd95e849d4117de96765 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 26 Jul 2022 11:14:28 +0200 Subject: [PATCH 037/131] Fix wxWidgets 3.2 not being found on windows --- src/CMakeLists.txt | 12 +++++++++--- src/slic3r/CMakeLists.txt | 2 -- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8a093f639..13aceb998 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,18 +58,24 @@ if (SLIC3R_GUI) "Hint: On Linux you can set -DSLIC3R_WX_STABLE=1 to use wxWidgets 3.0\n") endif () endif () + + include(${wxWidgets_USE_FILE}) else () - find_package(wxWidgets 3.1 REQUIRED COMPONENTS html adv gl core base) + find_package(wxWidgets 3.1 COMPONENTS html adv gl core base) + if (wxWidgets_NOTFOUND) + find_package(wxWidgets 3.2 CONFIG REQUIRED COMPONENTS html adv gl core base) + else () + include(${wxWidgets_USE_FILE}) + endif () endif () if(UNIX) message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}") endif() - include(${wxWidgets_USE_FILE}) - find_package(JPEG QUIET) find_package(TIFF QUIET) + find_package(NanoSVG REQUIRED) string(REGEX MATCH "wxpng" WX_PNG_BUILTIN ${wxWidgets_LIBRARIES}) if (PNG_FOUND AND NOT WX_PNG_BUILTIN) diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 5657ea3a3..71a4941a4 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -257,8 +257,6 @@ set(SLIC3R_GUI_SOURCES Utils/WinRegistry.hpp ) -find_package(NanoSVG REQUIRED) - if (APPLE) list(APPEND SLIC3R_GUI_SOURCES Utils/RetinaHelperImpl.mm From 562d99133230457b09d1658bf83a982e5369ebf4 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 26 Jul 2022 11:39:39 +0200 Subject: [PATCH 038/131] Follow up to previous commit --- src/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 13aceb998..a0becdab9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -62,7 +62,8 @@ if (SLIC3R_GUI) include(${wxWidgets_USE_FILE}) else () find_package(wxWidgets 3.1 COMPONENTS html adv gl core base) - if (wxWidgets_NOTFOUND) + if (NOT wxWidgets_FOUND) + message(STATUS "Trying to find wxWidgets in CONFIG mode...") find_package(wxWidgets 3.2 CONFIG REQUIRED COMPONENTS html adv gl core base) else () include(${wxWidgets_USE_FILE}) From 6806ec02c7bd4afbf4a631c98f7901825c2f168b Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 28 Jul 2022 14:12:18 +0200 Subject: [PATCH 039/131] Discarded rescale for SplashScreen. There is no need to rescale the SplashScreen after https://github.com/wxWidgets/wxWidgets/commit/a81e0d83c1a6a274a9349320aa09623b59c69991 --- src/slic3r/GUI/GUI_App.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 69a42bf03..95ef05c45 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -125,13 +125,16 @@ public: int init_dpi = get_dpi_for_window(this); this->SetPosition(pos); + // The size of the SplashScreen can be hanged after its moving to another display + // So, update it from a bitmap size + this->SetClientSize(bitmap.GetWidth(), bitmap.GetHeight()); this->CenterOnScreen(); int new_dpi = get_dpi_for_window(this); - m_scale = (float)(new_dpi) / (float)(init_dpi); +// m_scale = (float)(new_dpi) / (float)(init_dpi); m_main_bitmap = bitmap; - scale_bitmap(m_main_bitmap, m_scale); +// scale_bitmap(m_main_bitmap, m_scale); // init constant texts and scale fonts init_constant_text(); From 86a5280ff643a548b040feca772d3c6c9cc016d3 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 29 Jul 2022 11:59:02 +0200 Subject: [PATCH 040/131] Added handling of event wxEVT_DATAVIEW_ITEM_ACTIVATED in ObjectList to fix behavior when double clicking on list items --- src/slic3r/GUI/GUI_ObjectList.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 90fbd9d5e..e4d891b5d 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -221,6 +221,14 @@ ObjectList::ObjectList(wxWindow* parent) : Bind(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, &ObjectList::ItemValueChanged, this); + Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& event) { + wxDataViewItem item; + wxDataViewColumn* col; + this->HitTest(this->get_mouse_position_in_control(), item, col); + this->EditItem(item, col); + event.StopPropagation(); + }); + Bind(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, [this](wxCommandEvent& e) { last_volume_is_deleted(e.GetInt()); }); Bind(wxEVT_SIZE, ([this](wxSizeEvent &e) { From f9c6e8eb7af5acd1696ac45f9e683490caa8e0d6 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 29 Jul 2022 12:06:52 +0200 Subject: [PATCH 041/131] Added processing of mouse double click in ImGuiWrapper::update_mouse_data() --- src/slic3r/GUI/ImGuiWrapper.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index eb1ec72e4..6f83c5d7c 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -230,6 +230,9 @@ bool ImGuiWrapper::update_mouse_data(wxMouseEvent& evt) io.MouseDown[0] = evt.LeftIsDown(); io.MouseDown[1] = evt.RightIsDown(); io.MouseDown[2] = evt.MiddleIsDown(); + io.MouseDoubleClicked[0] = evt.LeftDClick(); + io.MouseDoubleClicked[1] = evt.RightDClick(); + io.MouseDoubleClicked[2] = evt.MiddleDClick(); float wheel_delta = static_cast(evt.GetWheelDelta()); if (wheel_delta != 0.0f) io.MouseWheel = static_cast(evt.GetWheelRotation()) / wheel_delta; From b1317be78aae479be5696017e61e730b5d2f0b60 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 9 May 2022 15:32:57 +0200 Subject: [PATCH 042/131] Selectable support tree type --- src/libslic3r/Preset.cpp | 1 + src/libslic3r/PrintConfig.cpp | 19 ++++++++++++++++++- src/libslic3r/PrintConfig.hpp | 3 +++ src/libslic3r/SLA/SupportTreeStrategies.hpp | 2 +- src/libslic3r/SLAPrint.cpp | 2 ++ src/slic3r/GUI/ConfigManipulation.cpp | 1 + src/slic3r/GUI/Tab.cpp | 4 ++-- tests/sla_print/sla_print_tests.cpp | 16 ++++++++-------- 8 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 092c0ed9b..db6ebe62c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -493,6 +493,7 @@ static std::vector s_Preset_sla_print_options { "layer_height", "faded_layers", "supports_enable", + "support_tree_type", "support_head_front_diameter", "support_head_penetration", "support_head_width", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index bd4f98dfd..302a9eb6f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -176,6 +176,12 @@ static const t_config_enum_values s_keys_map_SLAMaterialSpeed = { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(SLAMaterialSpeed); +static inline const t_config_enum_values s_keys_map_SLASupportTreeType = { + {"default", int(sla::SupportTreeType::Default)}, + {"branching", int(sla::SupportTreeType::Branching)} +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(SLASupportTreeType); + static const t_config_enum_values s_keys_map_BrimType = { {"no_brim", btNoBrim}, {"outer_only", btOuterOnly}, @@ -3564,6 +3570,17 @@ void PrintConfigDef::init_sla_params() def->mode = comSimple; def->set_default_value(new ConfigOptionBool(true)); + def = this->add("support_tree_type", coEnum); + def->label = L("Support tree type"); + def->tooltip = L("Support tree building strategy"); + def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); + def->enum_values = ConfigOptionEnum::get_enum_names(); + def->enum_labels = ConfigOptionEnum::get_enum_names(); + def->enum_labels[0] = L("Default"); + def->enum_labels[1] = L("Branching"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionEnum(sla::SupportTreeType::Default)); + def = this->add("support_head_front_diameter", coFloat); def->label = L("Pinhead front diameter"); def->category = L("Supports"); @@ -3655,7 +3672,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 1; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(0.0)); + def->set_default_value(new ConfigOptionFloat(0.1)); def = this->add("support_base_diameter", coFloat); def->label = L("Support base diameter"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 9e1d7989d..5ec163572 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -155,6 +155,7 @@ CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SupportMaterialInterfacePattern) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SeamPosition) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLADisplayOrientation) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLAPillarConnectionMode) +CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLASupportTreeType) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(BrimType) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(DraftShield) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(GCodeThumbnailsFormat) @@ -829,6 +830,8 @@ PRINT_CONFIG_CLASS_DEFINE( // Enabling or disabling support creation ((ConfigOptionBool, supports_enable)) + ((ConfigOptionEnum, support_tree_type)) + // Diameter in mm of the pointing side of the head. ((ConfigOptionFloat, support_head_front_diameter))/*= 0.2*/ diff --git a/src/libslic3r/SLA/SupportTreeStrategies.hpp b/src/libslic3r/SLA/SupportTreeStrategies.hpp index d04ceaa2d..487f43575 100644 --- a/src/libslic3r/SLA/SupportTreeStrategies.hpp +++ b/src/libslic3r/SLA/SupportTreeStrategies.hpp @@ -5,7 +5,7 @@ namespace Slic3r { namespace sla { -enum class SupportTreeType { Default, Clever }; +enum class SupportTreeType { Default, Branching }; enum class PillarConnectionMode { zigzag, cross, dynamic }; }} // namespace Slic3r::sla diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 9ad545338..d9b8e33df 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -43,6 +43,7 @@ sla::SupportTreeConfig make_support_cfg(const SLAPrintObjectConfig& c) sla::SupportTreeConfig scfg; scfg.enabled = c.supports_enable.getBool(); + scfg.tree_type = c.support_tree_type.value; scfg.head_front_radius_mm = 0.5*c.support_head_front_diameter.getFloat(); double pillar_r = 0.5 * c.support_pillar_diameter.getFloat(); scfg.head_back_radius_mm = pillar_r; @@ -824,6 +825,7 @@ bool SLAPrintObject::invalidate_state_by_config_options(const std::vectornew_optgroup(L("Supports")); optgroup->append_single_option_line("supports_enable"); + optgroup->append_single_option_line("support_tree_type"); optgroup = page->new_optgroup(L("Support head")); optgroup->append_single_option_line("support_head_front_diameter"); @@ -4650,8 +4651,7 @@ void TabSLAPrint::build() optgroup->append_single_option_line("support_pillar_connection_mode"); optgroup->append_single_option_line("support_buildplate_only"); - // TODO: This parameter is not used at the moment. - // optgroup->append_single_option_line("support_pillar_widening_factor"); + optgroup->append_single_option_line("support_pillar_widening_factor"); optgroup->append_single_option_line("support_base_diameter"); optgroup->append_single_option_line("support_base_height"); optgroup->append_single_option_line("support_base_safety_distance"); diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index a5ed0d029..8ae02c808 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -156,37 +156,37 @@ TEST_CASE("DefaultSupports::FloorSupportsDoNotPierceModel", "[SLASupportGenerati test_support_model_collision(fname, supportcfg); } -//TEST_CASE("CleverSupports::ElevatedSupportGeometryIsValid", "[SLASupportGeneration][Clever]") { +//TEST_CASE("BranchingSupports::ElevatedSupportGeometryIsValid", "[SLASupportGeneration][Branching]") { // sla::SupportTreeConfig supportcfg; // supportcfg.object_elevation_mm = 10.; -// supportcfg.tree_type = sla::SupportTreeType::Clever; +// supportcfg.tree_type = sla::SupportTreeType::Branching; // for (auto fname : SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); //} -//TEST_CASE("CleverSupports::FloorSupportGeometryIsValid", "[SLASupportGeneration][Clever]") { +//TEST_CASE("BranchingSupports::FloorSupportGeometryIsValid", "[SLASupportGeneration][Branching]") { // sla::SupportTreeConfig supportcfg; // supportcfg.object_elevation_mm = 0; -// supportcfg.tree_type = sla::SupportTreeType::Clever; +// supportcfg.tree_type = sla::SupportTreeType::Branching; // for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); //} -TEST_CASE("CleverSupports::ElevatedSupportsDoNotPierceModel", "[SLASupportGeneration][Clever]") { +TEST_CASE("BranchingSupports::ElevatedSupportsDoNotPierceModel", "[SLASupportGeneration][Branching]") { sla::SupportTreeConfig supportcfg; supportcfg.object_elevation_mm = 10.; - supportcfg.tree_type = sla::SupportTreeType::Clever; + supportcfg.tree_type = sla::SupportTreeType::Branching; for (auto fname : SUPPORT_TEST_MODELS) test_support_model_collision(fname, supportcfg); } -TEST_CASE("CleverSupports::FloorSupportsDoNotPierceModel", "[SLASupportGeneration][Clever]") { +TEST_CASE("BranchingSupports::FloorSupportsDoNotPierceModel", "[SLASupportGeneration][Branching]") { sla::SupportTreeConfig supportcfg; supportcfg.object_elevation_mm = 0; - supportcfg.tree_type = sla::SupportTreeType::Clever; + supportcfg.tree_type = sla::SupportTreeType::Branching; for (auto fname : SUPPORT_TEST_MODELS) test_support_model_collision(fname, supportcfg); From 8723e421b30c2e531c2f879bc1033ef04639eaf8 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 9 May 2022 16:38:30 +0200 Subject: [PATCH 043/131] Add new branching tree algorithm --- src/libslic3r/BranchingTree/BranchingTree.cpp | 141 +++++++++++ src/libslic3r/BranchingTree/BranchingTree.hpp | 157 ++++++++++++ src/libslic3r/BranchingTree/PointCloud.cpp | 172 +++++++++++++ src/libslic3r/BranchingTree/PointCloud.hpp | 214 +++++++++++++++++ src/libslic3r/CMakeLists.txt | 6 + src/libslic3r/SLA/BranchingTreeSLA.cpp | 226 ++++++++++++++++++ src/libslic3r/SLA/BranchingTreeSLA.hpp | 15 ++ src/libslic3r/SLA/SupportTree.cpp | 5 + tests/sla_print/sla_test_utils.cpp | 6 + 9 files changed, 942 insertions(+) create mode 100644 src/libslic3r/BranchingTree/BranchingTree.cpp create mode 100644 src/libslic3r/BranchingTree/BranchingTree.hpp create mode 100644 src/libslic3r/BranchingTree/PointCloud.cpp create mode 100644 src/libslic3r/BranchingTree/PointCloud.hpp create mode 100644 src/libslic3r/SLA/BranchingTreeSLA.cpp create mode 100644 src/libslic3r/SLA/BranchingTreeSLA.hpp diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp new file mode 100644 index 000000000..4c9ff899c --- /dev/null +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -0,0 +1,141 @@ +#include "BranchingTree.hpp" +#include "PointCloud.hpp" + +#include +#include +#include + +#include "libslic3r/SLA/SupportTreeUtils.hpp" + +namespace Slic3r { namespace branchingtree { + +bool build_tree(PointCloud &nodes, Builder &builder) +{ + auto ptsqueue = nodes.start_queue(); + auto &properties = nodes.properties(); + + struct NodeDistance { size_t node_id; float distance; }; + auto distances = reserve_vector(nodes.reachable_count()); + + while (!ptsqueue.empty()) { + size_t node_id = ptsqueue.top(); + ptsqueue.pop(); + + Node node = nodes.get(node_id); + nodes.remove_node(node_id); + + distances.clear(); + distances.reserve(nodes.reachable_count()); + + nodes.foreach_reachable(node.pos, [&distances](size_t id, float distance) { + if (!std::isinf(distance)) + distances.emplace_back(NodeDistance{id, distance}); + }); + + std::sort(distances.begin(), distances.end(), + [](auto &a, auto &b) { return a.distance < b.distance; }); + + if (distances.empty()) { + builder.report_unroutable(node); + continue; + } + + auto closest_it = distances.begin(); + bool routed = false; + while (closest_it != distances.end() && !routed) { + size_t closest_node_id = closest_it->node_id; + Node closest_node = nodes.get(closest_node_id); + + auto type = nodes.get_type(closest_node_id); + float w = nodes.get(node_id).weight + closest_it->distance; + closest_node.Rmin = std::max(node.Rmin, closest_node.Rmin); + + switch (type) { + case BED: { + closest_node.weight = w; + if ((routed = builder.add_ground_bridge(node, closest_node))) { + closest_node.left = closest_node.right = node_id; + nodes.get(closest_node_id) = closest_node; + nodes.remove_node(closest_node_id); + } + + break; + } + case MESH: { + closest_node.weight = w; + if ((routed = builder.add_mesh_bridge(node, closest_node))) { + closest_node.left = closest_node.right = node_id; + nodes.get(closest_node_id) = closest_node; + nodes.remove_node(closest_node_id); + } + + break; + } + case SUPP: + case JUNCTION: { + auto max_slope = float(properties.max_slope()); + + if (auto mergept = find_merge_pt(node.pos, closest_node.pos, max_slope)) { + + float mergedist_closest = (*mergept - closest_node.pos).norm(); + float mergedist_node = (*mergept - node.pos).norm(); + float Wnode = nodes.get(node_id).weight; + float Wclosest = nodes.get(closest_node_id).weight; + float Wsum = std::max(Wnode, Wclosest); + float distsum = std::max(mergedist_closest, mergedist_node); + w = Wsum + distsum; + + if (mergedist_closest > EPSILON) { + Node mergenode{*mergept, closest_node.Rmin}; + mergenode.weight = w; + mergenode.id = int(nodes.next_junction_id()); + + if ((routed = builder.add_merger(node, closest_node, mergenode))) { + mergenode.left = node_id; + mergenode.right = closest_node_id; + size_t new_idx = nodes.insert_junction(mergenode); + ptsqueue.push(new_idx); + ptsqueue.remove(nodes.get_queue_idx(closest_node_id)); + nodes.remove_node(closest_node_id); + } + } else if (closest_node.left == Node::ID_NONE || + closest_node.right == Node::ID_NONE) + { + closest_node.weight = w; + if ((routed = builder.add_bridge(node, closest_node))) { + if (closest_node.left == Node::ID_NONE) + closest_node.left = node_id; + else if (closest_node.right == Node::ID_NONE) + closest_node.right = node_id; + + nodes.get(closest_node_id) = closest_node; + } + } + } + + break; + } + case NONE:; + } + + ++closest_it; + } + + if (!routed) + builder.report_unroutable(node); + } + + return true; +} + +bool build_tree(const indexed_triangle_set & its, + const std::vector &support_roots, + Builder & builder, + const Properties & properties) +{ + PointCloud nodes(its, support_roots, properties); + + return build_tree(nodes, builder); +} + +}} // namespace Slic3r::branchingtree diff --git a/src/libslic3r/BranchingTree/BranchingTree.hpp b/src/libslic3r/BranchingTree/BranchingTree.hpp new file mode 100644 index 000000000..5313e30d9 --- /dev/null +++ b/src/libslic3r/BranchingTree/BranchingTree.hpp @@ -0,0 +1,157 @@ +#ifndef SUPPORTTREEBRANCHING_HPP +#define SUPPORTTREEBRANCHING_HPP + +// For indexed_triangle_set +#include + +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" + +namespace Slic3r { namespace branchingtree { + +// Branching tree input parameters. This is an in-line fillable structure with +// setters returning self references. +class Properties +{ + double m_max_slope = PI / 4.; + double m_ground_level = 0.; + double m_sampling_radius = .5; + double m_max_branch_len = 20.; + + ExPolygons m_bed_shape; + +public: + // Maximum slope for bridges of the tree + Properties &max_slope(double val) noexcept + { + m_max_slope = val; + return *this; + } + // Z level of the ground + Properties &ground_level(double val) noexcept + { + m_ground_level = val; + return *this; + } + // How far should sample points be in the mesh and the ground + Properties &sampling_radius(double val) noexcept + { + m_sampling_radius = val; + return *this; + } + // Shape of the print bed (ground) + Properties &bed_shape(ExPolygons bed) noexcept + { + m_bed_shape = std::move(bed); + return *this; + } + + Properties &max_branch_length(double val) noexcept + { + m_max_branch_len = val; + return *this; + } + + double max_slope() const noexcept { return m_max_slope; } + double ground_level() const noexcept { return m_ground_level; } + double sampling_radius() const noexcept { return m_sampling_radius; } + double max_branch_length() const noexcept { return m_max_branch_len; } + const ExPolygons &bed_shape() const noexcept { return m_bed_shape; } +}; + +// A junction of the branching tree with position and radius. +struct Node +{ + static constexpr int ID_NONE = -1; + + int id = ID_NONE, left = ID_NONE, right = ID_NONE; + + Vec3f pos; + float Rmin; + + // Tracking the weight of each junction, which is essentially the sum of + // the lenghts of all branches emanating from this junction. + float weight; + + Node(const Vec3f &p, float r_min = .0f) : pos{p}, Rmin{r_min}, weight{0.f} + {} +}; + +// An output interface for the branching tree generator function. Consider each +// method as a callback and implement the actions that need to be done. +class Builder +{ +public: + virtual ~Builder() = default; + + // A simple bridge from junction to junction. + virtual bool add_bridge(const Node &from, const Node &to) = 0; + + // An Y shaped structure with two starting points and a merge point below + // them. The angles will respect the max_slope setting. + virtual bool add_merger(const Node &node, + const Node &closest, + const Node &merge_node) = 0; + + // Add an anchor bridge to the ground (print bed) + virtual bool add_ground_bridge(const Node &from, + const Node &to) = 0; + + // Add an anchor bridge to the model body + virtual bool add_mesh_bridge(const Node &from, const Node &to) = 0; + + // Report nodes that can not be routed to an endpoint (model or ground) + virtual void report_unroutable(const Node &j) = 0; +}; + +// Build the actual tree. +// its: The input mesh +// support_leafs: The input support points +// builder: The output interface, describes how to build the tree +// properties: Parameters of the tree +// +// Notes: +// The original algorithm implicitly ensures that the generated tree avoids +// the model body. This implementation uses point sampling of the mesh thus an +// explicit check is needed if the part of the tree being inserted properly +// avoids the model. This can be done in the builder implementation. Each +// method can return a boolean indicating whether the given branch can or +// cannot be inserted. If a particular path is unavailable, the algorithm +// will try a few other paths as well. If all of them fail, one of the +// report_unroutable_* methods will be called as a last resort. +bool build_tree(const indexed_triangle_set & its, + const std::vector &support_leafs, + Builder & builder, + const Properties & properties = {}); + +inline bool build_tree(const indexed_triangle_set & its, + const std::vector &support_leafs, + Builder && builder, + const Properties & properties = {}) +{ + return build_tree(its, support_leafs, builder, properties); +} + +//class PointCloud; + +//bool build_tree(PointCloud &pcloud, Builder &builder); + +// Helper function to derive a bed polygon only from the model bounding box. +inline ExPolygon make_bed_poly(const indexed_triangle_set &its) +{ + auto bb = bounding_box(its); + + BoundingBox bbcrd{scaled(to_2d(bb.min)), scaled(to_2d(bb.max))}; + bbcrd.offset(scaled(10.)); + Point min = bbcrd.min, max = bbcrd.max; + ExPolygon ret = {{min.x(), min.y()}, + {max.x(), min.y()}, + {max.x(), max.y()}, + {min.x(), max.y()}}; + + return ret; +} + +}} // namespace Slic3r::branchingtree + +#endif // SUPPORTTREEBRANCHING_HPP diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp new file mode 100644 index 000000000..a4855ee53 --- /dev/null +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -0,0 +1,172 @@ +#include "PointCloud.hpp" + +#include "libslic3r/Geometry.hpp" +#include "libslic3r/Tesselate.hpp" + +#include + +namespace Slic3r { namespace branchingtree { + +std::optional find_merge_pt(const Vec3f &A, + const Vec3f &B, + float max_slope) +{ + Vec3f Da = (B - A).normalized(), Db = -Da; + auto [polar_da, azim_da] = Geometry::dir_to_spheric(Da); + auto [polar_db, azim_db] = Geometry::dir_to_spheric(Db); + polar_da = std::max(polar_da, float(PI) - max_slope); + polar_db = std::max(polar_db, float(PI) - max_slope); + + Da = Geometry::spheric_to_dir(polar_da, azim_da); + Db = Geometry::spheric_to_dir(polar_db, azim_db); + + double t1 = + (A.z() * Db.x() + Db.z() * B.x() - B.z() * Db.x() - Db.z() * A.x()) / + (Da.x() * Db.z() - Da.z() * Db.x()); + + double t2 = (A.x() + Da.x() * t1 - B.x()) / Db.x(); + + return t1 > 0. && t2 > 0. ? A + t1 * Da : std::optional{}; +} + +void to_eigen_mesh(const indexed_triangle_set &its, + Eigen::MatrixXd &V, + Eigen::MatrixXi &F) +{ + V.resize(its.vertices.size(), 3); + F.resize(its.indices.size(), 3); + for (unsigned int i = 0; i < its.indices.size(); ++i) + F.row(i) = its.indices[i]; + + for (unsigned int i = 0; i < its.vertices.size(); ++i) + V.row(i) = its.vertices[i].cast(); +} + +std::vector sample_mesh(const indexed_triangle_set &its, + double radius) +{ + std::vector ret; + + double surface_area = 0.; + for (const Vec3i &face : its.indices) { + std::array tri = {its.vertices[face(0)], + its.vertices[face(1)], + its.vertices[face(2)]}; + + auto U = tri[1] - tri[0], V = tri[2] - tri[0]; + surface_area += 0.5 * U.cross(V).norm(); + } + + int N = surface_area / (PI * radius * radius); + + Eigen::MatrixXd B; + Eigen::MatrixXi FI; + Eigen::MatrixXd V; + Eigen::MatrixXi F; + to_eigen_mesh(its, V, F); + igl::random_points_on_mesh(N, V, F, B, FI); + + ret.reserve(size_t(N)); + for (int i = 0; i < FI.size(); i++) { + Vec3i face = its.indices[FI(i)]; + + Vec3f c = B.row(i)(0) * its.vertices[face(0)] + + B.row(i)(1) * its.vertices[face(1)] + + B.row(i)(2) * its.vertices[face(2)]; + + ret.emplace_back(c); + } + + return ret; +} + +std::vector sample_bed(const ExPolygons &bed, float z, double radius) +{ + std::vector ret; + + auto triangles = triangulate_expolygons_3d(bed, z); + indexed_triangle_set its; + its.vertices.reserve(triangles.size()); + + for (size_t i = 0; i < triangles.size(); i += 3) { + its.vertices.emplace_back(triangles[i].cast()); + its.vertices.emplace_back(triangles[i + 1].cast()); + its.vertices.emplace_back(triangles[i + 2].cast()); + + its.indices.emplace_back(i, i + 1, i + 2); + } + + return sample_mesh(its, radius); +} + +PointCloud::PointCloud(const indexed_triangle_set &M, + std::vector support_leafs, + const Properties &props) + : m_leafs{std::move(support_leafs)} + , m_meshpoints{sample_mesh(M, props.sampling_radius())} + , m_bedpoints{sample_bed(props.bed_shape(), + props.ground_level(), + props.sampling_radius())} + , m_props{props} + , cos2bridge_slope{std::cos(props.max_slope()) * + std::abs(std::cos(props.max_slope()))} + , MESHPTS_BEGIN{m_bedpoints.size()} + , SUPP_BEGIN{MESHPTS_BEGIN + m_meshpoints.size()} + , JUNCTIONS_BEGIN{SUPP_BEGIN + m_leafs.size()} + , m_searchable_indices(JUNCTIONS_BEGIN, true) + , m_queue_indices(JUNCTIONS_BEGIN, UNQUEUED) + , m_reachable_cnt{JUNCTIONS_BEGIN} + , m_ktree{CoordFn{this}, SUPP_BEGIN} // Only for bed and mesh points +{ + for (size_t i = 0; i < m_bedpoints.size(); ++i) + m_bedpoints[i].id = int(i); + + for (size_t i = 0; i < m_meshpoints.size(); ++i) + m_meshpoints[i].id = int(MESHPTS_BEGIN + i); + + for (size_t i = 0; i < m_leafs.size(); ++i) + m_leafs[i].id = int(SUPP_BEGIN + i); +} + +float PointCloud::get_distance(const Vec3f &p, size_t node) +{ + auto t = get_type(node); + auto ret = std::numeric_limits::infinity(); + + switch (t) { + case MESH: + case BED: { + // Points of mesh or bed which are outside of the support cone of + // 'pos' must be discarded. + if (is_outside_support_cone(p, get(node).pos)) + ret = std::numeric_limits::infinity(); + else + ret = (get(node).pos - p).norm(); + + break; + } + case SUPP: + case JUNCTION:{ + auto mergept = find_merge_pt(p, get(node).pos, m_props.max_slope()); + if (!mergept || mergept->z() < (m_props.ground_level() + 2 * get(node).Rmin)) + ret = std::numeric_limits::infinity(); + else + ret = (p - *mergept).norm(); + + break; + } + case NONE: + ; + } + + // Setting the ret val to infinity will effectively discard this + // connection of nodes. max_branch_length property if used here + // to discard node=>node and node=>mesh connections longer than this + // property. + if (t != BED && ret > m_props.max_branch_length()) + ret = std::numeric_limits::infinity(); + + return ret; +} + +}} // namespace Slic3r::branchingtree diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp new file mode 100644 index 000000000..6f583759e --- /dev/null +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -0,0 +1,214 @@ +#ifndef POINTCLOUD_HPP +#define POINTCLOUD_HPP + +#include "BranchingTree.hpp" + +#include "libslic3r/KDTreeIndirect.hpp" +#include "libslic3r/MutablePriorityQueue.hpp" + +namespace Slic3r { namespace branchingtree { + +std::optional find_merge_pt(const Vec3f &A, + const Vec3f &B, + float max_slope); + +void to_eigen_mesh(const indexed_triangle_set &its, + Eigen::MatrixXd &V, + Eigen::MatrixXi &F); + +std::vector sample_mesh(const indexed_triangle_set &its, + double radius); + +std::vector sample_bed(const ExPolygons &bed, + float z, + double radius = 1.); + +enum PtType { SUPP, MESH, BED, JUNCTION, NONE }; + +// A cloud of points including support points, mesh points, junction points +// and anchor points on the bed. Junction points can be added or removed, all +// the other point types are established on creation and remain unchangeable. +class PointCloud { + std::vector m_leafs, m_junctions, m_meshpoints, m_bedpoints; + + const branchingtree::Properties &m_props; + + const double cos2bridge_slope; + const size_t MESHPTS_BEGIN, SUPP_BEGIN, JUNCTIONS_BEGIN; + +private: + + // These vectors have the same size as there are indices for nodes to keep + // access complexity constant. WARN: there might be cache non-locality costs + std::vector m_searchable_indices; // searchable flag value of a node + std::vector m_queue_indices; // queue id of a node if queued + + size_t m_reachable_cnt; + + struct CoordFn + { + const PointCloud *self; + CoordFn(const PointCloud *s) : self{s} {} + float operator()(size_t nodeid, size_t dim) const + { + return self->get(nodeid).pos(int(dim)); + } + }; + + KDTreeIndirect<3, float, CoordFn> m_ktree; + + bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt) + { + Vec3d D = (pt - supp).cast(); + double dot_sq = -D.z() * std::abs(-D.z()); + + return dot_sq < D.squaredNorm() * cos2bridge_slope; + } + + static constexpr auto UNQUEUED = size_t(-1); + + template + static auto *get_node(PC &&pc, size_t id) + { + auto *ret = decltype(pc.m_bedpoints.data())(nullptr); + + switch(pc.get_type(id)) { + case BED: ret = &pc.m_bedpoints[id]; break; + case MESH: ret = &pc.m_meshpoints[id - pc.MESHPTS_BEGIN]; break; + case SUPP: ret = &pc.m_leafs [id - pc.SUPP_BEGIN]; break; + case JUNCTION: ret = &pc.m_junctions[id - pc.JUNCTIONS_BEGIN]; break; + case NONE: assert(false); + } + + return ret; + } + +public: + + struct ZCompareFn + { + const PointCloud *self; + ZCompareFn(const PointCloud *s) : self{s} {} + bool operator()(size_t node_a, size_t node_b) const + { + return self->get(node_a).pos.z() > self->get(node_b).pos.z(); + } + }; + + PointCloud(const indexed_triangle_set & M, + std::vector support_leafs, + const Properties & props); + + PtType get_type(size_t node_id) const + { + PtType ret = NONE; + + if (node_id < MESHPTS_BEGIN && !m_bedpoints.empty()) ret = BED; + else if (node_id < SUPP_BEGIN && !m_meshpoints.empty()) ret = MESH; + else if (node_id < JUNCTIONS_BEGIN && !m_leafs.empty()) ret = SUPP; + else if (node_id >= JUNCTIONS_BEGIN && !m_junctions.empty()) ret = JUNCTION; + + return ret; + } + + const Node &get(size_t node_id) const + { + return *get_node(*this, node_id); + } + + Node &get(size_t node_id) + { + return *get_node(*this, node_id); + } + + const Node *find(size_t node_id) const { return get_node(*this, node_id); } + Node *find(size_t node_id) { return get_node(*this, node_id); } + + // Return the original index of a leaf in the input array, if the given + // node id is indeed of type SUPP + int get_leaf_id(size_t node_id) const + { + return node_id >= SUPP_BEGIN && node_id < JUNCTIONS_BEGIN ? + node_id - SUPP_BEGIN : + Node::ID_NONE; + } + + size_t get_queue_idx(size_t node_id) const { return m_queue_indices[node_id]; } + + float get_distance(const Vec3f &p, size_t node); + + size_t next_junction_id() const + { + return JUNCTIONS_BEGIN + m_junctions.size(); + } + + size_t insert_junction(const Node &p) + { + size_t new_id = next_junction_id(); + m_junctions.emplace_back(p); + m_junctions.back().id = int(new_id); + m_searchable_indices.emplace_back(true); + m_queue_indices.emplace_back(UNQUEUED); + ++m_reachable_cnt; + + return new_id; + } + + void remove_node(size_t node_id) + { + m_searchable_indices[node_id] = false; + m_queue_indices[node_id] = UNQUEUED; + --m_reachable_cnt; + } + + size_t reachable_count() const { return m_reachable_cnt; } + + template void foreach_reachable(const Vec3f &pos, Fn &&visitor) + { + auto closest_anchors = + find_closest_points<5>(m_ktree, pos, [this, &pos](size_t id) { + return m_searchable_indices[id] && + !is_outside_support_cone(pos, get(id).pos); + }); + + for (size_t anchor : closest_anchors) + if (anchor != m_ktree.npos) + visitor(anchor, get_distance(pos, anchor)); + + for (size_t i = SUPP_BEGIN; i < m_searchable_indices.size(); ++i) + if (m_searchable_indices[i]) + visitor(i, get_distance(pos, i)); + } + + auto start_queue() + { + auto ptsqueue = make_mutable_priority_queue( + [this](size_t el, size_t idx) { m_queue_indices[el] = idx; }, + ZCompareFn{this}); + + ptsqueue.reserve(m_leafs.size()); + size_t iend = SUPP_BEGIN + m_leafs.size(); + for (size_t i = SUPP_BEGIN; i < iend; ++i) + ptsqueue.push(i); + + return ptsqueue; + } + + const Properties & properties() const { return m_props; } +}; + +template void traverse(PC &&pc, size_t root, Fn &&fn) +{ + if (auto nodeptr = pc.find(root); nodeptr != nullptr) { + auto &nroot = *nodeptr; + fn(nroot); + if (nroot.left >= 0) traverse(pc, nroot.left, fn); + if (nroot.right >= 0) traverse(pc, nroot.right, fn); + } +} + +bool build_tree(PointCloud &pcloud, Builder &builder); + +}} // namespace Slic3r::branchingtree + +#endif // POINTCLOUD_HPP diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index e637b1402..2c5944fef 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -319,6 +319,12 @@ set(SLIC3R_SOURCES SLA/ReprojectPointsOnMesh.hpp SLA/DefaultSupportTree.hpp SLA/DefaultSupportTree.cpp + SLA/BranchingTreeSLA.hpp + SLA/BranchingTreeSLA.cpp + BranchingTree/BranchingTree.cpp + BranchingTree/BranchingTree.hpp + BranchingTree/PointCloud.cpp + BranchingTree/PointCloud.hpp Arachne/BeadingStrategy/BeadingStrategy.hpp Arachne/BeadingStrategy/BeadingStrategy.cpp diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp new file mode 100644 index 000000000..751544fb5 --- /dev/null +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -0,0 +1,226 @@ +#include "BranchingTreeSLA.hpp" + +#include "libslic3r/Execution/ExecutionTBB.hpp" + +#include "libslic3r/KDTreeIndirect.hpp" + +#include "SupportTreeUtils.hpp" +#include "BranchingTree/PointCloud.hpp" + +#include "Pad.hpp" + +#include + +namespace Slic3r { namespace sla { + +class BranchingTreeBuilder: public branchingtree::Builder { + SupportTreeBuilder &m_builder; + const SupportableMesh &m_sm; + const branchingtree::PointCloud &m_cloud; + + // Scaling of the input value 'widening_factor:<0, 1>' to produce resonable + // widening behaviour + static constexpr double WIDENING_SCALE = 0.2; + + double get_radius(const branchingtree::Node &j) + { + double w = WIDENING_SCALE * m_sm.cfg.pillar_widening_factor * j.weight; + + return std::max(double(j.Rmin), std::min(m_sm.cfg.base_radius_mm, w)); + } + + std::vector m_unroutable_pinheads; + + void build_subtree(size_t root) + { + traverse(m_cloud, root, [this](const branchingtree::Node &node) { + if (node.left >= 0 && node.right >= 0) { + auto nparent = m_cloud.get(node.id); + auto nleft = m_cloud.get(node.left); + auto nright = m_cloud.get(node.right); + Vec3d from1d = nleft.pos.cast(); + Vec3d from2d = nright.pos.cast(); + Vec3d tod = nparent.pos.cast(); + double mergeR = get_radius(nparent); + double leftR = get_radius(nleft); + double rightR = get_radius(nright); + + m_builder.add_diffbridge(from1d, tod, leftR, mergeR); + m_builder.add_diffbridge(from2d, tod, rightR, mergeR); + m_builder.add_junction(tod, mergeR); + } else if (int child = node.left + node.right + 1; child >= 0) { + auto from = m_cloud.get(child); + auto to = m_cloud.get(node.id); + m_builder.add_diffbridge(from.pos.cast(), + to.pos.cast(), + get_radius(from), + get_radius(to)); + } + }); + } + + void discard_subtree(size_t root) + { + // Discard all the support points connecting to this branch. + traverse(m_cloud, root, [this](const branchingtree::Node &node) { + int suppid_parent = m_cloud.get_leaf_id(node.id); + int suppid_left = m_cloud.get_leaf_id(node.left); + int suppid_right = m_cloud.get_leaf_id(node.right); + if (suppid_parent >= 0) + m_unroutable_pinheads.emplace_back(suppid_parent); + if (suppid_left >= 0) + m_unroutable_pinheads.emplace_back(suppid_left); + if (suppid_right >= 0) + m_unroutable_pinheads.emplace_back(suppid_right); + }); + } + +public: + BranchingTreeBuilder(SupportTreeBuilder &builder, + const SupportableMesh &sm, + const branchingtree::PointCloud &cloud) + : m_builder{builder}, m_sm{sm}, m_cloud{cloud} + {} + + bool add_bridge(const branchingtree::Node &from, + const branchingtree::Node &to) override; + + bool add_merger(const branchingtree::Node &node, + const branchingtree::Node &closest, + const branchingtree::Node &merge_node) override; + + bool add_ground_bridge(const branchingtree::Node &from, + const branchingtree::Node &/*to*/) override; + + bool add_mesh_bridge(const branchingtree::Node &from, + const branchingtree::Node &to) override; + + void report_unroutable(const branchingtree::Node &j) override + { + BOOST_LOG_TRIVIAL(error) << "Cannot route junction at " << j.pos.x() + << " " << j.pos.y() << " " << j.pos.z(); + + // Discard all the support points connecting to this branch. + discard_subtree(j.id); + } + + const std::vector& unroutable_pinheads() const + { + return m_unroutable_pinheads; + } +}; + +bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, + const branchingtree::Node &to) +{ + Vec3d fromd = from.pos.cast(), tod = to.pos.cast(); + double fromR = get_radius(from), toR = get_radius(to); + Beam beam{Ball{fromd, fromR}, Ball{tod, toR}}; + auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, beam, + m_sm.cfg.safety_distance_mm); + + bool ret = hit.distance() > (tod - fromd).norm(); + + return ret; +} + +bool BranchingTreeBuilder::add_merger(const branchingtree::Node &node, + const branchingtree::Node &closest, + const branchingtree::Node &merge_node) +{ + Vec3d from1d = node.pos.cast(), + from2d = closest.pos.cast(), + tod = merge_node.pos.cast(); + + double mergeR = get_radius(merge_node); + double nodeR = get_radius(node); + double closestR = get_radius(closest); + Beam beam1{Ball{from1d, nodeR}, Ball{tod, mergeR}}; + Beam beam2{Ball{from2d, closestR}, Ball{tod, mergeR}}; + auto sd = m_sm.cfg.safety_distance_mm; + auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam1, sd); + auto hit2 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam2, sd); + + bool ret = hit1.distance() > (tod - from1d).norm() && + hit2.distance() > (tod - from2d).norm(); + + return ret; +} + +bool BranchingTreeBuilder::add_ground_bridge(const branchingtree::Node &from, + const branchingtree::Node &to) +{ + bool ret = search_ground_route(ex_tbb, m_builder, m_sm, + sla::Junction{from.pos.cast(), + get_radius(from)}, + get_radius(to)).first; + + if (ret) { + build_subtree(from.id); + } + + return ret; +} + +bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, + const branchingtree::Node &to) +{ + sla::Junction fromj = {from.pos.cast(), get_radius(from)}; + + auto anchor = calculate_anchor_placement(ex_tbb, m_sm, + fromj, + to.pos.cast()); + + if (anchor) { + m_builder.add_diffbridge(fromj.pos, anchor->junction_point(), fromj.r, + anchor->r_back_mm); + + m_builder.add_anchor(*anchor); + + build_subtree(from.id); + } + + return bool(anchor); +} + +void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &sm) +{ + auto coordfn = [&sm](size_t id, size_t dim) { return sm.pts[id].pos(dim); }; + KDTreeIndirect<3, float, decltype (coordfn)> tree{coordfn, sm.pts.size()}; + + auto nondup_idx = non_duplicate_suppt_indices(tree, sm.pts, 0.1); + std::vector> heads(nondup_idx.size()); + auto leafs = reserve_vector(nondup_idx.size()); + + execution::for_each( + ex_tbb, size_t(0), nondup_idx.size(), + [&sm, &heads](size_t i) { + heads[i] = calculate_pinhead_placement(ex_seq, sm, i); + }, + execution::max_concurrency(ex_tbb) + ); + + for (auto &h : heads) + if (h && h->is_valid()) { + leafs.emplace_back(h->junction_point().cast(), h->r_back_mm); + builder.add_head(h->id, *h); + } + + auto &its = *sm.emesh.get_triangle_mesh(); + ExPolygons bedpolys = {branchingtree::make_bed_poly(its)}; + + auto props = branchingtree::Properties{} + .bed_shape(bedpolys) + .ground_level(sla::ground_level(sm)) + .max_slope(sm.cfg.bridge_slope); + + branchingtree::PointCloud nodes{its, std::move(leafs), props}; + BranchingTreeBuilder vbuilder{builder, sm, nodes}; + branchingtree::build_tree(nodes, vbuilder); + + for (size_t id : vbuilder.unroutable_pinheads()) + builder.head(id).invalidate(); + +} + +}} // namespace Slic3r::sla diff --git a/src/libslic3r/SLA/BranchingTreeSLA.hpp b/src/libslic3r/SLA/BranchingTreeSLA.hpp new file mode 100644 index 000000000..c101029bd --- /dev/null +++ b/src/libslic3r/SLA/BranchingTreeSLA.hpp @@ -0,0 +1,15 @@ +#ifndef BRANCHINGTREESLA_HPP +#define BRANCHINGTREESLA_HPP + +#include "libslic3r/BranchingTree/BranchingTree.hpp" +#include "SupportTreeBuilder.hpp" + +#include + +namespace Slic3r { namespace sla { + +void create_branching_tree(SupportTreeBuilder& builder, const SupportableMesh &sm); + +}} // namespace Slic3r::sla + +#endif // BRANCHINGTREESLA_HPP diff --git a/src/libslic3r/SLA/SupportTree.cpp b/src/libslic3r/SLA/SupportTree.cpp index 466fade88..b221c4330 100644 --- a/src/libslic3r/SLA/SupportTree.cpp +++ b/src/libslic3r/SLA/SupportTree.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -34,6 +35,10 @@ indexed_triangle_set create_support_tree(const SupportableMesh &sm, create_default_tree(*builder, sm); break; } + case SupportTreeType::Branching: { + create_branching_tree(*builder, sm); + break; + } default:; } diff --git a/tests/sla_print/sla_test_utils.cpp b/tests/sla_print/sla_test_utils.cpp index 07f19300c..a33a23c88 100644 --- a/tests/sla_print/sla_test_utils.cpp +++ b/tests/sla_print/sla_test_utils.cpp @@ -2,6 +2,7 @@ #include "libslic3r/TriangleMeshSlicer.hpp" #include "libslic3r/SLA/AGGRaster.hpp" #include "libslic3r/SLA/DefaultSupportTree.hpp" +#include "libslic3r/SLA/BranchingTreeSLA.hpp" #include @@ -160,6 +161,11 @@ void test_supports(const std::string &obj_filename, check_support_tree_integrity(treebuilder, supportcfg, sla::ground_level(sm)); break; } + case sla::SupportTreeType::Branching: { + create_branching_tree(treebuilder, sm); + // TODO: check_support_tree_integrity(treebuilder, supportcfg); + break; + } default:; } From ae23adff104710bd584511501c71e72ca1291dcd Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 13 May 2022 12:26:03 +0200 Subject: [PATCH 044/131] Fix crash on windows Fix crash on windows - 2nd try --- src/libslic3r/BranchingTree/PointCloud.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index a4855ee53..14ce4f63c 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -42,8 +42,7 @@ void to_eigen_mesh(const indexed_triangle_set &its, V.row(i) = its.vertices[i].cast(); } -std::vector sample_mesh(const indexed_triangle_set &its, - double radius) +std::vector sample_mesh(const indexed_triangle_set &its, double radius) { std::vector ret; @@ -68,7 +67,17 @@ std::vector sample_mesh(const indexed_triangle_set &its, ret.reserve(size_t(N)); for (int i = 0; i < FI.size(); i++) { - Vec3i face = its.indices[FI(i)]; + int face_id = FI(i); + + if (face_id < 0 || face_id >= int(its.indices.size())) + continue; + + Vec3i face = its.indices[face_id]; + + if (face(0) >= int(its.vertices.size()) || + face(1) >= int(its.vertices.size()) || + face(2) >= int(its.vertices.size())) + continue; Vec3f c = B.row(i)(0) * its.vertices[face(0)] + B.row(i)(1) * its.vertices[face(1)] + From fd8fd77077dcc2eb399f943d90248dc8685e13a3 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 13 May 2022 13:56:35 +0200 Subject: [PATCH 045/131] Improvements to widening strategy and branch length limitations Also some refactoring --- src/libslic3r/BranchingTree/BranchingTree.cpp | 38 +++++++++-- src/libslic3r/BranchingTree/BranchingTree.hpp | 21 ++---- src/libslic3r/BranchingTree/PointCloud.cpp | 66 +++++++++++-------- src/libslic3r/BranchingTree/PointCloud.hpp | 45 ++++++++----- src/libslic3r/SLA/BranchingTreeSLA.cpp | 9 ++- 5 files changed, 108 insertions(+), 71 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index 4c9ff899c..5c0198c18 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -22,7 +22,7 @@ bool build_tree(PointCloud &nodes, Builder &builder) ptsqueue.pop(); Node node = nodes.get(node_id); - nodes.remove_node(node_id); + nodes.mark_unreachable(node_id); distances.clear(); distances.reserve(nodes.reachable_count()); @@ -53,10 +53,21 @@ bool build_tree(PointCloud &nodes, Builder &builder) switch (type) { case BED: { closest_node.weight = w; - if ((routed = builder.add_ground_bridge(node, closest_node))) { + if (closest_it->distance > nodes.properties().max_branch_length()) { + auto hl_br_len = float(nodes.properties().max_branch_length()) / 2.f; + Node new_node {{node.pos.x(), node.pos.y(), node.pos.z() - hl_br_len}, node.Rmin}; + new_node.id = int(nodes.next_junction_id()); + new_node.weight = nodes.get(node_id).weight + nodes.properties().max_branch_length(); + new_node.left = node.id; + if ((routed = builder.add_bridge(node, new_node))) { + size_t new_idx = nodes.insert_junction(new_node); + ptsqueue.push(new_idx); + } + } + else if ((routed = builder.add_ground_bridge(node, closest_node))) { closest_node.left = closest_node.right = node_id; nodes.get(closest_node_id) = closest_node; - nodes.remove_node(closest_node_id); + nodes.mark_unreachable(closest_node_id); } break; @@ -66,12 +77,12 @@ bool build_tree(PointCloud &nodes, Builder &builder) if ((routed = builder.add_mesh_bridge(node, closest_node))) { closest_node.left = closest_node.right = node_id; nodes.get(closest_node_id) = closest_node; - nodes.remove_node(closest_node_id); + nodes.mark_unreachable(closest_node_id); } break; } - case SUPP: + case LEAF: case JUNCTION: { auto max_slope = float(properties.max_slope()); @@ -96,7 +107,7 @@ bool build_tree(PointCloud &nodes, Builder &builder) size_t new_idx = nodes.insert_junction(mergenode); ptsqueue.push(new_idx); ptsqueue.remove(nodes.get_queue_idx(closest_node_id)); - nodes.remove_node(closest_node_id); + nodes.mark_unreachable(closest_node_id); } } else if (closest_node.left == Node::ID_NONE || closest_node.right == Node::ID_NONE) @@ -138,4 +149,19 @@ bool build_tree(const indexed_triangle_set & its, return build_tree(nodes, builder); } +ExPolygon make_bed_poly(const indexed_triangle_set &its) +{ + auto bb = bounding_box(its); + + BoundingBox bbcrd{scaled(to_2d(bb.min)), scaled(to_2d(bb.max))}; + bbcrd.offset(scaled(10.)); + Point min = bbcrd.min, max = bbcrd.max; + ExPolygon ret = {{min.x(), min.y()}, + {max.x(), min.y()}, + {max.x(), max.y()}, + {min.x(), max.y()}}; + + return ret; +} + }} // namespace Slic3r::branchingtree diff --git a/src/libslic3r/BranchingTree/BranchingTree.hpp b/src/libslic3r/BranchingTree/BranchingTree.hpp index 5313e30d9..b03ed06ec 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.hpp +++ b/src/libslic3r/BranchingTree/BranchingTree.hpp @@ -16,7 +16,7 @@ class Properties double m_max_slope = PI / 4.; double m_ground_level = 0.; double m_sampling_radius = .5; - double m_max_branch_len = 20.; + double m_max_branch_len = 10.; ExPolygons m_bed_shape; @@ -67,11 +67,11 @@ struct Node int id = ID_NONE, left = ID_NONE, right = ID_NONE; Vec3f pos; - float Rmin; + float Rmin = 0.f; // Tracking the weight of each junction, which is essentially the sum of // the lenghts of all branches emanating from this junction. - float weight; + float weight = 0.f; Node(const Vec3f &p, float r_min = .0f) : pos{p}, Rmin{r_min}, weight{0.f} {} @@ -137,20 +137,7 @@ inline bool build_tree(const indexed_triangle_set & its, //bool build_tree(PointCloud &pcloud, Builder &builder); // Helper function to derive a bed polygon only from the model bounding box. -inline ExPolygon make_bed_poly(const indexed_triangle_set &its) -{ - auto bb = bounding_box(its); - - BoundingBox bbcrd{scaled(to_2d(bb.min)), scaled(to_2d(bb.max))}; - bbcrd.offset(scaled(10.)); - Point min = bbcrd.min, max = bbcrd.max; - ExPolygon ret = {{min.x(), min.y()}, - {max.x(), min.y()}, - {max.x(), max.y()}, - {min.x(), max.y()}}; - - return ret; -} +ExPolygon make_bed_poly(const indexed_triangle_set &its); }} // namespace Slic3r::branchingtree diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index 14ce4f63c..f84b1dfc6 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -109,72 +109,82 @@ std::vector sample_bed(const ExPolygons &bed, float z, double radius) } PointCloud::PointCloud(const indexed_triangle_set &M, - std::vector support_leafs, + std::vector support_leafs, const Properties &props) + : PointCloud{sample_mesh(M, props.sampling_radius()), + sample_bed(props.bed_shape(), + props.ground_level(), + props.sampling_radius()), + std::move(support_leafs), props} +{} + +PointCloud::PointCloud(std::vector meshpts, + std::vector bedpts, + std::vector support_leafs, + const Properties &props) : m_leafs{std::move(support_leafs)} - , m_meshpoints{sample_mesh(M, props.sampling_radius())} - , m_bedpoints{sample_bed(props.bed_shape(), - props.ground_level(), - props.sampling_radius())} + , m_meshpoints{std::move(meshpts)} + , m_bedpoints{std::move(bedpts)} , m_props{props} , cos2bridge_slope{std::cos(props.max_slope()) * std::abs(std::cos(props.max_slope()))} , MESHPTS_BEGIN{m_bedpoints.size()} - , SUPP_BEGIN{MESHPTS_BEGIN + m_meshpoints.size()} - , JUNCTIONS_BEGIN{SUPP_BEGIN + m_leafs.size()} + , LEAFS_BEGIN{MESHPTS_BEGIN + m_meshpoints.size()} + , JUNCTIONS_BEGIN{LEAFS_BEGIN + m_leafs.size()} , m_searchable_indices(JUNCTIONS_BEGIN, true) , m_queue_indices(JUNCTIONS_BEGIN, UNQUEUED) , m_reachable_cnt{JUNCTIONS_BEGIN} - , m_ktree{CoordFn{this}, SUPP_BEGIN} // Only for bed and mesh points + , m_ktree{CoordFn{this}, LEAFS_BEGIN} // Only for bed and mesh points { for (size_t i = 0; i < m_bedpoints.size(); ++i) m_bedpoints[i].id = int(i); - + for (size_t i = 0; i < m_meshpoints.size(); ++i) m_meshpoints[i].id = int(MESHPTS_BEGIN + i); - + for (size_t i = 0; i < m_leafs.size(); ++i) - m_leafs[i].id = int(SUPP_BEGIN + i); + m_leafs[i].id = int(LEAFS_BEGIN + i); } -float PointCloud::get_distance(const Vec3f &p, size_t node) +float PointCloud::get_distance(const Vec3f &p, size_t node_id) const { - auto t = get_type(node); + auto t = get_type(node_id); auto ret = std::numeric_limits::infinity(); - + const auto &node = get(node_id); + switch (t) { case MESH: case BED: { // Points of mesh or bed which are outside of the support cone of // 'pos' must be discarded. - if (is_outside_support_cone(p, get(node).pos)) + if (is_outside_support_cone(p, node.pos)) ret = std::numeric_limits::infinity(); else - ret = (get(node).pos - p).norm(); - + ret = (node.pos - p).norm(); + break; } - case SUPP: + case LEAF: case JUNCTION:{ - auto mergept = find_merge_pt(p, get(node).pos, m_props.max_slope()); - if (!mergept || mergept->z() < (m_props.ground_level() + 2 * get(node).Rmin)) + auto mergept = find_merge_pt(p, node.pos, m_props.max_slope()); + if (!mergept || mergept->z() < (m_props.ground_level() + 2 * node.Rmin)) ret = std::numeric_limits::infinity(); - else + else if ( (node.pos - *mergept).norm() < m_props.max_branch_length()) ret = (p - *mergept).norm(); - + break; } case NONE: ; } - - // Setting the ret val to infinity will effectively discard this - // connection of nodes. max_branch_length property if used here - // to discard node=>node and node=>mesh connections longer than this - // property. + + // Setting the ret val to infinity will effectively discard this + // connection of nodes. max_branch_length property if used here + // to discard node=>node and node=>mesh connections longer than this + // property. if (t != BED && ret > m_props.max_branch_length()) ret = std::numeric_limits::infinity(); - + return ret; } diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index 6f583759e..d80f23946 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -1,8 +1,11 @@ #ifndef POINTCLOUD_HPP #define POINTCLOUD_HPP +#include + #include "BranchingTree.hpp" +#include "libslic3r/Execution/Execution.hpp" #include "libslic3r/KDTreeIndirect.hpp" #include "libslic3r/MutablePriorityQueue.hpp" @@ -16,14 +19,13 @@ void to_eigen_mesh(const indexed_triangle_set &its, Eigen::MatrixXd &V, Eigen::MatrixXi &F); -std::vector sample_mesh(const indexed_triangle_set &its, - double radius); +std::vector sample_mesh(const indexed_triangle_set &its, double radius); std::vector sample_bed(const ExPolygons &bed, float z, double radius = 1.); -enum PtType { SUPP, MESH, BED, JUNCTION, NONE }; +enum PtType { LEAF, MESH, BED, JUNCTION, NONE }; // A cloud of points including support points, mesh points, junction points // and anchor points on the bed. Junction points can be added or removed, all @@ -34,7 +36,7 @@ class PointCloud { const branchingtree::Properties &m_props; const double cos2bridge_slope; - const size_t MESHPTS_BEGIN, SUPP_BEGIN, JUNCTIONS_BEGIN; + const size_t MESHPTS_BEGIN, LEAFS_BEGIN, JUNCTIONS_BEGIN; private: @@ -57,7 +59,7 @@ private: KDTreeIndirect<3, float, CoordFn> m_ktree; - bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt) + bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt) const { Vec3d D = (pt - supp).cast(); double dot_sq = -D.z() * std::abs(-D.z()); @@ -75,7 +77,7 @@ private: switch(pc.get_type(id)) { case BED: ret = &pc.m_bedpoints[id]; break; case MESH: ret = &pc.m_meshpoints[id - pc.MESHPTS_BEGIN]; break; - case SUPP: ret = &pc.m_leafs [id - pc.SUPP_BEGIN]; break; + case LEAF: ret = &pc.m_leafs [id - pc.LEAFS_BEGIN]; break; case JUNCTION: ret = &pc.m_junctions[id - pc.JUNCTIONS_BEGIN]; break; case NONE: assert(false); } @@ -99,13 +101,18 @@ public: std::vector support_leafs, const Properties & props); + PointCloud(std::vector meshpts, + std::vector bedpts, + std::vector support_leafs, + const Properties &props); + PtType get_type(size_t node_id) const { PtType ret = NONE; if (node_id < MESHPTS_BEGIN && !m_bedpoints.empty()) ret = BED; - else if (node_id < SUPP_BEGIN && !m_meshpoints.empty()) ret = MESH; - else if (node_id < JUNCTIONS_BEGIN && !m_leafs.empty()) ret = SUPP; + else if (node_id < LEAFS_BEGIN && !m_meshpoints.empty()) ret = MESH; + else if (node_id < JUNCTIONS_BEGIN && !m_leafs.empty()) ret = LEAF; else if (node_id >= JUNCTIONS_BEGIN && !m_junctions.empty()) ret = JUNCTION; return ret; @@ -128,14 +135,14 @@ public: // node id is indeed of type SUPP int get_leaf_id(size_t node_id) const { - return node_id >= SUPP_BEGIN && node_id < JUNCTIONS_BEGIN ? - node_id - SUPP_BEGIN : + return node_id >= LEAFS_BEGIN && node_id < JUNCTIONS_BEGIN ? + node_id - LEAFS_BEGIN : Node::ID_NONE; } size_t get_queue_idx(size_t node_id) const { return m_queue_indices[node_id]; } - float get_distance(const Vec3f &p, size_t node); + float get_distance(const Vec3f &p, size_t node) const; size_t next_junction_id() const { @@ -154,7 +161,13 @@ public: return new_id; } - void remove_node(size_t node_id) + const std::vector &get_junctions() const noexcept { return m_junctions; } + const std::vector &get_bedpoints() const noexcept { return m_bedpoints; } + const std::vector &get_meshpoints() const noexcept { return m_meshpoints; } + const std::vector &get_leafs() const noexcept { return m_leafs; } + const Properties & properties() const noexcept { return m_props; } + + void mark_unreachable(size_t node_id) { m_searchable_indices[node_id] = false; m_queue_indices[node_id] = UNQUEUED; @@ -175,7 +188,7 @@ public: if (anchor != m_ktree.npos) visitor(anchor, get_distance(pos, anchor)); - for (size_t i = SUPP_BEGIN; i < m_searchable_indices.size(); ++i) + for (size_t i = LEAFS_BEGIN; i < m_searchable_indices.size(); ++i) if (m_searchable_indices[i]) visitor(i, get_distance(pos, i)); } @@ -187,14 +200,12 @@ public: ZCompareFn{this}); ptsqueue.reserve(m_leafs.size()); - size_t iend = SUPP_BEGIN + m_leafs.size(); - for (size_t i = SUPP_BEGIN; i < iend; ++i) + size_t iend = LEAFS_BEGIN + m_leafs.size(); + for (size_t i = LEAFS_BEGIN; i < iend; ++i) ptsqueue.push(i); return ptsqueue; } - - const Properties & properties() const { return m_props; } }; template void traverse(PC &&pc, size_t root, Fn &&fn) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 751544fb5..9ec6f987f 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -26,7 +26,7 @@ class BranchingTreeBuilder: public branchingtree::Builder { { double w = WIDENING_SCALE * m_sm.cfg.pillar_widening_factor * j.weight; - return std::max(double(j.Rmin), std::min(m_sm.cfg.base_radius_mm, w)); + return std::min(m_sm.cfg.base_radius_mm, double(j.Rmin) + w); } std::vector m_unroutable_pinheads; @@ -51,10 +51,13 @@ class BranchingTreeBuilder: public branchingtree::Builder { } else if (int child = node.left + node.right + 1; child >= 0) { auto from = m_cloud.get(child); auto to = m_cloud.get(node.id); + auto tod = to.pos.cast(); + double toR = get_radius(to); m_builder.add_diffbridge(from.pos.cast(), - to.pos.cast(), + tod, get_radius(from), - get_radius(to)); + toR); + m_builder.add_junction(tod, toR); } }); } From 0a3b17f940db3a7cfea7e58b6e2d166e0f833b3e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 17 May 2022 10:52:52 +0200 Subject: [PATCH 046/131] Fix failing sla tree tests Try to increase number of rays in Beam to prevent colisions Put back threshold for intersections with model in sla tree tests Increase safety distance for branching tree instead of increasing rays --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 11 +-- src/libslic3r/SLAPrint.cpp | 6 +- tests/sla_print/sla_test_utils.cpp | 92 ++++++++++++++------------ tests/sla_print/sla_test_utils.hpp | 2 +- 4 files changed, 61 insertions(+), 50 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 9ec6f987f..5f85df140 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -120,7 +120,7 @@ bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, double fromR = get_radius(from), toR = get_radius(to); Beam beam{Ball{fromd, fromR}, Ball{tod, toR}}; auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, beam, - m_sm.cfg.safety_distance_mm); + 2 * m_sm.cfg.safety_distance_mm); bool ret = hit.distance() > (tod - fromd).norm(); @@ -140,7 +140,8 @@ bool BranchingTreeBuilder::add_merger(const branchingtree::Node &node, double closestR = get_radius(closest); Beam beam1{Ball{from1d, nodeR}, Ball{tod, mergeR}}; Beam beam2{Ball{from2d, closestR}, Ball{tod, mergeR}}; - auto sd = m_sm.cfg.safety_distance_mm; + + auto sd = 2 * m_sm.cfg.safety_distance_mm; auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam1, sd); auto hit2 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam2, sd); @@ -166,7 +167,7 @@ bool BranchingTreeBuilder::add_ground_bridge(const branchingtree::Node &from, } bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, - const branchingtree::Node &to) + const branchingtree::Node &to) { sla::Junction fromj = {from.pos.cast(), get_radius(from)}; @@ -178,7 +179,9 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, m_builder.add_diffbridge(fromj.pos, anchor->junction_point(), fromj.r, anchor->r_back_mm); - m_builder.add_anchor(*anchor); + if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors + m_builder.add_anchor(*anchor); + } build_subtree(from.id); } diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index d9b8e33df..4f58c3aa1 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -57,7 +57,11 @@ sla::SupportTreeConfig make_support_cfg(const SLAPrintObjectConfig& c) scfg.max_bridge_length_mm = c.support_max_bridge_length.getFloat(); scfg.max_pillar_link_distance_mm = c.support_max_pillar_link_distance.getFloat(); scfg.pillar_connection_mode = c.support_pillar_connection_mode.value; - scfg.ground_facing_only = c.support_buildplate_only.getBool(); + if (scfg.tree_type != sla::SupportTreeType::Branching) { + // Branching tree is all about routing to model body, it doesn't support + // this option. + scfg.ground_facing_only = c.support_buildplate_only.getBool(); + } scfg.pillar_widening_factor = c.support_pillar_widening_factor.getFloat(); scfg.base_radius_mm = 0.5*c.support_base_diameter.getFloat(); scfg.base_height_mm = c.support_base_height.getFloat(); diff --git a/tests/sla_print/sla_test_utils.cpp b/tests/sla_print/sla_test_utils.cpp index a33a23c88..b9ad696ed 100644 --- a/tests/sla_print/sla_test_utils.cpp +++ b/tests/sla_print/sla_test_utils.cpp @@ -6,54 +6,58 @@ #include -void test_support_model_collision(const std::string &obj_filename, - const sla::SupportTreeConfig &input_supportcfg, - const sla::HollowingConfig &hollowingcfg, - const sla::DrainHoles &drainholes) +void test_support_model_collision( + const std::string &obj_filename, + const sla::SupportTreeConfig &input_supportcfg, + const sla::HollowingConfig &hollowingcfg, + const sla::DrainHoles &drainholes) { SupportByproducts byproducts; - + sla::SupportTreeConfig supportcfg = input_supportcfg; - + + // Ensure that there are no anchors which would pierce the model. + supportcfg.ground_facing_only = true; + // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. supportcfg.head_penetration_mm = -0.2; - + test_supports(obj_filename, supportcfg, hollowingcfg, drainholes, byproducts); - + // Slice the support mesh given the slice grid of the model. std::vector support_slices = - sla::slice(byproducts.supporttree.retrieve_mesh(sla::MeshType::Support), - byproducts.supporttree.retrieve_mesh(sla::MeshType::Pad), + sla::slice(byproducts.suptree_builder.retrieve_mesh(sla::MeshType::Support), + byproducts.suptree_builder.retrieve_mesh(sla::MeshType::Pad), byproducts.slicegrid, CLOSING_RADIUS, {}); // The slices originate from the same slice grid so the numbers must match - + bool support_mesh_is_empty = - byproducts.supporttree.retrieve_mesh(sla::MeshType::Pad).empty() && - byproducts.supporttree.retrieve_mesh(sla::MeshType::Support).empty(); - + byproducts.suptree_builder.retrieve_mesh(sla::MeshType::Pad).empty() && + byproducts.suptree_builder.retrieve_mesh(sla::MeshType::Support).empty(); + if (support_mesh_is_empty) REQUIRE(support_slices.empty()); else REQUIRE(support_slices.size() == byproducts.model_slices.size()); - + bool notouch = true; for (size_t n = 0; notouch && n < support_slices.size(); ++n) { const ExPolygons &sup_slice = support_slices[n]; const ExPolygons &mod_slice = byproducts.model_slices[n]; - + Polygons intersections = intersection(sup_slice, mod_slice); - + double pinhead_r = scaled(input_supportcfg.head_front_radius_mm); // TODO:: make it strict without a threshold of PI * pihead_radius ^ 2 notouch = notouch && area(intersections) < PI * pinhead_r * pinhead_r; } - + if (!notouch) export_failed_case(support_slices, byproducts); - + REQUIRE(notouch); } @@ -80,7 +84,7 @@ void export_failed_case(const std::vector &support_slices, const Sup if (do_export_stl) { indexed_triangle_set its; - byproducts.supporttree.retrieve_full_mesh(its); + byproducts.suptree_builder.retrieve_full_mesh(its); TriangleMesh m{its}; m.merge(byproducts.input_mesh); m.WriteOBJFile((Catch::getResultCapture().getCurrentTestName() + "_" + @@ -96,49 +100,49 @@ void test_supports(const std::string &obj_filename, { using namespace Slic3r; TriangleMesh mesh = load_model(obj_filename); - + REQUIRE_FALSE(mesh.empty()); - + if (hollowingcfg.enabled) { sla::InteriorPtr interior = sla::generate_interior(mesh, hollowingcfg); REQUIRE(interior); mesh.merge(TriangleMesh{sla::get_mesh(*interior)}); } - + auto bb = mesh.bounding_box(); double zmin = bb.min.z(); double zmax = bb.max.z(); double gnd = zmin - supportcfg.object_elevation_mm; auto layer_h = 0.05f; - + out.slicegrid = grid(float(gnd), float(zmax), layer_h); out.model_slices = slice_mesh_ex(mesh.its, out.slicegrid, CLOSING_RADIUS); sla::cut_drainholes(out.model_slices, out.slicegrid, CLOSING_RADIUS, drainholes, []{}); - + // Create the special index-triangle mesh with spatial indexing which // is the input of the support point and support mesh generators AABBMesh emesh{mesh}; -#ifdef SLIC3R_HOLE_RAYCASTER - if (hollowingcfg.enabled) + #ifdef SLIC3R_HOLE_RAYCASTER + if (hollowingcfg.enabled) emesh.load_holes(drainholes); -#endif + #endif // TODO: do the cgal hole cutting... - + // Create the support point generator sla::SupportPointGenerator::Config autogencfg; autogencfg.head_diameter = float(2 * supportcfg.head_front_radius_mm); sla::SupportPointGenerator point_gen{emesh, autogencfg, [] {}, [](int) {}}; - + point_gen.seed(0); // Make the test repeatable point_gen.execute(out.model_slices, out.slicegrid); - + // Get the calculated support points. std::vector support_points = point_gen.output(); - + int validityflags = ASSUME_NO_REPAIR; - + // If there is no elevation, support points shall be removed from the // bottom of the object. if (std::abs(supportcfg.object_elevation_mm) < EPSILON) { @@ -146,11 +150,11 @@ void test_supports(const std::string &obj_filename, } else { // Should be support points at least on the bottom of the model REQUIRE_FALSE(support_points.empty()); - + // Also the support mesh should not be empty. validityflags |= ASSUME_NO_EMPTY; } - + // Generate the actual support tree sla::SupportTreeBuilder treebuilder; sla::SupportableMesh sm{emesh, support_points, supportcfg}; @@ -170,25 +174,25 @@ void test_supports(const std::string &obj_filename, } TriangleMesh output_mesh{treebuilder.retrieve_mesh(sla::MeshType::Support)}; - + check_validity(output_mesh, validityflags); - + // Quick check if the dimensions and placement of supports are correct auto obb = output_mesh.bounding_box(); - + double allowed_zmin = zmin - supportcfg.object_elevation_mm; - + if (std::abs(supportcfg.object_elevation_mm) < EPSILON) allowed_zmin = zmin - 2 * supportcfg.head_back_radius_mm; - + REQUIRE(obb.min.z() >= Approx(allowed_zmin)); REQUIRE(obb.max.z() <= Approx(zmax)); - + // Move out the support tree into the byproducts, we can examine it further // in various tests. - out.obj_fname = std::move(obj_filename); - out.supporttree = std::move(treebuilder); - out.input_mesh = std::move(mesh); + out.obj_fname = std::move(obj_filename); + out.suptree_builder = std::move(treebuilder); + out.input_mesh = std::move(mesh); } void check_support_tree_integrity(const sla::SupportTreeBuilder &stree, diff --git a/tests/sla_print/sla_test_utils.hpp b/tests/sla_print/sla_test_utils.hpp index c5943bd5c..187a72d54 100644 --- a/tests/sla_print/sla_test_utils.hpp +++ b/tests/sla_print/sla_test_utils.hpp @@ -60,7 +60,7 @@ struct SupportByproducts std::string obj_fname; std::vector slicegrid; std::vector model_slices; - sla::SupportTreeBuilder supporttree; + sla::SupportTreeBuilder suptree_builder; TriangleMesh input_mesh; }; From 792779f2deb81fae3373371883d4e0596420878f Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 17 May 2022 11:58:59 +0200 Subject: [PATCH 047/131] Fix creation of unchecked diffbridge in branching tree --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 5f85df140..4bd8e23c0 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -120,7 +120,7 @@ bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, double fromR = get_radius(from), toR = get_radius(to); Beam beam{Ball{fromd, fromR}, Ball{tod, toR}}; auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, beam, - 2 * m_sm.cfg.safety_distance_mm); + m_sm.cfg.head_back_radius_mm); bool ret = hit.distance() > (tod - fromd).norm(); @@ -141,7 +141,7 @@ bool BranchingTreeBuilder::add_merger(const branchingtree::Node &node, Beam beam1{Ball{from1d, nodeR}, Ball{tod, mergeR}}; Beam beam2{Ball{from2d, closestR}, Ball{tod, mergeR}}; - auto sd = 2 * m_sm.cfg.safety_distance_mm; + auto sd = m_sm.cfg.safety_distance_mm ; auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam1, sd); auto hit2 = beam_mesh_hit(ex_tbb, m_sm.emesh, beam2, sd); @@ -175,15 +175,20 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, fromj, to.pos.cast()); + sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; + if (anchor) { - m_builder.add_diffbridge(fromj.pos, anchor->junction_point(), fromj.r, - anchor->r_back_mm); + auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, + Beam{{fromj.pos, fromj.r}, {toj.pos, toj.r}}, + m_sm.cfg.safety_distance_mm); + if (hit1.distance() >= distance(fromj.pos, toj.pos)) { + m_builder.add_diffbridge(fromj.pos, toj.pos, fromj.r, toj.r); - if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors - m_builder.add_anchor(*anchor); + if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors + m_builder.add_anchor(*anchor); + } + build_subtree(from.id); } - - build_subtree(from.id); } return bool(anchor); From 7705ecd5aa2575f925dfa6b458945025e073f133 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 17 May 2022 16:29:16 +0200 Subject: [PATCH 048/131] Fix indexing of heads after duplicate removal --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 4bd8e23c0..94cfbb1ec 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -205,8 +205,8 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s execution::for_each( ex_tbb, size_t(0), nondup_idx.size(), - [&sm, &heads](size_t i) { - heads[i] = calculate_pinhead_placement(ex_seq, sm, i); + [&sm, &heads, &nondup_idx](size_t i) { + heads[i] = calculate_pinhead_placement(ex_seq, sm, nondup_idx[i]); }, execution::max_concurrency(ex_tbb) ); @@ -214,6 +214,7 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s for (auto &h : heads) if (h && h->is_valid()) { leafs.emplace_back(h->junction_point().cast(), h->r_back_mm); + h->id = leafs.size() - 1; builder.add_head(h->id, *h); } From 4c3ba3f6bf21777a4567800c120a8749f5b62003 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 17 May 2022 16:30:55 +0200 Subject: [PATCH 049/131] Fix tree struts piercing model body Free path between the anchor and the last bridge was not verified --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 94cfbb1ec..1ef3d6f9a 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -175,19 +175,22 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, fromj, to.pos.cast()); - sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; - if (anchor) { - auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, - Beam{{fromj.pos, fromj.r}, {toj.pos, toj.r}}, - m_sm.cfg.safety_distance_mm); - if (hit1.distance() >= distance(fromj.pos, toj.pos)) { + sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; + + auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, + Beam{{fromj.pos, fromj.r}, {toj.pos, toj.r}}, 0.); + + if (hit.distance() > distance(fromj.pos, toj.pos)) { m_builder.add_diffbridge(fromj.pos, toj.pos, fromj.r, toj.r); if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors m_builder.add_anchor(*anchor); } + build_subtree(from.id); + } else { + anchor.reset(); } } From 5d6d1f52342c8de7978e7637351823a43b9b619e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 18 May 2022 09:56:16 +0200 Subject: [PATCH 050/131] Apply branch length setting from UI for branching tree --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 1ef3d6f9a..6f8994a63 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -227,7 +227,8 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s auto props = branchingtree::Properties{} .bed_shape(bedpolys) .ground_level(sla::ground_level(sm)) - .max_slope(sm.cfg.bridge_slope); + .max_slope(sm.cfg.bridge_slope) + .max_branch_length(sm.cfg.max_bridge_length_mm); branchingtree::PointCloud nodes{its, std::move(leafs), props}; BranchingTreeBuilder vbuilder{builder, sm, nodes}; From 6523bfdf99811203c67540f5479d3d4e16bae271 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 18 May 2022 10:15:51 +0200 Subject: [PATCH 051/131] Enable ground facing only option for branching tree Essentially discards mesh nodes --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 12 +++++------- src/libslic3r/SLAPrint.cpp | 6 +----- tests/sla_print/sla_test_utils.cpp | 3 --- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 6f8994a63..b73c5eaae 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -171,9 +171,10 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, { sla::Junction fromj = {from.pos.cast(), get_radius(from)}; - auto anchor = calculate_anchor_placement(ex_tbb, m_sm, - fromj, - to.pos.cast()); + auto anchor = m_sm.cfg.ground_facing_only ? + std::optional{} : // If no mesh connections are allowed + calculate_anchor_placement(ex_tbb, m_sm, fromj, + to.pos.cast()); if (anchor) { sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; @@ -183,10 +184,7 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, if (hit.distance() > distance(fromj.pos, toj.pos)) { m_builder.add_diffbridge(fromj.pos, toj.pos, fromj.r, toj.r); - - if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors - m_builder.add_anchor(*anchor); - } + m_builder.add_anchor(*anchor); build_subtree(from.id); } else { diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 4f58c3aa1..d9b8e33df 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -57,11 +57,7 @@ sla::SupportTreeConfig make_support_cfg(const SLAPrintObjectConfig& c) scfg.max_bridge_length_mm = c.support_max_bridge_length.getFloat(); scfg.max_pillar_link_distance_mm = c.support_max_pillar_link_distance.getFloat(); scfg.pillar_connection_mode = c.support_pillar_connection_mode.value; - if (scfg.tree_type != sla::SupportTreeType::Branching) { - // Branching tree is all about routing to model body, it doesn't support - // this option. - scfg.ground_facing_only = c.support_buildplate_only.getBool(); - } + scfg.ground_facing_only = c.support_buildplate_only.getBool(); scfg.pillar_widening_factor = c.support_pillar_widening_factor.getFloat(); scfg.base_radius_mm = 0.5*c.support_base_diameter.getFloat(); scfg.base_height_mm = c.support_base_height.getFloat(); diff --git a/tests/sla_print/sla_test_utils.cpp b/tests/sla_print/sla_test_utils.cpp index b9ad696ed..737659eed 100644 --- a/tests/sla_print/sla_test_utils.cpp +++ b/tests/sla_print/sla_test_utils.cpp @@ -16,9 +16,6 @@ void test_support_model_collision( sla::SupportTreeConfig supportcfg = input_supportcfg; - // Ensure that there are no anchors which would pierce the model. - supportcfg.ground_facing_only = true; - // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. supportcfg.head_penetration_mm = -0.2; From 371da354a016b131a3844e6da05ff3757b78e169 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 19 May 2022 14:48:48 +0200 Subject: [PATCH 052/131] Adjust configuration layer to better reflect tree strategies. --- src/libslic3r/PrintConfig.cpp | 10 +++++++--- src/slic3r/GUI/ConfigManipulation.cpp | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 302a9eb6f..f9db6cc5f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3666,9 +3666,13 @@ void PrintConfigDef::init_sla_params() def = this->add("support_pillar_widening_factor", coFloat); def->label = L("Pillar widening factor"); def->category = L("Supports"); - def->tooltip = L("Merging bridges or pillars into another pillars can " - "increase the radius. Zero means no increase, one means " - "full increase."); + def->tooltip = L( + "Merging bridges or pillars into another pillars can " + "increase the radius. Zero means no increase, one means " + "full increase. The exact amount of increase is unspecified and can " + "change in the future. What is garanteed is that thickness will not " + "exceed \"support_base_diameter\""); + def->min = 0; def->max = 1; def->mode = comExpert; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 14fba19fa..dcdadebad 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -363,14 +363,17 @@ void ConfigManipulation::update_print_sla_config(DynamicPrintConfig* config, con void ConfigManipulation::toggle_print_sla_options(DynamicPrintConfig* config) { bool supports_en = config->opt_bool("supports_enable"); + sla::SupportTreeType treetype = config->opt_enum("support_tree_type"); + bool is_default_tree = treetype == sla::SupportTreeType::Default; + bool is_branching_tree = treetype == sla::SupportTreeType::Branching; toggle_field("support_head_front_diameter", supports_en); toggle_field("support_head_penetration", supports_en); toggle_field("support_head_width", supports_en); toggle_field("support_pillar_diameter", supports_en); toggle_field("support_small_pillar_diameter_percent", supports_en); - toggle_field("support_max_bridges_on_pillar", supports_en); - toggle_field("support_pillar_connection_mode", supports_en); + toggle_field("support_max_bridges_on_pillar", supports_en && is_default_tree); + toggle_field("support_pillar_connection_mode", supports_en && is_default_tree); toggle_field("support_tree_type", supports_en); toggle_field("support_buildplate_only", supports_en); toggle_field("support_base_diameter", supports_en); @@ -378,7 +381,8 @@ void ConfigManipulation::toggle_print_sla_options(DynamicPrintConfig* config) toggle_field("support_base_safety_distance", supports_en); toggle_field("support_critical_angle", supports_en); toggle_field("support_max_bridge_length", supports_en); - toggle_field("support_max_pillar_link_distance", supports_en); + toggle_field("support_max_pillar_link_distance", supports_en && is_default_tree); + toggle_field("support_pillar_widening_factor", supports_en && is_branching_tree); toggle_field("support_points_density_relative", supports_en); toggle_field("support_points_minimal_distance", supports_en); From 8a78428d107d63f1ce00099c1105fb76abde7956 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 25 May 2022 15:12:22 +0200 Subject: [PATCH 053/131] Add tests to find_merge_pt and make them pass --- src/libslic3r/BranchingTree/PointCloud.cpp | 16 +++-- tests/sla_print/sla_print_tests.cpp | 74 ++++++++++++++++++++++ 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index f84b1dfc6..29284c1d7 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -14,19 +14,27 @@ std::optional find_merge_pt(const Vec3f &A, Vec3f Da = (B - A).normalized(), Db = -Da; auto [polar_da, azim_da] = Geometry::dir_to_spheric(Da); auto [polar_db, azim_db] = Geometry::dir_to_spheric(Db); - polar_da = std::max(polar_da, float(PI) - max_slope); - polar_db = std::max(polar_db, float(PI) - max_slope); + polar_da = std::max(polar_da, float(PI) / 2.f + max_slope); + polar_db = std::max(polar_db, float(PI) / 2.f + max_slope); Da = Geometry::spheric_to_dir(polar_da, azim_da); Db = Geometry::spheric_to_dir(polar_db, azim_db); + // This formula is based on + // https://stackoverflow.com/questions/27459080/given-two-points-and-two-direction-vectors-find-the-point-where-they-intersect double t1 = (A.z() * Db.x() + Db.z() * B.x() - B.z() * Db.x() - Db.z() * A.x()) / (Da.x() * Db.z() - Da.z() * Db.x()); - double t2 = (A.x() + Da.x() * t1 - B.x()) / Db.x(); + if (std::isnan(t1) || std::abs(t1) < EPSILON) + t1 = (A.z() * Db.y() + Db.z() * B.y() - B.z() * Db.y() - Db.z() * A.y()) / + (Da.y() * Db.z() - Da.z() * Db.y()); - return t1 > 0. && t2 > 0. ? A + t1 * Da : std::optional{}; + Vec3f m1 = A + t1 * Da; + + double t2 = (m1.z() - B.z()) / Db.z(); + + return t1 >= 0. && t2 >= 0. ? m1 : std::optional{}; } void to_eigen_mesh(const indexed_triangle_set &its, diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index 8ae02c808..fa64b0c10 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -8,6 +8,7 @@ #include #include +#include namespace { @@ -172,6 +173,79 @@ TEST_CASE("DefaultSupports::FloorSupportsDoNotPierceModel", "[SLASupportGenerati // for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); //} +TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branching]") { + SECTION("Identical points have the same merge point") { + Vec3f a{0.f, 0.f, 0.f}, b = a; + float slope = PI / 4.f; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + REQUIRE((*mergept - b).norm() < EPSILON); + REQUIRE((*mergept - a).norm() < EPSILON); + } + + // ^ Z + // | a * + // | + // | b * <= mergept + SECTION("Points at different heights have the lower point as mergepoint") { + Vec3f a{0.f, 0.f, 0.f}, b = {0.f, 0.f, -1.f}; + float slope = PI / 4.f; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + REQUIRE((*mergept - b).squaredNorm() < EPSILON); + } + + // -|---------> X + // a b + // * * + // * <= mergept + SECTION("Points at different X have mergept in the middle at lower Z") { + Vec3f a{0.f, 0.f, 0.f}, b = {1.f, 0.f, 0.f}; + float slope = PI / 4.f; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + + // Distance of mergept should be equal from both input points + float D = std::abs((*mergept - b).squaredNorm() - (*mergept - a).squaredNorm()); + + REQUIRE(D < EPSILON); + } + + // -|---------> Y + // a b + // * * + // * <= mergept + SECTION("Points at different Y have mergept in the middle at lower Z") { + Vec3f a{0.f, 0.f, 0.f}, b = {0.f, 1.f, 0.f}; + float slope = PI / 4.f; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + + // Distance of mergept should be equal from both input points + float D = std::abs((*mergept - b).squaredNorm() - (*mergept - a).squaredNorm()); + + REQUIRE(D < EPSILON); + } + + SECTION("Points separated by less than critical angle have the lower point as mergept") { + Vec3f a{0.f, 0.f, 0.f}, b = {-0.5f, -0.5f, -1.f}; + float slope = PI / 4.f; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + REQUIRE((*mergept - b).norm() < EPSILON); + } +} + TEST_CASE("BranchingSupports::ElevatedSupportsDoNotPierceModel", "[SLASupportGeneration][Branching]") { sla::SupportTreeConfig supportcfg; From 91c0741f61e1c8c68e5be4c73dc0deb29c3c69de Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 10:15:01 +0200 Subject: [PATCH 054/131] Minor performance optimization --- src/libslic3r/BranchingTree/PointCloud.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index 29284c1d7..96e8bfd24 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -175,11 +175,15 @@ float PointCloud::get_distance(const Vec3f &p, size_t node_id) const case LEAF: case JUNCTION:{ auto mergept = find_merge_pt(p, node.pos, m_props.max_slope()); + double maxL2 = m_props.max_branch_length() * m_props.max_branch_length(); + if (!mergept || mergept->z() < (m_props.ground_level() + 2 * node.Rmin)) ret = std::numeric_limits::infinity(); - else if ( (node.pos - *mergept).norm() < m_props.max_branch_length()) - ret = (p - *mergept).norm(); - + else if (double a = (node.pos - *mergept).squaredNorm(), + b = (p - *mergept).squaredNorm(); + a < maxL2 && b < maxL2) + ret = std::sqrt(b); + break; } case NONE: @@ -187,7 +191,7 @@ float PointCloud::get_distance(const Vec3f &p, size_t node_id) const } // Setting the ret val to infinity will effectively discard this - // connection of nodes. max_branch_length property if used here + // connection of nodes. max_branch_length property is used here // to discard node=>node and node=>mesh connections longer than this // property. if (t != BED && ret > m_props.max_branch_length()) From 688c9c644f7940156060661f707f4dbc2e1b56c0 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 25 May 2022 17:11:04 +0200 Subject: [PATCH 055/131] Prevent merging with node being lower than closest point --- src/libslic3r/BranchingTree/BranchingTree.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index 5c0198c18..a7d9a1b4d 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -96,7 +96,7 @@ bool build_tree(PointCloud &nodes, Builder &builder) float distsum = std::max(mergedist_closest, mergedist_node); w = Wsum + distsum; - if (mergedist_closest > EPSILON) { + if (mergedist_closest > EPSILON && mergedist_node > EPSILON) { Node mergenode{*mergept, closest_node.Rmin}; mergenode.weight = w; mergenode.id = int(nodes.next_junction_id()); @@ -109,9 +109,9 @@ bool build_tree(PointCloud &nodes, Builder &builder) ptsqueue.remove(nodes.get_queue_idx(closest_node_id)); nodes.mark_unreachable(closest_node_id); } - } else if (closest_node.left == Node::ID_NONE || - closest_node.right == Node::ID_NONE) - { + } else if (closest_node.pos.z() < node.pos.z() && + (closest_node.left == Node::ID_NONE || + closest_node.right == Node::ID_NONE)) { closest_node.weight = w; if ((routed = builder.add_bridge(node, closest_node))) { if (closest_node.left == Node::ID_NONE) From 95374f9ed4e0c0ad5739936313a5e9211acf226e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 11:18:19 +0200 Subject: [PATCH 056/131] Fix some crashes Fix minor bugs --- src/libslic3r/BranchingTree/PointCloud.cpp | 6 +++--- src/libslic3r/BranchingTree/PointCloud.hpp | 4 +++- src/libslic3r/SLA/BranchingTreeSLA.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index 96e8bfd24..35498f4c1 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -139,9 +139,9 @@ PointCloud::PointCloud(std::vector meshpts, , MESHPTS_BEGIN{m_bedpoints.size()} , LEAFS_BEGIN{MESHPTS_BEGIN + m_meshpoints.size()} , JUNCTIONS_BEGIN{LEAFS_BEGIN + m_leafs.size()} - , m_searchable_indices(JUNCTIONS_BEGIN, true) - , m_queue_indices(JUNCTIONS_BEGIN, UNQUEUED) - , m_reachable_cnt{JUNCTIONS_BEGIN} + , m_searchable_indices(JUNCTIONS_BEGIN + m_junctions.size(), true) + , m_queue_indices(JUNCTIONS_BEGIN + m_junctions.size(), UNQUEUED) + , m_reachable_cnt{JUNCTIONS_BEGIN + m_junctions.size()} , m_ktree{CoordFn{this}, LEAFS_BEGIN} // Only for bed and mesh points { for (size_t i = 0; i < m_bedpoints.size(); ++i) diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index d80f23946..d2072bee9 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -169,6 +169,8 @@ public: void mark_unreachable(size_t node_id) { + assert(node_id < m_searchable_indices.size()); + m_searchable_indices[node_id] = false; m_queue_indices[node_id] = UNQUEUED; --m_reachable_cnt; @@ -195,7 +197,7 @@ public: auto start_queue() { - auto ptsqueue = make_mutable_priority_queue( + auto ptsqueue = make_mutable_priority_queue( [this](size_t el, size_t idx) { m_queue_indices[el] = idx; }, ZCompareFn{this}); diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index b73c5eaae..3f3e99d8e 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -120,7 +120,7 @@ bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, double fromR = get_radius(from), toR = get_radius(to); Beam beam{Ball{fromd, fromR}, Ball{tod, toR}}; auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, beam, - m_sm.cfg.head_back_radius_mm); + m_sm.cfg.safety_distance_mm); bool ret = hit.distance() > (tod - fromd).norm(); From 1a30c0aaa097ede9f6466c1e309d173b3fbbf36e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 3 Jun 2022 17:01:30 +0200 Subject: [PATCH 057/131] Extend mergept tests --- tests/sla_print/sla_print_tests.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index fa64b0c10..273c3f8f6 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -173,6 +173,15 @@ TEST_CASE("DefaultSupports::FloorSupportsDoNotPierceModel", "[SLASupportGenerati // for (auto &fname: SUPPORT_TEST_MODELS) test_supports(fname, supportcfg); //} +bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt, float angle) +{ + Vec3d D = (pt - supp).cast(); + double dot_sq = -D.z() * std::abs(-D.z()); + + return dot_sq < + D.squaredNorm() * std::cos(angle) * std::abs(std::cos(angle)); +} + TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branching]") { SECTION("Identical points have the same merge point") { Vec3f a{0.f, 0.f, 0.f}, b = a; @@ -215,6 +224,8 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi float D = std::abs((*mergept - b).squaredNorm() - (*mergept - a).squaredNorm()); REQUIRE(D < EPSILON); + REQUIRE(!is_outside_support_cone(a, *mergept, slope)); + REQUIRE(!is_outside_support_cone(b, *mergept, slope)); } // -|---------> Y @@ -233,6 +244,8 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi float D = std::abs((*mergept - b).squaredNorm() - (*mergept - a).squaredNorm()); REQUIRE(D < EPSILON); + REQUIRE(!is_outside_support_cone(a, *mergept, slope)); + REQUIRE(!is_outside_support_cone(b, *mergept, slope)); } SECTION("Points separated by less than critical angle have the lower point as mergept") { From 63a58ce1ad02ea6f2e298bb6bb1ae220c928cb91 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 11:06:59 +0200 Subject: [PATCH 058/131] Require higher values for widening factor to have the same effect --- src/libslic3r/PrintConfig.cpp | 2 +- src/libslic3r/SLA/BranchingTreeSLA.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f9db6cc5f..40a3cb3d5 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3676,7 +3676,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 1; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(0.1)); + def->set_default_value(new ConfigOptionFloat(0.15)); def = this->add("support_base_diameter", coFloat); def->label = L("Support base diameter"); diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 3f3e99d8e..50c5ad015 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -20,7 +20,7 @@ class BranchingTreeBuilder: public branchingtree::Builder { // Scaling of the input value 'widening_factor:<0, 1>' to produce resonable // widening behaviour - static constexpr double WIDENING_SCALE = 0.2; + static constexpr double WIDENING_SCALE = 0.08; double get_radius(const branchingtree::Node &j) { @@ -206,12 +206,16 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s execution::for_each( ex_tbb, size_t(0), nondup_idx.size(), - [&sm, &heads, &nondup_idx](size_t i) { - heads[i] = calculate_pinhead_placement(ex_seq, sm, nondup_idx[i]); + [&sm, &heads, &nondup_idx, &builder](size_t i) { + if (!builder.ctl().stopcondition()) + heads[i] = calculate_pinhead_placement(ex_tbb, sm, nondup_idx[i]); }, execution::max_concurrency(ex_tbb) ); + if (builder.ctl().stopcondition()) + return; + for (auto &h : heads) if (h && h->is_valid()) { leafs.emplace_back(h->junction_point().cast(), h->r_back_mm); From 1a8cf3b029ebc79d1513be3d082bb4ed2ba6189a Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 11:31:22 +0200 Subject: [PATCH 059/131] Change UNQUEUED to Unqueued to keep convensions --- src/libslic3r/BranchingTree/BranchingTree.cpp | 6 +++++- src/libslic3r/BranchingTree/PointCloud.cpp | 2 +- src/libslic3r/BranchingTree/PointCloud.hpp | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index a7d9a1b4d..3102f213f 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -106,7 +106,11 @@ bool build_tree(PointCloud &nodes, Builder &builder) mergenode.right = closest_node_id; size_t new_idx = nodes.insert_junction(mergenode); ptsqueue.push(new_idx); - ptsqueue.remove(nodes.get_queue_idx(closest_node_id)); + size_t qid = nodes.get_queue_idx(closest_node_id); + + if (qid != PointCloud::Unqueued) + ptsqueue.remove(nodes.get_queue_idx(closest_node_id)); + nodes.mark_unreachable(closest_node_id); } } else if (closest_node.pos.z() < node.pos.z() && diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index 35498f4c1..11b500843 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -140,7 +140,7 @@ PointCloud::PointCloud(std::vector meshpts, , LEAFS_BEGIN{MESHPTS_BEGIN + m_meshpoints.size()} , JUNCTIONS_BEGIN{LEAFS_BEGIN + m_leafs.size()} , m_searchable_indices(JUNCTIONS_BEGIN + m_junctions.size(), true) - , m_queue_indices(JUNCTIONS_BEGIN + m_junctions.size(), UNQUEUED) + , m_queue_indices(JUNCTIONS_BEGIN + m_junctions.size(), Unqueued) , m_reachable_cnt{JUNCTIONS_BEGIN + m_junctions.size()} , m_ktree{CoordFn{this}, LEAFS_BEGIN} // Only for bed and mesh points { diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index d2072bee9..3c5e8a9a2 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -67,8 +67,6 @@ private: return dot_sq < D.squaredNorm() * cos2bridge_slope; } - static constexpr auto UNQUEUED = size_t(-1); - template static auto *get_node(PC &&pc, size_t id) { @@ -87,6 +85,8 @@ private: public: + static constexpr auto Unqueued = size_t(-1); + struct ZCompareFn { const PointCloud *self; @@ -155,7 +155,7 @@ public: m_junctions.emplace_back(p); m_junctions.back().id = int(new_id); m_searchable_indices.emplace_back(true); - m_queue_indices.emplace_back(UNQUEUED); + m_queue_indices.emplace_back(Unqueued); ++m_reachable_cnt; return new_id; @@ -172,7 +172,7 @@ public: assert(node_id < m_searchable_indices.size()); m_searchable_indices[node_id] = false; - m_queue_indices[node_id] = UNQUEUED; + m_queue_indices[node_id] = Unqueued; --m_reachable_cnt; } From d7c52433001d7c1de185f7c11410013c9862be5c Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 16:14:50 +0200 Subject: [PATCH 060/131] Further increase widening scale --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 50c5ad015..f90ba58fb 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -20,7 +20,7 @@ class BranchingTreeBuilder: public branchingtree::Builder { // Scaling of the input value 'widening_factor:<0, 1>' to produce resonable // widening behaviour - static constexpr double WIDENING_SCALE = 0.08; + static constexpr double WIDENING_SCALE = 0.02; double get_radius(const branchingtree::Node &j) { @@ -128,8 +128,8 @@ bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, } bool BranchingTreeBuilder::add_merger(const branchingtree::Node &node, - const branchingtree::Node &closest, - const branchingtree::Node &merge_node) + const branchingtree::Node &closest, + const branchingtree::Node &merge_node) { Vec3d from1d = node.pos.cast(), from2d = closest.pos.cast(), @@ -152,7 +152,7 @@ bool BranchingTreeBuilder::add_merger(const branchingtree::Node &node, } bool BranchingTreeBuilder::add_ground_bridge(const branchingtree::Node &from, - const branchingtree::Node &to) + const branchingtree::Node &to) { bool ret = search_ground_route(ex_tbb, m_builder, m_sm, sla::Junction{from.pos.cast(), @@ -232,7 +232,18 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s .max_slope(sm.cfg.bridge_slope) .max_branch_length(sm.cfg.max_bridge_length_mm); - branchingtree::PointCloud nodes{its, std::move(leafs), props}; + auto meshpts = sm.cfg.ground_facing_only ? + std::vector{} : + branchingtree::sample_mesh(its, + props.sampling_radius()); + + auto bedpts = branchingtree::sample_bed(props.bed_shape(), + props.ground_level(), + props.sampling_radius()); + + branchingtree::PointCloud nodes{std::move(meshpts), std::move(bedpts), + std::move(leafs), props}; + BranchingTreeBuilder vbuilder{builder, sm, nodes}; branchingtree::build_tree(nodes, vbuilder); From 36ec731adfb2c46780f9e707b549d757fe7afb1b Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 16:26:34 +0200 Subject: [PATCH 061/131] Replace KDTreeIndirect with boost::rtree for queries of PointCloud - rtree can be populated with junction points gradually - Use repeated queries of 5 nearest reachable points in branching tree alg --- src/libslic3r/BranchingTree/BranchingTree.cpp | 28 ++++++---- src/libslic3r/BranchingTree/PointCloud.cpp | 19 ++++--- src/libslic3r/BranchingTree/PointCloud.hpp | 52 +++++++++++++------ 3 files changed, 67 insertions(+), 32 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index 3102f213f..4e61ebda3 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -11,35 +11,42 @@ namespace Slic3r { namespace branchingtree { bool build_tree(PointCloud &nodes, Builder &builder) { + constexpr size_t ReachablesToExamine = 5; + auto ptsqueue = nodes.start_queue(); auto &properties = nodes.properties(); - struct NodeDistance { size_t node_id; float distance; }; - auto distances = reserve_vector(nodes.reachable_count()); + struct NodeDistance { size_t node_id = Node::ID_NONE; float distance = NaNf; }; + auto distances = reserve_vector(ReachablesToExamine); + double prev_dist_max = 0.; while (!ptsqueue.empty()) { size_t node_id = ptsqueue.top(); - ptsqueue.pop(); Node node = nodes.get(node_id); nodes.mark_unreachable(node_id); distances.clear(); - distances.reserve(nodes.reachable_count()); - nodes.foreach_reachable(node.pos, [&distances](size_t id, float distance) { - if (!std::isinf(distance)) + nodes.foreach_reachable( + node.pos, + [&distances](size_t id, float distance) { distances.emplace_back(NodeDistance{id, distance}); - }); + }, + prev_dist_max); std::sort(distances.begin(), distances.end(), [](auto &a, auto &b) { return a.distance < b.distance; }); if (distances.empty()) { builder.report_unroutable(node); + ptsqueue.pop(); + prev_dist_max = 0.; continue; } + prev_dist_max = distances.back().distance; + auto closest_it = distances.begin(); bool routed = false; while (closest_it != distances.end() && !routed) { @@ -136,8 +143,11 @@ bool build_tree(PointCloud &nodes, Builder &builder) ++closest_it; } - if (!routed) - builder.report_unroutable(node); + if (routed) { + ptsqueue.pop(); + prev_dist_max = 0.; + } + } return true; diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index 11b500843..b5b6893c8 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -142,16 +142,23 @@ PointCloud::PointCloud(std::vector meshpts, , m_searchable_indices(JUNCTIONS_BEGIN + m_junctions.size(), true) , m_queue_indices(JUNCTIONS_BEGIN + m_junctions.size(), Unqueued) , m_reachable_cnt{JUNCTIONS_BEGIN + m_junctions.size()} - , m_ktree{CoordFn{this}, LEAFS_BEGIN} // Only for bed and mesh points { - for (size_t i = 0; i < m_bedpoints.size(); ++i) + for (size_t i = 0; i < m_bedpoints.size(); ++i) { m_bedpoints[i].id = int(i); + m_ktree.insert({m_bedpoints[i].pos, i}); + } - for (size_t i = 0; i < m_meshpoints.size(); ++i) - m_meshpoints[i].id = int(MESHPTS_BEGIN + i); + for (size_t i = 0; i < m_meshpoints.size(); ++i) { + Node &n = m_meshpoints[i]; + n.id = int(MESHPTS_BEGIN + i); + m_ktree.insert({n.pos, n.id}); + } - for (size_t i = 0; i < m_leafs.size(); ++i) - m_leafs[i].id = int(LEAFS_BEGIN + i); + for (size_t i = 0; i < m_leafs.size(); ++i) { + Node &n = m_leafs[i]; + n.id = int(LEAFS_BEGIN + i); + m_ktree.insert({n.pos, n.id}); + } } float PointCloud::get_distance(const Vec3f &p, size_t node_id) const diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index 3c5e8a9a2..d61013737 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -6,9 +6,11 @@ #include "BranchingTree.hpp" #include "libslic3r/Execution/Execution.hpp" -#include "libslic3r/KDTreeIndirect.hpp" #include "libslic3r/MutablePriorityQueue.hpp" +#include "libslic3r/BoostAdapter.hpp" +#include "boost/geometry/index/rtree.hpp" + namespace Slic3r { namespace branchingtree { std::optional find_merge_pt(const Vec3f &A, @@ -57,7 +59,11 @@ private: } }; - KDTreeIndirect<3, float, CoordFn> m_ktree; + using PointIndexEl = std::pair; + + boost::geometry::index:: + rtree /* ? */> + m_ktree; bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt) const { @@ -97,9 +103,9 @@ public: } }; - PointCloud(const indexed_triangle_set & M, - std::vector support_leafs, - const Properties & props); + PointCloud(const indexed_triangle_set &M, + std::vector support_leafs, + const Properties &props); PointCloud(std::vector meshpts, std::vector bedpts, @@ -154,6 +160,7 @@ public: size_t new_id = next_junction_id(); m_junctions.emplace_back(p); m_junctions.back().id = int(new_id); + m_ktree.insert({m_junctions.back().pos, new_id}); m_searchable_indices.emplace_back(true); m_queue_indices.emplace_back(Unqueued); ++m_reachable_cnt; @@ -178,21 +185,32 @@ public: size_t reachable_count() const { return m_reachable_cnt; } - template void foreach_reachable(const Vec3f &pos, Fn &&visitor) + template + void foreach_reachable(const Vec3f &pos, Fn &&visitor, double min_dist = 0.) { - auto closest_anchors = - find_closest_points<5>(m_ktree, pos, [this, &pos](size_t id) { - return m_searchable_indices[id] && - !is_outside_support_cone(pos, get(id).pos); - }); + // Fake output iterator + struct Output { + const PointCloud *self; + Vec3f p; + Fn &visitorfn; - for (size_t anchor : closest_anchors) - if (anchor != m_ktree.npos) - visitor(anchor, get_distance(pos, anchor)); + Output& operator *() { return *this; } + void operator=(const PointIndexEl &el) { + visitorfn(el.second, self->get_distance(p, el.second)); + } + Output& operator++() { return *this; } + }; - for (size_t i = LEAFS_BEGIN; i < m_searchable_indices.size(); ++i) - if (m_searchable_indices[i]) - visitor(i, get_distance(pos, i)); + namespace bgi = boost::geometry::index; + + size_t cnt = 0; + auto filter = bgi::satisfies([this, &pos, min_dist, &cnt](const PointIndexEl &e) { + double d = get_distance(pos, e.second); + cnt++; + return m_searchable_indices[e.second] && !isinf(d) && d > min_dist; + }); + + m_ktree.query(bgi::nearest(pos, K) && filter, Output{this, pos, visitor}); } auto start_queue() From 725f5c05e3d37eee76b497f80fdfe393cba7d4b2 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 17:07:20 +0200 Subject: [PATCH 062/131] Change build_tree return value to void as its not used anywhere --- src/libslic3r/BranchingTree/BranchingTree.cpp | 14 +++++------- src/libslic3r/BranchingTree/BranchingTree.hpp | 22 ++++++++----------- src/libslic3r/BranchingTree/PointCloud.hpp | 2 +- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index 4e61ebda3..3026c3d75 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -9,7 +9,7 @@ namespace Slic3r { namespace branchingtree { -bool build_tree(PointCloud &nodes, Builder &builder) +void build_tree(PointCloud &nodes, Builder &builder) { constexpr size_t ReachablesToExamine = 5; @@ -149,18 +149,16 @@ bool build_tree(PointCloud &nodes, Builder &builder) } } - - return true; } -bool build_tree(const indexed_triangle_set & its, - const std::vector &support_roots, - Builder & builder, - const Properties & properties) +void build_tree(const indexed_triangle_set &its, + const std::vector &support_roots, + Builder &builder, + const Properties &properties) { PointCloud nodes(its, support_roots, properties); - return build_tree(nodes, builder); + build_tree(nodes, builder); } ExPolygon make_bed_poly(const indexed_triangle_set &its) diff --git a/src/libslic3r/BranchingTree/BranchingTree.hpp b/src/libslic3r/BranchingTree/BranchingTree.hpp index b03ed06ec..d2eabc7ee 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.hpp +++ b/src/libslic3r/BranchingTree/BranchingTree.hpp @@ -119,23 +119,19 @@ public: // cannot be inserted. If a particular path is unavailable, the algorithm // will try a few other paths as well. If all of them fail, one of the // report_unroutable_* methods will be called as a last resort. -bool build_tree(const indexed_triangle_set & its, - const std::vector &support_leafs, - Builder & builder, - const Properties & properties = {}); +void build_tree(const indexed_triangle_set &its, + const std::vector &support_leafs, + Builder &builder, + const Properties &properties = {}); -inline bool build_tree(const indexed_triangle_set & its, - const std::vector &support_leafs, - Builder && builder, - const Properties & properties = {}) +inline void build_tree(const indexed_triangle_set &its, + const std::vector &support_leafs, + Builder &&builder, + const Properties &properties = {}) { - return build_tree(its, support_leafs, builder, properties); + build_tree(its, support_leafs, builder, properties); } -//class PointCloud; - -//bool build_tree(PointCloud &pcloud, Builder &builder); - // Helper function to derive a bed polygon only from the model bounding box. ExPolygon make_bed_poly(const indexed_triangle_set &its); diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index d61013737..de4afc2a1 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -238,7 +238,7 @@ template void traverse(PC &&pc, size_t root, Fn &&fn) } } -bool build_tree(PointCloud &pcloud, Builder &builder); +void build_tree(PointCloud &pcloud, Builder &builder); }} // namespace Slic3r::branchingtree From e6d49b75dea161e88fcee8cd1451872187e9c8a2 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 17:14:08 +0200 Subject: [PATCH 063/131] Make branching tree algorithm cancellable --- src/libslic3r/BranchingTree/BranchingTree.cpp | 4 ++-- src/libslic3r/BranchingTree/BranchingTree.hpp | 3 +++ src/libslic3r/SLA/BranchingTreeSLA.cpp | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index 3026c3d75..b101f38aa 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -20,7 +20,7 @@ void build_tree(PointCloud &nodes, Builder &builder) auto distances = reserve_vector(ReachablesToExamine); double prev_dist_max = 0.; - while (!ptsqueue.empty()) { + while (!ptsqueue.empty() && builder.is_valid()) { size_t node_id = ptsqueue.top(); Node node = nodes.get(node_id); @@ -49,7 +49,7 @@ void build_tree(PointCloud &nodes, Builder &builder) auto closest_it = distances.begin(); bool routed = false; - while (closest_it != distances.end() && !routed) { + while (closest_it != distances.end() && !routed && builder.is_valid()) { size_t closest_node_id = closest_it->node_id; Node closest_node = nodes.get(closest_node_id); diff --git a/src/libslic3r/BranchingTree/BranchingTree.hpp b/src/libslic3r/BranchingTree/BranchingTree.hpp index d2eabc7ee..c88410b3a 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.hpp +++ b/src/libslic3r/BranchingTree/BranchingTree.hpp @@ -102,6 +102,9 @@ public: // Report nodes that can not be routed to an endpoint (model or ground) virtual void report_unroutable(const Node &j) = 0; + + // If returns false, the tree building process shall stop + virtual bool is_valid() const { return true; } }; // Build the actual tree. diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index f90ba58fb..3f5e61b87 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -111,6 +111,8 @@ public: { return m_unroutable_pinheads; } + + bool is_valid() const override { return !m_builder.ctl().stopcondition(); } }; bool BranchingTreeBuilder::add_bridge(const branchingtree::Node &from, From de3cbd483dd35ac484a488cc6e3da83ec39773b4 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 17:22:57 +0200 Subject: [PATCH 064/131] Try to increase query size with each failed attempt TODO: check performance gain --- src/libslic3r/BranchingTree/BranchingTree.cpp | 14 +++++++----- src/libslic3r/BranchingTree/PointCloud.hpp | 22 +++++++++++-------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index b101f38aa..d690b2cc4 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -11,14 +11,15 @@ namespace Slic3r { namespace branchingtree { void build_tree(PointCloud &nodes, Builder &builder) { - constexpr size_t ReachablesToExamine = 5; + constexpr size_t initK = 5; auto ptsqueue = nodes.start_queue(); auto &properties = nodes.properties(); struct NodeDistance { size_t node_id = Node::ID_NONE; float distance = NaNf; }; - auto distances = reserve_vector(ReachablesToExamine); + auto distances = reserve_vector(initK); double prev_dist_max = 0.; + size_t K = initK; while (!ptsqueue.empty() && builder.is_valid()) { size_t node_id = ptsqueue.top(); @@ -27,13 +28,13 @@ void build_tree(PointCloud &nodes, Builder &builder) nodes.mark_unreachable(node_id); distances.clear(); + distances.reserve(K); - nodes.foreach_reachable( + nodes.foreach_reachable( node.pos, [&distances](size_t id, float distance) { distances.emplace_back(NodeDistance{id, distance}); - }, - prev_dist_max); + }, K, prev_dist_max); std::sort(distances.begin(), distances.end(), [](auto &a, auto &b) { return a.distance < b.distance; }); @@ -41,11 +42,13 @@ void build_tree(PointCloud &nodes, Builder &builder) if (distances.empty()) { builder.report_unroutable(node); ptsqueue.pop(); + K = initK; prev_dist_max = 0.; continue; } prev_dist_max = distances.back().distance; + K *= 2; auto closest_it = distances.begin(); bool routed = false; @@ -146,6 +149,7 @@ void build_tree(PointCloud &nodes, Builder &builder) if (routed) { ptsqueue.pop(); prev_dist_max = 0.; + K = initK; } } diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index de4afc2a1..e781aad01 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -185,8 +185,11 @@ public: size_t reachable_count() const { return m_reachable_cnt; } - template - void foreach_reachable(const Vec3f &pos, Fn &&visitor, double min_dist = 0.) + template + void foreach_reachable(const Vec3f &pos, + Fn &&visitor, + size_t k, + double min_dist = 0.) { // Fake output iterator struct Output { @@ -203,14 +206,15 @@ public: namespace bgi = boost::geometry::index; - size_t cnt = 0; - auto filter = bgi::satisfies([this, &pos, min_dist, &cnt](const PointIndexEl &e) { - double d = get_distance(pos, e.second); - cnt++; - return m_searchable_indices[e.second] && !isinf(d) && d > min_dist; - }); + size_t cnt = 0; + auto filter = bgi::satisfies( + [this, &pos, min_dist, &cnt](const PointIndexEl &e) { + cnt++; + double d = get_distance(pos, e.second); + return m_searchable_indices[e.second] && !isinf(d) && d > min_dist; + }); - m_ktree.query(bgi::nearest(pos, K) && filter, Output{this, pos, visitor}); + m_ktree.query(bgi::nearest(pos, k) && filter, Output{this, pos, visitor}); } auto start_queue() From 2cb74013be2e244115ba3c6acdc19ed4570f680e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 17:23:55 +0200 Subject: [PATCH 065/131] Remove junk --- src/libslic3r/BranchingTree/PointCloud.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index e781aad01..e11c2f851 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -206,10 +206,8 @@ public: namespace bgi = boost::geometry::index; - size_t cnt = 0; auto filter = bgi::satisfies( - [this, &pos, min_dist, &cnt](const PointIndexEl &e) { - cnt++; + [this, &pos, min_dist](const PointIndexEl &e) { double d = get_distance(pos, e.second); return m_searchable_indices[e.second] && !isinf(d) && d > min_dist; }); From 064e9935d1d20ecee35b205feae264391bc9e36c Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 13 Jun 2022 18:20:00 +0200 Subject: [PATCH 066/131] Fix dangling pinheads --- src/libslic3r/BranchingTree/BranchingTree.cpp | 41 ++++++++++++------- src/libslic3r/BranchingTree/PointCloud.hpp | 39 ++++++++++++++---- 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index d690b2cc4..a01163f48 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -16,13 +16,23 @@ void build_tree(PointCloud &nodes, Builder &builder) auto ptsqueue = nodes.start_queue(); auto &properties = nodes.properties(); - struct NodeDistance { size_t node_id = Node::ID_NONE; float distance = NaNf; }; + struct NodeDistance + { + size_t node_id = Node::ID_NONE; + float dst_branching = NaNf; + float dst_euql = NaNf; + }; auto distances = reserve_vector(initK); double prev_dist_max = 0.; size_t K = initK; + bool routed = true; + size_t node_id = Node::ID_NONE; - while (!ptsqueue.empty() && builder.is_valid()) { - size_t node_id = ptsqueue.top(); + while ((!ptsqueue.empty() && builder.is_valid()) || !routed) { + if (routed) { + node_id = ptsqueue.top(); + ptsqueue.pop(); + } Node node = nodes.get(node_id); nodes.mark_unreachable(node_id); @@ -30,44 +40,47 @@ void build_tree(PointCloud &nodes, Builder &builder) distances.clear(); distances.reserve(K); + float dmax = 0.; nodes.foreach_reachable( node.pos, - [&distances](size_t id, float distance) { - distances.emplace_back(NodeDistance{id, distance}); + [&distances, &dmax](size_t id, float dst_branching, float dst_euql) { + distances.emplace_back(NodeDistance{id, dst_branching, dst_euql}); + dmax = std::max(dmax, dst_euql); }, K, prev_dist_max); std::sort(distances.begin(), distances.end(), - [](auto &a, auto &b) { return a.distance < b.distance; }); + [](auto &a, auto &b) { return a.dst_branching < b.dst_branching; }); if (distances.empty()) { builder.report_unroutable(node); - ptsqueue.pop(); K = initK; prev_dist_max = 0.; + routed = true; + continue; } - prev_dist_max = distances.back().distance; + prev_dist_max = dmax; K *= 2; auto closest_it = distances.begin(); - bool routed = false; + routed = false; while (closest_it != distances.end() && !routed && builder.is_valid()) { size_t closest_node_id = closest_it->node_id; Node closest_node = nodes.get(closest_node_id); auto type = nodes.get_type(closest_node_id); - float w = nodes.get(node_id).weight + closest_it->distance; + float w = nodes.get(node_id).weight + closest_it->dst_branching; closest_node.Rmin = std::max(node.Rmin, closest_node.Rmin); switch (type) { case BED: { closest_node.weight = w; - if (closest_it->distance > nodes.properties().max_branch_length()) { - auto hl_br_len = float(nodes.properties().max_branch_length()) / 2.f; + if (closest_it->dst_branching > nodes.properties().max_branch_length()) { + auto hl_br_len = float(nodes.properties().max_branch_length()) / 2.; Node new_node {{node.pos.x(), node.pos.y(), node.pos.z() - hl_br_len}, node.Rmin}; new_node.id = int(nodes.next_junction_id()); - new_node.weight = nodes.get(node_id).weight + nodes.properties().max_branch_length(); + new_node.weight = nodes.get(node_id).weight + hl_br_len; new_node.left = node.id; if ((routed = builder.add_bridge(node, new_node))) { size_t new_idx = nodes.insert_junction(new_node); @@ -147,11 +160,9 @@ void build_tree(PointCloud &nodes, Builder &builder) } if (routed) { - ptsqueue.pop(); prev_dist_max = 0.; K = initK; } - } } diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index e11c2f851..1ce4739c3 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -29,6 +29,19 @@ std::vector sample_bed(const ExPolygons &bed, enum PtType { LEAF, MESH, BED, JUNCTION, NONE }; +inline BoundingBox3Base get_support_cone_bb(const Vec3f &p, const Properties &props) +{ + double gnd = props.ground_level() - EPSILON; + double h = p.z() - gnd; + double phi = PI / 2 - props.max_slope(); + double r = std::min(h * std::tan(phi), props.max_branch_length() * std::sin(phi)); + + Vec3f bb_min = {p.x() - r, p.y() - r, gnd}; + Vec3f bb_max = {p.x() + r, p.y() + r, p.z()}; + + return {bb_min, bb_max}; +} + // A cloud of points including support points, mesh points, junction points // and anchor points on the bed. Junction points can be added or removed, all // the other point types are established on creation and remain unchangeable. @@ -199,20 +212,32 @@ public: Output& operator *() { return *this; } void operator=(const PointIndexEl &el) { - visitorfn(el.second, self->get_distance(p, el.second)); + visitorfn(el.second, self->get_distance(p, el.second), + (p - el.first).squaredNorm()); } Output& operator++() { return *this; } }; namespace bgi = boost::geometry::index; + float brln = 2 * m_props.max_branch_length(); + BoundingBox3Base bb{{pos.x() - brln, pos.y() - brln, + m_props.ground_level() - EPSILON}, + {pos.x() + brln, pos.y() + brln, + m_ktree.bounds().max_corner().get()}}; - auto filter = bgi::satisfies( - [this, &pos, min_dist](const PointIndexEl &e) { - double d = get_distance(pos, e.second); - return m_searchable_indices[e.second] && !isinf(d) && d > min_dist; - }); + // Extend upwards to find mergable junctions and support points + bb.max.z() = m_ktree.bounds().max_corner().get(); - m_ktree.query(bgi::nearest(pos, k) && filter, Output{this, pos, visitor}); + auto filter = bgi::satisfies( + [this, &pos, min_dist](const PointIndexEl &e) { + double D_branching = get_distance(pos, e.second); + double D_euql = (pos - e.first).squaredNorm() ; + return m_searchable_indices[e.second] && + !std::isinf(D_branching) && D_euql > min_dist; + }); + + m_ktree.query(bgi::intersects(bb) && filter && bgi::nearest(pos, k), + Output{this, pos, visitor}); } auto start_queue() From bf1303b9cf24460ba6d5659c8a3ba442dd2d5ddd Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 20 Jun 2022 16:32:07 +0200 Subject: [PATCH 067/131] Fix double parallelization --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 3f5e61b87..72314c9d8 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -210,7 +210,7 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s ex_tbb, size_t(0), nondup_idx.size(), [&sm, &heads, &nondup_idx, &builder](size_t i) { if (!builder.ctl().stopcondition()) - heads[i] = calculate_pinhead_placement(ex_tbb, sm, nondup_idx[i]); + heads[i] = calculate_pinhead_placement(ex_seq, sm, nondup_idx[i]); }, execution::max_concurrency(ex_tbb) ); From f3d4a9072173e3f1323db2e544430cf0f0113a35 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 20 Jun 2022 16:52:59 +0200 Subject: [PATCH 068/131] Fixes to compile on MSVC --- src/libslic3r/BranchingTree/BranchingTree.cpp | 2 +- src/libslic3r/BranchingTree/PointCloud.hpp | 6 +++--- tests/sla_print/sla_print_tests.cpp | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/BranchingTree/BranchingTree.cpp b/src/libslic3r/BranchingTree/BranchingTree.cpp index a01163f48..6463a30de 100644 --- a/src/libslic3r/BranchingTree/BranchingTree.cpp +++ b/src/libslic3r/BranchingTree/BranchingTree.cpp @@ -77,7 +77,7 @@ void build_tree(PointCloud &nodes, Builder &builder) case BED: { closest_node.weight = w; if (closest_it->dst_branching > nodes.properties().max_branch_length()) { - auto hl_br_len = float(nodes.properties().max_branch_length()) / 2.; + auto hl_br_len = float(nodes.properties().max_branch_length()) / 2.f; Node new_node {{node.pos.x(), node.pos.y(), node.pos.z() - hl_br_len}, node.Rmin}; new_node.id = int(nodes.next_junction_id()); new_node.weight = nodes.get(node_id).weight + hl_br_len; diff --git a/src/libslic3r/BranchingTree/PointCloud.hpp b/src/libslic3r/BranchingTree/PointCloud.hpp index 1ce4739c3..f99b17990 100644 --- a/src/libslic3r/BranchingTree/PointCloud.hpp +++ b/src/libslic3r/BranchingTree/PointCloud.hpp @@ -34,9 +34,9 @@ inline BoundingBox3Base get_support_cone_bb(const Vec3f &p, const Propert double gnd = props.ground_level() - EPSILON; double h = p.z() - gnd; double phi = PI / 2 - props.max_slope(); - double r = std::min(h * std::tan(phi), props.max_branch_length() * std::sin(phi)); + auto r = float(std::min(h * std::tan(phi), props.max_branch_length() * std::sin(phi))); - Vec3f bb_min = {p.x() - r, p.y() - r, gnd}; + Vec3f bb_min = {p.x() - r, p.y() - r, float(gnd)}; Vec3f bb_max = {p.x() + r, p.y() + r, p.z()}; return {bb_min, bb_max}; @@ -221,7 +221,7 @@ public: namespace bgi = boost::geometry::index; float brln = 2 * m_props.max_branch_length(); BoundingBox3Base bb{{pos.x() - brln, pos.y() - brln, - m_props.ground_level() - EPSILON}, + float(m_props.ground_level() - EPSILON)}, {pos.x() + brln, pos.y() + brln, m_ktree.bounds().max_corner().get()}}; diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index 273c3f8f6..4670bf209 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -185,7 +185,7 @@ bool is_outside_support_cone(const Vec3f &supp, const Vec3f &pt, float angle) TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branching]") { SECTION("Identical points have the same merge point") { Vec3f a{0.f, 0.f, 0.f}, b = a; - float slope = PI / 4.f; + auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); @@ -200,7 +200,7 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi // | b * <= mergept SECTION("Points at different heights have the lower point as mergepoint") { Vec3f a{0.f, 0.f, 0.f}, b = {0.f, 0.f, -1.f}; - float slope = PI / 4.f; + auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); @@ -214,7 +214,7 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi // * <= mergept SECTION("Points at different X have mergept in the middle at lower Z") { Vec3f a{0.f, 0.f, 0.f}, b = {1.f, 0.f, 0.f}; - float slope = PI / 4.f; + auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); @@ -234,7 +234,7 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi // * <= mergept SECTION("Points at different Y have mergept in the middle at lower Z") { Vec3f a{0.f, 0.f, 0.f}, b = {0.f, 1.f, 0.f}; - float slope = PI / 4.f; + auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); @@ -250,7 +250,7 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi SECTION("Points separated by less than critical angle have the lower point as mergept") { Vec3f a{0.f, 0.f, 0.f}, b = {-0.5f, -0.5f, -1.f}; - float slope = PI / 4.f; + auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); From a55be295685d899988e7ba1bdc7d9d6a6ce6cdef Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 29 Jun 2022 12:35:43 +0200 Subject: [PATCH 069/131] Fix failing tests for merge point search Improvements and comments to find_merge_pt --- src/libslic3r/BranchingTree/PointCloud.cpp | 73 ++++++++++++++++------ src/libslic3r/Geometry.hpp | 12 ++-- tests/sla_print/sla_print_tests.cpp | 6 +- 3 files changed, 62 insertions(+), 29 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index b5b6893c8..e6fbbf0eb 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -9,32 +9,65 @@ namespace Slic3r { namespace branchingtree { std::optional find_merge_pt(const Vec3f &A, const Vec3f &B, - float max_slope) + float critical_angle) { - Vec3f Da = (B - A).normalized(), Db = -Da; - auto [polar_da, azim_da] = Geometry::dir_to_spheric(Da); - auto [polar_db, azim_db] = Geometry::dir_to_spheric(Db); - polar_da = std::max(polar_da, float(PI) / 2.f + max_slope); - polar_db = std::max(polar_db, float(PI) / 2.f + max_slope); + // The idea is that A and B both have their support cones. But searching + // for the intersection of these support cones is difficult and its enough + // to reduce this problem to 2D and search for the intersection of two + // rays that merge somewhere between A and B. The 2D plane is a vertical + // slice of the 3D scene where the X axis is determined by the XY direction + // of the AB vector. + // + // Z^ + // | A * + // | . . B * + // | . . . . + // | . . . . + // | . x . + // -------------------> X - Da = Geometry::spheric_to_dir(polar_da, azim_da); - Db = Geometry::spheric_to_dir(polar_db, azim_db); + // Determine the transformation matrix for the 2D projection: + Vec3f diff = {B.x() - A.x(), B.y() - A.y(), 0.f}; + Vec3f dir = diff.normalized(); // TODO: avoid normalization - // This formula is based on + Eigen::Matrix tr2D; + tr2D.row(0) = Vec3f{dir.x(), dir.y(), dir.z()}; + tr2D.row(1) = Vec3f{0.f, 0.f, 1.f}; + + // Transform the 2 vectors A and B into 2D vector 'a' and 'b'. Here we can + // omit 'a', pretend that its the origin and use BA as the vector b. + Vec2f b = tr2D * (B - A); + + // Get the slope of the ray emanating from 'a' towards 'b'. This ray might + // exceed the allowed angle but that is corrected subsequently. + // if b.x() is 0, slope is (+/-) pi/2 depending on b.y() sign + float slope_a = std::atan2(b.y(), b.x()); + + // slope from 'b' to 'a' is the opposite of slope_a, the angle will also + // be corrected later. + float slope_b = -slope_a; + + // Derive the allowed angles from the given critical angle. + // critical_angle is measured from the horizontal X axis. + // The rays need to go downwards which corresponds to negative angles + + float min_angle = critical_angle - float(PI) / 2.f; + slope_a = std::min(slope_a, min_angle); + slope_b = std::min(slope_b, min_angle); + Vec2f Da = {std::cos(slope_a), std::sin(slope_a)}; + Vec2f Db = {-std::cos(slope_b), std::sin(slope_b)}; + + // Determine where two rays ([0, 0], Da), (b, Db) intersect. + // Based on // https://stackoverflow.com/questions/27459080/given-two-points-and-two-direction-vectors-find-the-point-where-they-intersect - double t1 = - (A.z() * Db.x() + Db.z() * B.x() - B.z() * Db.x() - Db.z() * A.x()) / - (Da.x() * Db.z() - Da.z() * Db.x()); + // One ray is emanating from (0, 0) so the formula is simplified + double t1 = (Db.y() * b.x() - b.y() * Db.x()) / + (Da.x() * Db.y() - Da.y() * Db.x()); - if (std::isnan(t1) || std::abs(t1) < EPSILON) - t1 = (A.z() * Db.y() + Db.z() * B.y() - B.z() * Db.y() - Db.z() * A.y()) / - (Da.y() * Db.z() - Da.z() * Db.y()); + Vec2f mp = t1 * Da; + Vec3f Mp = A + tr2D.transpose() * mp; - Vec3f m1 = A + t1 * Da; - - double t2 = (m1.z() - B.z()) / Db.z(); - - return t1 >= 0. && t2 >= 0. ? m1 : std::optional{}; + return t1 >= 0.f ? Mp : Vec3f{}; } void to_eigen_mesh(const indexed_triangle_set &its, diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index c04bdf07a..d0ae84d86 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -560,13 +560,13 @@ inline bool is_rotation_ninety_degrees(const Vec3d &rotation) return is_rotation_ninety_degrees(rotation.x()) && is_rotation_ninety_degrees(rotation.y()) && is_rotation_ninety_degrees(rotation.z()); } -template -std::pair dir_to_spheric(const Vec<3, T> &n, T norm = 1.) +template +std::pair dir_to_spheric(const Vec<3, Tin> &n, Tout norm = 1.) { - T z = n.z(); - T r = norm; - T polar = std::acos(z / r); - T azimuth = std::atan2(n(1), n(0)); + Tout z = n.z(); + Tout r = norm; + Tout polar = std::acos(z / r); + Tout azimuth = std::atan2(n(1), n(0)); return {polar, azimuth}; } diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index 4670bf209..79e9ce67a 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -205,7 +205,7 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi auto mergept = branchingtree::find_merge_pt(a, b, slope); REQUIRE(bool(mergept)); - REQUIRE((*mergept - b).squaredNorm() < EPSILON); + REQUIRE((*mergept - b).squaredNorm() < 2 * EPSILON); } // -|---------> X @@ -249,13 +249,13 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi } SECTION("Points separated by less than critical angle have the lower point as mergept") { - Vec3f a{0.f, 0.f, 0.f}, b = {-0.5f, -0.5f, -1.f}; + Vec3f a{-1.f, -1.f, -1.f}, b = {-1.5f, -1.5f, -2.f}; auto slope = float(PI / 4.); auto mergept = branchingtree::find_merge_pt(a, b, slope); REQUIRE(bool(mergept)); - REQUIRE((*mergept - b).norm() < EPSILON); + REQUIRE((*mergept - b).norm() < 2 * EPSILON); } } From b45bb84fa6c4c2e5aeb3322576a7973e91c506eb Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 29 Jun 2022 15:48:45 +0200 Subject: [PATCH 070/131] Another fix to find_merge_pt --- src/libslic3r/BranchingTree/PointCloud.cpp | 37 ++++++++++++++-------- tests/sla_print/sla_print_tests.cpp | 15 +++++++++ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/BranchingTree/PointCloud.cpp b/src/libslic3r/BranchingTree/PointCloud.cpp index e6fbbf0eb..f1d7ae521 100644 --- a/src/libslic3r/BranchingTree/PointCloud.cpp +++ b/src/libslic3r/BranchingTree/PointCloud.cpp @@ -15,8 +15,8 @@ std::optional find_merge_pt(const Vec3f &A, // for the intersection of these support cones is difficult and its enough // to reduce this problem to 2D and search for the intersection of two // rays that merge somewhere between A and B. The 2D plane is a vertical - // slice of the 3D scene where the X axis is determined by the XY direction - // of the AB vector. + // slice of the 3D scene where the 2D Y axis is equal to the 3D Z axis and + // the 2D X axis is determined by the XY direction of the AB vector. // // Z^ // | A * @@ -24,7 +24,7 @@ std::optional find_merge_pt(const Vec3f &A, // | . . . . // | . . . . // | . x . - // -------------------> X + // -------------------> XY // Determine the transformation matrix for the 2D projection: Vec3f diff = {B.x() - A.x(), B.y() - A.y(), 0.f}; @@ -38,24 +38,33 @@ std::optional find_merge_pt(const Vec3f &A, // omit 'a', pretend that its the origin and use BA as the vector b. Vec2f b = tr2D * (B - A); - // Get the slope of the ray emanating from 'a' towards 'b'. This ray might + // Get the square sine of the ray emanating from 'a' towards 'b'. This ray might // exceed the allowed angle but that is corrected subsequently. - // if b.x() is 0, slope is (+/-) pi/2 depending on b.y() sign - float slope_a = std::atan2(b.y(), b.x()); + // The sign of the original sine is also needed, hence b.y is multiplied by + // abs(b.y) + float b_sqn = b.squaredNorm(); + float sin2sig_a = b_sqn > EPSILON ? (b.y() * std::abs(b.y())) / b_sqn : 0.f; - // slope from 'b' to 'a' is the opposite of slope_a, the angle will also - // be corrected later. - float slope_b = -slope_a; + // sine2 from 'b' to 'a' is the opposite of sine2 from a to b + float sin2sig_b = -sin2sig_a; // Derive the allowed angles from the given critical angle. // critical_angle is measured from the horizontal X axis. // The rays need to go downwards which corresponds to negative angles - float min_angle = critical_angle - float(PI) / 2.f; - slope_a = std::min(slope_a, min_angle); - slope_b = std::min(slope_b, min_angle); - Vec2f Da = {std::cos(slope_a), std::sin(slope_a)}; - Vec2f Db = {-std::cos(slope_b), std::sin(slope_b)}; + float sincrit = std::sin(critical_angle); // sine of the critical angle + float sin2crit = -sincrit * sincrit; // signed sine squared + sin2sig_a = std::min(sin2sig_a, sin2crit); // Do the angle saturation of both rays + sin2sig_b = std::min(sin2sig_b, sin2crit); // + float sin2_a = std::abs(sin2sig_a); // Get cosine squared values + float sin2_b = std::abs(sin2sig_b); + float cos2_a = 1.f - sin2_a; + float cos2_b = 1.f - sin2_b; + + // Derive the new direction vectors. This is by square rooting the sin2 + // and cos2 values and restoring the original signs + Vec2f Da = {std::copysign(std::sqrt(cos2_a), b.x()), std::copysign(std::sqrt(sin2_a), sin2sig_a)}; + Vec2f Db = {-std::copysign(std::sqrt(cos2_b), b.x()), std::copysign(std::sqrt(sin2_b), sin2sig_b)}; // Determine where two rays ([0, 0], Da), (b, Db) intersect. // Based on diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index 79e9ce67a..8ea91d57a 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -257,6 +257,21 @@ TEST_CASE("BranchingSupports::MergePointFinder", "[SLASupportGeneration][Branchi REQUIRE(bool(mergept)); REQUIRE((*mergept - b).norm() < 2 * EPSILON); } + + // -|----------------------------> Y + // a b + // * * <= mergept * + // + SECTION("Points at same height have mergepoint in the middle if critical angle is zero ") { + Vec3f a{-1.f, -1.f, -1.f}, b = {-1.5f, -1.5f, -1.f}; + auto slope = EPSILON; + + auto mergept = branchingtree::find_merge_pt(a, b, slope); + + REQUIRE(bool(mergept)); + Vec3f middle = (b + a) / 2.; + REQUIRE((*mergept - middle).norm() < 4 * EPSILON); + } } TEST_CASE("BranchingSupports::ElevatedSupportsDoNotPierceModel", "[SLASupportGeneration][Branching]") { From a8872a92117fce97689925813f6fb71f28866ea0 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Sun, 31 Jul 2022 16:05:46 +0200 Subject: [PATCH 071/131] Creality.ini: Add alternative nozzle support --- resources/profiles/Creality.idx | 1 + resources/profiles/Creality.ini | 1081 +++++++++++++++++++++++++------ 2 files changed, 873 insertions(+), 209 deletions(-) diff --git a/resources/profiles/Creality.idx b/resources/profiles/Creality.idx index 8f7dd0e8c..00db32f4f 100644 --- a/resources/profiles/Creality.idx +++ b/resources/profiles/Creality.idx @@ -1,4 +1,5 @@ min_slic3r_version = 2.5.0-alpha0 +0.2.0 Added alternative nozzle support 0.1.5 Added Ender-3 S1 Pro min_slic3r_version = 2.4.1 0.1.4 Added Ender-3 Pro. Added M25 support for some printers. diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index ce39cd6d6..351700302 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -5,7 +5,7 @@ name = Creality # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the PrusaSlicer configuration to be downgraded. -config_version = 0.1.5 +config_version = 0.2.0 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Creality/ # changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% @@ -16,7 +16,7 @@ config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/Prus [printer_model:ENDER3] name = Creality Ender-3 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3_bed.stl @@ -25,7 +25,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3BLTOUCH] name = Creality Ender-3 BLTouch -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3_bed.stl @@ -34,7 +34,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3PRO] name = Creality Ender-3 Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3_bed.stl @@ -43,7 +43,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3V2] name = Creality Ender-3 V2 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3v2_bed.stl @@ -52,7 +52,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3S1] name = Creality Ender-3 S1 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3v2_bed.stl @@ -61,7 +61,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3S1PRO] name = Creality Ender-3 S1 Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3v2_bed.stl @@ -70,7 +70,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER3MAX] name = Creality Ender-3 Max -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = cr10v2_bed.stl @@ -79,7 +79,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER4] name = Creality Ender-4 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3v2_bed.stl @@ -88,7 +88,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER5] name = Creality Ender-5 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender3_bed.stl @@ -97,7 +97,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER5PLUS] name = Creality Ender-5 Plus -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender5plus_bed.stl @@ -106,7 +106,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER6] name = Creality Ender-6 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender6_bed.stl @@ -115,7 +115,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER7] name = Creality Ender-7 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender7_bed.stl @@ -124,7 +124,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER2] name = Creality Ender-2 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender2_bed.stl @@ -133,7 +133,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:ENDER2PRO] name = Creality Ender-2 Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = ENDER bed_model = ender2pro_bed.stl @@ -142,7 +142,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR5PRO] name = Creality CR-5 Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr5pro_bed.stl @@ -151,7 +151,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR5PROH] name = Creality CR-5 Pro H -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr5pro_bed.stl @@ -160,7 +160,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR6SE] name = Creality CR-6 SE -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr6se_bed.stl @@ -169,7 +169,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR6MAX] name = Creality CR-6 Max -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10s4_bed.stl @@ -178,7 +178,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10SMART] name = Creality CR-10 SMART -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10v2_bed.stl @@ -187,7 +187,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10MINI] name = Creality CR-10 Mini -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10mini_bed.stl @@ -196,7 +196,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10MAX] name = Creality CR-10 Max -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10max_bed.stl @@ -205,7 +205,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10] name = Creality CR-10 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10_bed.stl @@ -214,7 +214,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10V2] name = Creality CR-10 V2 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10v2_bed.stl @@ -223,7 +223,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10V3] name = Creality CR-10 V3 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10v2_bed.stl @@ -232,7 +232,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10S] name = Creality CR-10 S -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10_bed.stl @@ -241,7 +241,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10SPRO] name = Creality CR-10 S Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10v2_bed.stl @@ -250,7 +250,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10SPROV2] name = Creality CR-10 S Pro V2 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10v2_bed.stl @@ -259,7 +259,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10S4] name = Creality CR-10 S4 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10s4_bed.stl @@ -268,7 +268,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR10S5] name = Creality CR-10 S5 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr10s5_bed.stl @@ -277,7 +277,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR20] name = Creality CR-20 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = ender3_bed.stl @@ -286,7 +286,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR20PRO] name = Creality CR-20 Pro -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = ender3_bed.stl @@ -295,7 +295,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR200B] name = Creality CR-200B -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr200b_bed.stl @@ -304,7 +304,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:CR8] name = Creality CR-8 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = CR bed_model = cr8_bed.stl @@ -313,7 +313,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ #[printer_model:CRX] #name = Creality CR-X -#variants = 0.4 +#variants = 0.4; 0.3; 0.5; 0.6 #technology = FFF #family = CR-X #bed_model = cr10v2_bed.stl @@ -322,7 +322,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ #[printer_model:CRXPRO] #name = Creality CR-X Pro -#variants = 0.4 +#variants = 0.4; 0.3; 0.5; 0.6 #technology = FFF #family = CR-X #bed_model = cr10v2_bed.stl @@ -331,13 +331,15 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @ [printer_model:SERMOOND1] name = Creality Sermoon-D1 -variants = 0.4 +variants = 0.4; 0.3; 0.5; 0.6 technology = FFF family = SERMOON bed_model = sermoond1_bed.stl bed_texture = sermoond1.svg default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY + + # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -358,26 +360,22 @@ elefant_foot_compensation = 0.1 ensure_vertical_shell_thickness = 1 external_fill_pattern = rectilinear external_perimeters_first = 0 -external_perimeter_extrusion_width = 0.45 external_perimeter_speed = 25 extra_perimeters = 0 extruder_clearance_height = 34 extruder_clearance_radius = 47 -extrusion_width = 0.45 fill_angle = 45 fill_density = 15% fill_pattern = grid -first_layer_extrusion_width = 0.42 first_layer_height = 0.2 first_layer_speed = 20 gap_fill_speed = 30 gcode_comments = 0 infill_every_layers = 1 infill_extruder = 1 -infill_extrusion_width = 0.45 infill_first = 0 infill_only_where_needed = 0 -infill_overlap = 25% +infill_overlap = 22% infill_speed = 50 interface_shells = 0 max_print_speed = 100 @@ -390,9 +388,7 @@ overhangs = 0 only_retract_when_crossing_perimeters = 0 ooze_prevention = 0 output_filename_format = {input_filename_base}_{print_time}_{digits(layer_height,1,2)}mm_{temperature[0]}C_{filament_type[0]}_{printer_model}.gcode -perimeters = 2 perimeter_extruder = 1 -perimeter_extrusion_width = 0.45 perimeter_speed = 40 post_process = print_settings_id = @@ -407,13 +403,11 @@ small_perimeter_speed = 25 solid_infill_below_area = 0 solid_infill_every_layers = 0 solid_infill_extruder = 1 -solid_infill_extrusion_width = 0.45 solid_infill_speed = 40 spiral_vase = 0 standby_temperature_delta = -5 support_material = 0 support_material_extruder = 0 -support_material_extrusion_width = 0.38 support_material_interface_extruder = 0 support_material_angle = 0 support_material_buildplate_only = 0 @@ -431,7 +425,6 @@ support_material_threshold = 40 support_material_with_sheath = 0 support_material_xy_spacing = 60% thin_walls = 0 -top_infill_extrusion_width = 0.4 top_solid_infill_speed = 30 travel_speed = 150 wipe_tower = 0 @@ -442,10 +435,11 @@ wipe_tower_x = 170 wipe_tower_y = 140 xy_size_compensation = 0 + + [print:*0.08mm*] inherits = *common* layer_height = 0.08 -perimeters = 3 bottom_solid_layers = 9 top_solid_layers = 11 bridge_flow_ratio = 0.70 @@ -453,7 +447,6 @@ bridge_flow_ratio = 0.70 [print:*0.10mm*] inherits = *common* layer_height = 0.10 -perimeters = 3 bottom_solid_layers = 7 top_solid_layers = 9 bridge_flow_ratio = 0.70 @@ -461,7 +454,6 @@ bridge_flow_ratio = 0.70 [print:*0.12mm*] inherits = *common* layer_height = 0.12 -perimeters = 3 bottom_solid_layers = 6 top_solid_layers = 7 bridge_flow_ratio = 0.70 @@ -482,50 +474,228 @@ top_solid_layers = 5 [print:*0.24mm*] inherits = *common* layer_height = 0.24 -top_infill_extrusion_width = 0.45 bottom_solid_layers = 3 top_solid_layers = 4 [print:*0.28mm*] inherits = *common* layer_height = 0.28 -top_infill_extrusion_width = 0.45 bottom_solid_layers = 3 top_solid_layers = 4 -[print:0.08mm SUPERDETAIL @CREALITY] -inherits = *0.08mm* +[print:*0.36mm*] +inherits = *common* +layer_height = 0.36 +bottom_solid_layers = 3 +top_solid_layers = 4 + +[print:*0.44mm*] +inherits = *common* +layer_height = 0.44 +bottom_solid_layers = 3 +top_solid_layers = 4 + + + +[print:*0.3nozzle*] +perimeters = 4 +support_material_interface_spacing = 0.15 +support_material_spacing = 1 +first_layer_height = 0.2 +extrusion_width = 0.33 +external_perimeter_extrusion_width = 0.31 +first_layer_extrusion_width = 0.42 +infill_extrusion_width = 0.33 +perimeter_extrusion_width = 0.33 +solid_infill_extrusion_width = 0.33 +top_infill_extrusion_width = 0.33 +support_material_extrusion_width = 0.33 + +[print:*0.4nozzle*] +perimeters = 3 +support_material_interface_spacing = 0.2 +support_material_spacing = 1 +first_layer_height = 0.2 +extrusion_width = 0.44 +external_perimeter_extrusion_width = 0.42 +first_layer_extrusion_width = 0.56 +infill_extrusion_width = 0.44 +perimeter_extrusion_width = 0.44 +solid_infill_extrusion_width = 0.44 +top_infill_extrusion_width = 0.44 +support_material_extrusion_width = 0.44 + +[print:*0.5nozzle*] +perimeters = 2 +support_material_interface_spacing = 0.2 +support_material_spacing = 1.1 +first_layer_height = 0.2 +extrusion_width = 0.55 +external_perimeter_extrusion_width = 0.52 +first_layer_extrusion_width = 0.7 +infill_extrusion_width = 0.55 +perimeter_extrusion_width = 0.55 +solid_infill_extrusion_width = 0.55 +top_infill_extrusion_width = 0.55 +support_material_extrusion_width = 0.55 + +[print:*0.6nozzle*] +perimeters = 2 +support_material_interface_spacing = 0.3 +support_material_spacing = 1.2 +first_layer_height = 0.3 +extrusion_width = 0.66 +external_perimeter_extrusion_width = 0.63 +first_layer_extrusion_width = 0.84 +infill_extrusion_width = 0.66 +perimeter_extrusion_width = 0.66 +solid_infill_extrusion_width = 0.66 +top_infill_extrusion_width = 0.66 +support_material_extrusion_width = 0.66 + + + +[print:0.08 mm SUPERDETAIL (0.3 mm nozzle) @CREALITY] +inherits = *0.08mm*; *0.3nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.3 + +[print:0.08 mm SUPERDETAIL (0.4 mm nozzle) @CREALITY] +inherits = *0.08mm*; *0.4nozzle* +renamed_from = "0.08mm SUPERDETAIL @CREALITY" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.10mm HIGHDETAIL @CREALITY] -inherits = *0.10mm* -renamed_from = "0.10mm HIGHDETAIL @ENDER3" +[print:0.08 mm SUPERDETAIL (0.5 mm nozzle) @CREALITY] +inherits = *0.08mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.08 mm SUPERDETAIL (0.6 mm nozzle) @CREALITY] +inherits = *0.08mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.10 mm HIGHDETAIL (0.3 mm nozzle) @CREALITY] +inherits = *0.10mm*; *0.3nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.3 + +[print:0.10 mm HIGHDETAIL (0.4 mm nozzle) @CREALITY] +inherits = *0.10mm*; *0.4nozzle* +renamed_from = "0.10mm HIGHDETAIL @CREALITY"; "0.10mm HIGHDETAIL @ENDER3" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.12mm DETAIL @CREALITY] -inherits = *0.12mm* -renamed_from = "0.12mm DETAIL @ENDER3" +[print:0.10 mm HIGHDETAIL (0.5 mm nozzle) @CREALITY] +inherits = *0.10mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.10 mm HIGHDETAIL (0.6 mm nozzle) @CREALITY] +inherits = *0.10mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.12 mm DETAIL (0.3 mm nozzle) @CREALITY] +inherits = *0.12mm*; *0.3nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.3 + +[print:0.12 mm DETAIL (0.4 mm nozzle) @CREALITY] +inherits = *0.12mm*; *0.4nozzle* +renamed_from = "0.12mm DETAIL @CREALITY"; "0.12mm DETAIL @ENDER3" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.16mm OPTIMAL @CREALITY] -inherits = *0.16mm* -renamed_from = "0.15mm OPTIMAL @ENDER3"; "0.15mm OPTIMAL @CREALITY" +[print:0.12 mm DETAIL (0.5 mm nozzle) @CREALITY] +inherits = *0.12mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.12 mm DETAIL (0.6 mm nozzle) @CREALITY] +inherits = *0.12mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.16 mm OPTIMAL (0.3 mm nozzle) @CREALITY] +inherits = *0.16mm*; *0.3nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.3 + +[print:0.16 mm OPTIMAL (0.4 mm nozzle) @CREALITY] +inherits = *0.16mm*; *0.4nozzle* +renamed_from = "0.15mm OPTIMAL @CREALITY"; "0.15mm OPTIMAL @ENDER3" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.20mm NORMAL @CREALITY] -inherits = *0.20mm* -renamed_from = "0.20mm NORMAL @ENDER3" +[print:0.16 mm OPTIMAL (0.5 mm nozzle) @CREALITY] +inherits = *0.16mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.16 mm OPTIMAL (0.6 mm nozzle) @CREALITY] +inherits = *0.16mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.20 mm NORMAL (0.3 mm nozzle) @CREALITY] +inherits = *0.20mm*; *0.3nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.3 + +[print:0.20 mm NORMAL (0.4 mm nozzle) @CREALITY] +inherits = *0.20mm*; *0.4nozzle* +renamed_from = "0.20mm NORMAL @CREALITY"; "0.20mm NORMAL @ENDER3" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.24mm DRAFT @CREALITY] -inherits = *0.24mm* -renamed_from = "0.24mm DRAFT @ENDER3" +[print:0.20 mm NORMAL (0.5 mm nozzle) @CREALITY] +inherits = *0.20mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.20 mm NORMAL (0.6 mm nozzle) @CREALITY] +inherits = *0.20mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.24 mm DRAFT (0.4 mm nozzle) @CREALITY] +inherits = *0.24mm*; *0.4nozzle* +renamed_from = "0.24mm DRAFT @CREALITY"; "0.24mm DRAFT @ENDER3" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 -[print:0.28mm SUPERDRAFT @CREALITY] -inherits = *0.28mm* +[print:0.24 mm DRAFT (0.5 mm nozzle) @CREALITY] +inherits = *0.24mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.24 mm DRAFT (0.6 mm nozzle) @CREALITY] +inherits = *0.24mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.28 mm SUPERDRAFT (0.4 mm nozzle) @CREALITY] +inherits = *0.28mm*; *0.4nozzle* +renamed_from = "0.28mm SUPERDRAFT @CREALITY" compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.4 +[print:0.28 mm SUPERDRAFT (0.5 mm nozzle) @CREALITY] +inherits = *0.28mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.28 mm SUPERDRAFT (0.6 mm nozzle) @CREALITY] +inherits = *0.28mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.36 mm CHUNKY (0.5 mm nozzle) @CREALITY] +inherits = *0.36mm*; *0.5nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.5 + +[print:0.36 mm CHUNKY (0.6 mm nozzle) @CREALITY] +inherits = *0.36mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + +[print:0.44 mm SUPERCHUNKY (0.6 mm nozzle) @CREALITY] +inherits = *0.44mm*; *0.6nozzle* +compatible_printers_condition = printer_model=~/(ENDER|CR|SERMOON).*/ and nozzle_diameter[0]==0.6 + + + # When submitting new filaments please print the following temperature tower at 0.1mm layer height: # https://www.thingiverse.com/thing:2615842 # Pay particular attention to bridging, overhangs and retractions. @@ -862,6 +1032,8 @@ filament_cost = 22.99 filament_density = 1.24 filament_colour = #001ca8 + + # Common printer preset [printer:*common*] printer_technology = FFF @@ -891,17 +1063,12 @@ machine_max_jerk_z = 0.4 machine_min_extruding_rate = 0 machine_min_travel_rate = 0 layer_gcode = ;AFTER_LAYER_CHANGE\n;{layer_z} -max_layer_height = 0.28 -min_layer_height = 0.08 max_print_height = 250 -nozzle_diameter = 0.4 printer_notes = printer_settings_id = -printer_variant = 0.4 retract_before_travel = 2 retract_before_wipe = 70% retract_layer_change = 1 -retract_length = 5 retract_length_toolchange = 1 retract_lift = 0 retract_lift_above = 0 @@ -918,8 +1085,7 @@ variable_layer_height = 1 wipe = 1 z_offset = 0 printer_model = -default_print_profile = 0.16mm OPTIMAL @CREALITY -default_filament_profile = Generic PLA @CREALITY +default_filament_profile = "Generic PLA @CREALITY" start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S{first_layer_bed_temperature[0]} ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S{first_layer_temperature[0]} ; set final nozzle temp\nM190 S{first_layer_bed_temperature[0]} ; wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{max_print_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors @@ -943,6 +1109,21 @@ pause_print_gcode = M25 ; pause print [printer:*descendingz*] end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; move print head out of the way\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10} F600{endif} ; Move print bed close to the bottom\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors +[printer:*bowdencapricorn*] +retract_length = 4 + +[printer:*bowden*] +retract_length = 5 + +[printer:*bowdenlong*] +retract_length = 6 + +[printer:*bowdenallmetalhotend*] +retract_length = 3 + +[printer:*directdriveextruder*] +retract_length = 1 + [printer:*spriteextruder*] retract_length = 0.8 retract_speed = 30 @@ -950,90 +1131,219 @@ deretract_speed = 30 retract_before_travel = 1 retract_before_wipe = 0% -# Intended for printers with dual extruders and a single hotend/nozzle, like the CR-X series -[printer:*dualextruder*] -single_extruder_multi_material = 1 -cooling_tube_length = 5 -cooling_tube_retraction = 91.5 -extra_loading_move = -2 -parking_pos_retraction = 92 -deretract_speed = 40,40 -extruder_colour = #FCE94F;#729FCF -extruder_offset = 0x0,0x0 -max_layer_height = 0.28,0.28 -min_layer_height = 0.08,0.08 -nozzle_diameter = 0.4,0.4 -retract_before_travel = 2,2 -retract_before_wipe = 70%,70% -retract_layer_change = 1,1 -retract_length = 5,5 -retract_length_toolchange = 1,1 -retract_lift = 0,0 -retract_lift_above = 0,0 -retract_lift_below = 0,0 -retract_restart_extra = 0,0 -retract_restart_extra_toolchange = 0,0 -retract_speed = 60,60 -wipe = 1,1 -[printer:Creality Ender-3] -inherits = *common* -renamed_from = "Creality ENDER-3" + +[printer:*0.3nozzle*] +nozzle_diameter = 0.3 +printer_variant = 0.3 +min_layer_height = 0.08 +max_layer_height = 0.24 +retract_lift_above = 0.2 +default_print_profile = "0.12 mm DETAIL (0.3 mm nozzle) @CREALITY" + +[printer:*0.4nozzle*] +nozzle_diameter = 0.4 +printer_variant = 0.4 +min_layer_height = 0.08 +max_layer_height = 0.32 +retract_lift_above = 0.2 +default_print_profile = "0.16 mm OPTIMAL (0.4 mm nozzle) @CREALITY" + +[printer:*0.5nozzle*] +nozzle_diameter = 0.5 +printer_variant = 0.5 +min_layer_height = 0.08 +max_layer_height = 0.40 +retract_lift_above = 0.2 +default_print_profile = "0.20 mm NORMAL (0.5 mm nozzle) @CREALITY" + +[printer:*0.6nozzle*] +nozzle_diameter = 0.6 +printer_variant = 0.6 +min_layer_height = 0.08 +max_layer_height = 0.48 +retract_lift_above = 0.3 +default_print_profile = "0.24 mm DRAFT (0.6 mm nozzle) @CREALITY" + + + +[printer:*ENDER3*] +inherits = *common*; *bowden* bed_shape = 3x3,228x3,228x228,3x228 max_print_height = 250 printer_model = ENDER3 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-3 BLTouch] -inherits = Creality Ender-3; *fastabl* -renamed_from = "Creality ENDER-3 BLTouch" +[printer:Creality Ender-3 (0.3 mm nozzle)] +inherits = *ENDER3*; *0.3nozzle* + +[printer:Creality Ender-3 (0.4 mm nozzle)] +inherits = *ENDER3*; *0.4nozzle* +renamed_from = "Creality Ender-3"; "Creality ENDER-3" + +[printer:Creality Ender-3 (0.5 mm nozzle)] +inherits = *ENDER3*; *0.5nozzle* + +[printer:Creality Ender-3 (0.6 mm nozzle)] +inherits = *ENDER3*; *0.6nozzle* + + + +[printer:*ENDER3BLTOUCH*] +inherits = *ENDER3*; *fastabl* printer_model = ENDER3BLTOUCH -[printer:Creality Ender-3 Pro] -inherits = Creality Ender-3; *pauseprint* +[printer:Creality Ender-3 BLTouch (0.3 mm nozzle)] +inherits = *ENDER3BLTOUCH*; *0.3nozzle* + +[printer:Creality Ender-3 BLTouch (0.4 mm nozzle)] +inherits = *ENDER3BLTOUCH*; *0.4nozzle* +renamed_from = "Creality Ender-3 BLTouch"; "Creality ENDER-3 BLTouch" + +[printer:Creality Ender-3 BLTouch (0.5 mm nozzle)] +inherits = *ENDER3BLTOUCH*; *0.5nozzle* + +[printer:Creality Ender-3 BLTouch (0.6 mm nozzle)] +inherits = *ENDER3BLTOUCH*; *0.6nozzle* + + + + +[printer:*ENDER3PRO*] +inherits = *ENDER3*; *pauseprint* printer_model = ENDER3PRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3PRO\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-3 V2] -inherits = *common*; *pauseprint* -renamed_from = "Creality Ender-3V2" +[printer:Creality Ender-3 Pro (0.3 mm nozzle)] +inherits = *ENDER3PRO*; *0.3nozzle* + +[printer:Creality Ender-3 Pro (0.4 mm nozzle)] +inherits = *ENDER3PRO*; *0.4nozzle* +renamed_From = "Creality Ender-3 Pro" + +[printer:Creality Ender-3 Pro (0.5 mm nozzle)] +inherits = *ENDER3PRO*; *0.5nozzle* + +[printer:Creality Ender-3 Pro (0.6 mm nozzle)] +inherits = *ENDER3PRO*; *0.6nozzle* + + + +[printer:*ENDER3V2*] +inherits = *common*; *bowden*; *pauseprint* bed_shape = 5x0,215x0,215x220,5x220 max_print_height = 250 printer_model = ENDER3V2 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3V2\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-3 S1] -inherits = *common*; *pauseprint*; *spriteextruder* +[printer:Creality Ender-3 V2 (0.3 mm nozzle)] +inherits = *ENDER3V2*; *0.3nozzle* + +[printer:Creality Ender-3 V2 (0.4 mm nozzle)] +inherits = *ENDER3V2*; *0.4nozzle* +renamed_From = "Creality Ender-3 V2"; "Creality Ender-3V2" + +[printer:Creality Ender-3 V2 (0.5 mm nozzle)] +inherits = *ENDER3V2*; *0.5nozzle* + +[printer:Creality Ender-3 V2 (0.6 mm nozzle)] +inherits = *ENDER3V2*; *0.6nozzle* + + + + +[printer:*ENDER3S1*] +inherits = *common*; *bowden*; *spriteextruder*; *pauseprint* bed_shape = 5x0,215x0,215x220,5x220 max_print_height = 270 printer_model = ENDER3S1 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3S1 -[printer:Creality Ender-3 S1 Pro] -inherits = *common*; *pauseprint*; *spriteextruder* +[printer:Creality Ender-3 S1 (0.3 mm nozzle)] +inherits = *ENDER3S1*; *0.3nozzle* + +[printer:Creality Ender-3 S1 (0.4 mm nozzle)] +inherits = *ENDER3S1*; *0.4nozzle* +renamed_From = "Creality Ender-3 S1" + +[printer:Creality Ender-3 S1 (0.5 mm nozzle)] +inherits = *ENDER3S1*; *0.5nozzle* + +[printer:Creality Ender-3 S1 (0.6 mm nozzle)] +inherits = *ENDER3S1*; *0.6nozzle* + + + +[printer:*ENDER3S1PRO*] +inherits = *common*; *bowden*; *spriteextruder*; *pauseprint* bed_shape = 5x0,215x0,215x220,5x220 max_print_height = 270 printer_model = ENDER3S1PRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3S1PRO -[printer:Creality Ender-3 Max] -inherits = *common*; *pauseprint* -retract_length = 6 +[printer:Creality Ender-3 S1 Pro (0.3 mm nozzle)] +inherits = *ENDER3S1PRO*; *0.3nozzle* + +[printer:Creality Ender-3 S1 Pro (0.4 mm nozzle)] +inherits = *ENDER3S1PRO*; *0.4nozzle* +renamed_From = "Creality Ender-3 S1 Pro" + +[printer:Creality Ender-3 S1 Pro (0.5 mm nozzle)] +inherits = *ENDER3S1PRO*; *0.5nozzle* + +[printer:Creality Ender-3 S1 Pro (0.6 mm nozzle)] +inherits = *ENDER3S1PRO*; *0.6nozzle* + + + + +[printer:*ENDER3MAX*] +inherits = *common*; *bowdenlong*; *pauseprint* bed_shape = 5x5,295x5,295x295,5x295 max_print_height = 340 printer_model = ENDER3MAX printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3MAX\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-4] -inherits = *common*; *descendingz* +[printer:Creality Ender-3 Max (0.3 mm nozzle)] +inherits = *ENDER3MAX*; *0.3nozzle* + +[printer:Creality Ender-3 Max (0.4 mm nozzle)] +inherits = *ENDER3MAX*; *0.4nozzle* +renamed_From = "Creality Ender-3 Max" + +[printer:Creality Ender-3 Max (0.5 mm nozzle)] +inherits = *ENDER3MAX*; *0.5nozzle* + +[printer:Creality Ender-3 Max (0.6 mm nozzle)] +inherits = *ENDER3MAX*; *0.6nozzle* + + + + +[printer:*ENDER4*] +inherits = *common*; *bowden*; *descendingz* bed_shape = 5x0,215x0,215x220,5x220 max_print_height = 300 printer_model = ENDER4 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER4\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-5] -inherits = *common*; *descendingz* -retract_length = 6 +[printer:Creality Ender-4 (0.3 mm nozzle)] +inherits = *ENDER4*; *0.3nozzle* + +[printer:Creality Ender-4 (0.4 mm nozzle)] +inherits = *ENDER4*; *0.4nozzle* +renamed_From = "Creality Ender-4" + +[printer:Creality Ender-4 (0.5 mm nozzle)] +inherits = *ENDER4*; *0.5nozzle* + +[printer:Creality Ender-4 (0.6 mm nozzle)] +inherits = *ENDER4*; *0.6nozzle* + + + +[printer:*ENDER5*] +inherits = *common*; *bowdenlong*; *descendingz* bed_shape = 5x2.5,225x2.5,225x222.5,5x222.5 max_print_height = 300 printer_model = ENDER5 @@ -1041,9 +1351,23 @@ printer_notes = Don't remove the following keywords! These keywords are used in machine_max_acceleration_e = 1000 machine_max_feedrate_z = 5 -[printer:Creality Ender-5 Plus] -inherits = *common*; *slowabl*; *descendingz* -retract_length = 6 +[printer:Creality Ender-5 (0.3 mm nozzle)] +inherits = *ENDER5*; *0.3nozzle* + +[printer:Creality Ender-5 (0.4 mm nozzle)] +inherits = *ENDER5*; *0.4nozzle* +renamed_From = "Creality Ender-5" + +[printer:Creality Ender-5 (0.5 mm nozzle)] +inherits = *ENDER5*; *0.5nozzle* + +[printer:Creality Ender-5 (0.6 mm nozzle)] +inherits = *ENDER5*; *0.6nozzle* + + + +[printer:*ENDER5PLUS*] +inherits = *common*; *bowdenlong*; *slowabl*; *descendingz* bed_shape = 5x5,355x5,355x355,5x355 max_print_height = 400 printer_model = ENDER5PLUS @@ -1053,199 +1377,538 @@ machine_max_feedrate_z = 5 machine_max_feedrate_x = 300 machine_max_feedrate_y = 300 -[printer:Creality Ender-6] -inherits = *common*; *descendingz* +[printer:Creality Ender-5 Plus (0.3 mm nozzle)] +inherits = *ENDER5PLUS*; *0.3nozzle* + +[printer:Creality Ender-5 Plus (0.4 mm nozzle)] +inherits = *ENDER5PLUS*; *0.4nozzle* +renamed_From = "Creality Ender-5 Plus" + +[printer:Creality Ender-5 Plus (0.5 mm nozzle)] +inherits = *ENDER5PLUS*; *0.5nozzle* + +[printer:Creality Ender-5 Plus (0.6 mm nozzle)] +inherits = *ENDER5PLUS*; *0.6nozzle* + + + +[printer:*ENDER6*] +inherits = *common*; *bowden*; *descendingz* bed_shape = 5x5,255x5,255x255,5x255 max_print_height = 400 printer_model = ENDER6 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER6\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-7] -inherits = *common*; *descendingz* +[printer:Creality Ender-6 (0.3 mm nozzle)] +inherits = *ENDER6*; *0.3nozzle* + +[printer:Creality Ender-6 (0.4 mm nozzle)] +inherits = *ENDER6*; *0.4nozzle* +renamed_From = "Creality Ender-6" + +[printer:Creality Ender-6 (0.5 mm nozzle)] +inherits = *ENDER6*; *0.5nozzle* + +[printer:Creality Ender-6 (0.6 mm nozzle)] +inherits = *ENDER6*; *0.6nozzle* + + + +[printer:*ENDER7*] +inherits = *common*; *bowden*; *descendingz* bed_shape = 5x5,245x5,245x245,5x245 max_print_height = 300 printer_model = ENDER7 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER7\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-2] -inherits = *common* -renamed_from = "Creality ENDER-2" +[printer:Creality Ender-7 (0.3 mm nozzle)] +inherits = *ENDER7*; *0.3nozzle* + +[printer:Creality Ender-7 (0.4 mm nozzle)] +inherits = *ENDER7*; *0.4nozzle* +renamed_From = "Creality Ender-7" + +[printer:Creality Ender-7 (0.5 mm nozzle)] +inherits = *ENDER7*; *0.5nozzle* + +[printer:Creality Ender-7 (0.6 mm nozzle)] +inherits = *ENDER7*; *0.6nozzle* + + + +[printer:*ENDER2*] +inherits = *common*; *bowden* bed_shape = 0x0,150x0,150x150,0x150 max_print_height = 200 printer_model = ENDER2 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER2\nPRINTER_HAS_BOWDEN -[printer:Creality Ender-2 Pro] -inherits = *common* -renamed_from = "Creality ENDER-2 Pro" +[printer:Creality Ender-2 (0.3 mm nozzle)] +inherits = *ENDER2*; *0.3nozzle* + +[printer:Creality Ender-2 (0.4 mm nozzle)] +inherits = *ENDER2*; *0.4nozzle* +renamed_From = "Creality Ender-2"; "Creality ENDER-2" + +[printer:Creality Ender-2 (0.5 mm nozzle)] +inherits = *ENDER2*; *0.5nozzle* + +[printer:Creality Ender-2 (0.6 mm nozzle)] +inherits = *ENDER2*; *0.6nozzle* + + + +[printer:*ENDER2PRO*] +inherits = *common*; *bowden* bed_shape = 2.5x2.5,160x2.5,160x160,2.5x160 max_print_height = 180 printer_model = ENDER2PRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER2PRO\nPRINTER_HAS_BOWDEN -[printer:Creality CR-5 Pro] -inherits = *common*; *slowabl*; *descendingz* -retract_length = 6 +[printer:Creality Ender-2 Pro (0.3 mm nozzle)] +inherits = *ENDER2PRO*; *0.3nozzle* + +[printer:Creality Ender-2 Pro (0.4 mm nozzle)] +inherits = *ENDER2PRO*; *0.4nozzle* +renamed_From = "Creality Ender-2 Pro"; "Creality ENDER-2 Pro" + +[printer:Creality Ender-2 Pro (0.5 mm nozzle)] +inherits = *ENDER2PRO*; *0.5nozzle* + +[printer:Creality Ender-2 Pro (0.6 mm nozzle)] +inherits = *ENDER2PRO*; *0.6nozzle* + + + +[printer:*CR5PRO*] +inherits = *common*; *bowdenlong*; *slowabl*; *descendingz* bed_shape = 5x5,295x5,295x220,5x220 max_print_height = 380 printer_model = CR5PRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR5PRO\nPRINTER_HAS_BOWDEN -[printer:Creality CR-5 Pro H] -inherits = *common*; *slowabl*; *descendingz* -retract_length = 3 +[printer:Creality CR-5 Pro (0.3 mm nozzle)] +inherits = *CR5PRO*; *0.3nozzle* + +[printer:Creality CR-5 Pro (0.4 mm nozzle)] +inherits = *CR5PRO*; *0.4nozzle* +renamed_From = "Creality CR-5 Pro" + +[printer:Creality CR-5 Pro (0.5 mm nozzle)] +inherits = *CR5PRO*; *0.5nozzle* + +[printer:Creality CR-5 Pro (0.6 mm nozzle)] +inherits = *CR5PRO*; *0.6nozzle* + + + +[printer:*CR5PROH*] +inherits = *common*; *bowdenallmetalhotend*; *slowabl*; *descendingz* bed_shape = 5x5,295x5,295x220,5x220 max_print_height = 380 printer_model = CR5PROH printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR5PROH\nPRINTER_HAS_BOWDEN -[printer:Creality CR-6 SE] -inherits = *common*; *straingauge*; *pauseprint* +[printer:Creality CR-5 Pro H (0.3 mm nozzle)] +inherits = *CR5PROH*; *0.3nozzle* + +[printer:Creality CR-5 Pro H (0.4 mm nozzle)] +inherits = *CR5PROH*; *0.4nozzle* +renamed_From = "Creality CR-5 Pro H" + +[printer:Creality CR-5 Pro H (0.5 mm nozzle)] +inherits = *CR5PROH*; *0.5nozzle* + +[printer:Creality CR-5 Pro H (0.6 mm nozzle)] +inherits = *CR5PROH*; *0.6nozzle* + + + +[printer:*CR6SE*] +inherits = *common*; *bowden*; *straingauge*; *pauseprint* bed_shape = 5x0,230x0,230x235,5x235 printer_model = CR6SE printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR6SE\nPRINTER_HAS_BOWDEN -[printer:Creality CR-6 Max] -inherits = *common*; *straingauge* -retract_length = 6 +[printer:Creality CR-6 SE (0.3 mm nozzle)] +inherits = *CR6SE*; *0.3nozzle* + +[printer:Creality CR-6 SE (0.4 mm nozzle)] +inherits = *CR6SE*; *0.4nozzle* +renamed_From = "Creality CR-6 SE" + +[printer:Creality CR-6 SE (0.5 mm nozzle)] +inherits = *CR6SE*; *0.5nozzle* + +[printer:Creality CR-6 SE (0.6 mm nozzle)] +inherits = *CR6SE*; *0.6nozzle* + + + +[printer:*CR6MAX*] +inherits = *common*; *bowdenlong*; *straingauge* bed_shape = 5x5,395x5,395x395,5x395 max_print_height = 400 printer_model = CR6MAX printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR6MAX\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 SMART] -inherits = *common*; *straingauge* -retract_length = 6 +[printer:Creality CR-6 Max (0.3 mm nozzle)] +inherits = *CR6MAX*; *0.3nozzle* + +[printer:Creality CR-6 Max (0.4 mm nozzle)] +inherits = *CR6MAX*; *0.4nozzle* +renamed_From = "Creality CR-6 Max" + +[printer:Creality CR-6 Max (0.5 mm nozzle)] +inherits = *CR6MAX*; *0.5nozzle* + +[printer:Creality CR-6 Max (0.6 mm nozzle)] +inherits = *CR6MAX*; *0.6nozzle* + + + +[printer:*CR10SMART*] +inherits = *common*; *bowdenlong*; *straingauge* bed_shape = 5x5,295x5,295x295,5x295 max_print_height = 400 printer_model = CR10SMART printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10SMART\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 Mini] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 SMART (0.3 mm nozzle)] +inherits = *CR10SMART*; *0.3nozzle* + +[printer:Creality CR-10 SMART (0.4 mm nozzle)] +inherits = *CR10SMART*; *0.4nozzle* +renamed_From = "Creality CR-10 SMART" + +[printer:Creality CR-10 SMART (0.5 mm nozzle)] +inherits = *CR10SMART*; *0.5nozzle* + +[printer:Creality CR-10 SMART (0.6 mm nozzle)] +inherits = *CR10SMART*; *0.6nozzle* + + + +[printer:*CR10MINI*] +inherits = *common*; *bowdenlong* bed_shape = 2.5x5,302.5x5,302.5x225,2.5x225 max_print_height = 300 printer_model = CR10MINI printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10MINI\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 Max] -inherits = *common*; *slowabl* -retract_length = 6 +[printer:Creality CR-10 Mini (0.3 mm nozzle)] +inherits = *CR10MINI*; *0.3nozzle* + +[printer:Creality CR-10 Mini (0.4 mm nozzle)] +inherits = *CR10MINI*; *0.4nozzle* +renamed_From = "Creality CR-10 Mini" + +[printer:Creality CR-10 Mini (0.5 mm nozzle)] +inherits = *CR10MINI*; *0.5nozzle* + +[printer:Creality CR-10 Mini (0.6 mm nozzle)] +inherits = *CR10MINI*; *0.6nozzle* + + + +[printer:*CR10MAX*] +inherits = *common*; *bowdenlong*; *slowabl* bed_shape = 5x5,445x5,445x445,5x445 max_print_height = 470 printer_model = CR10MAX printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10MAX\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 Max (0.3 mm nozzle)] +inherits = *CR10MAX*; *0.3nozzle* + +[printer:Creality CR-10 Max (0.4 mm nozzle)] +inherits = *CR10MAX*; *0.4nozzle* +renamed_From = "Creality CR-10 Max" + +[printer:Creality CR-10 Max (0.5 mm nozzle)] +inherits = *CR10MAX*; *0.5nozzle* + +[printer:Creality CR-10 Max (0.6 mm nozzle)] +inherits = *CR10MAX*; *0.6nozzle* + + + +[printer:*CR10*] +inherits = *common*; *bowdenlong* bed_shape = 5x5,305x5,305x305,5x305 max_print_height = 400 printer_model = CR10 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 V2] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 (0.3 mm nozzle)] +inherits = *CR10*; *0.3nozzle* + +[printer:Creality CR-10 (0.4 mm nozzle)] +inherits = *CR10*; *0.4nozzle* +renamed_From = "Creality CR-10" + +[printer:Creality CR-10 (0.5 mm nozzle)] +inherits = *CR10*; *0.5nozzle* + +[printer:Creality CR-10 (0.6 mm nozzle)] +inherits = *CR10*; *0.6nozzle* + + + +[printer:*CR10V2*] +inherits = *common*; *bowdenlong* bed_shape = 5x5,305x5,305x305,5x305 max_print_height = 400 printer_model = CR10V2 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10V2\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 V3] -inherits = *common* -retract_length = 1 +[printer:Creality CR-10 V2 (0.3 mm nozzle)] +inherits = *CR10V2*; *0.3nozzle* + +[printer:Creality CR-10 V2 (0.4 mm nozzle)] +inherits = *CR10V2*; *0.4nozzle* +renamed_From = "Creality CR-10 V2" + +[printer:Creality CR-10 V2 (0.5 mm nozzle)] +inherits = *CR10V2*; *0.5nozzle* + +[printer:Creality CR-10 V2 (0.6 mm nozzle)] +inherits = *CR10V2*; *0.6nozzle* + + + +[printer:*CR10V3*] +inherits = *common*; *directdriveextruder* bed_shape = 5x5,305x5,305x305,5x305 max_print_height = 400 printer_model = CR10V3 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10V3 -[printer:Creality CR-10 S] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 V3 (0.3 mm nozzle)] +inherits = *CR10V3*; *0.3nozzle* + +[printer:Creality CR-10 V3 (0.4 mm nozzle)] +inherits = *CR10V3*; *0.4nozzle* +renamed_From = "Creality CR-10 V3" + +[printer:Creality CR-10 V3 (0.5 mm nozzle)] +inherits = *CR10V3*; *0.5nozzle* + +[printer:Creality CR-10 V3 (0.6 mm nozzle)] +inherits = *CR10V3*; *0.6nozzle* + + + +[printer:*CR10S*] +inherits = *common*; *bowdenlong* bed_shape = 5x5,305x5,305x305,5x305 max_print_height = 400 printer_model = CR10S printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10S\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 S Pro] -inherits = *common*; *slowabl* -retract_length = 6 +[printer:Creality CR-10 S (0.3 mm nozzle)] +inherits = *CR10S*; *0.3nozzle* + +[printer:Creality CR-10 S (0.4 mm nozzle)] +inherits = *CR10S*; *0.4nozzle* +renamed_From = "Creality CR-10 S" + +[printer:Creality CR-10 S (0.5 mm nozzle)] +inherits = *CR10S*; *0.5nozzle* + +[printer:Creality CR-10 S (0.6 mm nozzle)] +inherits = *CR10S*; *0.6nozzle* + + + +[printer:*CR10SPRO*] +inherits = *common*; *bowdenlong*; *slowabl* bed_shape = 5x5,295x5,295x295,5x295 max_print_height = 400 printer_model = CR10SPRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10SPRO\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 S Pro V2] -inherits = *common*; *slowabl* -retract_length = 6 +[printer:Creality CR-10 S Pro (0.3 mm nozzle)] +inherits = *CR10SPRO*; *0.3nozzle* + +[printer:Creality CR-10 S Pro (0.4 mm nozzle)] +inherits = *CR10SPRO*; *0.4nozzle* +renamed_From = "Creality CR-10 S Pro" + +[printer:Creality CR-10 S Pro (0.5 mm nozzle)] +inherits = *CR10SPRO*; *0.5nozzle* + +[printer:Creality CR-10 S Pro (0.6 mm nozzle)] +inherits = *CR10SPRO*; *0.6nozzle* + + + +[printer:*CR10SPROV2*] +inherits = *common*; *bowdenlong*; *slowabl* bed_shape = 5x5,305x5,305x305,5x305 max_print_height = 400 printer_model = CR10SPROV2 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10SPROV2\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 S4] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 S Pro V2 (0.3 mm nozzle)] +inherits = *CR10SPROV2*; *0.3nozzle* + +[printer:Creality CR-10 S Pro V2 (0.4 mm nozzle)] +inherits = *CR10SPROV2*; *0.4nozzle* +renamed_From = "Creality CR-10 S Pro V2" + +[printer:Creality CR-10 S Pro V2 (0.5 mm nozzle)] +inherits = *CR10SPROV2*; *0.5nozzle* + +[printer:Creality CR-10 S Pro V2 (0.6 mm nozzle)] +inherits = *CR10SPROV2*; *0.6nozzle* + + + +[printer:*CR10S4*] +inherits = *common*; *bowdenlong* bed_shape = 5x5,395x5,395x395,5x395 max_print_height = 400 printer_model = CR10S4 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10S4\nPRINTER_HAS_BOWDEN -[printer:Creality CR-10 S5] -inherits = *common* -retract_length = 6 +[printer:Creality CR-10 S4 (0.3 mm nozzle)] +inherits = *CR10S4*; *0.3nozzle* + +[printer:Creality CR-10 S4 (0.4 mm nozzle)] +inherits = *CR10S4*; *0.4nozzle* +renamed_From = "Creality CR-10 S4" + +[printer:Creality CR-10 S4 (0.5 mm nozzle)] +inherits = *CR10S4*; *0.5nozzle* + +[printer:Creality CR-10 S4 (0.6 mm nozzle)] +inherits = *CR10S4*; *0.6nozzle* + + + +[printer:*CR10S5*] +inherits = *common*; *bowdenlong* bed_shape = 5x5,505x5,505x505,5x505 max_print_height = 500 printer_model = CR10S5 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10S5\nPRINTER_HAS_BOWDEN -[printer:Creality CR-20] -inherits = *common* +[printer:Creality CR-10 S5 (0.3 mm nozzle)] +inherits = *CR10S5*; *0.3nozzle* + +[printer:Creality CR-10 S5 (0.4 mm nozzle)] +inherits = *CR10S5*; *0.4nozzle* +renamed_From = "Creality CR-10 S5" + +[printer:Creality CR-10 S5 (0.5 mm nozzle)] +inherits = *CR10S5*; *0.5nozzle* + +[printer:Creality CR-10 S5 (0.6 mm nozzle)] +inherits = *CR10S5*; *0.6nozzle* + + + +[printer:*CR20*] +inherits = *common*; *bowden* printer_model = CR20 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR20\nPRINTER_HAS_BOWDEN -[printer:Creality CR-20 Pro] -inherits = *common*; *fastabl* -retract_length = 4 +[printer:Creality CR-20 (0.3 mm nozzle)] +inherits = *CR20*; *0.3nozzle* + +[printer:Creality CR-20 (0.4 mm nozzle)] +inherits = *CR20*; *0.4nozzle* +renamed_From = "Creality CR-20" + +[printer:Creality CR-20 (0.5 mm nozzle)] +inherits = *CR20*; *0.5nozzle* + +[printer:Creality CR-20 (0.6 mm nozzle)] +inherits = *CR20*; *0.6nozzle* + + + +[printer:*CR20PRO*] +inherits = *common*; *bowdencapricorn*; *fastabl* printer_model = CR20PRO printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR20PRO\nPRINTER_HAS_BOWDEN -[printer:Creality CR-200B] -inherits = *common*; *descendingz* +[printer:Creality CR-20 Pro (0.3 mm nozzle)] +inherits = *CR20PRO*; *0.3nozzle* + +[printer:Creality CR-20 Pro (0.4 mm nozzle)] +inherits = *CR20PRO*; *0.4nozzle* +renamed_From = "Creality CR-20 Pro" + +[printer:Creality CR-20 Pro (0.5 mm nozzle)] +inherits = *CR20PRO*; *0.5nozzle* + +[printer:Creality CR-20 Pro (0.6 mm nozzle)] +inherits = *CR20PRO*; *0.6nozzle* + + + +[printer:*CR200B*] +inherits = *common*; *bowden*; *descendingz* bed_shape = 5x5,195x5,195x195,5x195 max_print_height = 200 printer_model = CR200B printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR200B\nPRINTER_HAS_BOWDEN -[printer:Creality CR-8] -inherits = *common* +[printer:Creality CR-200B (0.3 mm nozzle)] +inherits = *CR200B*; *0.3nozzle* + +[printer:Creality CR-200B (0.4 mm nozzle)] +inherits = *CR200B*; *0.4nozzle* +renamed_From = "Creality CR-200B" + +[printer:Creality CR-200B (0.5 mm nozzle)] +inherits = *CR200B*; *0.5nozzle* + +[printer:Creality CR-200B (0.6 mm nozzle)] +inherits = *CR200B*; *0.6nozzle* + + + +[printer:*CR8*] +inherits = *common*; *bowden* bed_shape = 5x5,215x5,215x215,5x215 max_print_height = 210 printer_model = CR8 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR8\nPRINTER_HAS_BOWDEN -#[printer:Creality CR-X] -#inherits = *common*; *dualextruder* -#retract_length = 6,6 -#bed_shape = 5x5,295x5,295x295,5x295 -#max_print_height = 400 -#printer_model = CRX -#printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CRX\nPRINTER_HAS_BOWDEN +[printer:Creality CR-8 (0.3 mm nozzle)] +inherits = *CR8*; *0.3nozzle* -#[printer:Creality CR-X Pro] -#inherits = *common*; *dualextruder*; *slowabl* -#retract_length = 6,6 -#bed_shape = 5x5,295x5,295x295,5x295 -#max_print_height = 400 -#printer_model = CRXPRO -#printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CRXPRO\nPRINTER_HAS_BOWDEN +[printer:Creality CR-8 (0.4 mm nozzle)] +inherits = *CR8*; *0.4nozzle* +renamed_From = "Creality CR-8" -[printer:Creality Sermoon-D1] -inherits = *common*; *descendingz* -retract_length = 1 +[printer:Creality CR-8 (0.5 mm nozzle)] +inherits = *CR8*; *0.5nozzle* + +[printer:Creality CR-8 (0.6 mm nozzle)] +inherits = *CR8*; *0.6nozzle* + + + +[printer:*SERMOOND1*] +inherits = *common*; *directdriveextruder*; *descendingz* bed_shape = 5x5,275x5,275x255,5x255 max_print_height = 310 printer_model = SERMOOND1 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_SERMOOND1\nPRINTER_HAS_BOWDEN + +[printer:Creality Sermoon-D1 (0.3 mm nozzle)] +inherits = *SERMOOND1*; *0.3nozzle* + +[printer:Creality Sermoon-D1 (0.4 mm nozzle)] +inherits = *SERMOOND1*; *0.4nozzle* +renamed_From = "Creality Sermoon-D1" + +[printer:Creality Sermoon-D1 (0.5 mm nozzle)] +inherits = *SERMOOND1*; *0.5nozzle* + +[printer:Creality Sermoon-D1 (0.6 mm nozzle)] +inherits = *SERMOOND1*; *0.6nozzle* From 2317e9c2b9b14d3a0f272100b1d2ea2a0a47cfea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 28 Jul 2022 13:42:14 +0200 Subject: [PATCH 072/131] Added information that the concentric infill is also affected by the selected perimeter generator. --- src/libslic3r/PrintConfig.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1986ae979..e38ad006c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3066,7 +3066,8 @@ void PrintConfigDef::init_fff_params() def->category = L("Layers and Perimeters"); def->tooltip = L("Classic perimeter generator produces perimeters with constant extrusion width and for " "very thin areas is used gap-fill. " - "Arachne engine produces perimeters with variable extrusion width."); + "Arachne engine produces perimeters with variable extrusion width. " + "This setting also affects the Concentric infill."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("classic"); def->enum_values.push_back("arachne"); From 7060f3d1b3f205b1830dad0730a253b0c2862be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 28 Jul 2022 15:42:36 +0200 Subject: [PATCH 073/131] Fixed an issue that when wall_transition_filter_deviation contained a non-percent value, then it contained the wrong value. --- src/libslic3r/Arachne/WallToolPaths.cpp | 1 + src/libslic3r/Arachne/WallToolPaths.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index 6204a0546..540f8e932 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -34,6 +34,7 @@ WallToolPaths::WallToolPaths(const Polygons& outline, const coord_t bead_width_0 , min_feature_size(scaled(print_object_config.min_feature_size.value)) , min_bead_width(scaled(print_object_config.min_bead_width.value)) , small_area_length(static_cast(bead_width_0) / 2.) + , wall_transition_filter_deviation(scaled(print_object_config.wall_transition_filter_deviation.value)) , toolpaths_generated(false) , print_object_config(print_object_config) { diff --git a/src/libslic3r/Arachne/WallToolPaths.hpp b/src/libslic3r/Arachne/WallToolPaths.hpp index 9be1159b3..ed62d9a98 100644 --- a/src/libslic3r/Arachne/WallToolPaths.hpp +++ b/src/libslic3r/Arachne/WallToolPaths.hpp @@ -114,10 +114,10 @@ private: coord_t min_feature_size; // toolpaths; // Date: Fri, 29 Jul 2022 08:58:06 +0200 Subject: [PATCH 074/131] Updated the comment about the missing twin edge in the post-processed Voronoi diagram. --- src/libslic3r/Arachne/WallToolPaths.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index 540f8e932..11254d828 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -482,7 +482,7 @@ const std::vector &WallToolPaths::generate() // The functions above could produce intersecting polygons that could cause a crash inside Arachne. // Applying Clipper union should be enough to get rid of this issue. // Clipper union also fixed an issue in Arachne that in post-processing Voronoi diagram, some edges - // didn't have twin edges (this probably isn't an issue in Boost Voronoi generator). + // didn't have twin edges. (a non-planar Voronoi diagram probably caused this). prepared_outline = union_(prepared_outline); if (area(prepared_outline) <= 0) { From 0161a59a93e326d5e573cffe61b9549a4d925189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Fri, 29 Jul 2022 21:14:27 +0200 Subject: [PATCH 075/131] Fix of #8472: The middle perimeter was missing for some specific configurations due to numeric rounding errors. --- .../DistributedBeadingStrategy.cpp | 21 +++++++++++--- .../Arachne/SkeletalTrapezoidation.cpp | 7 +++-- tests/libslic3r/test_arachne.cpp | 29 +++++++++++++++++++ 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp index 494b7b0b6..c8a84c401 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp @@ -21,7 +21,7 @@ DistributedBeadingStrategy::DistributedBeadingStrategy(const coord_t optimal_wid name = "DistributedBeadingStrategy"; } -DistributedBeadingStrategy::Beading DistributedBeadingStrategy::compute(coord_t thickness, coord_t bead_count) const +DistributedBeadingStrategy::Beading DistributedBeadingStrategy::compute(const coord_t thickness, const coord_t bead_count) const { Beading ret; @@ -40,18 +40,24 @@ DistributedBeadingStrategy::Beading DistributedBeadingStrategy::compute(coord_t for (coord_t bead_idx = 0; bead_idx < bead_count; bead_idx++) weights[bead_idx] = getWeight(bead_idx); - const float total_weight = std::accumulate(weights.cbegin(), weights.cend(), 0.f); + const float total_weight = std::accumulate(weights.cbegin(), weights.cend(), 0.f); + coord_t accumulated_width = 0; for (coord_t bead_idx = 0; bead_idx < bead_count; bead_idx++) { - const float weight_fraction = weights[bead_idx] / total_weight; + const float weight_fraction = weights[bead_idx] / total_weight; const coord_t splitup_left_over_weight = to_be_divided * weight_fraction; - const coord_t width = optimal_width + splitup_left_over_weight; + const coord_t width = (bead_idx == bead_count - 1) ? thickness - accumulated_width : optimal_width + splitup_left_over_weight; + + // Be aware that toolpath_locations is computed by dividing the width by 2, so toolpath_locations + // could be off by 1 because of rounding errors. if (bead_idx == 0) ret.toolpath_locations.emplace_back(width / 2); else ret.toolpath_locations.emplace_back(ret.toolpath_locations.back() + (ret.bead_widths.back() + width) / 2); ret.bead_widths.emplace_back(width); + accumulated_width += width; } ret.left_over = 0; + assert((accumulated_width + ret.left_over) == thickness); } else if (bead_count == 2) { const coord_t outer_width = thickness / 2; ret.bead_widths.emplace_back(outer_width); @@ -68,6 +74,13 @@ DistributedBeadingStrategy::Beading DistributedBeadingStrategy::compute(coord_t ret.left_over = thickness; } + assert(([&ret = std::as_const(ret), thickness]() -> bool { + coord_t total_bead_width = 0; + for (const coord_t &bead_width : ret.bead_widths) + total_bead_width += bead_width; + return (total_bead_width + ret.left_over) == thickness; + }())); + return ret; } diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 34d6d058d..fbd3379d5 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -525,7 +525,7 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) #endif #ifdef ARACHNE_DEBUG - assert(is_voronoi_diagram_planar_intersection(voronoi_diagram)); + assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram)); #endif // Try to detect cases when some Voronoi vertex is missing and when @@ -1911,7 +1911,10 @@ void SkeletalTrapezoidation::generateJunctions(ptr_vector_t& for (junction_idx = (std::max(size_t(1), beading->toolpath_locations.size()) - 1) / 2; junction_idx < num_junctions; junction_idx--) { coord_t bead_R = beading->toolpath_locations[junction_idx]; - if (bead_R <= start_R) + // toolpath_locations computed inside DistributedBeadingStrategy be off by 1 because of rounding errors. + // In GH issue #8472, these roundings errors caused missing the middle extrusion. + // Adding some epsilon should help resolve those cases. + if (bead_R <= start_R + scaled(0.005)) { // Junction coinciding with start node is used in this function call break; } diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index 53c31169a..f2c1f7c4b 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -73,3 +73,32 @@ TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { } } +// This test case was distilled from GitHub issue #8472. +// Where for wall_distribution_count == 3 sometime middle perimeter was missing. +TEST_CASE("Arachne - Missing perimeter - #8472", "[ArachneMissingPerimeter8472]") { + Polygon poly = { + Point(-9000000, 8054793), + Point( 7000000, 8054793), + Point( 7000000, 10211874), + Point(-8700000, 10211874), + Point(-9000000, 9824444) + }; + + Polygons polygons = {poly}; + coord_t spacing = 437079; + coord_t inset_count = 3; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); + print_object_config.wall_distribution_count.setInt(3); + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, print_object_config, PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + draw_extrusion(debug_out_path("arachne-missing-perimeter-8472.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif + + REQUIRE(perimeters.size() == 3); +} + From caf3e258b846add91d0439f7cfbab25134c38689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Fri, 29 Jul 2022 16:02:29 +0200 Subject: [PATCH 076/131] Fixed compiler warnings. --- src/libslic3r/Arachne/utils/ExtrusionLine.cpp | 4 ++-- src/libslic3r/Fill/Lightning/Generator.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index 6a6ac0f0f..a5734f478 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -268,13 +268,13 @@ void extrusion_paths_append(ExtrusionPaths &dst, const ClipperLib_Z::Paths &extr { for (const ClipperLib_Z::Path &extrusion_path : extrusion_paths) { ThickPolyline thick_polyline = Arachne::to_thick_polyline(extrusion_path); - Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled(0.05), SCALED_EPSILON)); + Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled(0.05), float(SCALED_EPSILON))); } } void extrusion_paths_append(ExtrusionPaths &dst, const Arachne::ExtrusionLine &extrusion, const ExtrusionRole role, const Flow &flow) { ThickPolyline thick_polyline = Arachne::to_thick_polyline(extrusion); - Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled(0.05), SCALED_EPSILON)); + Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled(0.05), float(SCALED_EPSILON))); } } // namespace Slic3r \ No newline at end of file diff --git a/src/libslic3r/Fill/Lightning/Generator.cpp b/src/libslic3r/Fill/Lightning/Generator.cpp index 48377f427..bd83bcfff 100644 --- a/src/libslic3r/Fill/Lightning/Generator.cpp +++ b/src/libslic3r/Fill/Lightning/Generator.cpp @@ -70,7 +70,7 @@ void Generator::generateInitialInternalOverhangs(const PrintObject &print_object // Remove the part of the infill area that is already supported by the walls. Polygons overhang = diff(offset(infill_area_here, -float(m_wall_supporting_radius)), infill_area_above); // Filter out unprintable polygons and near degenerated polygons (three almost collinear points and so). - overhang = opening(overhang, SCALED_EPSILON, SCALED_EPSILON); + overhang = opening(overhang, float(SCALED_EPSILON), float(SCALED_EPSILON)); m_overhang_per_layer[layer_nr] = overhang; infill_area_above = std::move(infill_area_here); From 1b934518b3a7d22ed7d751aee5a03e731c0fc1b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 2 Aug 2022 13:20:54 +0200 Subject: [PATCH 077/131] Modified text drawing methods in debugging visualization (SVG) to support changing font size. --- src/libslic3r/SVG.cpp | 24 +++++++++++++----------- src/libslic3r/SVG.hpp | 4 ++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/SVG.cpp b/src/libslic3r/SVG.cpp index 6a743b1eb..4928d5433 100644 --- a/src/libslic3r/SVG.cpp +++ b/src/libslic3r/SVG.cpp @@ -274,26 +274,28 @@ std::string SVG::get_path_d(const ClipperLib::Path &path, double scale, bool clo return d.str(); } -void SVG::draw_text(const Point &pt, const char *text, const char *color) +void SVG::draw_text(const Point &pt, const char *text, const char *color, const coordf_t font_size) { fprintf(this->f, - "%s", - to_svg_x(pt(0)-origin(0)), - to_svg_y(pt(1)-origin(1)), + R"(%s)", + to_svg_x(float(pt.x() - origin.x())), + to_svg_y(float(pt.y() - origin.y())), + font_size, color, text); } -void SVG::draw_legend(const Point &pt, const char *text, const char *color) +void SVG::draw_legend(const Point &pt, const char *text, const char *color, const coordf_t font_size) { fprintf(this->f, - "", - to_svg_x(pt(0)-origin(0)), - to_svg_y(pt(1)-origin(1)), + R"()", + to_svg_x(float(pt.x() - origin.x())), + to_svg_y(float(pt.y() - origin.y())), color); fprintf(this->f, - "%s", - to_svg_x(pt(0)-origin(0)) + 20.f, - to_svg_y(pt(1)-origin(1)), + R"(%s)", + to_svg_x(float(pt.x() - origin.x())) + 20.f, + to_svg_y(float(pt.y() - origin.y())), + font_size, "black", text); } diff --git a/src/libslic3r/SVG.hpp b/src/libslic3r/SVG.hpp index 314fae9b9..3ff2213d8 100644 --- a/src/libslic3r/SVG.hpp +++ b/src/libslic3r/SVG.hpp @@ -72,8 +72,8 @@ public: void draw(const ClipperLib::Path &polygon, double scale, std::string fill = "grey", coordf_t stroke_width = 0); void draw(const ClipperLib::Paths &polygons, double scale, std::string fill = "grey", coordf_t stroke_width = 0); - void draw_text(const Point &pt, const char *text, const char *color); - void draw_legend(const Point &pt, const char *text, const char *color); + void draw_text(const Point &pt, const char *text, const char *color, coordf_t font_size = 20.f); + void draw_legend(const Point &pt, const char *text, const char *color, coordf_t font_size = 10.f); void Close(); From b8c3905e829d941d1e950ecebf45b47d46e99067 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 4 Aug 2022 15:47:50 +0200 Subject: [PATCH 078/131] Fix crashing SLA tests on Win --- tests/sla_print/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/sla_print/CMakeLists.txt b/tests/sla_print/CMakeLists.txt index dc583f1a1..1cfa7d6c1 100644 --- a/tests/sla_print/CMakeLists.txt +++ b/tests/sla_print/CMakeLists.txt @@ -7,5 +7,9 @@ add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests_main.cpp target_link_libraries(${_TEST_NAME}_tests test_common libslic3r) set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") +if (WIN32) + prusaslicer_copy_dlls(${_TEST_NAME}_tests) +endif() + # catch_discover_tests(${_TEST_NAME}_tests TEST_PREFIX "${_TEST_NAME}: ") add_test(${_TEST_NAME}_tests ${_TEST_NAME}_tests ${CATCH_EXTRA_ARGS}) From 54c5c116f64f8be6b5b58354b5f82d2bf74c2e95 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Thu, 4 Aug 2022 18:22:27 +0200 Subject: [PATCH 079/131] Creality.ini: Add Ender-3 V2 Neo, Ender-3 Max Neo, CR-10 SMART Pro printers --- resources/profiles/Creality.ini | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 351700302..9f0dbfef5 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -50,6 +50,15 @@ bed_model = ender3v2_bed.stl bed_texture = ender3v2.svg default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY +[printer_model:ENDER3V2NEO] +name = Creality Ender-3 V2 Neo +variants = 0.4; 0.3; 0.5; 0.6 +technology = FFF +family = ENDER +bed_model = ender3v2_bed.stl +bed_texture = ender3v2.svg +default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY + [printer_model:ENDER3S1] name = Creality Ender-3 S1 variants = 0.4; 0.3; 0.5; 0.6 @@ -77,6 +86,15 @@ bed_model = cr10v2_bed.stl bed_texture = cr10spro.svg default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY +[printer_model:ENDER3MAXNEO] +name = Creality Ender-3 Max Neo +variants = 0.4; 0.3; 0.5; 0.6 +technology = FFF +family = ENDER +bed_model = cr10v2_bed.stl +bed_texture = cr10spro.svg +default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY + [printer_model:ENDER4] name = Creality Ender-4 variants = 0.4; 0.3; 0.5; 0.6 @@ -185,6 +203,15 @@ bed_model = cr10v2_bed.stl bed_texture = cr10spro.svg default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY +[printer_model:CR10SMARTPRO] +name = Creality CR-10 SMART Pro +variants = 0.4; 0.3; 0.5; 0.6 +technology = FFF +family = CR +bed_model = cr10v2_bed.stl +bed_texture = cr10spro.svg +default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY + [printer_model:CR10MINI] name = Creality CR-10 Mini variants = 0.4; 0.3; 0.5; 0.6 @@ -1251,6 +1278,26 @@ inherits = *ENDER3V2*; *0.6nozzle* +[printer:*ENDER3V2NEO*] +inherits = *common*; *bowden*; *fastabl* +bed_shape = 5x0,215x0,215x220,5x220 +max_print_height = 250 +printer_model = ENDER3V2NEO +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3V2NEO\nPRINTER_HAS_BOWDEN + +[printer:Creality Ender-3 V2 Neo (0.3 mm nozzle)] +inherits = *ENDER3V2NEO*; *0.3nozzle* + +[printer:Creality Ender-3 V2 Neo (0.4 mm nozzle)] +inherits = *ENDER3V2NEO*; *0.4nozzle* + +[printer:Creality Ender-3 V2 Neo (0.5 mm nozzle)] +inherits = *ENDER3V2NEO*; *0.5nozzle* + +[printer:Creality Ender-3 V2 Neo (0.6 mm nozzle)] +inherits = *ENDER3V2NEO*; *0.6nozzle* + + [printer:*ENDER3S1*] inherits = *common*; *bowden*; *spriteextruder*; *pauseprint* @@ -1319,6 +1366,26 @@ inherits = *ENDER3MAX*; *0.6nozzle* +[printer:*ENDER3MAXNEO*] +inherits = *common*; *bowdenlong*; *slowabl* +bed_shape = 5x5,295x5,295x295,5x295 +max_print_height = 320 +printer_model = ENDER3MAXNEO +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_ENDER3MAXNEO\nPRINTER_HAS_BOWDEN + +[printer:Creality Ender-3 Max Neo (0.3 mm nozzle)] +inherits = *ENDER3MAXNEO*; *0.3nozzle* + +[printer:Creality Ender-3 Max Neo (0.4 mm nozzle)] +inherits = *ENDER3MAXNEO*; *0.4nozzle* + +[printer:Creality Ender-3 Max Neo (0.5 mm nozzle)] +inherits = *ENDER3MAXNEO*; *0.5nozzle* + +[printer:Creality Ender-3 Max Neo (0.6 mm nozzle)] +inherits = *ENDER3MAXNEO*; *0.6nozzle* + + [printer:*ENDER4*] inherits = *common*; *bowden*; *descendingz* @@ -1589,6 +1656,27 @@ inherits = *CR10SMART*; *0.6nozzle* +[printer:*CR10SMARTPRO*] +inherits = *common*; *bowdenlong*; *slowabl*; *spriteextruder* +bed_shape = 5x5,295x5,295x295,5x295 +max_print_height = 400 +printer_model = CR10SMARTPRO +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_CR10SMARTPRO\nPRINTER_HAS_BOWDEN + +[printer:Creality CR-10 SMART Pro (0.3 mm nozzle)] +inherits = *CR10SMARTPRO*; *0.3nozzle* + +[printer:Creality CR-10 SMART Pro (0.4 mm nozzle)] +inherits = *CR10SMARTPRO*; *0.4nozzle* + +[printer:Creality CR-10 SMART Pro (0.5 mm nozzle)] +inherits = *CR10SMARTPRO*; *0.5nozzle* + +[printer:Creality CR-10 SMART Pro (0.6 mm nozzle)] +inherits = *CR10SMARTPRO*; *0.6nozzle* + + + [printer:*CR10MINI*] inherits = *common*; *bowdenlong* bed_shape = 2.5x5,302.5x5,302.5x225,2.5x225 From 3c188c5a4fc9c4a3edd92762395b121dd1ca14e9 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Thu, 4 Aug 2022 18:28:06 +0200 Subject: [PATCH 080/131] Creality.ini: Add Geeetech Matte PLA --- resources/profiles/Creality.ini | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 9f0dbfef5..6f6c5b40e 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -1057,7 +1057,19 @@ first_layer_temperature = 210 first_layer_bed_temperature = 60 filament_cost = 22.99 filament_density = 1.24 -filament_colour = #001ca8 +filament_colour = #001CA8 + +[filament:Geeetech Matte PLA @CREALITY] +inherits = *PLA* +filament_vendor = Geeetech +temperature = 195 +bed_temperature = 60 +first_layer_temperature = 200 +first_layer_bed_temperature = 60 +filament_cost = 26.99 +filament_density = 1.38 +filament_colour = #FF4640 +filament_spool_weight = 180 From c9ddf7315ed8f17ef43ad5e3c0ab33fd0adb32b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Fri, 5 Aug 2022 08:16:45 +0200 Subject: [PATCH 081/131] Replaced parameters wall_add_middle_threshold and wall_split_middle_threshold with automatic computation based on extrusion width. That allows computed better values in cases when the extrusion width of the first layer or for the infill differs from the extrusion width for perimeters. Parameters min_feature_size and wall_transition_length now can be set in percentages, and then they will be calculated based on nozzle size. Old profiles with default values are forced to replace old default values with new default values in percentages. --- src/libslic3r/Arachne/WallToolPaths.cpp | 37 +++++++++++------- src/libslic3r/Arachne/WallToolPaths.hpp | 5 ++- src/libslic3r/Fill/Fill.cpp | 1 + src/libslic3r/Fill/FillBase.hpp | 2 + src/libslic3r/Fill/FillConcentric.cpp | 4 +- src/libslic3r/Format/3mf.cpp | 23 ++++++++++-- src/libslic3r/PerimeterGenerator.cpp | 2 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 50 ++++++------------------- src/libslic3r/PrintConfig.hpp | 6 +-- src/libslic3r/PrintObject.cpp | 2 - src/slic3r/GUI/ConfigManipulation.cpp | 2 - src/slic3r/GUI/Tab.cpp | 2 - tests/libslic3r/test_arachne.cpp | 4 +- 14 files changed, 70 insertions(+), 72 deletions(-) diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index 11254d828..3552f6680 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -24,31 +24,37 @@ namespace Slic3r::Arachne { WallToolPaths::WallToolPaths(const Polygons& outline, const coord_t bead_width_0, const coord_t bead_width_x, - const size_t inset_count, const coord_t wall_0_inset, const PrintObjectConfig &print_object_config, const PrintConfig &print_config) + const size_t inset_count, const coord_t wall_0_inset, const coordf_t layer_height, + const PrintObjectConfig &print_object_config, const PrintConfig &print_config) : outline(outline) , bead_width_0(bead_width_0) , bead_width_x(bead_width_x) , inset_count(inset_count) , wall_0_inset(wall_0_inset) + , layer_height(layer_height) , print_thin_walls(Slic3r::Arachne::fill_outline_gaps) , min_feature_size(scaled(print_object_config.min_feature_size.value)) , min_bead_width(scaled(print_object_config.min_bead_width.value)) , small_area_length(static_cast(bead_width_0) / 2.) , wall_transition_filter_deviation(scaled(print_object_config.wall_transition_filter_deviation.value)) + , wall_transition_length(scaled(print_object_config.wall_transition_length.value)) , toolpaths_generated(false) , print_object_config(print_object_config) { - if (const auto &min_bead_width_opt = print_object_config.min_bead_width; min_bead_width_opt.percent) { - assert(!print_config.nozzle_diameter.empty()); - double min_nozzle_diameter = *std::min_element(print_config.nozzle_diameter.values.begin(), print_config.nozzle_diameter.values.end()); - this->min_bead_width = scaled(min_bead_width_opt.value * 0.01 * min_nozzle_diameter); - } + assert(!print_config.nozzle_diameter.empty()); + this->min_nozzle_diameter = float(*std::min_element(print_config.nozzle_diameter.values.begin(), print_config.nozzle_diameter.values.end())); - if (const auto &wall_transition_filter_deviation_opt = print_object_config.wall_transition_filter_deviation; wall_transition_filter_deviation_opt.percent) { - assert(!print_config.nozzle_diameter.empty()); - double min_nozzle_diameter = *std::min_element(print_config.nozzle_diameter.values.begin(), print_config.nozzle_diameter.values.end()); - this->wall_transition_filter_deviation = scaled(wall_transition_filter_deviation_opt.value * 0.01 * min_nozzle_diameter); - } + if (const auto &min_feature_size_opt = print_object_config.min_feature_size; min_feature_size_opt.percent) + this->min_feature_size = scaled(min_feature_size_opt.value * 0.01 * this->min_nozzle_diameter); + + if (const auto &min_bead_width_opt = print_object_config.min_bead_width; min_bead_width_opt.percent) + this->min_bead_width = scaled(min_bead_width_opt.value * 0.01 * this->min_nozzle_diameter); + + if (const auto &wall_transition_filter_deviation_opt = print_object_config.wall_transition_filter_deviation; wall_transition_filter_deviation_opt.percent) + this->wall_transition_filter_deviation = scaled(wall_transition_filter_deviation_opt.value * 0.01 * this->min_nozzle_diameter); + + if (const auto &wall_transition_length_opt = print_object_config.wall_transition_length; wall_transition_length_opt.percent) + this->wall_transition_length = scaled(wall_transition_length_opt.value * 0.01 * this->min_nozzle_diameter); } void simplify(Polygon &thiss, const int64_t smallest_line_segment_squared, const int64_t allowed_error_distance_squared) @@ -490,9 +496,12 @@ const std::vector &WallToolPaths::generate() return toolpaths; } - const coord_t wall_transition_length = scaled(this->print_object_config.wall_transition_length.value); - const double wall_split_middle_threshold = this->print_object_config.wall_split_middle_threshold.value / 100.; // For an uneven nr. of lines: When to split the middle wall into two. - const double wall_add_middle_threshold = this->print_object_config.wall_add_middle_threshold.value / 100.; // For an even nr. of lines: When to add a new middle in between the innermost two walls. + const float external_perimeter_extrusion_width = Flow::rounded_rectangle_extrusion_width_from_spacing(unscale(bead_width_0), float(this->layer_height)); + const float perimeter_extrusion_width = Flow::rounded_rectangle_extrusion_width_from_spacing(unscale(bead_width_x), float(this->layer_height)); + + const double wall_split_middle_threshold = std::clamp(2. * unscaled(this->min_bead_width) / external_perimeter_extrusion_width - 1., 0.01, 0.99); // For an uneven nr. of lines: When to split the middle wall into two. + const double wall_add_middle_threshold = std::clamp(unscaled(this->min_bead_width) / perimeter_extrusion_width, 0.01, 0.99); // For an even nr. of lines: When to add a new middle in between the innermost two walls. + const int wall_distribution_count = this->print_object_config.wall_distribution_count.value; const size_t max_bead_count = (inset_count < std::numeric_limits::max() / 2) ? 2 * inset_count : std::numeric_limits::max(); const auto beading_strat = BeadingStrategyFactory::makeStrategy diff --git a/src/libslic3r/Arachne/WallToolPaths.hpp b/src/libslic3r/Arachne/WallToolPaths.hpp index ed62d9a98..b0bed1241 100644 --- a/src/libslic3r/Arachne/WallToolPaths.hpp +++ b/src/libslic3r/Arachne/WallToolPaths.hpp @@ -31,7 +31,7 @@ public: * \param inset_count The maximum number of parallel extrusion lines that make up the wall * \param wall_0_inset How far to inset the outer wall, to make it adhere better to other walls. */ - WallToolPaths(const Polygons& outline, coord_t bead_width_0, coord_t bead_width_x, size_t inset_count, coord_t wall_0_inset, const PrintObjectConfig &print_object_config, const PrintConfig &print_config); + WallToolPaths(const Polygons& outline, coord_t bead_width_0, coord_t bead_width_x, size_t inset_count, coord_t wall_0_inset, coordf_t layer_height, const PrintObjectConfig &print_object_config, const PrintConfig &print_config); /*! * Generates the Toolpaths @@ -110,11 +110,14 @@ private: coord_t bead_width_x; // toolpaths; //layer()->height; for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index b07cca25e..88f437b9d 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -61,6 +61,8 @@ struct FillParams // For Concentric infill, to switch between Classic and Arachne. bool use_arachne { false }; + // Layer height for Concentric infill with Arachne. + coordf_t layer_height { 0.f }; }; static_assert(IsTriviallyCopyable::value, "FillParams class is not POD (and it should be - see constructor)."); diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index f692babc6..17bdfafaf 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -77,8 +77,8 @@ void FillConcentric::_fill_surface_single(const FillParams ¶ms, if (params.density > 0.9999f && !params.dont_adjust) { coord_t loops_count = std::max(bbox_size.x(), bbox_size.y()) / min_spacing + 1; - Polygons polygons = offset(expolygon, min_spacing / 2); - Arachne::WallToolPaths wallToolPaths(polygons, min_spacing, min_spacing, loops_count, 0, *this->print_object_config, *this->print_config); + Polygons polygons = offset(expolygon, float(min_spacing) / 2.f); + Arachne::WallToolPaths wallToolPaths(polygons, min_spacing, min_spacing, loops_count, 0, params.layer_height, *this->print_object_config, *this->print_config); std::vector loops = wallToolPaths.getToolPaths(); std::vector all_extrusions; diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 446aa38ba..bf6479ddf 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -454,6 +454,7 @@ namespace Slic3r { bool load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, bool check_version); unsigned int version() const { return m_version; } + boost::optional prusaslicer_generator_version() const { return m_prusaslicer_generator_version; } private: void _destroy_xml_parser(); @@ -3098,8 +3099,7 @@ bool _3MF_Exporter::_add_custom_gcode_per_print_z_file_to_archive( mz_zip_archiv } // Perform conversions based on the config values available. -//FIXME provide a version of PrusaSlicer that stored the project file (3MF). -static void handle_legacy_project_loaded(unsigned int version_project_file, DynamicPrintConfig& config) +static void handle_legacy_project_loaded(unsigned int version_project_file, DynamicPrintConfig& config, const boost::optional& prusaslicer_generator_version) { if (! config.has("brim_separation")) { if (auto *opt_elephant_foot = config.option("elefant_foot_compensation", false); opt_elephant_foot) { @@ -3108,6 +3108,23 @@ static void handle_legacy_project_loaded(unsigned int version_project_file, Dyna opt_brim_separation->value = opt_elephant_foot->value; } } + + // In PrusaSlicer 2.5.0-alpha2 and 2.5.0-alpha3, we introduce several parameters for Arachne that depend + // on nozzle size . Later we decided to make default values for those parameters computed automatically + // until the user changes them. + if (prusaslicer_generator_version && *prusaslicer_generator_version >= *Semver::parse("2.5.0-alpha2") && *prusaslicer_generator_version <= *Semver::parse("2.5.0-alpha3")) { + if (auto *opt_wall_transition_length = config.option("wall_transition_length", false); + opt_wall_transition_length && !opt_wall_transition_length->percent && opt_wall_transition_length->value == 0.4) { + opt_wall_transition_length->percent = true; + opt_wall_transition_length->value = 100; + } + + if (auto *opt_min_feature_size = config.option("min_feature_size", false); + opt_min_feature_size && !opt_min_feature_size->percent && opt_min_feature_size->value == 0.1) { + opt_min_feature_size->percent = true; + opt_min_feature_size->value = 25; + } + } } bool is_project_3mf(const std::string& filename) @@ -3150,7 +3167,7 @@ bool load_3mf(const char* path, DynamicPrintConfig& config, ConfigSubstitutionCo _3MF_Importer importer; bool res = importer.load_model_from_file(path, *model, config, config_substitutions, check_version); importer.log_errors(); - handle_legacy_project_loaded(importer.version(), config); + handle_legacy_project_loaded(importer.version(), config, importer.prusaslicer_generator_version()); return res; } diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 03f125320..dafa850cd 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -574,7 +574,7 @@ void PerimeterGenerator::process_arachne() ExPolygons last = offset_ex(surface.expolygon.simplify_p(m_scaled_resolution), - float(ext_perimeter_width / 2. - ext_perimeter_spacing / 2.)); Polygons last_p = to_polygons(last); - Arachne::WallToolPaths wallToolPaths(last_p, ext_perimeter_spacing, perimeter_spacing, coord_t(loop_number + 1), 0, *this->object_config, *this->print_config); + Arachne::WallToolPaths wallToolPaths(last_p, ext_perimeter_spacing, perimeter_spacing, coord_t(loop_number + 1), 0, layer_height, *this->object_config, *this->print_config); std::vector perimeters = wallToolPaths.getToolPaths(); loop_number = int(perimeters.size()) - 1; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 4664cffc1..57386e726 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -448,7 +448,7 @@ static std::vector s_Preset_print_options { "wipe_tower_width", "wipe_tower_rotation_angle", "wipe_tower_brim_width", "wipe_tower_bridging", "single_extruder_multi_material_priming", "mmu_segmented_region_max_width", "wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits", "perimeter_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle", - "wall_distribution_count", "wall_split_middle_threshold", "wall_add_middle_threshold", "min_feature_size", "min_bead_width" + "wall_distribution_count", "min_feature_size", "min_bead_width" }; static std::vector s_Preset_filament_options { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e38ad006c..579f1aebb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3076,15 +3076,16 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(PerimeterGeneratorType::Arachne)); - def = this->add("wall_transition_length", coFloat); + def = this->add("wall_transition_length", coFloatOrPercent); def->label = L("Perimeter transition length"); def->category = L("Advanced"); def->tooltip = L("When transitioning between different numbers of perimeters as the part becomes " - "thinner, a certain amount of space is allotted to split or join the perimeter segments."); - def->sidetext = L("mm"); + "thinner, a certain amount of space is allotted to split or join the perimeter segments. " + "If expressed as a percentage (for example 100%), it will be computed based on the nozzle diameter."); + def->sidetext = L("mm or %"); def->mode = comExpert; def->min = 0; - def->set_default_value(new ConfigOptionFloat(0.4)); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true)); def = this->add("wall_transition_filter_deviation", coFloatOrPercent); def->label = L("Perimeter transitioning filter margin"); @@ -3123,46 +3124,17 @@ void PrintConfigDef::init_fff_params() def->min = 1; def->set_default_value(new ConfigOptionInt(1)); - def = this->add("wall_split_middle_threshold", coPercent); - def->label = L("Split middle perimeter threshold"); - def->category = L("Advanced"); - def->tooltip = L("The smallest extrusion width, as a factor of the normal extrusion width, above which the middle " - "perimeter (if there is one) will be split into two. Reduce this setting to use more, thinner " - "perimeters. Increase to use fewer, wider perimeters. Note that this applies -as if- the entire " - "shape should be filled with perimeter, so the middle here refers to the middle of the object " - "between two outer edges of the shape, even if there actually is infill or other extrusion types in " - "the print instead of the perimeter."); - def->sidetext = L("%"); - def->mode = comAdvanced; - def->min = 1; - def->max = 99; - def->set_default_value(new ConfigOptionPercent(50)); - - def = this->add("wall_add_middle_threshold", coPercent); - def->label = L("Add middle perimeter threshold"); - def->category = L("Advanced"); - def->tooltip = L("The smallest extrusion width, as a factor of the normal extrusion width, above which a middle " - "perimeter (if there wasn't one already) will be added. Reduce this setting to use more, " - "thinner perimeters. Increase to use fewer, wider perimeters. Note that this applies -as if- the " - "entire shape should be filled with perimeter, so the middle here refers to the middle of the " - "object between two outer edges of the shape, even if there actually is infill or other " - "extrusion types in the print instead of the perimeter."); - def->sidetext = L("%"); - def->mode = comAdvanced; - def->min = 1; - def->max = 99; - def->set_default_value(new ConfigOptionPercent(75)); - - def = this->add("min_feature_size", coFloat); + def = this->add("min_feature_size", coFloatOrPercent); def->label = L("Minimum feature size"); def->category = L("Advanced"); def->tooltip = L("Minimum thickness of thin features. Model features that are thinner than this value will " "not be printed, while features thicker than the Minimum feature size will be widened to " - "the Minimum perimeter width."); - def->sidetext = L("mm"); + "the Minimum perimeter width. " + "If expressed as a percentage (for example 25%), it will be computed based on the nozzle diameter."); + def->sidetext = L("mm or %"); def->mode = comExpert; def->min = 0; - def->set_default_value(new ConfigOptionFloat(0.1)); + def->set_default_value(new ConfigOptionFloatOrPercent(25, true)); def = this->add("min_bead_width", coFloatOrPercent); def->label = L("Minimum perimeter width"); @@ -4012,6 +3984,8 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "serial_port", "serial_speed", // Introduced in some PrusaSlicer 2.3.1 alpha, later renamed or removed. "fuzzy_skin_perimeter_mode", "fuzzy_skin_shape", + // Introduced in PrusaSlicer 2.3.0-alpha2, later replaced by automatic calculation based on extrusion width. + "wall_add_middle_threshold", "wall_split_middle_threshold", }; // In PrusaSlicer 2.3.0-alpha0 the "monotonous" infill was introduced, which was later renamed to "monotonic". diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 4db685d5c..b188e499d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -491,13 +491,11 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, slice_closing_radius)) ((ConfigOptionEnum, slicing_mode)) ((ConfigOptionEnum, perimeter_generator)) - ((ConfigOptionFloat, wall_transition_length)) + ((ConfigOptionFloatOrPercent, wall_transition_length)) ((ConfigOptionFloatOrPercent, wall_transition_filter_deviation)) ((ConfigOptionFloat, wall_transition_angle)) ((ConfigOptionInt, wall_distribution_count)) - ((ConfigOptionPercent, wall_split_middle_threshold)) - ((ConfigOptionPercent, wall_add_middle_threshold)) - ((ConfigOptionFloat, min_feature_size)) + ((ConfigOptionFloatOrPercent, min_feature_size)) ((ConfigOptionFloatOrPercent, min_bead_width)) ((ConfigOptionBool, support_material)) // Automatic supports (generated based on support_material_threshold). diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index aef501922..6ec27ea95 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -673,8 +673,6 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "wall_transition_filter_deviation" || opt_key == "wall_transition_angle" || opt_key == "wall_distribution_count" - || opt_key == "wall_split_middle_threshold" - || opt_key == "wall_add_middle_threshold" || opt_key == "min_feature_size" || opt_key == "min_bead_width") { steps.emplace_back(posSlice); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index eb6d012dd..13cc35008 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -323,8 +323,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config) toggle_field("wall_transition_filter_deviation", have_arachne); toggle_field("wall_transition_angle", have_arachne); toggle_field("wall_distribution_count", have_arachne); - toggle_field("wall_split_middle_threshold", have_arachne); - toggle_field("wall_add_middle_threshold", have_arachne); toggle_field("min_feature_size", have_arachne); toggle_field("min_bead_width", have_arachne); toggle_field("thin_walls", !have_arachne); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 2d6f3179e..c9090abd5 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1672,8 +1672,6 @@ void TabPrint::build() optgroup->append_single_option_line("clip_multipart_objects"); optgroup = page->new_optgroup(L("Arachne perimeter generator")); - optgroup->append_single_option_line("wall_add_middle_threshold"); - optgroup->append_single_option_line("wall_split_middle_threshold"); optgroup->append_single_option_line("wall_transition_angle"); optgroup->append_single_option_line("wall_transition_filter_deviation"); optgroup->append_single_option_line("wall_transition_length"); diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index f2c1f7c4b..991fae00e 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -58,7 +58,7 @@ TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { coord_t spacing = 407079; coord_t inset_count = 8; - Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, PrintObjectConfig::defaults(), PrintConfig::defaults()); + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, PrintObjectConfig::defaults(), PrintConfig::defaults()); wallToolPaths.generate(); std::vector perimeters = wallToolPaths.getToolPaths(); @@ -91,7 +91,7 @@ TEST_CASE("Arachne - Missing perimeter - #8472", "[ArachneMissingPerimeter8472]" PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); print_object_config.wall_distribution_count.setInt(3); - Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, print_object_config, PrintConfig::defaults()); + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, print_object_config, PrintConfig::defaults()); wallToolPaths.generate(); std::vector perimeters = wallToolPaths.getToolPaths(); From e0d33ec92a22a49af0e97cf50a31af51a51ef2e6 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Fri, 10 Dec 2021 15:41:35 +0100 Subject: [PATCH 082/131] Added missing include --- src/slic3r/GUI/fts_fuzzy_match.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/fts_fuzzy_match.h b/src/slic3r/GUI/fts_fuzzy_match.h index 379fd9c74..29dd34835 100644 --- a/src/slic3r/GUI/fts_fuzzy_match.h +++ b/src/slic3r/GUI/fts_fuzzy_match.h @@ -33,6 +33,7 @@ #include // uint8_t #include // ::tolower, ::toupper +#include // std::towlower, std::towupper #include // memcpy #include From d81c63fad456cddab6eacd3b28836ab4f778f0ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 9 Aug 2022 01:25:47 +0200 Subject: [PATCH 083/131] Fixed Perl unit tests after 77f5973c25ef0edc6db95de13c5976722b57a023. --- xs/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt index 962e2e04d..89381ad7a 100644 --- a/xs/CMakeLists.txt +++ b/xs/CMakeLists.txt @@ -194,6 +194,11 @@ if (MSVC) COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll "${PERL_LOCAL_LIB_ARCH_DIR}/auto/Slic3r/XS/" COMMENT "Installing gmp runtime into the local-lib directory ..." VERBATIM) + + add_custom_command(TARGET XS POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll "${PERL_LOCAL_LIB_ARCH_DIR}/auto/Slic3r/XS/" + COMMENT "Installing mpfr runtime into the local-lib directory ..." + VERBATIM) endif() # Installation From 3cad3f6b89b7341e829bdb461e8a5a2084e7a1e4 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Tue, 9 Aug 2022 12:33:44 +0200 Subject: [PATCH 084/131] Added new Creality thumbnails. --- .../Creality/CR10SMARTPRO_thumbnail.png | Bin 0 -> 36043 bytes .../Creality/ENDER3MAXNEO_thumbnail.png | Bin 0 -> 42290 bytes .../profiles/Creality/ENDER3V2NEO_thumbnail.png | Bin 0 -> 34757 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/profiles/Creality/CR10SMARTPRO_thumbnail.png create mode 100644 resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png create mode 100644 resources/profiles/Creality/ENDER3V2NEO_thumbnail.png diff --git a/resources/profiles/Creality/CR10SMARTPRO_thumbnail.png b/resources/profiles/Creality/CR10SMARTPRO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ab084f0f7249ba246b8e837bffb90b8bdf07b4 GIT binary patch literal 36043 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png b/resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..49b3221e6bdd087026ecaa1c9038f97302e35077 GIT binary patch literal 42290 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/ENDER3V2NEO_thumbnail.png b/resources/profiles/Creality/ENDER3V2NEO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..4d56ca7a4682a56a15adcd62218a2856bfeaa010 GIT binary patch literal 34757 zcmXt=1yq#X*Y;<~p@$HVP60)_J0+A>N$KwH?rzDUn}-f*q`L&9ySqET+yA>h#3izH z=G^D(v*X&oO_-v*6b330DhLF^kdc;92L7xAfxsXL67Ut#y4E)Emmo87aYY$%aSB^| z8)Gv|BM^u_&MQt(x?6-Wc(pLR{;R|h#YSunpE~r7UE+KEPBF6&bqBik`{W#E(#l#S zh_n6y!V%w)2~2*FY9WfAA@}?ll=&km`^3ah7kVDONw)I1lH76%%2CoQo#zA>ry1pM zu(GCWzVXn;7GWL*BhVTjgk9+)Wo{ml3AL|Ex+S?RXXPmjrlX&Q^*DUtX57HoNR|7% z+p0ifOe;evL`TNG=id{fmHfkdQ_E3pEme;?A&m|bH=-9ai9h8h`cKz1p4?)hZ8Y`d zH)EQxzp_#FCxbeKLlz&*DyE1;Nj^(cpkT9^)91mVDJ^g+f63ny*jXocev+{t+|ZQ{n-0U_>*7ek8JgZ<5Po0>rBv#$(pRi<9`^sHwjnn znh_-6=f#d*C(VRg-(gbSJ(*h5l*qPQeNRRHI>*V zES)-eH#Oa+cO~OVQ_}ba21ZCz+KNMXpkF}g=IDJ$0Z~y_kr9T2HGdaNErpGYy?u@{ z^ZuICezxzd;jElBcd7Rn%Vgj6%Df+89~Tg}jZa()4?hGyk^1_p6nR36t<@q2_1~=1 z_}za8jl=X=exvEm({$0jo#=e?rUC2<=gaYn-Q~;H)Cy#6%I_ffjHW9ff~QmO1qOZLGW_$xn@- zOd3Vp^|s9bRsRaJU0{Z9z5*13ha=0R-P

Z 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 Zgs{1JmKpZ6^cDhs$w+(>FB8@C`#(@)Hbwvd literal 0 HcmV?d00001 From fc6ca282dd0bfcb6982afdb4d09add46b19c5101 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Tue, 9 Aug 2022 12:31:18 +0200 Subject: [PATCH 085/131] Added thumbnails. https://github.com/prusa3d/PrusaSlicer/pull/8602 --- .../Creality/CR10SMARTPRO_thumbnail.png | Bin 0 -> 36043 bytes .../Creality/ENDER3MAXNEO_thumbnail.png | Bin 0 -> 42290 bytes .../profiles/Creality/ENDER3V2NEO_thumbnail.png | Bin 0 -> 34757 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/profiles/Creality/CR10SMARTPRO_thumbnail.png create mode 100644 resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png create mode 100644 resources/profiles/Creality/ENDER3V2NEO_thumbnail.png diff --git a/resources/profiles/Creality/CR10SMARTPRO_thumbnail.png b/resources/profiles/Creality/CR10SMARTPRO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ab084f0f7249ba246b8e837bffb90b8bdf07b4 GIT binary patch literal 36043 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png b/resources/profiles/Creality/ENDER3MAXNEO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..49b3221e6bdd087026ecaa1c9038f97302e35077 GIT binary patch literal 42290 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/ENDER3V2NEO_thumbnail.png b/resources/profiles/Creality/ENDER3V2NEO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..4d56ca7a4682a56a15adcd62218a2856bfeaa010 GIT binary patch literal 34757 zcmXt=1yq#X*Y;<~p@$HVP60)_J0+A>N$KwH?rzDUn}-f*q`L&9ySqET+yA>h#3izH z=G^D(v*X&oO_-v*6b330DhLF^kdc;92L7xAfxsXL67Ut#y4E)Emmo87aYY$%aSB^| z8)Gv|BM^u_&MQt(x?6-Wc(pLR{;R|h#YSunpE~r7UE+KEPBF6&bqBik`{W#E(#l#S zh_n6y!V%w)2~2*FY9WfAA@}?ll=&km`^3ah7kVDONw)I1lH76%%2CoQo#zA>ry1pM zu(GCWzVXn;7GWL*BhVTjgk9+)Wo{ml3AL|Ex+S?RXXPmjrlX&Q^*DUtX57HoNR|7% z+p0ifOe;evL`TNG=id{fmHfkdQ_E3pEme;?A&m|bH=-9ai9h8h`cKz1p4?)hZ8Y`d zH)EQxzp_#FCxbeKLlz&*DyE1;Nj^(cpkT9^)91mVDJ^g+f63ny*jXocev+{t+|ZQ{n-0U_>*7ek8JgZ<5Po0>rBv#$(pRi<9`^sHwjnn znh_-6=f#d*C(VRg-(gbSJ(*h5l*qPQeNRRHI>*V zES)-eH#Oa+cO~OVQ_}ba21ZCz+KNMXpkF}g=IDJ$0Z~y_kr9T2HGdaNErpGYy?u@{ z^ZuICezxzd;jElBcd7Rn%Vgj6%Df+89~Tg}jZa()4?hGyk^1_p6nR36t<@q2_1~=1 z_}za8jl=X=exvEm({$0jo#=e?rUC2<=gaYn-Q~;H)Cy#6%I_ffjHW9ff~QmO1qOZLGW_$xn@- zOd3Vp^|s9bRsRaJU0{Z9z5*13ha=0R-P

Z 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 Zgs{1JmKpZ6^cDhs$w+(>FB8@C`#(@)Hbwvd literal 0 HcmV?d00001 From 7dac30714b4ebb29fd807fdeeb9db1e21452efbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 4 Aug 2022 13:37:40 +0200 Subject: [PATCH 086/131] Follow-up to 394494b3acb9bd888b88b4257f977c4844ea76e9: Fixed deceleration/acceleration issue also for gap-fill. Also, deceleration before bridge infill is now working. --- src/libslic3r/GCode/PressureEqualizer.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index 943395c68..b173cb684 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -59,9 +59,8 @@ PressureEqualizer::PressureEqualizer(const Slic3r::GCodeConfig &config) : m_use_ extrusion_rate_slope.positive = m_max_volumetric_extrusion_rate_slope_positive; } - // Don't regulate the pressure in infill, gap fill and ironing. - // TODO: Do we want to regulate pressure in erWipeTower, erCustom and erMixed? - for (const ExtrusionRole er : {erBridgeInfill, erGapFill, erIroning}) { + // Don't regulate the pressure before and after gap-fill and ironing. + for (const ExtrusionRole er : {erGapFill, erIroning}) { m_max_volumetric_extrusion_rate_slopes[er].negative = 0; m_max_volumetric_extrusion_rate_slopes[er].positive = 0; } @@ -520,8 +519,8 @@ void PressureEqualizer::adjust_volumetric_rate() for (; !m_gcode_lines[idx_prev].extruding() && idx_prev != fist_line_idx; --idx_prev); if (!m_gcode_lines[idx_prev].extruding()) break; - // Don't decelerate before ironing. - if (m_gcode_lines[line_idx].extrusion_role == erIroning) { + // Don't decelerate before ironing and gap-fill. + if (m_gcode_lines[line_idx].extrusion_role == erIroning || m_gcode_lines[line_idx].extrusion_role == erGapFill) { line_idx = idx_prev; continue; } @@ -564,8 +563,8 @@ void PressureEqualizer::adjust_volumetric_rate() } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start; - // Don't store feed rate for ironing. - if (line.extrusion_role != erIroning) + // Don't store feed rate for ironing and gap-fill. + if (line.extrusion_role != erIroning && line.extrusion_role != erGapFill) feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start; } } @@ -579,8 +578,8 @@ void PressureEqualizer::adjust_volumetric_rate() for (; !m_gcode_lines[idx_next].extruding() && idx_next != last_line_idx; ++idx_next); if (!m_gcode_lines[idx_next].extruding()) break; - // Don't accelerate after ironing. - if (m_gcode_lines[line_idx].extrusion_role == erIroning) { + // Don't accelerate after ironing and gap-fill. + if (m_gcode_lines[line_idx].extrusion_role == erIroning || m_gcode_lines[line_idx].extrusion_role == erGapFill) { line_idx = idx_next; continue; } @@ -620,8 +619,8 @@ void PressureEqualizer::adjust_volumetric_rate() } } // feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end; - // Don't store feed rate for ironing. - if (line.extrusion_role != erIroning) + // Don't store feed rate for ironing and gap-fill. + if (line.extrusion_role != erIroning && line.extrusion_role != erGapFill) feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end; } } From 9616f38de7784f7ef2ef9749815bd399f11e3d36 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Tue, 9 Aug 2022 19:55:30 +0200 Subject: [PATCH 087/131] Creality.ini: adjust extrusion_widths --- resources/profiles/Creality.ini | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 6f6c5b40e..b64715a8b 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -531,12 +531,12 @@ support_material_spacing = 1 first_layer_height = 0.2 extrusion_width = 0.33 external_perimeter_extrusion_width = 0.31 -first_layer_extrusion_width = 0.42 +first_layer_extrusion_width = 0.33 infill_extrusion_width = 0.33 perimeter_extrusion_width = 0.33 solid_infill_extrusion_width = 0.33 top_infill_extrusion_width = 0.33 -support_material_extrusion_width = 0.33 +support_material_extrusion_width = 0.27 [print:*0.4nozzle*] perimeters = 3 @@ -545,12 +545,12 @@ support_material_spacing = 1 first_layer_height = 0.2 extrusion_width = 0.44 external_perimeter_extrusion_width = 0.42 -first_layer_extrusion_width = 0.56 +first_layer_extrusion_width = 0.44 infill_extrusion_width = 0.44 perimeter_extrusion_width = 0.44 solid_infill_extrusion_width = 0.44 top_infill_extrusion_width = 0.44 -support_material_extrusion_width = 0.44 +support_material_extrusion_width = 0.36 [print:*0.5nozzle*] perimeters = 2 @@ -559,12 +559,12 @@ support_material_spacing = 1.1 first_layer_height = 0.2 extrusion_width = 0.55 external_perimeter_extrusion_width = 0.52 -first_layer_extrusion_width = 0.7 +first_layer_extrusion_width = 0.55 infill_extrusion_width = 0.55 perimeter_extrusion_width = 0.55 solid_infill_extrusion_width = 0.55 top_infill_extrusion_width = 0.55 -support_material_extrusion_width = 0.55 +support_material_extrusion_width = 0.45 [print:*0.6nozzle*] perimeters = 2 @@ -573,12 +573,12 @@ support_material_spacing = 1.2 first_layer_height = 0.3 extrusion_width = 0.66 external_perimeter_extrusion_width = 0.63 -first_layer_extrusion_width = 0.84 +first_layer_extrusion_width = 0.66 infill_extrusion_width = 0.66 perimeter_extrusion_width = 0.66 solid_infill_extrusion_width = 0.66 top_infill_extrusion_width = 0.66 -support_material_extrusion_width = 0.66 +support_material_extrusion_width = 0.54 From ad0ac536850065a34b7f80c623a65942445f00f2 Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Tue, 9 Aug 2022 19:56:26 +0200 Subject: [PATCH 088/131] Creality.ini: adjust infil_overlap --- resources/profiles/Creality.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index b64715a8b..1b82b5d32 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -402,7 +402,7 @@ infill_every_layers = 1 infill_extruder = 1 infill_first = 0 infill_only_where_needed = 0 -infill_overlap = 22% +infill_overlap = 23% infill_speed = 50 interface_shells = 0 max_print_speed = 100 From 2aa79d00ca8bb9a22a0777c8df734791844ad29a Mon Sep 17 00:00:00 2001 From: Pascal de Bruijn Date: Tue, 9 Aug 2022 19:57:36 +0200 Subject: [PATCH 089/131] Creality.ini: adjust Geeetech Matte PLA --- resources/profiles/Creality.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Creality.ini b/resources/profiles/Creality.ini index 1b82b5d32..292b99d70 100644 --- a/resources/profiles/Creality.ini +++ b/resources/profiles/Creality.ini @@ -1062,12 +1062,12 @@ filament_colour = #001CA8 [filament:Geeetech Matte PLA @CREALITY] inherits = *PLA* filament_vendor = Geeetech -temperature = 195 +temperature = 200 bed_temperature = 60 -first_layer_temperature = 200 +first_layer_temperature = 205 first_layer_bed_temperature = 60 filament_cost = 26.99 -filament_density = 1.38 +filament_density = 1.36 filament_colour = #FF4640 filament_spool_weight = 180 From 5e23694e164e656b47c2098a396e3b30f01073c7 Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Wed, 10 Aug 2022 14:59:32 +0200 Subject: [PATCH 090/131] Added initial Elegoo bundle. https://github.com/prusa3d/PrusaSlicer-settings/issues/162 --- resources/profiles/Elegoo.idx | 2 + resources/profiles/Elegoo.ini | 513 ++++++++++++++++++ .../profiles/Elegoo/NEPTUNE1_thumbnail.png | Bin 0 -> 38258 bytes .../profiles/Elegoo/NEPTUNE2D_thumbnail.png | Bin 0 -> 46488 bytes .../profiles/Elegoo/NEPTUNE2S_thumbnail.png | Bin 0 -> 51574 bytes .../profiles/Elegoo/NEPTUNE2_thumbnail.png | Bin 0 -> 43149 bytes .../profiles/Elegoo/NEPTUNE3_thumbnail.png | Bin 0 -> 45396 bytes .../profiles/Elegoo/NEPTUNEX_thumbnail.png | Bin 0 -> 37948 bytes 8 files changed, 515 insertions(+) create mode 100644 resources/profiles/Elegoo.idx create mode 100644 resources/profiles/Elegoo.ini create mode 100644 resources/profiles/Elegoo/NEPTUNE1_thumbnail.png create mode 100644 resources/profiles/Elegoo/NEPTUNE2D_thumbnail.png create mode 100644 resources/profiles/Elegoo/NEPTUNE2S_thumbnail.png create mode 100644 resources/profiles/Elegoo/NEPTUNE2_thumbnail.png create mode 100644 resources/profiles/Elegoo/NEPTUNE3_thumbnail.png create mode 100644 resources/profiles/Elegoo/NEPTUNEX_thumbnail.png diff --git a/resources/profiles/Elegoo.idx b/resources/profiles/Elegoo.idx new file mode 100644 index 000000000..cf0da371b --- /dev/null +++ b/resources/profiles/Elegoo.idx @@ -0,0 +1,2 @@ +min_slic3r_version = 2.5.0-alpha3 +1.0.0 Initial version diff --git a/resources/profiles/Elegoo.ini b/resources/profiles/Elegoo.ini new file mode 100644 index 000000000..b9589536a --- /dev/null +++ b/resources/profiles/Elegoo.ini @@ -0,0 +1,513 @@ +# PrusaSlicer print profiles for the Elegoo printers. +# By Andrew Suzuki (andrewsuzuki.com), adapted from Creality.ini + +[vendor] +# Vendor name will be shown by the Config Wizard. +name = Elegoo +# Configuration version of this file. Config file will only be installed, if the config_version differs. +# This means, the server may force the PrusaSlicer configuration to be downgraded. +config_version = 1.0.0 +config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Elegoo/ + +# The printer models will be shown by the Configuration Wizard in this order, +# also the first model installed & the first nozzle installed will be activated after install. +# Printer model name will be shown by the installation wizard. + +[printer_model:NEPTUNE1] +name = Elegoo Neptune-1 +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +[printer_model:NEPTUNE2] +name = Elegoo Neptune-2 +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +[printer_model:NEPTUNE2D] +name = Elegoo Neptune-2D +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +[printer_model:NEPTUNE2S] +name = Elegoo Neptune-2S +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +[printer_model:NEPTUNE3] +name = Elegoo Neptune-3 +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +[printer_model:NEPTUNEX] +name = Elegoo Neptune-X +variants = 0.4 +technology = FFF +family = NEPTUNE +bed_model = +bed_texture = +default_materials = Generic PLA @ELEGOO; Generic PETG @ELEGOO; Generic ABS @ELEGOO + +# All presets starting with asterisk, for example *common*, are intermediate and they will +# not make it into the user interface. + +# Common print preset +[print:*common*] +avoid_crossing_perimeters = 0 +bridge_angle = 0 +bridge_flow_ratio = 0.95 +bridge_speed = 25 +brim_width = 0 +clip_multipart_objects = 1 +compatible_printers = +complete_objects = 0 +dont_support_bridges = 1 +elefant_foot_compensation = 0.1 +ensure_vertical_shell_thickness = 1 +external_fill_pattern = rectilinear +external_perimeters_first = 0 +external_perimeter_extrusion_width = 0.45 +external_perimeter_speed = 25 +extra_perimeters = 0 +extruder_clearance_height = 25 +extruder_clearance_radius = 45 +extrusion_width = 0.45 +fill_angle = 45 +fill_density = 20% +fill_pattern = grid +first_layer_extrusion_width = 0.42 +first_layer_height = 0.2 +first_layer_speed = 20 +gap_fill_speed = 30 +gcode_comments = 0 +infill_every_layers = 1 +infill_extruder = 1 +infill_extrusion_width = 0.45 +infill_first = 0 +infill_only_where_needed = 0 +infill_overlap = 25% +infill_speed = 50 +interface_shells = 0 +max_print_speed = 100 +max_volumetric_extrusion_rate_slope_negative = 0 +max_volumetric_extrusion_rate_slope_positive = 0 +max_volumetric_speed = 0 +min_skirt_length = 4 +notes = +overhangs = 0 +only_retract_when_crossing_perimeters = 0 +ooze_prevention = 0 +output_filename_format = {input_filename_base}_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode +perimeters = 2 +perimeter_extruder = 1 +perimeter_extrusion_width = 0.45 +perimeter_speed = 40 +post_process = +print_settings_id = +raft_layers = 0 +resolution = 0 +seam_position = nearest +single_extruder_multi_material_priming = 0 +skirts = 1 +skirt_distance = 2 +skirt_height = 2 +small_perimeter_speed = 25 +solid_infill_below_area = 0 +solid_infill_every_layers = 0 +solid_infill_extruder = 1 +solid_infill_extrusion_width = 0.45 +solid_infill_speed = 40 +spiral_vase = 0 +standby_temperature_delta = -5 +support_material = 0 +support_material_extruder = 0 +support_material_extrusion_width = 0.38 +support_material_interface_extruder = 0 +support_material_angle = 0 +support_material_buildplate_only = 0 +support_material_enforce_layers = 0 +support_material_contact_distance = 0.15 +support_material_interface_contact_loops = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.2 +support_material_interface_speed = 100% +support_material_pattern = rectilinear +support_material_spacing = 2 +support_material_speed = 40 +support_material_synchronize_layers = 0 +support_material_threshold = 45 +support_material_with_sheath = 0 +support_material_xy_spacing = 60% +thin_walls = 0 +top_infill_extrusion_width = 0.4 +top_solid_infill_speed = 30 +travel_speed = 150 +wipe_tower = 0 +wipe_tower_bridging = 10 +wipe_tower_rotation_angle = 0 +wipe_tower_width = 60 +wipe_tower_x = 170 +wipe_tower_y = 140 +xy_size_compensation = 0 + +[print:*0.08mm*] +inherits = *common* +layer_height = 0.08 +perimeters = 3 +bottom_solid_layers = 9 +top_solid_layers = 11 + +[print:*0.10mm*] +inherits = *common* +layer_height = 0.1 +perimeters = 3 +bottom_solid_layers = 7 +top_solid_layers = 9 + +[print:*0.12mm*] +inherits = *common* +layer_height = 0.12 +perimeters = 3 +bottom_solid_layers = 6 +top_solid_layers = 7 + +[print:*0.16mm*] +inherits = *common* +layer_height = 0.16 +bottom_solid_layers = 5 +top_solid_layers = 7 + +[print:*0.20mm*] +inherits = *common* +layer_height = 0.20 +bottom_solid_layers = 4 +top_solid_layers = 5 + +[print:*0.24mm*] +inherits = *common* +layer_height = 0.24 +top_infill_extrusion_width = 0.45 +bottom_solid_layers = 3 +top_solid_layers = 4 + +[print:*0.28mm*] +inherits = *common* +layer_height = 0.28 +top_infill_extrusion_width = 0.45 +bottom_solid_layers = 3 +top_solid_layers = 4 + +[print:0.08mm SUPERDETAIL @ELEGOO] +inherits = *0.08mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.10mm HIGHDETAIL @ELEGOO] +inherits = *0.10mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.12mm DETAIL @ELEGOO] +inherits = *0.12mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.16mm OPTIMAL @ELEGOO] +inherits = *0.16mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.20mm NORMAL @ELEGOO] +inherits = *0.20mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.24mm DRAFT @ELEGOO] +inherits = *0.24mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +[print:0.28mm SUPERDRAFT @ELEGOO] +inherits = *0.28mm* +compatible_printers_condition = printer_model=~/(NEPTUNE).*/ and nozzle_diameter[0]==0.4 + +# When submitting new filaments please print the following temperature tower at 0.1mm layer height: +# https://www.thingiverse.com/thing:2615842 +# Pay particular attention to bridging, overhangs and retractions. +# Also print the following bed adhesion test at 0.1 layer height as well: +# https://www.prusaprinters.org/prints/4634-bed-adhesion-warp-test +# At least for PLA, please keep bed temp at 60, as many Elegoo printers do not have any ABL +# So having some leeway to get good bed adhesion is not a luxury for many users + +[filament:*common*] +cooling = 0 +compatible_printers = +extrusion_multiplier = 1 +filament_cost = 0 +filament_density = 0 +filament_diameter = 1.75 +filament_notes = "" +filament_settings_id = "" +filament_soluble = 0 +min_print_speed = 15 +slowdown_below_layer_time = 20 +compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_ELEGOO.*/ + +[filament:*PLA*] +inherits = *common* +bed_temperature = 60 +fan_below_layer_time = 100 +filament_colour = #DDDDDD +filament_max_volumetric_speed = 15 +filament_type = PLA +filament_density = 1.24 +filament_cost = 20 +first_layer_bed_temperature = 60 +first_layer_temperature = 210 +fan_always_on = 1 +cooling = 1 +max_fan_speed = 100 +min_fan_speed = 100 +bridge_fan_speed = 100 +disable_fan_first_layers = 1 +temperature = 205 + +[filament:*PET*] +inherits = *common* +bed_temperature = 70 +cooling = 1 +disable_fan_first_layers = 3 +fan_below_layer_time = 20 +filament_colour = #DDDDDD +filament_max_volumetric_speed = 8 +filament_type = PETG +filament_density = 1.27 +filament_cost = 20 +first_layer_bed_temperature = 70 +first_layer_temperature = 240 +fan_always_on = 1 +max_fan_speed = 50 +min_fan_speed = 20 +bridge_fan_speed = 100 +temperature = 240 + +[filament:*ABS*] +inherits = *common* +bed_temperature = 100 +cooling = 0 +disable_fan_first_layers = 3 +fan_below_layer_time = 20 +filament_colour = #DDDDDD +filament_max_volumetric_speed = 11 +filament_type = ABS +filament_density = 1.04 +filament_cost = 20 +first_layer_bed_temperature = 100 +first_layer_temperature = 245 +fan_always_on = 0 +max_fan_speed = 0 +min_fan_speed = 0 +bridge_fan_speed = 30 +top_fan_speed = 0 +temperature = 245 + +[filament:Generic PLA @ELEGOO] +inherits = *PLA* +filament_vendor = Generic + +[filament:Generic PETG @ELEGOO] +inherits = *PET* +filament_vendor = Generic + +[filament:Generic ABS @ELEGOO] +inherits = *ABS* +first_layer_bed_temperature = 90 +bed_temperature = 90 +filament_vendor = Generic + +# Common printer preset +[printer:*common*] +printer_technology = FFF +before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0\n;[layer_z]\n\n +between_objects_gcode = +pause_print_gcode = +deretract_speed = 0 +extruder_colour = #FCE94F +extruder_offset = 0x0 +gcode_flavor = marlin +silent_mode = 0 +remaining_times = 0 +machine_max_acceleration_e = 5000 +machine_max_acceleration_extruding = 500 +machine_max_acceleration_retracting = 1000 +machine_max_acceleration_x = 500 +machine_max_acceleration_y = 500 +machine_max_acceleration_z = 100 +machine_max_feedrate_e = 60 +machine_max_feedrate_x = 500 +machine_max_feedrate_y = 500 +machine_max_feedrate_z = 10 +machine_max_jerk_e = 5 +machine_max_jerk_x = 8 +machine_max_jerk_y = 8 +machine_max_jerk_z = 0.4 +machine_min_extruding_rate = 0 +machine_min_travel_rate = 0 +layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z] +max_layer_height = 0.3 +min_layer_height = 0.07 +max_print_height = 250 +nozzle_diameter = 0.4 +printer_notes = +printer_settings_id = +retract_before_travel = 1 +retract_before_wipe = 0% +retract_layer_change = 1 +retract_length = 1 +retract_length_toolchange = 1 +retract_lift = 0 +retract_lift_above = 0 +retract_lift_below = 0 +retract_restart_extra = 0 +retract_restart_extra_toolchange = 0 +retract_speed = 35 +single_extruder_multi_material = 0 +thumbnails = 16x16,220x124 +toolchange_gcode = +use_firmware_retraction = 0 +use_relative_e_distances = 1 +use_volumetric_e = 0 +variable_layer_height = 1 +wipe = 1 +z_offset = 0 +printer_model = +default_print_profile = 0.16mm OPTIMAL @ELEGOO +default_filament_profile = Generic PLA @ELEGOO + +[printer:Elegoo Neptune-2] +inherits = *common* +printer_model = NEPTUNE2 +printer_variant = 0.4 +max_layer_height = 0.28 +min_layer_height = 0.08 +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2\nPRINTER_HAS_BOWDEN +bed_shape = 0x0,220x0,220x220,0x220 +max_print_height = 250 +machine_max_acceleration_e = 5000 +machine_max_acceleration_extruding = 500 +machine_max_acceleration_retracting = 1000 +machine_max_acceleration_x = 500 +machine_max_acceleration_y = 500 +machine_max_acceleration_z = 100 +machine_max_feedrate_e = 60 +machine_max_feedrate_x = 500 +machine_max_feedrate_y = 500 +machine_max_feedrate_z = 10 +machine_max_jerk_e = 5 +machine_max_jerk_x = 8 +machine_max_jerk_y = 8 +machine_max_jerk_z = 0.4 +machine_min_extruding_rate = 0 +machine_min_travel_rate = 0 +nozzle_diameter = 0.4 +retract_before_travel = 2 +retract_length = 5 +retract_speed = 60 +deretract_speed = 40 +retract_before_wipe = 70% +start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[first_layer_bed_temperature] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set final nozzle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp to stabilize\nM109 S[first_layer_temperature] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 +end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{max_print_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors + + +# Intended for printers with a smaller bed +# [printer:*fastabl*] +# start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[first_layer_bed_temperature] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set final nozzle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp to stabilize\nM109 S[first_layer_temperature] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 + +# Intended for printers with a larger bed +# [printer:*slowabl*] +# start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[first_layer_bed_temperature] ; set final bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp to stabilize\nG28 ; home all axis\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set final nozzle temp\nM109 S[first_layer_temperature] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 + +# Intended for printers with vendor official firmware verified to support M25 +# [printer:*pauseprint*] +# pause_print_gcode = M25 ; pause print + +# Intended for printers where the Z-axis lowers the print bed during printing +# [printer:*invertedz*] +# end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; present print\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+max_print_height-10} F600{endif} ; Move print bed down further down\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors + +# Intended for printers with dual extruders and a single hotend/nozzle +[printer:*dualextruder*] +single_extruder_multi_material = 1 +cooling_tube_length = 23 +cooling_tube_retraction = 35 +extra_loading_move = -2 +parking_pos_retraction = 80 +deretract_speed = 40,40 +extruder_colour = #0080C0;#FFFF9F +extruder_offset = 0x0,0x0 +max_layer_height = 0.28,0.28 +min_layer_height = 0.08,0.08 +nozzle_diameter = 0.4,0.4 +retract_before_travel = 2,2 +retract_before_wipe = 70%,70% +retract_layer_change = 1,1 +retract_length = 5,5 +retract_length_toolchange = 1,1 +retract_lift = 0,0 +retract_lift_above = 0,0 +retract_lift_below = 0,0 +retract_restart_extra = 0,0 +retract_restart_extra_toolchange = 0,0 +retract_speed = 60,60 +wipe = 1,1 +start_gcode = T[initial_tool] ; set active extruder\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S{first_layer_bed_temperature[0]} ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\n;G29 ; auto bed levelling - remove ; at beginning of line to enable\n;M420 S1 ; enable mesh - remove ; at beginning of line to enable\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S{first_layer_temperature[0]} ; set final nozzle temp\nM190 S{first_layer_bed_temperature[0]} ; wait for bed temp to stabilize\nM109 S{first_layer_temperature[0]} ; wait for nozzle temp to stabilize\nG1 Z0.28 F240 ; move down to prime nozzle\nG92 E0 ; reset extruder\nG1 E90 ; load filament\nG92 E0 ; reset extruder\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000 ; move over for second prime line\nG92 E0 ; reset extruder\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 ; reset extruder +end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\nG1 E-80 F2000 ; unload filament\n{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{max_print_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors + +# Copy of Creality CR-X config for the Neptune 2D (dual extruder, single hotend) + +[printer:Elegoo Neptune-2D] +inherits = Elegoo Neptune-2; *dualextruder* +retract_length = 6,6 +printer_model = NEPTUNE2D +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN + +[printer:Elegoo Neptune-2S] +inherits = Elegoo Neptune-2 +bed_shape = 0x0,220x0,220x220,0x220 +printer_model = NEPTUNE2S +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN + +[printer:Elegoo Neptune-X] +inherits = Elegoo Neptune-2 +bed_shape = 0x0,220x0,220x220,0x220 +max_print_height = 300 +printer_model = NEPTUNEX +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN + +[printer:Elegoo Neptune-3] +inherits = Elegoo Neptune-2 +bed_shape = 0x0,220x0,220x220,0x220 +max_print_height = 280 +start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[first_layer_bed_temperature] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set final nozzle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp to stabilize\nM109 S[first_layer_temperature] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 +printer_model = NEPTUNE3 +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN + +[printer:Elegoo Neptune-1] +inherits = Elegoo Neptune-2 +bed_shape = 0x0,210x0,210x210,0x210 +max_print_height = 200 +printer_model = NEPTUNE1 +printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN diff --git a/resources/profiles/Elegoo/NEPTUNE1_thumbnail.png b/resources/profiles/Elegoo/NEPTUNE1_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..26a4651b95f5f1e3b48bce0f2bb3dd2fd83038df GIT binary patch literal 38258 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 KcB2a69Q!}(_E*FJ literal 0 HcmV?d00001 diff --git a/resources/profiles/Elegoo/NEPTUNE2D_thumbnail.png b/resources/profiles/Elegoo/NEPTUNE2D_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad372fc00c9f1508d2ef86639eca7d45d38e16a GIT binary patch literal 46488 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 JYQScp{|Djm44(i1 literal 0 HcmV?d00001 diff --git a/resources/profiles/Elegoo/NEPTUNE2S_thumbnail.png b/resources/profiles/Elegoo/NEPTUNE2S_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff9e0e88a3f21578be85a792167dbbd49c9660 GIT binary patch literal 51574 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 JPDHLkV1h_tf*Jq- literal 0 HcmV?d00001 diff --git a/resources/profiles/Elegoo/NEPTUNE2_thumbnail.png b/resources/profiles/Elegoo/NEPTUNE2_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1a44b99dc1c45c6702d9a00edd4e38f5066550 GIT binary patch literal 43149 zcmXte18^nX^Y*>Ljcs#ddt+l`+u7K*ZQHi9F*n-S$;RH;=9l;PudimNW@@HRcb~>H z&pFi*3UU$%u(+@Q002QsQdH^d-V6W$0nnhYC)^#K0|0>9!c#@VS;^3i*xu33)WZ5F zv9pK$PvW2M7N!7z`)W^Ye=jn)P+C;bikHM`GNb?;`pZ_nrH{lTL;!yS?U^g}CW@fH!<=Uczao43HrQyPyYpXuj6 z{qs11#|ziX=Um(U0hZ*;f}S}0UWVUrlvT-_Yp}hve$lF%Cm_JFK8wu)vC&NdUE3#yz-`rIjiK}6*DE0< zzS5r@@3UlOd7k%Z>DmqF+ZJux?(+v8UkUoRj>;_T7Yuw(U z#;G4x>rP&lwZ`EfT#@|%yQICUOB(7?`pVB{mS)gRGd@2XVouW z#N`aWWx^k})LZq3+-kpdLR2SCwF-Z{SXk&W*>9!RYVWK!sP74#U{}TA{svy4<#lLx zv*swmOmnyE;++?-!}>j0w%c54+JSeiyW=Z{HPqTLcHdr1;_474X4y4NEu1#^YM|2Y z)i#UNT$=H#56q9#_oom(tQa5Q1OvR9IUX0rhxy!y2AE4*a<`xXlRV|9tE|;rFfgB;2}52Qj1Sf4^u2nzM_9}RP5~FSGPUc( zVN9$Vu8qWBy=8bX4L+{C?%5ek$k`Lh8RsWW zDJF~hQ8tccOYTOwIy#(leI#5#MYs`UCJYB&zg{@cz=2I`{qQ>b)pByu^f9(b$5zNo^KcagWvnf#|MHB zUsEk$daGmnk2rU{phww7ojlpy(iG_$H%_g+iv2$>$*tu-+GKH}t1?T@iif~ZeO?4C zowO%tzKB68_kQ(4y(;4j0aF#c5e3-$;H*?{#)&w;HJriJP8v7S#FoS%b09nmCQvA zqev%_7$%c|3Rez8tDtZY;jk^G57vQjdrV}gwVMqpM6qrbOM49dKTTU8bIM-}IQ`DN zQ>BQ1R9DDXu)I*Mli=VVYqAi)A*={yPETPlzTY-$jv8dmdYTK`eeqfDe$hV_e)}rT z)?AT4mT7A((PjvFl(Ycs$PUWIx2)J0&Qg5nZgAJ!R>hIY|| zdIB(4|J&c?l@yp?<%PMQ8xOQB82BEL{|4)BhJh=kFR5rt;40KK+@PBU-ne%`+zHG_ zh6zxgLF(U2KpJy8)8&>liMg3T2tU*lT>86<0D(+rAC(#WFSG{cM@bdx*5!P=h+|$! zh{{}Pq$`a}O0wnYP-~arMAR=*D{3r*{j2IOz8^m}6Un%3(6SUOe32n=zz$*+psu^b zRk7vY1NNHdr3`E2dGB;&<<&#)vP-l+SVm|777`+9CkB1a!0=LA*>&Nx$-bu z8xiZkE$O6D-@!!8L~lnWSK~#V;U5q#S;x3n!xC=q-veW!FQ)MruN>A-JMNHK{P}YD z8%cpzBQGdB-0Rwn(~^aokr)TgJ^xxaVIiY|!r_&vZYyq!qxkBZRk4 z^z~^&_BOgUrn#E+`F~(bjHW#);!|-No-4W~tT|TFGg2LY;TxDJ{`OuA=(C?>OubF>u30ndK@#+ z^9dII4Xb3hQX|!g#w77lCd4u6#IEfkbdCXpj>M+frGPYIv@AGdMO@2*h>5_2jqm=G zgACug{oP~+Q7ZP6a}m~bx;sKOM(gZJea&=YmvJ)9!YVIb(N zninKHK(gB`989G5_0-)89xCaW>l1iEfq}wZ^$N-{#hQI7u7SZO6cMvpB031~sNypd zJKD@>m+fdIy(lA3YGg^M3#_NVV|-47jC-`Y)2LD$dnD67nDex$z^_H3H^QU{3ZWR; zro3pA+Rw-KPQrov0Nl#|a$89D5fIFOMm z(7S7J=~+Yi8fDLnY{%`Hc|-#?agMOudm`)c7%|hTh4P7oW=VKq7Z#n4m1(|%Eo!jB zgzG>fTtL?)l5}N~>4y*1Y;zC=r9IIG6@=c@g6?uL?S;5DgWu3i*bN|bMnZ{6X(03? z0-K4HfX!7n0C5krs`6y<=%g9{iH9z}2Bmqw035V(n?Jj;N>X%?hhu)+j%28Y$x*eF zBK2#msD#!Mk{NV-j|kHmLew{1h@YehWnI!M>`&xBvrXBKBdM-sB8?bgT81+>a+T?s zXmVffAP@7Wf07c2`tON4P~r~HrP2bn(oHzg8<@wVUuwKpk%k6 zwNc;Bu>X6QR2$k~!ANX+%_mH$J{L-VfPHdANmM!wY9l*o#K)zU*e8a=6KdOhNR7*Gh87^x3^}>Zu2=;MrDy>Te`?7P4*d6X*$z8iZ!jtZLmh)e z7x>dYB<1><_-{}VPWT;=%iR57T}V{(VId-=2EshU-@yC0$bI{J21D2awk4|q5c`Ig zZJ!X*r(L2!?TNEqIykaXyg#I4FbuHBByk9;kA8=F=W^+XyN!PSla=o{+^x^c6P94{ zd-0ae)BonWrw0;5a1&w&k;+7`aZ3%NoN?OmV*k+$foO=nV{=?*FC;QFk-zyH=}*EX ze7u7P>q#H{Hy4zZj0F5{4+=k)p{NpK2kJ*S9q5sPCY@@awJUcO1(EgSbt)87h2BGf zZabZ`CO+hW%j@DpMn@?2uPy?T>#?xFOx-MkA)s<3@q=OuZ{69&^6eO7jc~e5rY} zA+si>U1Fvpj!oxNci-b;RHZPwa%rP}pXwb?@e8pG(kjhlxNcIZb^w2SKs_BqWfh)q zuqtH^nF7R*1SZ~Z^0o1UN5vlY!(y>rsYxL+0{nhPnnG^ncpGUB-sY$!Jc%JuV(f_2 z-CW9pT|B7v=mS0VdnX?^AmYdg@p#3K6U;yk^W0cPagf5!XnziZ0#FsA2&*)$IwFGx zSS=13rJjL5!vBuRzDKp=5|^pbP>CdLn=N*16PQevp-;@qik$eZYM+M%xtyCI@l<(n zt=P-{89}DlG`XOBEz?ABnN^=lddptU04!>om|GR;sToP#){%sca9FqzrAcNmx&^6x z>tBzL|FP#B=UebKg`nc8y~gD)Vyta^pP$4);QgGJPCCyGPTS7(>5{E`6A}|lY@#LWhBJ1l7OubdAEm(E!XE;StWIv z0)Rg`UX*p9cu=%`O)=`sLfU-JfHNKCgS;z9sh|`FW$#5!p*27ze(HYu1+Kr!@=g{TDa65yCpjzwj*_&zwvCX#2g~QY zGpFX%yA9fs^|cpiUT6aB|GkVU_X#k4lqFV^Mj>9B6k^ zRuz+HjQ-7-GE+rVXB6fcaGTF8IoT}%i>!8}_w0J(EQuZQO0ED?w>*AxLV}2e;4Z}u z1^oFW-3Frr94H6Jcq}%eGLp0+OxuQHk>dA|SvZ^x!k zAr0eYGV$?LLN2j-Z^guCPVTvHEFMuHh_YG~EKm=GW?#a*AKQwb^x>F@avjG!xhgky zAjpOI9&#Oij$hMe3$kb9Hw7Mm4-R_m5rR}hAo6V~AQAO`w^N~+0QJ7}Fvq$+86sK| z7L1N8E*FW#-Pb{aS~BS)Cm1MBEQ?^4?Zfo0(jikF=wwR`I2`}jRR?n{xJqNJchzSF zlPy4j%j27|)v1kw!t0SW9HS{Y&K<2{g}>=(a59Nv3i^n*43(udTddwI2LW%sEqqi; z3H>OoDMe6eNqJKmzX(*)^ zGN+pcN3M5b3W(^FkCh66E>(>HBP18Qe-xq>RZ%6%g1V$H=WI#gDoc0sUcfakad%)u zx1SjXs~~gu{$yofnN)tbWF%H~kycq!YNIv%u; zCuCQ(ViAL&kXw&waKc~Yj?!g;>Ja<=`U!CuFy7>8P9~Tos^F z3mQR)P$2=~H$k_D)p%Z*87q*V;v{Oby$Z`OK-{oTl7w8Rw z{+}1=`$76M@NoAcH$P;rOdwIh|9J3`PdsY^bRa|iu^dM?avUn_n(&6RR`)zuw2E_` zh}Vb|uTLPy=Ld^%UVU9r~bKy8d znhSz2`a1zVLuYC%N1y~8EWgPZQl=9wIL^Ui8^K1rXtqVXoa@7dnf3c8u4J0Wcax+; zhK7+oKXe-qaJvf2`4hMjD5>AtR+aofA;Dy^L^lD@H(+%SR`UNaSD}QQ+z6lyDkl>$ zyFj-kSH=Hhwi-GabN~?=od*_k%+`k(OCVGOfmYYNoW^-J zehJ6gCeG!y$!2vHf?=D>3p0rUocdI82=iyaf;`y^i?{y$)&C4ngt$SWz|CNhl~w5X z!YA^Y3x{$H?4@FSUe{4>*Fbny4jrhlw%%M3Lgzo`@w zuUtN^RnccKkAv70gpr{Ouyx3nNedK&%+t#njT7lp)HWfjmKjqkSrZ7z>zhu+79jLnUq710x{O zTJ*^hAzdU((aE+Wk?)CVqksp7tEm+tG0wUW1w`oV@Hn&bbM+UGTMND_d6-xI9b-o| zdi^S>_%1!nYlI8{qn3>jQjKKp=>s99vrG=w-}tMUcax)BA{rGEKTk$8ptfTRgW1hb zeg@%%v&ibjlw*R!#&=>iaKmF}gztc^n`y|wmqt`RaEX=HSX^e%5#5DD?@0*)V02tW zm|z1bH^(Zh{;tjS&@|px{#Jy&mv#gbC}+80)fVL@;vG3ffjqYsER$Gk1LCAa5sAj& zCc%NFRn%6_!IASnMiCFk+K{d^$4Pcb89vv350o(kKO~r1(ay0?yGA>X$XF)gGr2=- zq|_h@=d+SYDEXUR$S~D-37+e;NP1q zv`DR*^)BF%hw^~K#lk1MPUxgvdke$U?0FeX)nWQsxR;c!yy!NPxtc3Vj6cM3@(A_lIgF+=0#}zD zoqtT={>8ckekg~cibBF)C1?$bS!z`4Vh>5TNLgm?0rUHznMA=&_xR{W!cZd-jfo0r zfS5LdL8XDkDH3WbT5GKDbVJn?nInB;xn`%%3a`{aEy3R2La@Rj{zcZ+B{sRrA2o9L zVbwJSMK7aBkar2Sf7#V-*&T{8LSyWjgN3E`FJmW{S#+r`L|jLs)n5hMg^9us+B9h; z_vknwq9qpT5&Hw}=x)!>A9-QK;CcwEl?>7tGe84a_>10Otv(J5oMH*BIK5iL5-vjt zE(JeKv9gJVKhA#w&B(Wc)7tW!;;}93kqF@vDa5;AmbHG8G7PcBRW!72f2<~Y)+q&Q zF~E-Ljx=Lh7SnmubUqH5ZuJ74FxAqIbNT&Cpn9o`+>xhnj0iMB0owjo(~H=!akM z4J`Z_oP=Fugs9k;QOD3~zet7!;kzytz?p3OhO+w&`(jnkvIrt^mdAx>Qty*^yB3l1eV!d2)DJ3cz2v8oh&yiGXSO?s80pTiI3NEARgE1YBt z4GYyq;?l$vV@DNGT*dbM_wm!@o*+uSm{cDvQ1ppypw;$7cB-P5ZxJwB9l{}lD;07m z?B!&{(*;wh3Y zXtSvP#>aB+c2pil*>L%e-t$vEs`i-cQO}&QZl3dBayvjPZ-4n0C*1w+9J%-+Z$aUX zrv1?eF+Esy?HOCu{Y4pZ$ujQ#*xN%aijHN9P5^P7*iGxF>GOu4u3zewzlF^MSl_}D zm&)#1n7E*YY2-Me4O4tyvVL?mV`b{4=bsyOl1hK!AC?^Tq-@Oup(@|9Vk<%yYQRYh z&-54G9R*r;_IGB+mJEL!D+wef>SGwp=gk$B%3cSl@QjL|>hs~w)d!?D zW`%D*4_A!gCvp^bfTSAm4GA6E7K|l~<9+`2&uYe?)NN>KRHY=122M>TgbQjR3IJDE z@8(o8En>mcQG7!LW0cBb&E1y@kgaROC=U+OaQm08`tK1D{u=M_1WNW0M9{g#FW8J) zcK=30ud#r~_|vthIX!0aV}%S^Bk}=bdFeBDfI@dA&6ex1BxC2DoyzVdsL(?&HuDt}*1fBs<1hrhdsgayXtsnh)N z!C;`N6lNrzrb{);maDqdA%t@*JX=JszP30zh~3p66U<_&^WfU8y3HDH6+4w~0J>A0*d7Hyy88mjm9v}iK;`Gj!XbeA3)Nhj2CYmLh}l43^yLmaI_j)-bDFhW*qmS|qB`Ws#I zH$I^6qL8pQ{ElbUBM+v~x~(G=D_<^gVZx|EG4_bLdTl{XZ{Gf|2JUck`6Nay58DP7 z8{7ejddokuQXd*yi1-`q@VXta9WwCDU-a@-xU^!=nHEo$9DUi8mur2^p%-)5;C@x% zZIX))Th|VRSh&(?Zzstl(cR+Gl`puvNpv2A!YJ5aq$DnzJx;SLs&VB!TxjIMciIjo zo5w**GgEXd^*Bm-m0~rMt<+Qqlzj@Hwx~>`h_xh+zbGOOc9HqYSF5}({4$c?P}q); z$5K!U)U_pp;l1O%SqZvHJSqrWIK>~0dHUpnVwug>ncY%*JmAlpR3|5ndBaVAuEc2wBgksJ%!GjrBqi%`kNG`xxele`lxtE-TvDIhQG5#W( zLqw&Ba80Re=ay?iRl#f?FXt<)j%eYQ>d7s@$_5SPyxpqsd>4&66adfAaxn7|5lHW9 zMGFy_UDqoB)4l$h1kEMVn zf?k&Ixi~E}Q09qBf`5G`C&c*hax(5?AKtfg=l&OMP?vn!IY32Q=WjH0d zLGr|o1fW!^k+2?JlXETS7NV_sFyVNMSlR6m8^&_XPKzEawZa_Yjx+-zB7^G*`b+#}@#Nj4age7GW0MC?1fXoPUyjg^H|e8;=9M&}6S?+v3_)DVkCGl`9i8%hPTb`BW<7CWnv-&Q zORyleKdG9GS=NkyCL2NC~?tPb;&An-mRAYinx9GVF;G9~ntfd{FP!YV;F(v$~ zXm%uIwk-U*eRZVK#OfFs)Ru$p%U*oF#~oXu2OlS}SV?iYI62}KZz%hbc}A67yQ=7o z?_4{ncCH7#!r*%2Un>@j1zO!UwOMMF8-A(rNF^MV%V}AfHM{3xlZ7x!DF21@jcxIk z@rsZL793xeoc+mIhArX7=7cVq{u}{`K$0Y`#X-vSRs)A5247|TW(hlI4*6h>+505? zdD8M0@!mn2c}&d4$c9!A_VDzt`RTj!5sDP^ot_OlH`DHw>3ML#lJ```ELLj11#-7} z*B!z636~)fc4Zh1+T^6W^R55-Q?PZdg_9xGAVlF${0aI*PN^jM71C`PB>LsrXZw>k z%PEA(F>TLjY7pb+ZenP~!X-&YIa}{N1N7#?iQU2Zo8C!;Dp&l6~qhn_Pwc z-LO!i1Ya81qcI656{jj@7nQ|f<7u~uPP4%lPczme<=RXD*}j1F;A&p<_t>C91!*U# zq{@dv}GfE$Kn^?b<=S>cH?6%Gtcrf=QFa1fJCX;#x4jxAkHcN7ZxKqKcmb2A9E$qfncv_U?h5FI#!A`c zzq?43d2r!fZyU#a=#T98NZWnZ2?d;**@kdi+*jx*{EXJyfR)`TWsR=CSOIY zl30#(>$yH?^PDhovd4`4JZ_DZ){BwqJGw>qN2*6{lnV=#A`$x3{WKc*PSv+Bd0QK# zC2dCRr2hN6U6IZo1AlT=4~9DC-24hv_SMn2sy&##Z;67etTp;!TY~|Kj6zP8s{GeC zOz4c;8tf3lhL$Y=UhE7vrcLO4m|Tt(rB?2v19i z%JqHEJ_jY`Che|7XI^u`bNRF=Y{<)TpMLlmz+C;*H+*5d)AWp8m> zyw>&|4jm6nh9xOHYT##NB-ZFCUTZZyRSd3=*R#YJ($U_rb7HkcAC3q7NK!qwKCYr3 z3RJY!%}Hty^mzz=rIMIz@JS@fiPChbrJb&X4urt+AGS#xmsrs8S_@AyV7k~(OQcM- z3$@&$51e9mm?;XEaH)&xBhsEc5!q!sd?;s!rwVj*gH~uC6^nOQ_W4FWYqkhXK|~)? zWA`A#9$Rew25YQ{e9@)b-mL&{30}ZnrjE3|tL;)*pe}2v8cgh$prHR~6PFczqLihl zP2c_9#nfPm9C?1F3?!t$t|FO)k@A9wyT#r1D~OjH>iiWx8W!yj<_yDfD49*ayzIKQ zKmSRd6|$4L+tG0hRfFy2LLfUrGdP+#V@#r*%{I#*45@~Dk?2b2DA(27{6<7>H_xU4z&8_;GKkqhvp(h)K3@D|1NY{VK z${Um5V}?4|@ZZ6#g|O9yL>4)h*9G3wvS1V#wJ{{`_BmHs>c@sI+^# zIQ+At#hD$mbEQd3L-P|XmnYb}S_AHmd#8rtsPDC*pCU+EQ-z5cYqqP@Ra8GRhbIzoB6Y42W8?9L-5lkMB_rc^ZDoHDv#(yjofylVV9kP^u zRiSQ;^9f8d^*<=_bKqqp@HP|K8ldVb)N>IrN|`_LTS!1~M|oulL*j#|Y$E2J#lOI< ziuBI1%!LwVK5+{gH!EeA8j@E;xvJVgJ4HT$;1v8=iHXJ%Gxf9jO@R6%H!JII?L++#ri`EV3J=q0@IU=ddOH0Kj;75(T$K(4O8 zkK!JJ33^3A&~gyriYli>kF%83$0=Twl5nf7bBe*d_uHxH8BhKCuA7181?vg=za?mr z@fF>L47v9zv}CRl1>8}})m=IA!s{^;K^+3cW5a?9KTxpt!mRInKMGhA9LX1bY(idB zBuf@^8i0Uj5*oE~8}pV zU<(lu1t}4c|KD`^)oPjTlfWnWTM&OpU%8}21^tY8H@<*d6Pb3GN|i1!WKPX|v44M# z(cDNhZt!5!mh^x)ZcM}5dm!ETr-akSal7nsL^xhnqkR^qK@_8g^&v;BrpN+Rc@zl@ z)go__%fgruD){l02~(< z=Me1ep`%l%y(afI`Y$#=_~tJzp#o|gYsgLQmA`snK}OONqJYo;j{NSjq^~zH_L7=T z0011?e-{vtnT-tq5Cfz{g;d;E&wM=GRSy1syyx0HWSr3=4`7N4LISZ|HPIak7M8k~ zrYmhKjn?$Y=&9ON1R)Z9q(}|nG>J*bGsu%Pr!$(~KDeAH z%qUosLgGWFoOIhMoDR<}-}x__1R%^{zDL2O0o}0xVW0S`8G1_W1X8eQE~);{Ai(8& zSirLtAnhB8cPemIQ^%dhzZYQe5j1SW>OVd&UAZm=ohRn+ii!0B(RT_s`pjp3MeV~l z{-&Bs?mbN^$P)$U2iz6|>4x|8b-;ls>B><@+KC9WJZ8iipN7jEV+Ir^Z)$8Sdo~dz$eYs+|(8iy2A9=_Vlba z-0Wu3_n-`)#owe@QtA6VK7~$wcd8e7xdo^dr>Rg&rRRS8Z&r>9HWOQ?2VxmP z+^SK1sYv~H-o8xyFUnsQelo&LH%ac>V`AX~-oX3ZJe_!X3`tfRum+byYY^?x7y@_Z zvht}YBp279#)||J^px%eQ8Ud@!oEaj0^iX33iSli*^#JwpLywQsepMMx|F_0QZP@* zPlv`3{9eAq7^7QX=I~_)A7~C1g%fZu`iyja5-%RwvRg516U`w0tP~-sbNTE3uLk zc%uO4bPN-~dcr=B?grD93vbN+vB-3PWpc!I52t~3tY!?OAuPj&;C*1mf41s44 zk16!pVD?^LhMY=a=ZgI(Xlk=}4`;=?2Tf#J$iY0#eBAKG({Q@3G9Eng2!3Z7cx`z% zRg@Wu)3`P0{Un(AONOeaUR?p`J#Ct2ewG5*N;6ixSfK{~UnnraR-g?gj{Po^BO4LZvl6ogX)5?J z$c&^j(-^J~NEEo`yP2f@52%y&l^}+wp8sc+97H`(@FN4%L_w>piPi^?SLJ9?gwv=G z<8-WHVC#1%PL=EVl~^b%R}!PXkTM_X^#t0z@|=I5wllvREuUD=^FK#tgKfhBH2L_J z97nX7CVTmfvc5F$d|vr=U~1u=lFGO{dlEj?eIz4Kpp2aQ%WC4=_u6aA_nm?2$-9d! zjZq!V5|obU7`m`6m&AV9^;JXVf(~=3OqaYiq14&fh1-o`r;br4%A^>|H7V8-?Rld9 zD>QpK=!w`K0Bf(Eax0fp@Wd&WVVk`}u%laO|2nLJ;#VAF$rq;nhYwgnvLuZUkmPgIxC{x?3rB{n1p<4Y0ze17#!6hk*#I_ zRaE};ysh9159=$48M(>`{_S5VFp@aK{XbWC!CCU-Zs_0_)fBzc6E~Sz4Kfv3B+78(aXC2Iha^3y8gKhe4JLq2w6p6JTj}juk ztb(-5tKdNnQ4b=33Uv{sdBKSr+Q8LQN>vwC$qXg`3lEUM++q2e?a-_U&mOy@w)<_6 zdpt2zHlOpA8~-Z_WTau&>LGA;9!tmd(N1VsB@_x?idKb~j#CeX&w%)J2O5~N0Lr;A zgAaOt{rgZ_D->JLTO2-5y@}CwIabFz-W9($;b3Y8#r>RIeA?dV@aofwB2Z{H>_^9l zFY+j%;t$2-2?re^Vq^nvej*di8eRjIj6Mf^QN>_lXk-XrzX5VEvI07!Ff=p?vKUGu zT~OgdNDMNVW~w1a*3RQA3N%DM6#>ll>NO|`m`E;^SbW9)Q#1A{uaIiA5kAyV5E>?r z5*vQt^ggr~4<1xc2NzjL97+16%RM)&kcv3ie~;_yrI;cyG#FR_KvWTa3rTi<=T!|I z@=NvC8CmFGYEfKTYV>k<9CmwqdmsdNqyS7806YzSl{;BODcHHZ-ruI5rD^#~BO%T> zNT_16fjGT9xk1W_u!0C|s|J>SFG8`PEReZPXCc*&Ji^NA=jucFBNlfZNa?(5m3;Qs z>1Xrl@uen`<9TL|+F<#g;$F^kKbxB)zvTyYbV%_c6gW&ejaJ8lF}c(1+7`aqUk30t=~T z*kS}epQo|;y}2+M_27HA;(Ff>7`dE}kSS!+{nu_a(vf= zXy1e6LJ=|iJqY@8z!47JS=bFVuo*Pc6-ra(az(f2FaDLj++Y>C{Mq1gs6_GYCBh#u zd^r27(PWAMO`_3kjzS@q9sd6M`1{y7&=C9Wu1sJkm0nwLp6$Q65b(HexBtuiz4JRv zQBN-x&#nsv2ged@U^oV^!TDHe|KC63*N1Zyqlnz9FTb99I*7eSZDPKAb)COlHcZVf zel$$U&$Br?I(loj+WMTx05gxjrQ-nnK=vYbTow1j`V#({+^TTXJV=kY6Favmw!#0- zQ|dSFokyfOGYvnl;T$NXLZ<)yPLk(`5r$S$QnLSe{yLnU%z&qF5u@& z8H*DKciK9%yWj8-H;!!-PVsU(yf+YW!JZkFCspVPG)1(04buzw`>}_`9nk)sfhUhQ z;py)w5H6FyBq$q~yL@`9_Dc7ZSLv)k7xnVuX}#JE^ZIy+G+yumw6?Y$%w)H!_kH(# zdiO0ZD=TVg!EkYLNoTjh{3?etSDv}~`Naq&?I;v7af98#hdnswAcldXiy7V?PL57bk9@@r2>37mZfk9&LLl}v<}N>tF(1LaM}MKShZ zBOoAbb0JE^;)@ga8Sf5C)oakLv^zmT0~?#1n7rF)3d@N}XX1Jb0g5bwg$ zfTJ|0Z_PD(%8L0sM6>iWjTetcK0H$ed``_SMV*E45l=AO`-`fbC$2yI?7fg@~TsvZvFV zvsM+x#_)`R?&lTP=dFMn#TkN95CB3)mMmN-SV8tLHK&R!!6C4MqSH{^Pis z0DcKZ*uKFQxJT59^Xc`K(=hnzSKYV=yFcmbTCBF$!$Wl7sfNGjb4928G@(Ho^i!!6 zQi;XU(RV7sii4N8uipH5`rzQdXAH1820p6X`~m({AfRv`iwv~?35)!^%&719{^d%; zp4sce8N0sAq-vHpW~_T!sYSd3anWXVshhO|dWZoNG=;OCm|}i;lQMyKD2Rk0vdFR@ zV4gWURUnzTUrH5e<;nrMRQvvP35BHQOx<~^&h-BH@bF-4hB^TQ{Ey-WWlng?*~!u6 zaYOuFgkR+%6=r7D|9lOWi@u!0wvxR~IH313eIiXJn z3SKW%9k!MGd;flRGSIoH>W4iPQq6kKFw1>DxXAJ1w=U<&7nrhD#$yl<8Y zI~|NP8lJY>^FlTVSkL7Aw+P^+9L#`wIRU#CtSONjatw0gRFLFZ^8Mr~1Gj|id;ele z^6;2Uy>D|>aHn$Fp7Wv{irA_e`773k81K^slLpwON#zBtQ6o{D zv*j;4j-8FL-=N(7SMjnpmOr<3$hN>@vGfi zTUt^Yv}z=!<%5<_L&*3LdWhp-&?xyGhcMLdyzajR_0LfAvT5CgV@(uOS0<9*BmL*6 z`TW$T$&>pC$0=|g3(Yv88db=1`tC#UOfTOUN?*(_LCwhX=;rPqO#-_M< ze<-h0r}kNaN~2nhi7h5IRSiN^D1+Zv>)P-0F^Caq;a!YNyQ2bK9K5%e>#nRD$jawQ zi2wP{n11NP2$nr)9(rB)%|Q$>q>S{Kg(RAc3ILRDXEThW+@YigDbV^OR<2IudEfj= zudFwtg2gigB zFQ@>mcle{3u0|er=0RFkR`wW4@DX-m_QLve_>p^2 zv9w8I5Yn7f!HLzD2hHF?qz3RZYXIh?`L}i0ZPVl5;>$}?6i%p+r525QFHs?Rp@H*G zUYShBO_*Ylcy~fh&ij<$mKE;>K5eBOlJhyw^zANAT7g&bvA9?rHIS(5QUKEMHBV*G z8<3tVfH>b3J6v}*sOex##ik%3k38%X7_Ug2o0{|({^p!2o0a(`d|c3Y`>iPd#8 zM(bx`ZJqrsl9Ub;%9|g_`-J@Su(!wS+=ta{${LUEv1(d5`e$wwCUaq{HXY`8Mvuga zbKm+Gtv6%}`@0Q=B+S*^xd-Net4p!Fpmo;xwWr~efV>T?cdrk4PEps>)X>xG=`1&2 zuQp&R=hvpfrsm{qbv~Xe*&>iJSOO5xJDTr`HDfWQ@?`IE?d1cUd6`DQQ~Wlh`8p!p z^MBFlJ9NMRZ4|6bt#Rn`SJXR}pB6s(?vwu-X}dkf`6cRUdx14VU?Wf<3kQ@QXZ{>d zrEj}m(mrJ#rP6B@B$dzSAMX~Z#+T6#!chQE8u*0rMhO}Ism}VuhsWJQ982k&4NBJr zPJAuIR|PZx*VBF^78P(4HaB4LIG-!*DDp1f^!?E5{CrgC^% zVS?fdZKfg`r|)}Di=IK~Ghe9-u%GW)yY8(u;?L(6l)3GJ+8dJQ$)P1I_W~Y@mzT67 zB7lgibvu{ZY+k26moFY_yUxP|jHok*KIR;~uRc00`}hE@YcXAK*#xv|)$Uk9$%W@L z4VE6{O88LZT*uD+GSwc;oiZ+~jB>k`D(xtnk9ph#Oq_u9@7R4h`ug&l?(g!g$rp?Q z&gU)Tgqn>e)Oc4=^(Px{_Meen3T}mn_~SqT7*JpeM_^|edk{UgBK8Jz7`*+1OEb0L z81{XtAc7s~koNKnLeO-uIM{z_!pift`OH#$`;d-g9j==FFp zB+b|z-Z-bE0U`(PT{ zHMfnX>G!Q^@fbqZ_u9@V!(STqjXUI;$gnn40j{WTh$ zuJqO%w52jRHwSOeX_H^9)EFArrN_v^!m5L%@BAnK|Iu`nL2Y&2I(Tpk?!{ZIxVsc6 zUfi{~ySsZ^C?2%9yK8ZGclT0?!#(ev`Irp(!%XJv?7i2s9$8#6k!0l%>hmZ~mfTud zg!~@CmY0pGbif{USyFfBdYjK+V{Pd$6)&*Jn&2Q6M0k2erhQWSCm>VFyQkIhm?PqS zkoML8H=FGRbJIrn$NWL6Zlvnn3_H)=I38ucGjKRMN%;5g-*=^?q`KMRsjZ%F^o7rU%NuFkHERJa>oP_AB*_=Bth8cOw6ecJDx+IvyHzKU)3q!U}mOCx5rw zhbi3MRA_$X+3}OjSiG;P%r9I&%QUOVyT0CSw7uQ0 zkTlhier+b0vhGn=pg^}Qq~WX6wWCf3i&&c6N|jF8&V;y5k7*@r2D z2C{T-J^GdH?c9O}+qD@nR$k96(tMucNB9m>R^U*7$JUyyuZ4DwMAW)kL#odw?5)~A z;60j;t&wN|Nql&OoN0b$SiTgVWi2i&4AW`4n6)xD-xmpZI`3lnK+2W=P$du$o985@ z3_)CPDytXu5VU=c8W#F`*EMn+1fQLkeA+uI|SJh zRso?~C#+{a~ zwi6UK1`zt+%GR&t=_EoW>6amX9>>o=95g8e{{4yEPD6U@_?P2g`(*J1FNOs$9CuKt z5qx?^MpAluaP7>WQ>}O^{224~tL?rHg$YD%4k7xpqLn7o1oO*RKLYiIFZxG!Pm^7j zolh)#ynR2D!t&Ydeh&;yj7XdBW1lUx;EHuoAdQTu=<1#`Gp~2iQVYF|KDb!;3Htmy zlX!S|Sa9%(vtT3axe)}|fTW}(zRMmY3SZxi_J;&!gZ3dVc!)TE_E2t< zqol5Q{UswK<3UOaJ~uNnGjA~{3q04jniF_hGo;b?OLyf|OCanJ))f7@t<0e9suxu| zK$Pz-!J!=^gbI&oFt4SAs4oJq`w+eRP$-OA=KW@qR$QX_^360shC8a5#q2@Fst0*h zMF%I=)#S2Dt3&j-G0#}G2T{4khnd+Kqo!r546I1O{9&4jG=bI2+s3!L&dP&* zaGA+rKX=6E_0XrxW{t)mPAQ+v&k&6!hP7qyAfw=h9#2sv66&0xjiGr9$drfM(ZMpmGn{vEw#(4MJCi_I%aKEEhnKO~C@+Z(BP=)U^=ND`twCo72wBki7;6V^buM3mps~ zk>3w!enrEIwpD{(3FmAof8o67&rf)Lr9z|nsrv7(K^>cLH%Cq@*v_@25 zQG+`Y1YiNb=J+9Ij3YL!qNk1`gaq{g>*07izX%2RCV)@{=u9iC<3tE<;}4Ckgh^op zSR#l*&xPYwrprVLN5*&#Yp3t_$#R{A-A^u`qBaVUlL3I-b(ru&=BE-}|Yo{h`Q*@3_X}MV_~1@BLsnxw*|9mTULP z|K<^?=fLm-hz|9jqk>y-`6r?Zc4Af*+_z!)x@EL<3sE&r!f<4Sb}Zg3#e%{@W8lW( z_5RE7U%^$#;HDCyCgW5vJz0~obZKF8TlxMk^K49k=$MFPFqZ6P`K~LVFX$CsqONXU zLsL`avOCD3A{uszGwZ^=4ILDY2Hj=!xi-l)iX=x1}ujVcb%v#k@-I|J8CW2a~8*O9b+=}*cUs-wi z7>Sg9#k;zIfHb$+A_Yw@PR_M6r#4m^h*V)g!5Jx!{nDGJu``bfF)YcuI;!_I?+%FA_1|&|0SswqinkWG=SC|LOS|cty z_<`gXSpr!TEGSkQ_t{_M{rmT#V3^U`>Sf#NWl}ccIrlzJ1&I{%HOIa?$D8pcqr(Y( zBW;WxqpRDN8;jRs*6hOC+GwxK4s|7fojEn=N{C=U?8_Xq;6ZY6ab8>{i%+na$ZYYu zzuGoG%;I4@DB#l$IC=Lq#$`b_!2eWJ29vxY!;YINQ^aApT-#+aB_$=E`2%a#?81V( zmzvsa`$7sgN&c-4niFr#d?bK{_o8y1_XgoKsBVEexYTGdo=)VQXl<91&(~nli;5UR zrIwARt&C5t(*{-8#V6sQ3^&q&R4>W`@$bI%e7R7 zYuCiYrw7m6eFP*vaLxWwsv@ARx#}Mdcgc!lY5QCU4Q2<#fR~-eTaq{T=X>NjhUjhK zRi?6FZF#vL<_PEKVzz7d`*6T*w-e=a`EnfCJi1$GG%#us2Wr#bS#^wuq7S zlMWNzB$HAJ3=c1AzcsX7YH;3{AlFV77qXt)1O@Ic%?y8|5BR!VYi{?IbjmxeRiHk1 zBar?S%}9HOv4~qoBSvxVJ08*a__(F5t)wzIxJXNs`EDM`=ykLlQ{;KkFPY{Y?R*e$ z*U|cRg5pUl`voqa$w&vot|NCezC6JdsSH_4TX6n>OT4CFJK#K^gHOxjogNEzcy~k{PUat;wz_MM$- znetm&mZ#RvIE%kUiK@&^Di2n9**AS%1&Dc;w#SpQ(+OT^o4kz;pP*B0_%O|&ugc>@ zp|?Hsd}U!JyzBM0YN^qV#M(y5=&_#Yepo5`i3V~59ILxFy$Z=>$>%L3k?x~uQ)L~U z`2EpTQ=p-?bnpnl3NF;tj|#zyaNHZh2E;Cnt)6KVqej!g?UOM4Qv2Mp2l(Ha{PD>7 z&WRR0##$=aigP)j(b}QmVKHfGMBoep+E}bKwS^uhnduL1i3p5c zfH_YoEiF9-wR0!R84K>Srnmugbb4No6Vn9WSKpUP{kA`XgHZIqO7|GPc_O!6D687Uk*+foTW!tRm$Z3C+ z3m8xkCn95G(e!-I8xHlHj|W`1ZMEL?>=g8=sNi=83G8$mZI^eJ>%Mwtd+tQZmJ-f< z{0LkC^Z2tq|3p*F^c!Q*awcUSrS?7v&IaAZ;|S_Ah9t(TmaU-XTk$jfI!Wa?S4#ep z0A(s0WOM!0k0@qn-Hai#0@mh71l^w+zJ>>i1cm^V4p#8hgD;lU$9El{G6E6dkfbyy zhuIm#CBD;OHM~JWjX;TbpV)gJ1L-p4lHs!tsXnmBFJ^ZGU?-Z0qbRt@s=l7L=LUxG zKdm%_2WvOwlXUz*O@mVWE~V@{Kr>xE$Gf}S6lkoxkfh25|BfYZIBz|z)b$;vCGaBm z+MC|@alZ_}k(2S(v`&ZX^15FvF6Ir)yWYL}BVW~PQ5V+ic3971P1*fCVZ2q64-U~v zrisjpG-3l@#TccPUvoBY3e3HWS>@Gd`mui2N1T@Vlf!>$ezx)P5qP~HT&!{0P2KKS zI^U@GnWxKTki!ZVYu2+X7STqfI_mpJwn{mQ11}7g)xcY`rQozrzAV6-q5Ndn<`u6(gml-l4m$lik zIqCsx=U#HmO2A#)Ci7;K$7Gv*Q-o`~4E8TYu0V4l2qZS}-Ke9_8um`yy!AIEw5eLy z_ScHgUkSxKVeYdl6q7fAiY+)9(NpR0C4YE=`0Lz1WS6f}LGL~si47jI&>2QB6zFrT z6n+?G_squR8G#4u=<06Yc!_}#WHEyCKq@G`mOGC3S5yqqINl2&h%AWWN(@C`!bXb% z4Uq~AOCuXj8ENU%7+gdYnfK@i1(E5GP#U1}NU4bPMZ)J5cjo{8P4{1`^A;_ZHpFh! zB=Fj4yWDV|ApE%W$M5N1*XbP+p%5H3{MD0R^V{pw^{daN>3nGbB@aETAfmQ*TEyW* z)>9h{HXjXwXGidF-CHy?M4TQsQ?Ks~(Xf4Nfcmv9JWclv8Q5y+xuPoI)nCXkG>qVA zI&d_s&T1wRYuEE1*Q!NS01j%W0E#_T^t+gp=Qi47ugK7eLDV)}!Dln>|W-{rsnfqtl39Qx4sc-Z7+*t`jh)a(?F zvAH(96b#G;(nNRfsY^%^2x%NTd>Fz22N{QrgtX-8;(b8by7nA=+aVBnbJNX04HAWh zkT~lt?HyiwcHamB%dR9nPBX-Y1{eTfgG7HaT8eTKqG6X6`M*p3@uTomvo}$oO>Hck zPTJ~o49G}}SULozeG5rpni3+WzaEwI@_g8(1ze{SjQ(9YDi9oltT~sd>QypJd-t8P zaoyY@Z>ev=i>G7;+FpOHK#O-Dpi*I5KSsXz?tD#3lXXj~BOu*n z5}C_V!6X4Ei6}L!48bOq5lco;=0p`wn%a`1nySGX0BNPb8WToJW4J1Zl0qctN`{!M z#)T^sq11*jvTiB|SN2GCVX#j&UFhH`msiII z_RC1FR2p=z7%r#P668GA&fdW#@z&J|mEFUU>6K4L6n*)KCNaRQ{^OGm5P4BoKFvZT z{)#es@*P$?36!TG%J0f*?PD6!6FJ62-7ZYQ((XvC$HF5W&m^g)#sPvA1NX{;RY^;# zm(?ggu$yV)>E;cPg!F)NCJ7F@LnXOO69C`vWFeC7-`7Wvas>?`HQ6tZA2dvCnFf^g zofy^&#D}s!AG;Fxx8j1z~9L&uurs8_PK@=VoOi7a#K?$hj5*`&8y1wmq z`AA-_o84NZTq`D1>yY;^J_=t>6}xg?b*9T)eg+NU{Bh=R93&IzAHoj1_w6Ilx=p~O zcKx6Nd6Hq=qYWO!T&k(by6Cqum9iR`{b|}!aPc!0@R|&SS(eEP+I-rZ`5g9iBc+L) zXN4GD9;^%rsn!{%A`pbjSE)Exz(t9skw}4D1yQP!9$$GOh!$M!;ti|(7Y*!D8JN~X+QTFbYGNANB!O}pd=kqM5CbHhl#diYgL6R6P_`JbR^&1CF3+HS8xKzE3-8-?FLT1k z#iJ6Z0U=2h^^&t|r%*o8T~ye5|XJml?o{L&yftMG4p(XLJU%F>_T&B zzecoHSrS{(^8xv*lV*4Pd^ugVFM$o? z86jsN7D6Bz0*qVuF%MRb9VdxtYl>%0|;|SIdcE&G{5G_{73Xxvs}*y^|Egrqm#n{##0v zusfK%>Qh^KQdPwVn8vrX@Jp<$c%AD}l-@RPiUpk5+gXNdVHvEkR*B&1l}xU;G+@yA z)0oH!j^3~4)+HD9+YOQkee%Y@L7iJaKA5{s#$$+vrwvCF%7cnFxJQZ)T~!4JQc_dH z+1XV9D;iX`4&Wt#9!vmKEGj|>rIku3CnXL-9*uYm-4`<=wAq^4C=;yE;+&*1xkYG{ z<}0@jW9*=39y3D+HjL>pW6eaaG3^eIxF`c`x&1 zOz;pD5F6AI1!e;?e;6G6X_`rAW8TF!IjpLNsy60Jx~YE@tr^UkWVo zWC8d;>c*B^0!#AV*Py#6`3T$x3h| zF~QWAB)*9|*LYNOON%8~;;6;WLlQeW53sc*W@lrxt;g5bbMlg6RHGr4&12+GgVTFH zM&}VXz+k~sJu`w~0U-f^$}&EJV_K|HRyf$Hkf#iNZ%LTB6#1xc=DoXF%H$ zT{`Y(L*tEyqoM(evJ;|xp~SLm(y1`g#wQ)TrdP@qw69wRJ_AtJw_W*___8McO}&1m z#KHpXa)WaV3+&N(-2iCH;)>48w6?Pox|_fm>zAe88L#>eXNhB<-{YnoMU7p?k!D3+;~y?z1=S7|sH zU&y4qHSjIN5ew_kWk%g=ES%cCF#v*vJORnv-2Ce41%SXEG%*-4|j=)6@$!|WoA`p zP+?&R);25(3J-T@iT$K zc**h1)U2#Hpq)tC<<(Y!Bqt?J|9XhV6u#fe(b3WQZ7D^-C5;1y?`Hc?K(u#U)(*zqoX#+N(7qybL$*}n^amWmiH zd=YS4UY!DJ_pQ9p5v_bmIc)XG)pqnTxu!+walvU#AOohUHa^fYNFk=|Lq(@6K5^F8 z)lx;{*lGYyJZZUTxLT&Z?vfguV9I{m)2VH$??w$P?SQ*bNC%MX{}pT90rZyFE8h(P zx>k(YI4O~xPN5YsVC@u~q$Wf`nyQ*09i*bAMKGu$07$#p5hanAzf?`D;|mK5EI$91 z4-GrF!%4VNgR9MM4w&DBwKt94K`3QmfsY=K(s{nDdLbuRq#>U3JVscUA zFvRy%C$;?KeAr3%xzN6L=-TXJTS3WZY}C=KqXYv=^uTn!%(f#hKr-ShUd+RW{mqtE zflSZL1V`c04~aa;Ue{-?jai6Cs;a2Kgw=|M6T!(|j}Tb)JCOq3GTx(MBeu{x3T|6M z;FKkP`*t(@_n6~-=knwDrmn7DiD5v;txLEu{zkx?pJD3vcIO8I!{?`O2L~1$RPQ-& z!uNOTCWQxg24Ylnyg_`+ece-fyk}I8Dx$L|q8jSzJ!b62_e0yw z$MiQJUxJ4XUvBpuoYhoSjX9kGsU2V$ENyH;rY&O~zgT82AKvurJBJ~8FI5`@zDb9X z;o*meIG&CBCg5R5;kXhvZP%T!Py)7)nqIVE1Ix=}|G{l)gob$4M{;LlQetiOO?=n7 zu;`$baftY3MNIb%n~|}E;r)Al?_Gt(%W0=`ICb@kE-T9oJECHbYU}yZx%D;=rO1KY zd`&H&&H@g$ACEH{N9E;AzR%Yyn?4<#DN->6B25;zgI$*P&PDdCjdm|(Rj*Dx`W`Pw zWdN~lz6>~2{H4KUaw%+E-9aI|o>y#y;X%`uGZi>sT9rGTsat=J*UcI4fl>J=&^4C*q2bG%tNpGrlv9;-1n4yY-oVe z04Q{CuXQ;uXRIGID@m0nI9(3PNs#Ba)AVc2WVPkwM*gJA8K6gzCpFsK4v-ktE%%Nj zrx;jp5*xFpeHjf2LKtO(T5$_rxg1Um@EykT99IQgv>c9r$jOTj-ws7I4IAxN8y7Ru z)1{@`T6Xa)=h*)Ukz>-x!j2MmvvC6UH@&r`IdDW@V|pG80?x_lDQN~z!0kY(dRe8= zWjiWH#fv91U?ub>7Z2JkcJvB~w<&pr3F%py5)j3G{MJ>(V!u1QK>{}Md3gOhcSvaP zvv;1{t&1EDrMO%WMGVWRX?5NiuA~He)CTy`lIBkPY@Ev8$7V!`C^(53y)v9HlMsjH z!i0Y#0Ia#JlX4=vq4)8A_ZCdayR zer584CZ6p-cSyCA~ zpg?48fV{aNRuAfo>D$Pve9Cu(L`G4zfS@PQsR_Yfs3b78XEZQ92`AP zdQ0TT&Mi|jGdLQM+Xe#BpUKBE*ss z#^&qaB!IT8EtCvwlZM71%=;cBS~gDfy5-O$YEyq z+ScJI%kkYTxig-DwOsum%gzuTXwFy76w()gsX2p2rq_6uF2ZEk+1~jp@Kqo%1BjZL zeIM&@yX^Dz*db{QZx9OcS1B}-Xt=)pxe5^WTrsY_@g*Q#;Gg6*sSX>5%jGU zR6rzkM^kmwi_Jk{3L27}ma{?P()4@Wkk%^K7BvUPipM#|zqJ9q9r zOEc(Txq(b12G7x%f2vrqau!~iC>4Y-+z8NT|GSc{tQg(TS1OQk0X_9vDMxs>H0Q;3 z;L-E$zNzb_Wwx;r^uirTQIz^6Y%%Gys>`4i5XaL&5Nz?QGQ$@XK(YoDoTWAo)`d!a z5(7HUO41L%Md2Kolx21vVe-dzvvH(L zg;)2*gR1jm?S@7FyQkSdGC<55ffzvy$`vS=9Qyq`1RnMxw9-8e`*`-~??=8`Qj|Zc z4B+;_vdUIOO#?4lU{e9^?wIpc4}jowB#l5o#W!#nBx|a=Jocl9{YwJ!FFLrfXy_;@%O#o_pJRh~L&=EVCfWR=nhs zUdOXfVO9H|KX|p}bLa?cWt|}MS|;)2`ACWMBJqjr`&yTFlQ{3dvP_*IhO4EzuN3U; zwQRng!trDR_;RpGMm0Z0RgToNE<6MMS%AcpRC~y?f54JB;OogTetmxM1oQ`G4IOgl z?4hg_T0d=8fIRt@%f*_v!Bp^9^H-WbwC(csIwjY&i|jzk4Qv^G0rCAl3}S{JKvl(#W!wI_Z{H1{^CJ%J_8{(^Sls%_{!g4h;us?9*92|m|9sV z`c0+G{vBSM>TzFgGS}2<;<}bL+4W!;AbIwkk839z1f^R?r#3y^^0{z}bVwtE`m$j^ zGUT^Ei#A(i^%x}rI`n-=p?vDU(!WleCgdk5V<0x)`>XK8zZlWVmR43FIy7In+|?ja zjN+kYbO>c~sF2Jys;C=`NHr%U4in+)}i_4@QvyH?w7Dk~OV(>rZbRK0~E>0)v*5#Ie z@9K%N3WD&2#3SReklJSB-x1$ab%05@ZMy-WQ4#m)dVh^;pi^zsQ^ne{ zmpA*qzJ%&vGgfhcbqyR6mxoTjr-M^d!x#U6 zX2e=y4Ss%d@%(tSLz-J2DSF~EQeAVsm7j`f>JrrQ_Q96mfPKc=iHINd^xGV%z&vD1kBNW+2qY;!#LR8Zv#&+DZ2J)BR9UhBA;1J zj)a7-OJn}2`?b>C#(!yJ@7-US`*<>y@L!&X;^jz&jX2KpdVru$%CeQ12dL!v)1m*| z?}mY3khet6riVlK8re)aVa?gt^q+DUvsaJpY=l}|o70yOG{f&xHRfV7f&L9OkhrT-NilxjP3&o+Mvr0V&zP3kBq8eD zS)BJ}4*6Wvn3pVu(3Ke{@oU7cRu$6+He!XJyjH+u+eD0nEc^>-MQP1nD0lz|G(JV8 zA49GaxX?>$8bx$1j**YoU!cnC*pKRqI9OB8%_87#yO``~ntqgrYWI6K%u;7msDBF9 z)z$9sXhfn$68$BHHzqSwB6&r>vdmojfD={5z{yPE^ z5l$iAgcEZ6&boeg_VPT|1hX9LFDyFLFGG>PWjWI%_4yRtgmH{80;ZkTjuSAm=z1RiThLQjAO-0 z=hJ4k%ts=!FG>JWv}&1-Vr}ZW{EVQC8%YCl?zPrJ=5zm9H!6WTH4QpH**3+?l1)EH zjAuySV3IvyFY`j9Eph32wCteQAeAv|P-X73icC9?j*fQTRj->9F{?i#ts=2XeoVEt zv3`|Fp@oAWLbk7#f4zmzo4`?#2`QU|MN1EMoXTfe4ba0Ft<<9qqA`lFpyRhM}c+}}X&YC-gG;&v-f>;xYX}huf8YauM zxEZb{E+@d6Wm)syX67+45}N|Pg?ZORUBEO_N#bYk}>$mSa$AR3+|SsM&O5L3@eA6+Wcg-e>z$OGuN-K8GAAN0J@9t+OkX!?{TDKXetYL`RdY<;0<^XNU&yU7P#4xQ>oB zJau%#i1Zv2}VAenrUOuu5(6}BWwbiBk0R=}sy@=*2M-hF>M#NU)G<1(i03@zf`|l_q|7MpC7qq5M*wwFMIQ zD_y*Xltz!Hs13i&(g>4pFnS?{#{j+Fb5!k1#*SI&8z^b@ymRdmlTdvNCo&JLf)?H< zg3Is+do#bx$Z9hp(^Lwso|^<0uP+|4xw6=_)^!Fn{l|RsB`AsGOw9}hVqEj}(g2Ml zn&h zvAnzt1>>m|9L2{=My9_5^uIrUZb&6irhvAdbG=`c+{EeHjBh=t@Z_Xax5K~?<}0V@ zcgakj3mQ@Z4fOt~`j{UD*sP<5Dv*L-h34ptqV&x65*Y_$X-{Q9j>&;B8dhqyxTI3d z+gnF(ok1hgkqJ6V#?Hx60IFa>;TzxmHti1gsnEP|z>a0nk{KZe!_6tK@Yzk>fz~+y zZG4NSgRHg8!2P-I7(b-3RvD>D4cakK^UV3fc?n};Ocf$CW4TetCI zfeWm5o4;O?L-6o|@{WEsKutduO0JJhd{-UHlocJ6&yPN&o6iVLX4Ha{?}2I&g5gP5 zv_7Zv5)CHg1k%W3Q!0FyPW?1N?#y1_>0-;YPgzONI3ko?5R^L#D4axX>jtHl@MAZE zbM>M)ix-)ewp`SMiC<9mi|uQPyKy^0EvsEfQzaKb0P_^^_mjN*sF~dv26<_Bvy*9G ziKc#oQ;f|xiXV!E0%L3;xc`P`0MHfZm5g{Xn3>kVyK`A9x-; z&1j7*bW1!V%CUMmHeb~w5DGrdZUw3G@+O232F zE7BWfH_h2(c%j3tBcq`67tlW{Iyg8?F8m%lw;!zD?!ygk6hKqtSe26)za=|0Znd#l z0A-!kusgZ}ZY#mmjBhs;zim-aq<4n4sg*^c3^aKix(U@-GgUxhm(6+zmOllj7!zwz z_?9alhDKKvjk4ozqm+VQH}lZi)aj3zkgA#*j4Q9|PT_)7g4^Cm`THMvoRW2&ySF!r zdn$77J;a_PBP0AhPMPu~^yx*$O{-#};?OTR(P2&s9=WgEgw}p20>s($|L6uX)|34B zlIJ$R1F0k_l{qTAfw7ShY2Y+Mq%iO@WY5$hY3)za))LiFZo_XX-`{)uveg2L9tIhI z{oKBFPGwYtOaiHxy*;;?lpKSOtIXLK2ttskktK{yazXRHMjNc%Oz+1lS0LfjW!Io1 z&(%RkPfyT}C8`vo?MD2h94JCTXcEWM@Hll{8`x(0N0wg$F-;~MLWSBpJ>=>$Ny+3h;Qw~3uo2QE(`a+rd>QD08yXpjwknZ>pP88W zfk9^VNr%rQ3g>!lwFVMNgN_zQ#BuPgy!@<#coxWGGU>4pn4ru5ZT^kRiYJ9UsP+UW zQO@ODuANc*=A!CPu2&BnHlBbR2KKcM>gC6zn0eG> zX4MvypO=@XfDy49ia4~gLTqMkF4bQ?2v^hTW81zNp|@Y)naOLgp`9#`$-?in6UvBn z^;BO&%HvMDqNA_uB3}G6ySMUD8FosYmCPhC-rjm+eZQn>#U=SMlkTRSO_3ymTQg$? zMxKfi+8Y=f@1sPcXw6G!J+v_e@7lgkYamdq#TE8#uB+bWu=7g<^L|YGS|)lr+WNvl zF!cZi0=p=`%Z}&3nW@te7PnURVF?wIrC;u;w>1saMn zgy_M`%hIDED9@~zixXFqByOPl@1KUC-Ee#;E+blvBu)p;^bg+T0uFhI6hLpor4bPo zmy`rCMDzOZ@PwTu?yt?cY>R?q(lW3~vGTEP1;R#)yFX<_`Jfg;7% z{~r7{AwZFw2d(|Xz&;DG6{NnxRNK)R#lrRBG0NDt9PHgMzjO1=na7PNUi9DCliB}v zI~@UGP!-63VFn0(ym(z5k$;Yeecvz3a0qLmqNxUV8<)%ZN`nU)ktpu^Y`-dKcix3^ zTQOe@9K0plTlN-JWc4W-0^9H(lQF&IiQ;xk-`ml7doEEwDd~@3XNw>fxOy(FTNblY zZ9MB>V;!$10XwCm;gH8}SYy2;EcW2963M4KYgr+7&P-Uo<oZN4iD%$D*`T)W>ZR;evZ8|1xTyE>_6^M0qFRgL8cLVPdJ+EK5kY7AS24zUNv@3SmL}foQyp#R}a)Chc0uxtHH8+O;&r zPm0XIo1n?0@Do#$$p8w~Uy(ZC?Z2LXev=bj6vb}@AeYoID1>cwYD~g->M0PqtARgo zI3kV5`=HUh;d3d}+S!>MWPPE|&dxpsFzKMb(Rd&30rzzZx^@&8gfvS_8u4k!Bh zIy&{rHa3FE*w(Swkv)Gbm9cOdxyS{7kD~n!O=J5LdaZ>r2<^du1P&sK2ZCfNW9&<4 z8$$8xgXT^Yn7uDcFDhwmhDXLm&YABv9O0+E8UMNJ!@MLSB3f?uefYy8BQ5>Po;up`)!O=G9B78_tkP2+&c2HH z^Z|9{DIoo9O%gWKrMVJyv{so3-;bpp>}aMitE16xy-!jy67vyJf0pXU2H!{2i3LIm z3MKywmz*+EA#aE%+-JGH zHpKu#0D`$|$xgWAQ}->_`a|BL8v$wB_Qb3s}_i zHOitsR5tGvSf$HOz&DT~Vf~yqydfAL8#A)B1b_SXZD`-Qc){W$ucz@;v%&jp2D@?; z7r_nX-pW3eiUsVLfvMTqIHfiBQ@gIWr>?t@8-0nUacWyBITX`bW8uGW0M#;GGks05 zVBLs4@!o+6XF6|^le$ymIxIC1r=c1hrZ5vs)r|lHj*#A~0V!kj5b@gmLkPaaMUlgL z%t58vx}kVB#fDWFzq&%u#KP`Ox$=rshSzZ`55xM-b&m{g6W_R7FlPe{eg7&l@QW<#HVb*UTWu zgM;Mu&#aGJ-c41otM#6v_U2&T>6R>>2Ju~8C6IR<&s|ORRgR)z1P=LfQw4Vs-M!aU z74P2vM-49u5_faV`NIGXs~cSVrr&MhXx11Wz`aj>{37kVWq@{RnCtCA7| zh3_@gBJE#%hQyw18Bty(NHCJJh$17=(|nS34x8J6z(Vw_dA$;@sv?{$=i10q;R5e; z?%P12fm@_3hcG%~;2>!(PvW&nQ5Z_z8+Rp8uLm%XQc!cQdM zI5rMv;b@5~5m|~b5CLrCdFC5z$5f)*7i{7O-NoDP?@IvFq%f$2CbY*+jtg?tM;$}W zdq-byJaW{tV`(WqnF;=JecR-B8}P-^(Xd$3i0&Q(ooY+m2BJr`(Im)RCJ`8f6^IJU zQmph;h|b@(^(uZdhR?DWAXN98LkYfH|7{x;%+kFF0}dMvb?_fuB*n^>zQgB1=!R3n zd=(6Q`uE}PAil4y3)FFyLuQIrqlFgx@n=z#+v$R_yF30v+DiLvZa(Qt(W2$X`jR#a zvh*f;P<$_~uA6*v&W9fs#@gKEzDF_?Yi%BHA^XeDy&;LjX*e_WDzG0FEFyiOnW*52 zgUmka^ry!6W}PHAoI*G7-yX$3At1rS{e*K|#WfKNz6^GGGq$`_%uP;pW}>z z@vaM5krP}R0)}BDNPi3?gRKm zoJlvF?F?d4;zCD#j|VT-sq~^;RYvL`a=E{L5zx(lWao}vwkDb>xbemt$+$Z~AN`S| zKNI%jgJxf?zQT$#I*nu?7WNg&o>>Vh^;&hL>Po$5`{dI%c`2h+)y6uhtZ2|p`#sRUx+*2$>=SFnB|L9AN5drjl* zlVW1>?l3nqdXvLYD!>8B6mTnq8$-XOhn+@>AYAR=Xh6H}IxcT7HUqX2Y-3ElOTiHe zd3|h2$0KlYBlZ$$uowmvq=^=)22sMQeN(H}M><`olLQ@w0uG|RImV;#<2LKg-w_e5$|zXMU`&bY zER~f4lJ1NpTekKlFitoIy;5OAVmlDyEb^(DK}@W z+=^MkFydffDoL10jZwC`xpyN10QjoN0cm+KfQ{1?rP0nO6GWw)nI+}l3Zeq@?i!8t z3=M&ce*IEmNmXIdoL)}rDV;CFj`5j@aKHdl&a8=fqm@myem@{6qF4h=zY(|Y)uGS|>G4C6>GdrgL!G%m*>0koA-Y3UMHipL{C|`S1;k+ICGWb*lvOl;%eh{O@>IYTw&~M zC%K-_`276?tAEhNMRs?%hKH#BojV){xeR++@7QO5McQ&l2Zuhk^o>Q%;Lmh1X6$iX zHVfYaUT-uf4AJ$O@M{9z{2ir(=c`UzQTE{Aq2Cb%L5psV%jOx^ngO>WD(TD*XjKP~ z=-Jc^*bI|6ein;rOI;2WC>*oAe%6GQyGBQQY~`(CK!OP#7*=3eizlRfmKr{t&I2hxWoRo0EQpMmj@r<26F&?a(Nxo2-(96V&N$z5 z`+5MKQ-dYf{sg}WN`zX2Fk7{p`c3)W&pb&t9~YVu6@T@#!~kmk&fgM_`-;s+EW}5o zbl{)z1YG!0NY8Sf`R@{VZUtR(JxHr;JCqD?Dag>xqASdbArJKT_wRYxNwDg-a@rm7 zH-EhfdF(30dL*CBEXuSP>j!dVF&xy?L8Q1lLLfP0!rhU^{pHE30@bCK8`@i=<-j#KJXo0 z*`;(dVQ1#+lo=PXg@}Kou=G-xg%O+HTucD)I;WKdRf0l0LY~;xRZ_@}G@u*a4vyjR$Hg7@GF-A*$#AU3ECL9fKY(hoZE~xPRA(aB-Dit6M0wXrx z9*>s+aUuFdZvm`k&@%#4zK6l@ND$`?mN#u|rL~DteEa5_j6iWhBAYhh?}#Tt)1@W{ z%#&N|Z&kn~G1NXb$DMxU@4%?xGWD^E6gD*`sPfMs`+fiqlA;3Bv#exAV_4LCGDPv$ z-MKqzUP^lI{QrhTOvndS&Rh4)hxg^HU?t5ZewCKK`Wogr**Lxp8ou2U z)Hv@)!>tN?_8FEQKFp+c*3XyfHt9JHSUC11DgNqC>%PXNXXE0FbMU{(5!wjK&9BRc z>*#m^rj3DX)0l9s;nDge7}}W|l4z;9enhylfjt>NNso1RcY~y5q+wUg;QVs^d9{Q& zm9F#-c05EpKPr-v^chs_k3VmUYN z6N%sid%^fg#3hNYu+g&m-ftJ^cawn;yscPc6KB}?b5JO>sR|pVv9y?B6*pkURH$GFYgh`Sl@rsU2$-}K530t^8LTguKFvgu8q>&-K8SZ zNDV0<2qN85GIV!~bV>6{cSsE>N_WTzNJw|X(A^T>@n87Xnl)?j!>k$Zz2`am+0Wkl zti38U_Nv({vl7QwWc#ll%~gbU)0O)B<`^Bq+>&!uOot53H;~R-EG#4_$k^~<>1u6K_ruSvq0B^D z#-0r1_kfNNhKh zA=p7hx6r6s_y!}8@!`_`Oiu}Og#&>W9~nKL}KWnqTZ{SHsu85z*|kq{(Q zGn6dUkC&~)!pdh2RUHq$(Hb!Lx{H#EN;MCeq8->r_OIn7T{W}aBoDB^lcs58I7*G< zjZ8Ux3!F>5?TN%h?|gy&YLMPyjXG8RVOfi2&_$fV1>*3QA=)i&cz9T9 z5SRHb#RjF{93_i?;W&t}Gv=q-_uVEq!^etTKH+QeBC_Tx%u#A&bi{FKRq%*3MQ}}1 z09Vx>OX^^HiE3`&>E_@!uOnJUdRp4Q+e>Xu6CKB4JbqIySx0-#3}l(eNQ=|Mt7=y= z&8QJJT`*2}chBQ9{k#Up#oGn&GySg;8DHHxv!r**J2hi#7QNTP<-gv{e+_Y7L2`c` zQv8e=O|5!<<@f7X=19*dqM_#QWJGwRUqmYOnkoz=;6M&tcjSN7a>PhaANv7#86p1r zXewEdAm28MQPM*8t5RYf?B}k-i3(4pUf_=f2{|np(o<2*@IfHgD?pR@cm+}}n_O;A zEgDyXlSc)D4Y?6=cwthU6n5`@G;fJCMkjw1@iq+zD1)8~yr`Pvl!{5)+CJ6L|3wOX zcy%4}s_{8RG`)oP@er+R(}FSxD$TDbw%I;7kb9Xf%bf~(W@)CP^pc=rBobycp0;xm zEavM~!hlFE_E_(Q-s5BEyRmmX_px2kQvnW$byZ1qZd%6EE!n`^RgZqQ7?L?&^Ag() z=Mob|3FCLVSO3u?>ZF!k2f5b&DXdkVyx|iR3`z~SeNwTH#^CEmXk9$W(Z9Ps`jR|? z?@wsVcJrZ)54GUsKm0j=#EJ z7e@9w3!^kva9nP`?*V1~Rm$LIxow^PRT!n?_SdA{7(PiMAsrFFYiIe_jVtpzZtvv1 zw+M;i;awtdKr1|q(|avEfJf)_NujaZ=;C55*h_Ywi0mFxhVeJBD-*L(3y_YdaM40e z>^keq192%saqfl~9YWtr#)kY2YG6kRJw{?37r-$RR?FeS*cay+kgIXs#MwC0ES+{} zy_n+Rf$4Bi#>U6517yRN9K|r#3Blo)>-~)eSS?E{5xR&Fegc`ch)oD*UiQGs05FB0 ze2f3IfB6xpiBC%R9&e{R2#^{<>XGAZzpB40pBWxJj=l#}Lh7f{1G!)}-_NO8S3U6? zc0lKUed0~W59EY<@{FIzkW4bRe2u07$GH0O-^v&Mx1PjZ7Col5k;V5Pk&wWA=SvLV z!Ae&M$K%7%NHJ6IGJ!w*FWM z=yDW`f;p;NN$7Xn-!)s6ht7(K+l0PVvTBGs6(QbsZNeEw8b-U!b>-vlQ!9QyLvY6Q zQa}JcW!JFQyjKk$?f(Ltmq*tIq-Sr1_%`~UCny#}-*ew$ra(9w0br+ zp3=dk+l=K!7e9lqlzkaz>p@Yck540*sKk2T85RBcGaV}{>o4F;Zhb}qiqqc@OTK$t z04sLYABc2w^4n=Wl_xh3okCqgLZV0ecSb-b#{>(yzF=7QrnR%3$WtyKq7=B z{>tZ4yMu#+N|a7OwPt!>OzO6T67k}pN-W+-{#5!p_M$N^q`&_~Kq}Mr_O=xGRc*!* zTbX1=M(+UFht3lyjfdLwNtJC4K}$u){A_g9la^Q=MbW6lT8vklU|D41tpSZrgbye3 zg=tWmq<7DF2zeUSqbdy=g89Q~9UGaMNZbxx!aR)5dY15FniPsOewn`n?+Qg@dO+Lz zMXGn*<*UXEcP|f2gO*|&Uc4t*Uw?7^o1wIw@%*kW-V;sXd>?#x==hZ6bMY-4x~6h1 zp=g8jr_9HDHHKkFI5h12v(YpD?l&>91_Q zlhz2EK6~)6oO7;~ixS_c{Vi>KL&0*bm zqGI1mMHpgT5yQ`qCp1-WJk7gtC7pvzzeW1_V|1K}W%5Z#gr&<6^NpW7Nd1Pw%6HY>N z+^gqnps#i7Z2$N+;mp?)$HS$|D6s6#>X_6h43CkbbB9&UTuo8RCSX1en_<>=!);20 z(-xPrNo{T#)>}Cr58nda-*=7jNhW09^tjD*GL&RR@?=-^6eGec4pl4#q#|-$bo*v| zeqdI_nf5sO6Yqxx5}@S1>7g;zSPUj#MkRB!Pb_ACvV&h{_fUR#N%f(_e-VcI7hr|V zb8rPjSRhNy54U^esfNuby4_-r2g?jb58(3OFO_NbH15L6>z6&Ijs7C9#EBg`e*hVv z$~a-6%U?e;H+7y$4|INkQn`_QtZv?g{l&z@?6_Nt=8^nwaC52(e9vy}Aa~2nI%CHs zrQKA8uR*<~WbSh#BO?@$ogwnyU4y*83A{?bLeYQQM~t0rBNDjto(W2W#cSpQPlWMF|+#JO;J>G9UY8UfX3jWm_kLQfX^9SexOO4PrbxPDfu8I{Xx& zK~%VEBsI{sLls|)?FjtWZ+<)~;owl9U)B`^zrVy13RN)m_NKC%u6oV-r3)mJJoWtN z0n0%EPXIY24u7jQj|s=B_0RSnp2=rDGg{xAq(@gIagkH`X6n)BYt_qipf@wT2s&=F znfqG?=abjY9sY7cnfUcKFq=_9`rn(48*9oC_iHZT#gW1a%E@6c1eP@_+999$PcoQp zM$6yJx*2_p!NZs*0YSeLvgGa$PyK zo{&-4bSe7;s-=9SLHb4lAJJV)H;eHfbSn zUkqFqO#>nakUg)~0HdO&4gv^tf4?_{qkbhhHQ?VB_&WZA>J47MJ5Ikj*!%@94;C?d zj_G>S(@_LsJIROX@Y%BY-gX2*#TttdP- zWio#|8X&i5(IfN&N50RLZ({F)33I|F>oDMcIv{q@2a$c*l+gCw(beyM?*pUX!wupC z4Gqn%MuU@fo;Gw!0RO_bt^e$5J9i;kWryZ>TB7m)q|0wy$2oye&~edw%)vyhS8 zJv~kLrmj|-5dK^8GH(;!au-^sD`89NvMXFBU!IirQD?apY<59O#zYfHAAKmo= zuZ<#r;Q<%r9~K*dBc}xDYIPNmQ!dSCzNZRvgkZzQ1tcZo+(j3sq8%}Ja}QW^c0+FG zrrYBZ`ORkP>?oIJ&S-WoeCH3#&L+zvS&s4W@R%}(OaZ*U?h|h3d+tn1zK}3iyO^@H zyHJTGTUpyk50@5aa5AMfuRg#K#cw6)h9)iHmMIsz^VL9oa^fS|S)#aqP>cFOt2Wo?^Q zut|2sA`Pa|EVl*l$TO zWrn_uTRy91K)|c0pQc}4&+lGWDup{I(oZ5gmGE}YULWjA2&1`F<_&V;=bv7 zws8d>DM9!9i|LL>!pCF6hzBF(IL60oc=^AmX{(6vaGi(-OAn0rul*9EXb=bw?n(@?9;-72KG7eV9<>To0x3LkZw@NrN$Zq#cuaaWGuQ);URb?p4z&=(c6Res9y{K;Qnr2D8hc)MRUrSsf zQ9<_7O*g_OLz(<jYKH;P?ZHzXwhMe+vSHXAVC+Y<}8trhfHu_UYBO#!g2ljU zhBzA7lkX%&MWeLXC!b<@Ex2I*TkP&$Uh6BFn4d7mf~fhWk=#AJK=)Vx20vB6Wl$Bp zqQxYD58a#47K_+$I&J~B-vwT|nE+tQ+%Ea6pjjtz=7)0`l9XwzCbjIf{K-gF{G@jrI7sxWt6ZBFLx+%k_?xRnJ};5u zgo!BAE?>1@t%6x?mvG08vSE`2E_eGiiIS3vlrY|Q(%P@YLck41=I1ltZQ&ouFLwe9 zzl@`JM9!fjU^MgG-clrKn2U<7zQov7ty+ih-qFw_t-K7svR~SVmea@qE8QIL?-Ziw zbm>s8fr?1qWsq!Azm@fGD_3*u(&Dd_3x6H!Vmf6LGI9-xUYynLd_ zR=Cov6J1Hqg36Tk-CdNP?g>M@@al+qv|t4tPFQy>NZ^+*mF;uJCzj_^ z9*f0me7mR`)KK+~$@Ng>DBC)kookDi)Oso8oTk)UfH!(=Wo0$WR$|EAQ_IO|P>&b4 zo~K{Q!Vur%VWgz2{O|t(n&h|EU>Rqubb1PTb9k#{P{UH3EI7)4av9LKXt$VY=MN1J zcMA-y%<}gEH1#BkCiwj8f4K9z;FHd)VU+&Ihb>3`2U&L8|E9k8*Kg^Bg0W`o{)kSXXfMp zM1<+<>x_W5cCm`~L_vQJAbRG~Rpf=`*D1%6t^HrB2T)K zw}G37T4h>G6go?`RR~YCXip7o2Zo%Mn(w6;+7oiz`MMVml(z8lvn-X8Wnz@8dUXA{ zq+JTZ)FhR;`kN@&{DR_oX@LABv(63WSo5xOk>r25|I>^v}iWLj1x@cyTiQDLcrsFmrj-A&??H8-G$OSau2ws2oqF5 z&SEzV)dcz_)-4WnzULPg=4w<04nHP@WU0ku#f5cmCt$Xj{VB8+KRWbFik z#S9wc?ZZQY!{?w&PE-&OtWJ9MQuhyUtLgEMdvn>gcUowXWnt-&Al5tMA%fJVm1F() z&Z#5J{OHT;+>I;#()0vf-hnNH3RUc1U!odQ80ZTAn5$6mz$whBzEkmrOIksG>|Qju zmUg2M7x7JIYIRT+(d%d1F+&eLm!s#N>0hX6eb8km&l2^p9j=?S)y@)?2t7Gb2gR*W zjcw(8XB;rSgQ-07Wm?_6y=dSOPZ&X{muV#^7G=csh`^7JdE*!)Xt3(=WPRT64^@cX zwBJEv1ltH2$GVZ%h0wf^`?~H&2G)O#4AeWte2kWAM>KPTO$-Tbzpu0@rCqzldSAx* z#!FGxdme?Wyt!fSv;gfzR3DWGs`_@XA3Rzg?LbjWZgzO}qqRSiF^5o{&N<++p7=bQ zw56t}f8p+440ticq(O`G%S#Nbk%43mX{;{b8%F8Ud`I~!qH51qDl2ukkj(Jtll$0o_s}i}nQ<#ugHaC=(T0eocNCni|=6$j{cl z#+5t9Bo)fgGxq;_dpW6?T2HNIj(Rg4v4h`=fY0Z!^c%@~K^?_4Ik7LZ^q37CSk3 zfh!EANuVZv_H-WpW;sN&(Fae=%?Wpy&r1U2TUF2gzWv}?#AiKqLLIrt0y>Ly=Bk`0 zqr(e*&sc&qEpVw%vZ~|OoEy}MtvMD#AD(KgRkpio3Tv{Q6PlJbtRR9S;-}PdL*Y#p$EYPkjzZy~h7eLoK^H1g zy2IoO(x2?+$wr|giKwx6o^FUmZp?y;6#laJA++cJJn>P;?7;5t$&bD6JZ{e6)~LJR zVLu^|{4}3K1eK)_cT|a5jgg*lw5)aSy5#iUMX`_O(Y(M=aZ+D0Tc3z)8krp4lQkq@$Fj zDcNQU^-+%)Z@I!^lT{6e8e(fM%D)8X*z^@ zMFsU^4`=mCjv<*x^9_Wv`y>_MFsx#mHE?)9)H*zV2z#^M*F;^#sZm+J1)YY%d6v7d zICI;QPScMflcxnGkFHLUTz*MBkkgAv7R7MJBzO(2+{6sVIO&RwN@*Oa2*ud(#!GK! z`1+i+3;idAt}!Kcdcns2mwUedHJfGGw8w%8owm%k49ysn(vL+0s6i>xWF8OZU!9qe zq&a?Gt9Z415Yd<+(6s-Vh$ZHU`)8ukGujjF-czi{FFINy%1<(WXGa_im6p)fZD`~` z15nF5XLHAk$ZBt+v#;*Sh z04xY<#(Ulro9K!zN(?zYjYewi)kowZxuM%Dn#>AyqPb?7RPe5*QYF=Gi*INU1xCK1 zEY~QT=>4c$tzGcOHq=#;K=GPioox&d^>J|oq7o8|I-_%meF%Ot3Yo@q!Z|xkEHU#ei6F@;*w($coN84_=Vg{`K2}(^{7~8@jX7@#VnC^l*$1FTRF;QRS^% zzdWSwAPf5(NYs4+Jyi6I%bXdyeT*8zK3#-U>bDK+l$VyPtiNUpaxCaqDjNaom!4&OIZd+)JIaeiT~pvcBy1Ya`?TBk^~l7}EAsZ7k9%6myBjPwRTrs#Bceh0u_-}_nPW~B^0lz# z{wrthsK%*bzqU0~$3};FRP=~M?>bJyFzUrS{NC)||LT^qW$X*%_C?y>+4)Q_;d{PF zyv<7?o}2e0WN$)4qq6%eGGI zy=5=E+E6+T#`{5n&_g(*x-XK(CKkR9X7adEq@i$dlpokl1~?GLdE-0o+#u5YfVx{| zn*BdYxks(NkuX7xme0mm=mPtE5h5LDT@hzRkTRL^I4ge ze&?Q1(EM(}WtRA;CD?KzN*mFk^7VaxfB#*JsjJ`Vmt4BV2B+NRHc82O zaUC*PHOk0HK7Z|SAnq_@M{O2Tib z7XFSq)o#Ekt2zO{h%6)|6!MYxz&j}1!{W~)9gYEm2w5+U9hmZG-U;52~ za3G^hi+z2$wAeAZ*7$ob_p`H#k`l~jhBL>3aywcqrosp*j6Q9l?q7L@Pe!8!^B zY-TVV$@ilQh)NO3Y!R}m8!Tr&<43RM{@ z4pT3m)5NcqC(p1+T^%1#aoQ9g_Mi}fTm@SK8a$fjcG@DXI9&}lKz@^25sH&ah$R*b zqlf+H+x@iWhP|rZ6=KlkS~;4;hU}zE8m18?+ikbuz8XgBGFv>fy?4|D$neersmF{M zAo1K&eb`V9C!m9vh{e4QB`VNPRug0?x%5yMv}v@@;Nh(R@l$&jzRFl#A_%4Xs@o?a z+`CN^#a|yzIHx`KV))=LS_zI{|_F*gZBUc literal 0 HcmV?d00001 diff --git a/resources/profiles/Elegoo/NEPTUNE3_thumbnail.png b/resources/profiles/Elegoo/NEPTUNE3_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..f331ac7c27631768c0ec4becbfd8aa32f069817d GIT binary patch literal 45396 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 L(tKJCvyA*dcXUfg literal 0 HcmV?d00001 diff --git a/resources/profiles/Elegoo/NEPTUNEX_thumbnail.png b/resources/profiles/Elegoo/NEPTUNEX_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..329338b7e1fa1e4f980ba0286b50fee54d55b007 GIT binary patch literal 37948 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 literal 0 HcmV?d00001 From f994e42d8e8a44f6650e976d8f178b8a2cbc622c Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 10 Aug 2022 16:48:37 +0200 Subject: [PATCH 091/131] Fix for dark_mode(): Use check_dark_mode() function only, when app_config doesn't have a "dark_color_mode" parameter. Now wxWidgets improved IsDark() function with https://github.com/wxWidgets/wxWidgets/commit/622a2f9d6022d5ca2f1d76e93b2587ac12c2aa82. So now it returns correct color for the system appearance --- src/slic3r/GUI/GUI_App.cpp | 6 +++--- src/slic3r/GUI/GUI_Utils.cpp | 9 --------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 95ef05c45..bb17c3dc0 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1410,9 +1410,9 @@ bool GUI_App::dark_mode() // proper dark mode was first introduced. return wxPlatformInfo::Get().CheckOSVersion(10, 14) && mac_dark_mode(); #else - return wxGetApp().app_config->get("dark_color_mode") == "1" ? true : check_dark_mode(); - //const unsigned luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - //return luma < 128; + if (wxGetApp().app_config->has("dark_color_mode")) + return wxGetApp().app_config->get("dark_color_mode") == "1"; + return check_dark_mode(); #endif } diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index 73bfb3bec..d9bffa3f4 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -153,15 +153,6 @@ wxFont get_default_font_for_dpi(const wxWindow *window, int dpi) } bool check_dark_mode() { -#if 0 //#ifdef _WIN32 // #ysDarkMSW - Allow it when we deside to support the sustem colors for application - wxRegKey rk(wxRegKey::HKCU, - "Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"); - if (rk.Exists() && rk.HasValue("AppsUseLightTheme")) { - long value = -1; - rk.QueryValue("AppsUseLightTheme", &value); - return value <= 0; - } -#endif #if wxCHECK_VERSION(3,1,3) return wxSystemSettings::GetAppearance().IsDark(); #else From 1d1fb3fb379161a489d0b8a5d5a6e13a363dd85d Mon Sep 17 00:00:00 2001 From: rtyr <36745189+rtyr@users.noreply.github.com> Date: Thu, 11 Aug 2022 09:59:45 +0200 Subject: [PATCH 092/131] Updated bed_shape --- resources/profiles/Elegoo.ini | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/resources/profiles/Elegoo.ini b/resources/profiles/Elegoo.ini index b9589536a..a39d33f3f 100644 --- a/resources/profiles/Elegoo.ini +++ b/resources/profiles/Elegoo.ini @@ -342,6 +342,7 @@ filament_vendor = Generic [printer:*common*] printer_technology = FFF before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0\n;[layer_z]\n\n +bed_shape = 0x0,235x0,235x235,0x235 between_objects_gcode = pause_print_gcode = deretract_speed = 0 @@ -404,7 +405,6 @@ printer_variant = 0.4 max_layer_height = 0.28 min_layer_height = 0.08 printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2\nPRINTER_HAS_BOWDEN -bed_shape = 0x0,220x0,220x220,0x220 max_print_height = 250 machine_max_acceleration_e = 5000 machine_max_acceleration_extruding = 500 @@ -486,20 +486,17 @@ printer_notes = Do not remove the following keywords! These keywords are used in [printer:Elegoo Neptune-2S] inherits = Elegoo Neptune-2 -bed_shape = 0x0,220x0,220x220,0x220 printer_model = NEPTUNE2S printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN [printer:Elegoo Neptune-X] inherits = Elegoo Neptune-2 -bed_shape = 0x0,220x0,220x220,0x220 max_print_height = 300 printer_model = NEPTUNEX printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_NEPTUNE2D\nPRINTER_HAS_BOWDEN [printer:Elegoo Neptune-3] inherits = Elegoo Neptune-2 -bed_shape = 0x0,220x0,220x220,0x220 max_print_height = 280 start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[first_layer_bed_temperature] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[first_layer_temperature] ; set final nozzle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp to stabilize\nM109 S[first_layer_temperature] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0 printer_model = NEPTUNE3 From cb3678e1e250d9fe264e18cff119c22684370716 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Mon, 1 Aug 2022 12:07:36 +0200 Subject: [PATCH 093/131] fix bug in seam string weight - use seam string length as quality score --- src/libslic3r/GCode/SeamPlacer.cpp | 26 ++++++-------------------- src/libslic3r/GCode/SeamPlacer.hpp | 13 ++++++------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 2a716a300..056b7a17e 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -501,7 +501,6 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const } } - result.perimeters.push_back( { }); Perimeter &perimeter = result.perimeters.back(); @@ -1042,8 +1041,8 @@ public: float distance_from_perimeter(const Point &point) const { Vec2d p = unscale(point); - size_t hit_idx_out; - Vec2d hit_point_out; + 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(); @@ -1223,9 +1222,7 @@ std::optional> SeamPlacer::find_next_seam_in_layer( } std::vector> SeamPlacer::find_seam_string(const PrintObject *po, - std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator, - float& string_weight) const { - string_weight = 0.0f; + 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; @@ -1259,11 +1256,6 @@ std::vector> SeamPlacer::find_seam_string(const PrintO 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. - std::pair next_seam_coords = maybe_next_seam.operator*(); - const auto &next_seam = layers[next_seam_coords.first].points[next_seam_coords.second]; - bool is_moved = next_seam.perimeter.seam_index != next_seam_coords.second; - string_weight += comparator.weight(next_seam) - - is_moved ? comparator.weight(layers[next_seam_coords.first].points[next_seam.perimeter.seam_index]) : 0.0f; seam_string.push_back(maybe_next_seam.operator*()); prev_point_index = seam_string.back(); //String added, prev_point_index updated @@ -1279,7 +1271,6 @@ std::vector> SeamPlacer::find_seam_string(const PrintO } next_layer += step; } - return seam_string; } @@ -1349,18 +1340,13 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: // This perimeter is already aligned, skip seam continue; } else { - float seam_string_weight; - seam_string = this->find_seam_string(po, { layer_idx, seam_index }, comparator, seam_string_weight); + 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) { - float alternative_seam_string_weight = 0; 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, - alternative_seam_string_weight); - if (alternative_seam_string.size() >= SeamPlacer::seam_align_minimum_string_seams && - alternative_seam_string_weight > seam_string_weight) { - seam_string_weight = alternative_seam_string_weight; + 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); } } diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 1f1643d0d..327129e9d 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -52,16 +52,16 @@ enum class EnforcedBlockedSeamPoint { // struct representing single perimeter loop struct Perimeter { - size_t start_index; - size_t end_index; //inclusive! - size_t seam_index; - float flow_width; + 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 final_seam_position = Vec3f::Zero(); }; //Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, @@ -167,8 +167,7 @@ private: 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, - float& string_weight) const; + const SeamPlacerImpl::SeamComparator &comparator) const; std::optional> find_next_seam_in_layer( const std::vector &layers, const Vec3f& projected_position, From af95b6ecbd509c7e725111d30a988fd70fbd999f Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Mon, 1 Aug 2022 17:46:20 +0200 Subject: [PATCH 094/131] fix issue with enforced patches refactor end_index to mark index after the last point hackfix issue with overhang seem placement --- src/libslic3r/GCode/SeamPlacer.cpp | 149 +++++++++++++++++------------ src/libslic3r/GCode/SeamPlacer.hpp | 6 +- 2 files changed, 91 insertions(+), 64 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 056b7a17e..94086c56d 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -557,50 +557,72 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const result.points.emplace_back(position, perimeter, local_ccw_angle, type); } - perimeter.end_index = result.points.size() - 1; + perimeter.end_index = result.points.size(); - // We will find first patch of enforced points (patch: continuous section of enforced points) and select the middle - // point, which will have priority during alignment - // If there are multiple enforced patches in the perimeter, others are ignored if (some_point_enforced) { - size_t perimeter_size = perimeter.end_index - perimeter.start_index + 1; + // 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); }; - size_t first_enforced_idx = perimeter.start_index; - for (size_t _ = 0; _ < perimeter_size; ++_) { - if (result.points[first_enforced_idx].type != EnforcedBlockedSeamPoint::Enforced && - result.points[next_index(first_enforced_idx)].type == EnforcedBlockedSeamPoint::Enforced) { - break; + 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)); } - first_enforced_idx = next_index(first_enforced_idx); } - first_enforced_idx = next_index(first_enforced_idx); - - // Gather also points with large angles (these are points from the original mesh, since oversampled points have zero angle) - // If there are any, the middle point will be picked from those (makes drawing over sharp corners easier) - std::vector orig_large_angle_points_indices { }; - std::vector viable_points_indices { }; - size_t last_enforced_idx = first_enforced_idx; - for (size_t _ = 0; _ < perimeter_size; ++_) { - if (result.points[last_enforced_idx].type != EnforcedBlockedSeamPoint::Enforced) { - break; + //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]); } - viable_points_indices.push_back(last_enforced_idx); - if (compute_angle_penalty(result.points[last_enforced_idx].local_ccw_angle) - < SeamPlacer::sharp_angle_penalty_snapping_threshold) { - orig_large_angle_points_indices.push_back(last_enforced_idx); + //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 (compute_angle_penalty(result.points[point_idx].local_ccw_angle) + < SeamPlacer::sharp_angle_penalty_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; } - last_enforced_idx = next_index(last_enforced_idx); - } - assert(viable_points_indices.size() > 0); - if (orig_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 = orig_large_angle_points_indices.size() / 2; - result.points[orig_large_angle_points_indices[central_idx]].central_enforcer = true; } } @@ -620,7 +642,7 @@ std::pair find_previous_and_next_perimeter_point(const std::vect prev = current.perimeter.end_index; } - if (point_index == 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; } @@ -748,7 +770,8 @@ struct SeamComparator { float angle_importance; explicit SeamComparator(SeamPosition setup) : setup(setup) { - angle_importance = setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; + 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 @@ -765,8 +788,7 @@ struct SeamComparator { } //avoid overhangs - if (a.overhang > SeamPlacer::overhang_distance_tolerance_factor * a.perimeter.flow_width || - b.overhang > SeamPlacer::overhang_distance_tolerance_factor * b.perimeter.flow_width) { + if (a.overhang > 0.0f || b.overhang > 0.0f) { return a.overhang < b.overhang; } @@ -823,8 +845,8 @@ struct SeamComparator { } //avoid overhangs - if (a.overhang > SeamPlacer::overhang_distance_tolerance_factor * a.perimeter.flow_width || - b.overhang > SeamPlacer::overhang_distance_tolerance_factor * b.perimeter.flow_width) { + if ((a.overhang > 0.0f || b.overhang > 0.0f) + && abs(a.overhang - b.overhang) > (0.2f * a.perimeter.flow_width)) { return a.overhang < b.overhang; } @@ -857,9 +879,9 @@ struct SeamComparator { } float weight(const SeamCandidate &a) const { - if (setup == SeamPosition::spAligned && a.central_enforcer) { - return 2.0f; - } + if (setup == SeamPosition::spAligned && a.central_enforcer) { + return 2.0f; + } return a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) / (1.0f + angle_importance); } }; @@ -930,7 +952,7 @@ void pick_seam_point(std::vector &perimeter_points, size_t start_ 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) { + 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; } @@ -944,7 +966,7 @@ size_t pick_nearest_seam_point_index(const std::vector &perimeter SeamComparator comparator { spNearest }; size_t seam_index = start_index; - for (size_t index = start_index; index <= end_index; ++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; } @@ -971,10 +993,10 @@ void pick_random_seam_point(const std::vector &perimeter_points, }; std::vector viables; - for (size_t index = start_index; index <= end_index; ++index) { + 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 ? start_index : index + 1].position + 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 }); @@ -987,7 +1009,7 @@ void pick_random_seam_point(const std::vector &perimeter_points, viable_example_index = index; viables.clear(); - Vec3f edge_to_next = (perimeter_points[index == end_index ? start_index : index + 1].position + 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 }); @@ -1041,7 +1063,7 @@ public: float distance_from_perimeter(const Point &point) const { Vec2d p = unscale(point); - size_t hit_idx_out{}; + 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) { @@ -1075,7 +1097,7 @@ void SeamPlacer::gather_seam_candidates(const PrintObject *po, tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), [po, configured_seam_preference, arachne_generated, &global_model_info, &seam_data] - (tbb::blocked_range r) { + (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); @@ -1136,7 +1158,8 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) 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); + perimeter_point.overhang = prev_layer_distancer->distance_from_perimeter(point) + - tan(SeamPlacer::overhang_angle_threshold * PI / 180.0f) * po->layers()[layer_idx]->height; } if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) @@ -1263,8 +1286,8 @@ std::vector> SeamPlacer::find_seam_string(const PrintO if (step == 1) { reverse_lookup_direction(); if (next_layer < 0) { - break; - } + break; + } } else { break; } @@ -1309,7 +1332,7 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: 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 + 1; + current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; } } @@ -1342,10 +1365,12 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: } 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) { + 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); + 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); } @@ -1487,7 +1512,7 @@ void SeamPlacer::init(const Print &print, std::function throw_if_can 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 + 1) + current = layer_perimeter_points[current].perimeter.end_index) if (configured_seam_preference == spRandom) pick_random_seam_point(layer_perimeter_points, current); else @@ -1561,12 +1586,12 @@ void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool extern // 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 : + perimeter_point.perimeter.end_index - 1 : seam_index - 1; size_t index_of_next = - seam_index == perimeter_point.perimeter.end_index ? - perimeter_point.perimeter.start_index : - seam_index + 1; + 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() diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 327129e9d..30f077e1a 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -131,8 +131,10 @@ public: // value for angles with penalty lower than this threshold - such angles will be snapped to their original position instead of spline interpolated position static constexpr float sharp_angle_penalty_snapping_threshold = 0.6f; - // max tolerable distance from the previous layer is overhang_distance_tolerance_factor * flow_width - static constexpr float overhang_distance_tolerance_factor = 0.5f; + // max allowed overhang angle for seam placement, in degrees, measured from vertical direction + //TODO There is some problem in layer distance computation, so the current angle is much lower to counter that issue + // However, it should be fixed correctly + static constexpr float overhang_angle_threshold = 15.0f; // determines angle importance compared to visibility ( neutral value is 1.0f. ) static constexpr float angle_importance_aligned = 0.6f; From a41435d0449e3cd6ccf170189a2a8130fd3ad1e1 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 2 Aug 2022 10:05:48 +0200 Subject: [PATCH 095/131] fixed overhang estimation correclty --- src/libslic3r/GCode/SeamPlacer.cpp | 7 +++++-- src/libslic3r/GCode/SeamPlacer.hpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 94086c56d..5b7e525af 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1159,11 +1159,14 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) 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) - - tan(SeamPlacer::overhang_angle_threshold * PI / 180.0f) * po->layers()[layer_idx]->height; + + 0.5f * perimeter_point.perimeter.flow_width + - tan(SeamPlacer::overhang_angle_threshold * PI / 180.0f) + * po->layers()[layer_idx]->height; } 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); + perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + + 0.5f * perimeter_point.perimeter.flow_width; } } diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 30f077e1a..0a6f013d0 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -134,7 +134,7 @@ public: // max allowed overhang angle for seam placement, in degrees, measured from vertical direction //TODO There is some problem in layer distance computation, so the current angle is much lower to counter that issue // However, it should be fixed correctly - static constexpr float overhang_angle_threshold = 15.0f; + static constexpr float overhang_angle_threshold = 50.0f; // determines angle importance compared to visibility ( neutral value is 1.0f. ) static constexpr float angle_importance_aligned = 0.6f; From 44a388d560cd1641be91a9062969c75375475a35 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 2 Aug 2022 17:10:21 +0200 Subject: [PATCH 096/131] prefer enforcers over blockers, lower the threshold distance, dynamic modification of segments count in alignment based on smoothnes --- src/libslic3r/GCode/SeamPlacer.cpp | 70 +++++++++++------------------- src/libslic3r/GCode/SeamPlacer.hpp | 4 +- src/libslic3r/Geometry/Curves.hpp | 13 ++++++ 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 5b7e525af..6fbd89306 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -467,7 +467,7 @@ Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition confi //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, - bool arachne_generated, const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) { + const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) { if (orig_polygon.size() == 0) { return; } @@ -482,25 +482,6 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, SeamPlacer::polygon_local_angles_arm_distance); - // resample smooth surfaces from arachne, so that alignment finds short path down, and does not create unnecesary curves - if (arachne_generated && std::all_of(polygon_angles.begin(), polygon_angles.end(), [](float angle) { - return compute_angle_penalty(angle) > SeamPlacer::sharp_angle_penalty_snapping_threshold; - })) { - float total_dist = std::accumulate(lengths.begin(), lengths.end(), 0.0f); - float avg_dist = total_dist / float(lengths.size()); - if (avg_dist < SeamPlacer::seam_align_tolerable_dist * 2.0f){ - coord_t sampling_dist = scaled(avg_dist*0.2f); - - polygon.points = polygon.equally_spaced_points(sampling_dist); - lengths.clear(); - 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)); - polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, avg_dist); - } - } - result.perimeters.push_back( { }); Perimeter &perimeter = result.perimeters.back(); @@ -531,13 +512,14 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const orig_point = true; } - if (global_model_info.is_enforced(position, perimeter.flow_width)) { + if (global_model_info.is_blocked(position, perimeter.flow_width * 0.5f)) { + type = EnforcedBlockedSeamPoint::Blocked; + } + + if (global_model_info.is_enforced(position, perimeter.flow_width * 0.5f)) { 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) { @@ -880,9 +862,9 @@ struct SeamComparator { float weight(const SeamCandidate &a) const { if (setup == SeamPosition::spAligned && a.central_enforcer) { - return 2.0f; + return 10.0f; } - return a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) / (1.0f + angle_importance); + return 1.0f / (0.1f + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) / (1.0f + angle_importance)); } }; @@ -907,8 +889,8 @@ void debug_export_points(const std::vector &lay min_vis = std::min(min_vis, point.visibility); max_vis = std::max(max_vis, point.visibility); - min_weight = std::min(min_weight, -comparator.compute_angle_penalty(point.local_ccw_angle)); - max_weight = std::max(max_weight, -comparator.compute_angle_penalty(point.local_ccw_angle)); + 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)); } @@ -929,7 +911,7 @@ void debug_export_points(const std::vector &lay visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); Vec3i weight_color = value_to_rgbi(min_weight, max_weight, - -comparator.compute_angle_penalty(point.local_ccw_angle)); + -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()) + ")"; @@ -1090,13 +1072,11 @@ public: void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference) { using namespace SeamPlacerImpl; - bool arachne_generated = po->config().perimeter_generator == PerimeterGeneratorType::Arachne; - 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, arachne_generated, &global_model_info, &seam_data] + [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]; @@ -1107,7 +1087,7 @@ void SeamPlacer::gather_seam_candidates(const PrintObject *po, 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], arachne_generated, global_model_info, layer_seams); + regions[poly_index], global_model_info, layer_seams); } auto functor = SeamCandidateCoordinateFunctor { layer_seams.points }; seam_data.layers[layer_idx].points_tree = @@ -1393,36 +1373,38 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: //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 (weights are derived as negative penalty, they are made positive in next step) + // gather all positions of seams and their weights observations.resize(seam_string.size()); observation_points.resize(seam_string.size()); weights.resize(seam_string.size()); //gather points positions and weights - float total_length = 0.0f; + float sharp_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) { - Vec3f pos = layers[seam_string[index].first].points[seam_string[index].second].position; - total_length += (last_point_pos - pos).norm(); - last_point_pos = pos; + const SeamCandidate &point = layers[seam_string[index].first].points[seam_string[index].second]; + Vec3f pos = point.position; observations[index] = pos.head<2>(); observation_points[index] = pos.z(); - weights[index] = comparator.weight(layers[seam_string[index].first].points[seam_string[index].second]); + weights[index] = comparator.weight(point); + float angle_penalty = compute_angle_penalty(point.local_ccw_angle); + float dist = (last_point_pos - pos).norm(); + sharp_length += dist * 1.0f / (0.1f + 0.7f*angle_penalty); + bool is_enforced = point.type == EnforcedBlockedSeamPoint::Enforced; + if (is_enforced) sharp_length+= dist; + last_point_pos = pos; } // Curve Fitting size_t number_of_segments = std::max(size_t(1), - size_t(total_length / SeamPlacer::seam_align_mm_per_segment)); + size_t(sharp_length / SeamPlacer::seam_align_sharp_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]; - const float t = - compute_angle_penalty(layers[pair.first].points[pair.second].local_ccw_angle) - < SeamPlacer::sharp_angle_penalty_snapping_threshold - ? 0.8f : 0.0f; + const float t = std::min(1.0f, weights[index] / 10.0f); Vec3f current_pos = layers[pair.first].points[pair.second].position; Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 0a6f013d0..cdbd1b582 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -150,8 +150,8 @@ public: static constexpr float seam_align_tolerable_dist = 1.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; + // millimeters of sharp corners covered by spline; determines number of splines for the given string + static constexpr float seam_align_sharp_mm_per_segment = 4.0f; //The following data structures hold all perimeter points for all PrintObject. std::unordered_map m_seam_per_object; diff --git a/src/libslic3r/Geometry/Curves.hpp b/src/libslic3r/Geometry/Curves.hpp index 6ccdea366..f4a5a0067 100644 --- a/src/libslic3r/Geometry/Curves.hpp +++ b/src/libslic3r/Geometry/Curves.hpp @@ -175,6 +175,19 @@ PiecewiseFittedCurve fit_curve( 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( From 52b9325f7c1c183ff5711b384e5f08e20eeac960 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Wed, 3 Aug 2022 14:52:33 +0200 Subject: [PATCH 097/131] improving dynamic segmentation, simplifications in snapping angle logic --- src/libslic3r/GCode/SeamPlacer.cpp | 68 ++++++++++++++---------------- src/libslic3r/GCode/SeamPlacer.hpp | 19 ++++----- 2 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 6fbd89306..940805c47 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -36,7 +36,7 @@ namespace SeamPlacerImpl { // ************ FOR BACKPORT COMPATIBILITY ONLY *************** // Color mapping of a value into RGB false colors. inline Vec3f value_to_rgbf(float minimum, float maximum, float value) -{ + { 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)); @@ -46,7 +46,7 @@ inline Vec3f value_to_rgbf(float minimum, float maximum, float value) // 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(); } // *************************** @@ -337,7 +337,7 @@ struct GlobalModelInfo { return 1.0f; } - auto compute_dist_to_plane = [](const Vec3f& position, const Vec3f& plane_origin, const Vec3f& plane_normal) { + 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)); }; @@ -421,9 +421,9 @@ Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition confi 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){ + if (perimeter->is_loop()) { + for (const ExtrusionPath &path : static_cast(perimeter)->paths) { + if (path.role() == ExtrusionRole::erExternalPerimeter) { role = ExtrusionRole::erExternalPerimeter; } } @@ -512,11 +512,11 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const orig_point = true; } - if (global_model_info.is_blocked(position, perimeter.flow_width * 0.5f)) { + if (global_model_info.is_blocked(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Blocked; } - if (global_model_info.is_enforced(position, perimeter.flow_width * 0.5f)) { + if (global_model_info.is_enforced(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Enforced; } @@ -592,8 +592,8 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const 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 (compute_angle_penalty(result.points[point_idx].local_ccw_angle) - < SeamPlacer::sharp_angle_penalty_snapping_threshold) { + if (std::abs(result.points[point_idx].local_ccw_angle) + > SeamPlacer::sharp_angle_snapping_threshold) { large_angle_points_indices.push_back(point_idx); } } @@ -794,10 +794,10 @@ struct SeamComparator { } // the penalites are kept close to range [0-1.x] however, it should not be relied upon - float penalty_a = a.visibility + + float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) + distance_penalty_a; - float penalty_b = b.visibility + + float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle) + distance_penalty_b; @@ -848,9 +848,9 @@ struct SeamComparator { return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); } - float penalty_a = a.visibility + float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle); - float penalty_b = b.visibility + + 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; @@ -859,13 +859,6 @@ struct SeamComparator { 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); } - - float weight(const SeamCandidate &a) const { - if (setup == SeamPosition::spAligned && a.central_enforcer) { - return 10.0f; - } - return 1.0f / (0.1f + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) / (1.0f + angle_importance)); - } }; #ifdef DEBUG_FILES @@ -1138,10 +1131,11 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) 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) + perimeter_point.overhang = (prev_layer_distancer->distance_from_perimeter(point) + 0.5f * perimeter_point.perimeter.flow_width - - tan(SeamPlacer::overhang_angle_threshold * PI / 180.0f) - * po->layers()[layer_idx]->height; + - tan(SeamPlacer::overhang_angle_threshold) + * po->layers()[layer_idx]->height) + / (3.0f * perimeter_point.perimeter.flow_width); } if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) @@ -1165,7 +1159,7 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) // Used by align_seam_points(). std::optional> SeamPlacer::find_next_seam_in_layer( const std::vector &layers, - const Vec3f& projected_position, + const Vec3f &projected_position, const size_t layer_idx, const float max_distance, const SeamPlacerImpl::SeamComparator &comparator) const { using namespace SeamPlacerImpl; @@ -1251,7 +1245,8 @@ std::vector> SeamPlacer::find_seam_string(const PrintO break; } } - float max_distance = SeamPlacer::seam_align_tolerable_dist; + 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); @@ -1378,26 +1373,27 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: observation_points.resize(seam_string.size()); weights.resize(seam_string.size()); + auto angle_weight = [](float angle){ + return 1.0f / (0.1f + compute_angle_penalty(angle)); + }; + float sharp_angle_weight = angle_weight(SeamPlacer::sharp_angle_snapping_threshold); + //gather points positions and weights - float sharp_length = 0.0f; - Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; + size_t segments_count = 0; for (size_t index = 0; index < seam_string.size(); ++index) { const SeamCandidate &point = layers[seam_string[index].first].points[seam_string[index].second]; Vec3f pos = point.position; observations[index] = pos.head<2>(); observation_points[index] = pos.z(); - weights[index] = comparator.weight(point); - float angle_penalty = compute_angle_penalty(point.local_ccw_angle); - float dist = (last_point_pos - pos).norm(); - sharp_length += dist * 1.0f / (0.1f + 0.7f*angle_penalty); + weights[index] = angle_weight(point.local_ccw_angle); bool is_enforced = point.type == EnforcedBlockedSeamPoint::Enforced; - if (is_enforced) sharp_length+= dist; - last_point_pos = pos; + if (is_enforced || weights[index] > sharp_angle_weight) { + segments_count++; + } } // Curve Fitting - size_t number_of_segments = std::max(size_t(1), - size_t(sharp_length / SeamPlacer::seam_align_sharp_mm_per_segment)); + size_t number_of_segments = std::max(size_t(1), size_t(segments_count / SeamPlacer::seam_align_seams_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 diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index cdbd1b582..cc1e50513 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -128,13 +128,10 @@ public: // arm length used during angles computation static constexpr float polygon_local_angles_arm_distance = 0.3f; - // value for angles with penalty lower than this threshold - such angles will be snapped to their original position instead of spline interpolated position - static constexpr float sharp_angle_penalty_snapping_threshold = 0.6f; - - // max allowed overhang angle for seam placement, in degrees, measured from vertical direction - //TODO There is some problem in layer distance computation, so the current angle is much lower to counter that issue - // However, it should be fixed correctly - static constexpr float overhang_angle_threshold = 50.0f; + // 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 = 50.0f * float(PI) / 180.0f; // determines angle importance compared to visibility ( neutral value is 1.0f. ) static constexpr float angle_importance_aligned = 0.6f; @@ -146,12 +143,12 @@ public: // 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 - if next layer closest point is too far away, break aligned string - static constexpr float seam_align_tolerable_dist = 1.0f; + // 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 of sharp corners covered by spline; determines number of splines for the given string - static constexpr float seam_align_sharp_mm_per_segment = 4.0f; + // number of seams per bspline segment + static constexpr float seam_align_seams_per_segment = 8.0f; //The following data structures hold all perimeter points for all PrintObject. std::unordered_map m_seam_per_object; From 3f361871016c8f3106326cd16d91767f1d876a61 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Wed, 3 Aug 2022 15:34:41 +0200 Subject: [PATCH 098/131] increase segments count for smooth long strings --- src/libslic3r/GCode/SeamPlacer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 940805c47..0960b96ec 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1393,7 +1393,9 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: } // Curve Fitting - size_t number_of_segments = std::max(size_t(1), size_t(segments_count / SeamPlacer::seam_align_seams_per_segment)); + size_t number_of_segments = std::max( + std::max(size_t(1), seam_string.size() / 80), + size_t(segments_count / SeamPlacer::seam_align_seams_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 From 06084b0bc53efe2167cc53180953895c90f2cd1e Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Wed, 3 Aug 2022 18:05:10 +0200 Subject: [PATCH 099/131] lower segment count on smooth parts --- src/libslic3r/GCode/SeamPlacer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 0960b96ec..72b9412d3 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1394,7 +1394,7 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: // Curve Fitting size_t number_of_segments = std::max( - std::max(size_t(1), seam_string.size() / 80), + std::max(size_t(1), seam_string.size() / 200), size_t(segments_count / SeamPlacer::seam_align_seams_per_segment)); auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); From 0479387b2099ee632fde5e93e5b7e93bcca9b6b7 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Thu, 4 Aug 2022 11:52:51 +0200 Subject: [PATCH 100/131] reduce wavy seams for all layer heights, improve painting --- src/libslic3r/GCode/SeamPlacer.cpp | 18 +++++++++++++----- src/libslic3r/GCode/SeamPlacer.hpp | 4 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 72b9412d3..f824a50e1 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1379,23 +1379,31 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: float sharp_angle_weight = angle_weight(SeamPlacer::sharp_angle_snapping_threshold); //gather points positions and weights - size_t segments_count = 0; + float total_length = 0.0f; + float sharp_length = 0.0f; + Vec3f prev_pos = layers[seam_string[0].first].points[seam_string[0].second].position; for (size_t index = 0; index < seam_string.size(); ++index) { const SeamCandidate &point = layers[seam_string[index].first].points[seam_string[index].second]; Vec3f pos = point.position; + float dist = (pos - prev_pos).norm(); + total_length += dist; observations[index] = pos.head<2>(); observation_points[index] = pos.z(); weights[index] = angle_weight(point.local_ccw_angle); bool is_enforced = point.type == EnforcedBlockedSeamPoint::Enforced; - if (is_enforced || weights[index] > sharp_angle_weight) { - segments_count++; + if (is_enforced) { + weights[index] = std::max(weights[index], 6.0f); } + if (is_enforced || weights[index] > sharp_angle_weight) { + sharp_length+= dist; + } + prev_pos = pos; } // Curve Fitting size_t number_of_segments = std::max( - std::max(size_t(1), seam_string.size() / 200), - size_t(segments_count / SeamPlacer::seam_align_seams_per_segment)); + std::max(size_t(1), size_t(total_length / 30.0f)), + size_t(sharp_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 diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index cc1e50513..c905fe8f6 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -147,8 +147,8 @@ public: 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; - // number of seams per bspline segment - static constexpr float seam_align_seams_per_segment = 8.0f; + // 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; From 8812036c25931599a4bed66505aa1ec392a6d73f Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Fri, 5 Aug 2022 11:11:58 +0200 Subject: [PATCH 101/131] slowly decreasing angle seam placement feature disabled --- src/libslic3r/GCode/SeamPlacer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index f824a50e1..96b6dcd58 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1136,6 +1136,8 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) - 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) From d39d35cc8367f2006b8db7553ce8ca99565b4f8f Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Fri, 5 Aug 2022 16:33:59 +0200 Subject: [PATCH 102/131] better curling fix, removed resamping, fixed the feature disable from previous commit --- src/libslic3r/GCode/SeamPlacer.cpp | 62 +++++++++++++++++------------- src/libslic3r/GCode/SeamPlacer.hpp | 2 +- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 96b6dcd58..a54e55e00 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -512,14 +512,13 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const orig_point = true; } - if (global_model_info.is_blocked(position, perimeter.flow_width)) { - type = EnforcedBlockedSeamPoint::Blocked; - } - 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) { @@ -828,7 +827,7 @@ struct SeamComparator { //avoid overhangs if ((a.overhang > 0.0f || b.overhang > 0.0f) - && abs(a.overhang - b.overhang) > (0.2f * a.perimeter.flow_width)) { + && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { return a.overhang < b.overhang; } @@ -1137,7 +1136,7 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) * 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; + 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) @@ -1375,44 +1374,55 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl:: 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)); }; - float sharp_angle_weight = angle_weight(SeamPlacer::sharp_angle_snapping_threshold); //gather points positions and weights float total_length = 0.0f; - float sharp_length = 0.0f; - Vec3f prev_pos = layers[seam_string[0].first].points[seam_string[0].second].position; + 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 &point = layers[seam_string[index].first].points[seam_string[index].second]; - Vec3f pos = point.position; - float dist = (pos - prev_pos).norm(); - total_length += dist; - observations[index] = pos.head<2>(); - observation_points[index] = pos.z(); - weights[index] = angle_weight(point.local_ccw_angle); - bool is_enforced = point.type == EnforcedBlockedSeamPoint::Enforced; - if (is_enforced) { - weights[index] = std::max(weights[index], 6.0f); + 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 + ); } - if (is_enforced || weights[index] > sharp_angle_weight) { - sharp_length+= dist; + 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; } - prev_pos = pos; + total_length += sign * (last_point_pos - current.position).norm(); + last_point_pos = current.position; } // Curve Fitting - size_t number_of_segments = std::max( - std::max(size_t(1), size_t(total_length / 30.0f)), - size_t(sharp_length / SeamPlacer::seam_align_mm_per_segment)); + 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]; - const float t = std::min(1.0f, weights[index] / 10.0f); + 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()); diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index c905fe8f6..4275e4942 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -131,7 +131,7 @@ public: // 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 = 50.0f * float(PI) / 180.0f; + 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; From 88ba89dbbc8ccf62ae7a9a27a68da4ab9bc585ea Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 26 Jul 2022 14:48:26 +0200 Subject: [PATCH 103/131] STEP: Implementation ported from BambuStudio: CMake handling is different STEP: Removed preprocessing stage STEP: Small refactoring STEP: Bigger refactoring STEP: Changed naming on loaded object and volumes: If the STEP contains exactly one named volume, the object and its first volume will both have that name. Otherwise, filename w/o suffix is used as object name and volumes are named using names from the STEP (if there is none, untranslated "PartN" string is used). STEP: Load the libraries dynamically on Win wip --- deps/CMakeLists.txt | 2 + deps/OCCT/OCCT.cmake | 22 ++++ src/CMakeLists.txt | 5 +- src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/Format/STEP.cpp | 110 +++++++++++++++++ src/libslic3r/Format/STEP.hpp | 19 +++ src/libslic3r/Model.cpp | 3 + src/libslic3r/TriangleMesh.cpp | 1 + src/occt_wrapper/CMakeLists.txt | 51 ++++++++ src/occt_wrapper/OCCTWrapper.cpp | 201 +++++++++++++++++++++++++++++++ src/occt_wrapper/OCCTWrapper.hpp | 27 +++++ src/slic3r/GUI/GUI_App.cpp | 3 +- src/slic3r/GUI/GUI_App.hpp | 1 + 13 files changed, 443 insertions(+), 4 deletions(-) create mode 100644 deps/OCCT/OCCT.cmake create mode 100644 src/libslic3r/Format/STEP.cpp create mode 100644 src/libslic3r/Format/STEP.hpp create mode 100644 src/occt_wrapper/CMakeLists.txt create mode 100644 src/occt_wrapper/OCCTWrapper.cpp create mode 100644 src/occt_wrapper/OCCTWrapper.hpp diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 56a8fa429..0fe4e41c7 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -189,6 +189,7 @@ endif () include(JPEG/JPEG.cmake) include(TIFF/TIFF.cmake) include(wxWidgets/wxWidgets.cmake) +include(OCCT/OCCT.cmake) set(_dep_list dep_Boost @@ -200,6 +201,7 @@ set(_dep_list dep_OpenVDB dep_OpenCSG dep_CGAL + dep_OCCT ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake new file mode 100644 index 000000000..9981ac15e --- /dev/null +++ b/deps/OCCT/OCCT.cmake @@ -0,0 +1,22 @@ +prusaslicer_add_cmake_project(OCCT + #LMBBS: changed version to 7.6.2 + URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_2.zip + URL_HASH SHA256=c696b923593e8c18d059709717dbf155b3e72fdd283c8522047a790ec3a432c5 + + CMAKE_ARGS + -DINSTALL_DIR_LAYOUT=Unix # LMBBS + -DBUILD_LIBRARY_TYPE=Static + -DUSE_TK=OFF + -DUSE_TBB=OFF + -DUSE_FREETYPE=OFF + -DUSE_FFMPEG=OFF + -DUSE_VTK=OFF + -DUSE_FREETYPE=OFF + -DBUILD_MODULE_ApplicationFramework=OFF + #-DBUILD_MODULE_DataExchange=OFF + -DBUILD_MODULE_Draw=OFF + -DBUILD_MODULE_FoundationClasses=OFF + -DBUILD_MODULE_ModelingAlgorithms=OFF + -DBUILD_MODULE_ModelingData=OFF + -DBUILD_MODULE_Visualization=OFF +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cfee06342..2ea8eaa04 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,11 +15,9 @@ add_subdirectory(semver) add_subdirectory(libigl) add_subdirectory(hints) add_subdirectory(qoi) - -# Adding libnest2d project for bin packing... add_subdirectory(libnest2d) - add_subdirectory(libslic3r) +add_subdirectory(occt_wrapper) if (SLIC3R_GUI) add_subdirectory(imgui) @@ -127,6 +125,7 @@ if (NOT WIN32 AND NOT APPLE) endif () target_link_libraries(PrusaSlicer libslic3r cereal) + if (APPLE) # add_compile_options(-stdlib=libc++) # add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 41ad68db5..52ea9be08 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -94,6 +94,8 @@ add_library(libslic3r STATIC Format/STL.hpp Format/SL1.hpp Format/SL1.cpp + Format/STEP.hpp + Format/STEP.cpp GCode/ThumbnailData.cpp GCode/ThumbnailData.hpp GCode/Thumbnails.cpp diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp new file mode 100644 index 000000000..9b4d2c9ea --- /dev/null +++ b/src/libslic3r/Format/STEP.cpp @@ -0,0 +1,110 @@ +#include "STEP.hpp" +#include "occt_wrapper/OCCTWrapper.hpp" + +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" + +#include +#include + +#ifdef _WIN32 + #include +#else + #include + #include +#endif + + +namespace Slic3r { + +LoadStepFn get_load_step_fn() +{ + static LoadStepFn load_step_fn = nullptr; + + if (!load_step_fn) { +#ifdef _WIN32 + HMODULE module = LoadLibraryW(L"OCCTWrapper.dll"); + if (module == NULL) + throw Slic3r::RuntimeError("Cannot load OCCTWrapper.dll"); + + try { + const char* fn_name = "load_step_internal"; + FARPROC farproc = GetProcAddress(module, fn_name); + if (! farproc) { + DWORD ec = GetLastError(); + throw Slic3r::RuntimeError(std::string("Cannot load function from OCCTWrapper.dll: ") + fn_name + + "\n\nError code: " + std::to_string(ec)); + } + load_step_fn = reinterpret_cast(farproc); + } catch (const Slic3r::RuntimeError&) { + FreeLibrary(module); + throw; + } +#else + void *plugin_ptr = dlopen("OCCTWrapper.so", RTLD_NOW | RTLD_GLOBAL); + + if (plugin_ptr) { + load_step_fn = reinterpret_cast(dlsym(plugin_ptr, "load_step_internal")); + if (!load_step_fn) { + dlclose(plugin_ptr); + } + } +#endif + } + + return load_step_fn; +} + +bool load_step(const char *path, Model *model /*BBS:, ImportStepProgressFn proFn*/) +{ + OCCTResult occt_object; + + LoadStepFn load_step_fn = get_load_step_fn(); + + if (!load_step_fn) + return false; + + load_step_fn(path, &occt_object); + + assert(! occt_object.volumes.empty()); + + assert(boost::algorithm::iends_with(occt_object.object_name, ".stp") + || boost::algorithm::iends_with(occt_object.object_name, ".step")); + occt_object.object_name.erase(occt_object.object_name.find(".")); + assert(! occt_object.object_name.empty()); + + + ModelObject* new_object = model->add_object(); + new_object->input_file = path; + if (new_object->volumes.size() == 1 && ! occt_object.volumes.front().volume_name.empty()) + new_object->name = new_object->volumes.front()->name; + else + new_object->name = occt_object.object_name; + + + for (size_t i=0; iadd_volume(std::move(triangle_mesh)); + + new_volume->name = occt_object.volumes[i].volume_name.empty() + ? std::string("Part") + std::to_string(i+1) + : occt_object.volumes[i].volume_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; + } + + return true; +} + +}; // namespace Slic3r diff --git a/src/libslic3r/Format/STEP.hpp b/src/libslic3r/Format/STEP.hpp new file mode 100644 index 000000000..8fbc604d8 --- /dev/null +++ b/src/libslic3r/Format/STEP.hpp @@ -0,0 +1,19 @@ +// Original implementation of STEP format import created by Bambulab. +// https://github.com/bambulab/BambuStudio +// Forked off commit 1555904, modified by Prusa Research. + +#ifndef slic3r_Format_STEP_hpp_ +#define slic3r_Format_STEP_hpp_ + +namespace Slic3r { + +class Model; + +//typedef std::function ImportStepProgressFn; + +// Load a step file into a provided model. +extern bool load_step(const char *path_str, Model *model /*LMBBS:, ImportStepProgressFn proFn = nullptr*/); + +}; // namespace Slic3r + +#endif /* slic3r_Format_STEP_hpp_ */ diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index efc66f478..77011800d 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -13,6 +13,7 @@ #include "Format/OBJ.hpp" #include "Format/STL.hpp" #include "Format/3mf.hpp" +#include "Format/STEP.hpp" #include @@ -114,6 +115,8 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c result = load_stl(input_file.c_str(), &model); else if (boost::algorithm::iends_with(input_file, ".obj")) result = load_obj(input_file.c_str(), &model); + else if (boost::algorithm::iends_with(input_file, ".step") || boost::algorithm::iends_with(input_file, ".stp")) + result = load_step(input_file.c_str(), &model); else if (boost::algorithm::iends_with(input_file, ".amf") || boost::algorithm::iends_with(input_file, ".amf.xml")) result = load_amf(input_file.c_str(), config, config_substitutions, &model, options & LoadAttribute::CheckVersion); else if (boost::algorithm::iends_with(input_file, ".3mf")) diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 93a09a0d9..807ebcc9a 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1370,4 +1370,5 @@ bool its_write_stl_binary(const char *file, const char *label, const std::vector return true; } + } // namespace Slic3r diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt new file mode 100644 index 000000000..2629e1d59 --- /dev/null +++ b/src/occt_wrapper/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.13) +project(OCCTWrapper) + +add_library(OCCTWrapper SHARED OCCTWrapper.cpp) + +set_target_properties(OCCTWrapper + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" + PREFIX "" +) + +include(GenerateExportHeader) + +generate_export_header(OCCTWrapper) + +find_package(OpenCASCADE 7.6.2 REQUIRED) + +set(OCCT_LIBS + TKXDESTEP + TKSTEP + TKSTEP209 + TKSTEPAttr + TKSTEPBase + TKXCAF + TKXSBase + TKVCAF + TKCAF + TKLCAF + TKCDF + TKV3d + TKService + TKMesh + TKBO + TKPrim + TKHLR + TKShHealing + TKTopAlgo + TKGeomAlgo + TKBRep + TKGeomBase + TKG3d + TKG2d + TKMath + TKernel +) + +target_include_directories(OCCTWrapper PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(OCCTWrapper PUBLIC ${OpenCASCADE_INCLUDE_DIR}) +target_link_libraries(OCCTWrapper ${OCCT_LIBS}) + diff --git a/src/occt_wrapper/OCCTWrapper.cpp b/src/occt_wrapper/OCCTWrapper.cpp new file mode 100644 index 000000000..87f15e7f9 --- /dev/null +++ b/src/occt_wrapper/OCCTWrapper.cpp @@ -0,0 +1,201 @@ +#include "OCCTWrapper.hpp" + +#include "occtwrapper_export.h" + +#include + +#ifdef _WIN32 +#define DIR_SEPARATOR '\\' +#else +#define DIR_SEPARATOR '/' +#endif + +#include "STEPCAFControl_Reader.hxx" +#include "BRepMesh_IncrementalMesh.hxx" +#include "XCAFDoc_DocumentTool.hxx" +#include "XCAFDoc_ShapeTool.hxx" +#include "XCAFApp_Application.hxx" +#include "TopoDS_Builder.hxx" +#include "TopoDS.hxx" +#include "TDataStd_Name.hxx" +#include "BRepBuilderAPI_Transform.hxx" +#include "TopExp_Explorer.hxx" +#include "BRep_Tool.hxx" + +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 { + +struct NamedSolid { + NamedSolid(const TopoDS_Shape& s, + const std::string& n) : solid{s}, name{n} {} + const TopoDS_Shape solid; + const std::string name; +}; + +static void getNamedSolids(const TopLoc_Location& location, const Handle(XCAFDoc_ShapeTool) shapeTool, + const TDF_Label label, std::vector& namedSolids) +{ + TDF_Label referredLabel{label}; + if (shapeTool->IsReference(label)) + shapeTool->GetReferredShape(label, referredLabel); + + std::string name; + Handle(TDataStd_Name) shapeName; + if (referredLabel.FindAttribute(TDataStd_Name::GetID(), shapeName)) + name = TCollection_AsciiString(shapeName->Get()).ToCString(); + + TopLoc_Location localLocation = location * shapeTool->GetLocation(label); + TDF_LabelSequence components; + if (shapeTool->GetComponents(referredLabel, components)) { + for (Standard_Integer compIndex = 1; compIndex <= components.Length(); ++compIndex) { + getNamedSolids(localLocation, shapeTool, components.Value(compIndex), namedSolids); + } + } else { + TopoDS_Shape shape; + shapeTool->GetShape(referredLabel, shape); + TopAbs_ShapeEnum shape_type = shape.ShapeType(); + BRepBuilderAPI_Transform transform(shape, localLocation, Standard_True); + switch (shape_type) { + case TopAbs_COMPOUND: + namedSolids.emplace_back(TopoDS::Compound(transform.Shape()), name); + break; + case TopAbs_COMPSOLID: + namedSolids.emplace_back(TopoDS::CompSolid(transform.Shape()), name); + break; + case TopAbs_SOLID: + namedSolids.emplace_back(TopoDS::Solid(transform.Shape()), name); + break; + default: + break; + } + } +} + +extern "C" OCCTWRAPPER_EXPORT bool load_step_internal(const char *path, OCCTResult* res /*BBS:, ImportStepProgressFn proFn*/) +{ +try { + bool cb_cancel = false; + //if (proFn) { + // proFn(LOAD_STEP_STAGE_READ_FILE, 0, 1, cb_cancel); + // if (cb_cancel) + // return false; + //} + + + std::vector namedSolids; + Handle(TDocStd_Document) document; + Handle(XCAFApp_Application) application = XCAFApp_Application::GetApplication(); + application->NewDocument(path, document); + STEPCAFControl_Reader reader; + reader.SetNameMode(true); + //BBS: Todo, read file is slow which cause the progress_bar no update and gui no response + IFSelect_ReturnStatus stat = reader.ReadFile(path); + if (stat != IFSelect_RetDone || !reader.Transfer(document)) { + application->Close(document); + res->error_str = std::string{"Could not read '"} + path + "'"; + return false; + } + Handle(XCAFDoc_ShapeTool) shapeTool = XCAFDoc_DocumentTool::ShapeTool(document->Main()); + TDF_LabelSequence topLevelShapes; + shapeTool->GetFreeShapes(topLevelShapes); + + Standard_Integer topShapeLength = topLevelShapes.Length() + 1; + for (Standard_Integer iLabel = 1; iLabel < topShapeLength; ++iLabel) { + //if (proFn) { + // proFn(LOAD_STEP_STAGE_GET_SOLID, iLabel, topShapeLength, cb_cancel); + // if (cb_cancel) { + // shapeTool.reset(nullptr); + // application->Close(document); + // return false; + // } + //} + getNamedSolids(TopLoc_Location{}, shapeTool, topLevelShapes.Value(iLabel), namedSolids); + } + + + + // Now the object name. Set it to filename without suffix. + // This will later be changed if only one volume is loaded. + const char *last_slash = strrchr(path, DIR_SEPARATOR); + std::string obj_name((last_slash == nullptr) ? path : last_slash + 1); + res->object_name = obj_name; + + for (size_t i = 0; i < namedSolids.size(); ++i) { + //BBS:if (proFn) { + // proFn(LOAD_STEP_STAGE_GET_MESH, i, namedSolids.size(), cb_cancel); + // if (cb_cancel) { + // model->delete_object(new_object); + // shapeTool.reset(nullptr); + // application->Close(document); + // return false; + // } + //} + + res->volumes.emplace_back(); + auto& vertices = res->volumes.back().vertices; + auto& indices = res->volumes.back().indices; + + BRepMesh_IncrementalMesh mesh(namedSolids[i].solid, STEP_TRANS_CHORD_ERROR, false, STEP_TRANS_ANGLE_RES, true); + + for (TopExp_Explorer anExpSF(namedSolids[i].solid, TopAbs_FACE); anExpSF.More(); anExpSF.Next()) { + const int aNodeOffset = int(vertices.size()); + const TopoDS_Shape& aFace = anExpSF.Current(); + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTriangulation = BRep_Tool::Triangulation(TopoDS::Face(aFace), aLoc); + if (aTriangulation.IsNull()) + continue; + + // First copy vertices (will create duplicates). + gp_Trsf aTrsf = aLoc.Transformation(); + for (Standard_Integer aNodeIter = 1; aNodeIter <= aTriangulation->NbNodes(); ++aNodeIter) { + gp_Pnt aPnt = aTriangulation->Node(aNodeIter); + aPnt.Transform(aTrsf); + vertices.push_back({float(aPnt.X()), float(aPnt.Y()), float(aPnt.Z())}); + } + // Now the indices. + 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) + std::swap(anId[1], anId[2]); + + // Account for the vertices we already have from previous faces. + // anId is 1-based index ! + indices.push_back({anId[0] - 1 + aNodeOffset, + anId[1] - 1 + aNodeOffset, + anId[2] - 1 + aNodeOffset}); + } + } + + res->volumes.back().volume_name = namedSolids[i].name; + + if (vertices.empty()) + res->volumes.pop_back(); + } + + shapeTool.reset(nullptr); + application->Close(document); + + if (res->volumes.empty()) + return false; +} catch (const std::exception& ex) { + res->error_str = ex.what(); + return false; +} catch (...) { + res->error_str = "An exception was thrown in load_step_internal."; + return false; +} + + return true; +} + +}; // namespace Slic3r diff --git a/src/occt_wrapper/OCCTWrapper.hpp b/src/occt_wrapper/OCCTWrapper.hpp new file mode 100644 index 000000000..e87becb70 --- /dev/null +++ b/src/occt_wrapper/OCCTWrapper.hpp @@ -0,0 +1,27 @@ + +#ifndef occtwrapper_OCCTWrapper_hpp_ +#define occtwrapper_OCCTWrapper_hpp_ + +#include +#include +#include + +namespace Slic3r { + +struct OCCTVolume { + std::string volume_name; + std::vector> vertices; + std::vector> indices; +}; + +struct OCCTResult { + std::string error_str; + std::string object_name; + std::vector volumes; +}; + +using LoadStepFn = bool (*)(const char *path, OCCTResult* occt_result); + +}; // namespace Slic3r + +#endif // occtwrapper_OCCTWrapper_hpp_ diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 5bc770b2c..6362dc609 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -482,10 +482,11 @@ struct FileWildcards { static const FileWildcards file_wildcards_by_type[FT_SIZE] = { /* FT_STL */ { "STL files"sv, { ".stl"sv } }, /* FT_OBJ */ { "OBJ files"sv, { ".obj"sv } }, + /* FT_STEP */ { "STEP files"sv, { ".stp"sv, ".step"sv } }, /* FT_AMF */ { "AMF files"sv, { ".amf"sv, ".zip.amf"sv, ".xml"sv } }, /* FT_3MF */ { "3MF files"sv, { ".3mf"sv } }, /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".gco"sv, ".g"sv, ".ngc"sv } }, - /* FT_MODEL */ { "Known files"sv, { ".stl"sv, ".obj"sv, ".3mf"sv, ".amf"sv, ".zip.amf"sv, ".xml"sv } }, + /* FT_MODEL */ { "Known files"sv, { ".stl"sv, ".obj"sv, ".3mf"sv, ".amf"sv, ".zip.amf"sv, ".xml"sv, ".step"sv, ".stp"sv } }, /* FT_PROJECT */ { "Project files"sv, { ".3mf"sv, ".amf"sv, ".zip.amf"sv } }, /* FT_GALLERY */ { "Known files"sv, { ".stl"sv, ".obj"sv } }, diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index c60dc8d6f..8775a5f31 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -53,6 +53,7 @@ enum FileType { FT_STL, FT_OBJ, + FT_STEP, FT_AMF, FT_3MF, FT_GCODE, From 7d3f0b4b32460c599626a20eea4f2d81a5820041 Mon Sep 17 00:00:00 2001 From: "Prusa Research a.s" Date: Wed, 27 Jul 2022 11:22:20 +0200 Subject: [PATCH 104/131] Fixes on MacOS --- src/libslic3r/Format/STEP.cpp | 8 +++++++- src/occt_wrapper/CMakeLists.txt | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 9b4d2c9ea..bd99d073a 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -21,6 +21,8 @@ LoadStepFn get_load_step_fn() { static LoadStepFn load_step_fn = nullptr; + constexpr const char* fn_name = "load_step_internal"; + if (!load_step_fn) { #ifdef _WIN32 HMODULE module = LoadLibraryW(L"OCCTWrapper.dll"); @@ -28,7 +30,6 @@ LoadStepFn get_load_step_fn() throw Slic3r::RuntimeError("Cannot load OCCTWrapper.dll"); try { - const char* fn_name = "load_step_internal"; FARPROC farproc = GetProcAddress(module, fn_name); if (! farproc) { DWORD ec = GetLastError(); @@ -47,7 +48,12 @@ LoadStepFn get_load_step_fn() load_step_fn = reinterpret_cast(dlsym(plugin_ptr, "load_step_internal")); if (!load_step_fn) { dlclose(plugin_ptr); + throw Slic3r::RuntimeError("Cannot load function from OCCTWrapper.so"); } + } else { + throw Slic3r::RuntimeError( + std::string("Cannot load function from OCCTWrapper.dll: ") + + fn_name + "\n\nError code: " + dlerror()); } #endif } diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt index 2629e1d59..ccdfb14a8 100644 --- a/src/occt_wrapper/CMakeLists.txt +++ b/src/occt_wrapper/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(OCCTWrapper) -add_library(OCCTWrapper SHARED OCCTWrapper.cpp) +add_library(OCCTWrapper MODULE OCCTWrapper.cpp) set_target_properties(OCCTWrapper PROPERTIES From 1fd4659f0e29ee3ec6a4d33dcae8a30d39185521 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 27 Jul 2022 13:39:38 +0200 Subject: [PATCH 105/131] Use resources dir for occt shared lib --- .gitignore | 1 + CMakeLists.txt | 1 + src/CMakeLists.txt | 5 ++++- src/libslic3r/Format/STEP.cpp | 18 +++++++++++------- src/occt_wrapper/CMakeLists.txt | 4 ++-- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e3a9db477..a14504ea1 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ local-lib build-linux/* deps/build-linux/* **/.DS_Store +resources/plugins diff --git a/CMakeLists.txt b/CMakeLists.txt index e749fb28c..449f7539d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,7 @@ option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) option(SLIC3R_PERL_XS "Compile XS Perl module and enable Perl unit and integration tests" 0) option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0) +option(SLIC3R_ENABLE_FORMAT_STEP "Enable compilation of STEP file support" 1) # If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable. CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION "Allow perfoming desktop integration during runtime" 1 "NOT SLIC3R_FHS" 0) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2ea8eaa04..b75dcaa2f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,7 +17,10 @@ add_subdirectory(hints) add_subdirectory(qoi) add_subdirectory(libnest2d) add_subdirectory(libslic3r) -add_subdirectory(occt_wrapper) + +if (SLIC3R_ENABLE_FORMAT_STEP) + add_subdirectory(occt_wrapper) +endif () if (SLIC3R_GUI) add_subdirectory(imgui) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index bd99d073a..7730b835a 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -3,6 +3,9 @@ #include "libslic3r/Model.hpp" #include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Utils.hpp" + +#include #include #include @@ -24,8 +27,10 @@ LoadStepFn get_load_step_fn() constexpr const char* fn_name = "load_step_internal"; if (!load_step_fn) { + auto libpath = boost::filesystem::path(resources_dir()) / "plugins"; #ifdef _WIN32 - HMODULE module = LoadLibraryW(L"OCCTWrapper.dll"); + libpath /= "OCCTWrapper.dll"; + HMODULE module = LoadLibraryW(libpath.wstring().c_str()); if (module == NULL) throw Slic3r::RuntimeError("Cannot load OCCTWrapper.dll"); @@ -42,18 +47,17 @@ LoadStepFn get_load_step_fn() throw; } #else - void *plugin_ptr = dlopen("OCCTWrapper.so", RTLD_NOW | RTLD_GLOBAL); + libpath /= "OCCTWrapper.so"; + void *plugin_ptr = dlopen(libpath.c_str(), RTLD_NOW | RTLD_GLOBAL); if (plugin_ptr) { - load_step_fn = reinterpret_cast(dlsym(plugin_ptr, "load_step_internal")); + load_step_fn = reinterpret_cast(dlsym(plugin_ptr, fn_name)); if (!load_step_fn) { dlclose(plugin_ptr); - throw Slic3r::RuntimeError("Cannot load function from OCCTWrapper.so"); + BOOST_LOG_TRIVIAL(error) << dlerror(); } } else { - throw Slic3r::RuntimeError( - std::string("Cannot load function from OCCTWrapper.dll: ") + - fn_name + "\n\nError code: " + dlerror()); + BOOST_LOG_TRIVIAL(error) << dlerror(); } #endif } diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt index ccdfb14a8..4e78b83eb 100644 --- a/src/occt_wrapper/CMakeLists.txt +++ b/src/occt_wrapper/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(OCCTWrapper MODULE OCCTWrapper.cpp) set_target_properties(OCCTWrapper PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" + LIBRARY_OUTPUT_DIRECTORY "${SLIC3R_RESOURCES_DIR}/plugins" + RUNTIME_OUTPUT_DIRECTORY "${SLIC3R_RESOURCES_DIR}/plugins" PREFIX "" ) From 3f8979c95fd5ad7cf2371c8d6f7f0a874fda64ed Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 27 Jul 2022 14:09:34 +0200 Subject: [PATCH 106/131] Use prusa-slicer executable dir to search for occt shared lib --- .gitignore | 1 - src/libslic3r/Format/STEP.cpp | 3 ++- src/occt_wrapper/CMakeLists.txt | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a14504ea1..e3a9db477 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,3 @@ local-lib build-linux/* deps/build-linux/* **/.DS_Store -resources/plugins diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 7730b835a..b81661922 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -6,6 +6,7 @@ #include "libslic3r/Utils.hpp" #include +#include #include #include @@ -27,7 +28,7 @@ LoadStepFn get_load_step_fn() constexpr const char* fn_name = "load_step_internal"; if (!load_step_fn) { - auto libpath = boost::filesystem::path(resources_dir()) / "plugins"; + auto libpath = boost::dll::program_location().parent_path(); #ifdef _WIN32 libpath /= "OCCTWrapper.dll"; HMODULE module = LoadLibraryW(libpath.wstring().c_str()); diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt index 4e78b83eb..84f91f2f5 100644 --- a/src/occt_wrapper/CMakeLists.txt +++ b/src/occt_wrapper/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(OCCTWrapper MODULE OCCTWrapper.cpp) set_target_properties(OCCTWrapper PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${SLIC3R_RESOURCES_DIR}/plugins" - RUNTIME_OUTPUT_DIRECTORY "${SLIC3R_RESOURCES_DIR}/plugins" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src" PREFIX "" ) @@ -49,3 +49,5 @@ target_include_directories(OCCTWrapper PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(OCCTWrapper PUBLIC ${OpenCASCADE_INCLUDE_DIR}) target_link_libraries(OCCTWrapper ${OCCT_LIBS}) +install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_BINDIR}") + From 5a4f12981200e438ccbd368da66af226856dd5cc Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 27 Jul 2022 15:40:30 +0200 Subject: [PATCH 107/131] Make occtwrapper buildable stand-alone --- src/occt_wrapper/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt index 84f91f2f5..9f4989b72 100644 --- a/src/occt_wrapper/CMakeLists.txt +++ b/src/occt_wrapper/CMakeLists.txt @@ -49,5 +49,7 @@ target_include_directories(OCCTWrapper PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(OCCTWrapper PUBLIC ${OpenCASCADE_INCLUDE_DIR}) target_link_libraries(OCCTWrapper ${OCCT_LIBS}) +include(GNUInstallDirs) + install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_BINDIR}") From 2486a2363c761eed18b1d0808916b34e7b8c6b8e Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 29 Jul 2022 13:45:57 +0200 Subject: [PATCH 108/131] Try to reduce number of build threads only for OCCT --- deps/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 0fe4e41c7..2a83863cf 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -75,6 +75,9 @@ function(prusaslicer_add_cmake_project projectname) if (MSVC) set(_gen CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_GENERATOR_PLATFORM "${DEP_PLATFORM}") set(_build_j "/m") + if (${projectname} STREQUAL "OCCT") + set(_build_j "/m:1") + endif () endif () ExternalProject_Add( From aff337067b7114eacfb325640859593e84fe5a53 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 10 Aug 2022 15:31:17 +0200 Subject: [PATCH 109/131] Switch to statically linked OCCTWrapper on Apple. Due to dmg notarization issues --- src/libslic3r/CMakeLists.txt | 5 +++++ src/libslic3r/Format/STEP.cpp | 6 ++++++ src/occt_wrapper/CMakeLists.txt | 7 ++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 52ea9be08..5998dd6eb 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -414,6 +414,11 @@ target_link_libraries(libslic3r qoi ) +if (APPLE) + # TODO: we need to fix notarization with the separate shared library + target_link_libraries(libslic3r OCCTWrapper) +endif () + if (TARGET OpenVDB::openvdb) target_link_libraries(libslic3r OpenVDB::openvdb) endif() diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index b81661922..8ac3e8adb 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -21,6 +21,10 @@ namespace Slic3r { +#if __APPLE__ +extern "C" bool load_step_internal(const char *path, OCCTResult* res); +#endif + LoadStepFn get_load_step_fn() { static LoadStepFn load_step_fn = nullptr; @@ -47,6 +51,8 @@ LoadStepFn get_load_step_fn() FreeLibrary(module); throw; } +#elif __APPLE__ + load_step_fn = &load_step_internal; #else libpath /= "OCCTWrapper.so"; void *plugin_ptr = dlopen(libpath.c_str(), RTLD_NOW | RTLD_GLOBAL); diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt index 9f4989b72..ed75531a9 100644 --- a/src/occt_wrapper/CMakeLists.txt +++ b/src/occt_wrapper/CMakeLists.txt @@ -1,7 +1,12 @@ cmake_minimum_required(VERSION 3.13) project(OCCTWrapper) -add_library(OCCTWrapper MODULE OCCTWrapper.cpp) +if (APPLE) + # TODO: we need to fix notarization with the separate shared library + add_library(OCCTWrapper STATIC OCCTWrapper.cpp) +else () + add_library(OCCTWrapper MODULE OCCTWrapper.cpp) +endif () set_target_properties(OCCTWrapper PROPERTIES From 620b89d1c69fb3ebdff43a5d49fe0c0ab7904ab2 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 11 Aug 2022 10:31:19 +0200 Subject: [PATCH 110/131] Add STEP into menu label, enable drag and drop --- src/libslic3r/Model.cpp | 2 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 77011800d..2c5200886 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -123,7 +123,7 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c //FIXME options & LoadAttribute::CheckVersion ? result = load_3mf(input_file.c_str(), *config, *config_substitutions, &model, false); else - throw Slic3r::RuntimeError("Unknown file format. Input file must have .stl, .obj, .amf(.xml) or .prusa extension."); + throw Slic3r::RuntimeError("Unknown file format. Input file must have .stl, .obj, .amf(.xml), .prusa or .step/.stp extension."); if (! result) throw Slic3r::RuntimeError("Loading of a model file failed."); diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index c330f7cc9..3a4e75729 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -80,7 +80,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl + alt + "S", L("Save project as (3mf)") }, { ctrl + "R", L("(Re)slice") }, // File>Import - { ctrl + "I", L("Import STL/OBJ/AMF/3MF without config, keep plater") }, + { ctrl + "I", L("Import STL/OBJ/AMF/3MF/STEP without config, keep plater") }, { ctrl + "L", L("Import Config from ini/amf/3mf/gcode") }, { ctrl + alt + "L", L("Load Config from ini/amf/3mf/gcode and merge") }, // File>Export diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 478766df6..adb657d4f 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1205,7 +1205,7 @@ void MainFrame::init_menubar_as_editor() fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); - append_menu_item(import_menu, wxID_ANY, _L("Import STL/OBJ/AM&F/3MF") + dots + "\tCtrl+I", _L("Load a model"), + append_menu_item(import_menu, wxID_ANY, _L("Import STL/OBJ/AM&F/3MF/STEP") + dots + "\tCtrl+I", _L("Load a model"), [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, "import_plater", nullptr, [this](){return m_plater != nullptr; }, this); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 81c57bae0..20783f0fc 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5340,7 +5340,7 @@ void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) bool Plater::load_files(const wxArrayString& filenames) { - const std::regex pattern_drop(".*[.](stl|obj|amf|3mf|prusa)", std::regex::icase); + const std::regex pattern_drop(".*[.](stl|obj|amf|3mf|prusa|step|stp)", std::regex::icase); const std::regex pattern_gcode_drop(".*[.](gcode|g)", std::regex::icase); std::vector paths; From 41f5bd006a94c944685e87d68c1634ff76d45ed5 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 11 Aug 2022 11:32:06 +0200 Subject: [PATCH 111/131] STEP: Improved error reporting on Linux --- src/libslic3r/Format/STEP.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 8ac3e8adb..f63d56f1b 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -61,10 +62,11 @@ LoadStepFn get_load_step_fn() load_step_fn = reinterpret_cast(dlsym(plugin_ptr, fn_name)); if (!load_step_fn) { dlclose(plugin_ptr); - BOOST_LOG_TRIVIAL(error) << dlerror(); + throw Slic3r::RuntimeError(std::string("Cannot load function from OCCTWrapper.dll: ") + fn_name + + "\n\n" + dlerror()); } } else { - BOOST_LOG_TRIVIAL(error) << dlerror(); + throw Slic3r::RuntimeError(std::string("Cannot load OCCTWrapper.dll:\n\n") + dlerror()); } #endif } From f548f8540532f66d41fc003657d1f207ea4174ce Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 11 Aug 2022 14:45:12 +0200 Subject: [PATCH 112/131] STEP: Show STEP in model import file dialog title --- 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 6362dc609..c25f06ff6 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1868,7 +1868,7 @@ void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const { input_files.Clear(); wxFileDialog dialog(parent ? parent : GetTopWindow(), - _L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"), + _L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA/STEP):"), from_u8(app_config->get_last_dir()), "", file_wildcards(FT_MODEL), wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); From 0df757895e1017f17d615927a736337cef33f9f2 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 11 Aug 2022 11:32:51 +0200 Subject: [PATCH 113/131] An attempt to fix issues with wxProgressDialog --- src/slic3r/GUI/Plater.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 20783f0fc..8961d260a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2379,9 +2379,20 @@ std::vector Plater::priv::load_files(const std::vector& input_ const auto loading = _L("Loading") + dots; - // Create wxProgressDialog on heap, see the linux ifdef below. - auto progress_dlg = new wxProgressDialog(loading, "", 100, find_toplevel_parent(q), wxPD_AUTO_HIDE); + // The situation with wxProgressDialog is quite interesting here. + // On Linux (only), there are issues when FDM/SLA is switched during project file loading (disabling of controls, + // see a comment below). This can be bypassed by creating the wxProgressDialog on heap and destroying it + // when loading a project file. However, creating the dialog on heap causes issues on macOS, where it does not + // appear at all. Therefore, we create the dialog on stack on Win and macOS, and on heap on Linux, which + // is the only system that needed the workarounds in the first place. +#ifdef __linux__ + auto progress_dlg = new wxProgressDialog(loading, "", 100, find_toplevel_parent(q), wxPD_APP_MODAL | wxPD_AUTO_HIDE); Slic3r::ScopeGuard([&progress_dlg](){ if (progress_dlg) progress_dlg->Destroy(); progress_dlg = nullptr; }); +#else + wxProgressDialog progress_dlg_stack(loading, "", 100, find_toplevel_parent(q), wxPD_APP_MODAL | wxPD_AUTO_HIDE); + wxProgressDialog* progress_dlg = &progress_dlg_stack; +#endif + wxBusyCursor busy; From 661bb522cf5221f60e13e0f72492fd519c382c3f Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 12 Aug 2022 09:40:19 +0200 Subject: [PATCH 114/131] Fixed compiler warnings --- src/libslic3r/Format/STEP.cpp | 2 ++ src/occt_wrapper/OCCTWrapper.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index f63d56f1b..00d692fc6 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -30,7 +30,9 @@ LoadStepFn get_load_step_fn() { static LoadStepFn load_step_fn = nullptr; +#ifndef __APPLE__ constexpr const char* fn_name = "load_step_internal"; +#endif if (!load_step_fn) { auto libpath = boost::dll::program_location().parent_path(); diff --git a/src/occt_wrapper/OCCTWrapper.cpp b/src/occt_wrapper/OCCTWrapper.cpp index 87f15e7f9..e41d8953f 100644 --- a/src/occt_wrapper/OCCTWrapper.cpp +++ b/src/occt_wrapper/OCCTWrapper.cpp @@ -80,7 +80,7 @@ static void getNamedSolids(const TopLoc_Location& location, const Handle(XCAFDoc extern "C" OCCTWRAPPER_EXPORT bool load_step_internal(const char *path, OCCTResult* res /*BBS:, ImportStepProgressFn proFn*/) { try { - bool cb_cancel = false; + //bool cb_cancel = false; //if (proFn) { // proFn(LOAD_STEP_STAGE_READ_FILE, 0, 1, cb_cancel); // if (cb_cancel) From 4d19eb9ace6201193b8719117a4abbab499ef933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 10 Aug 2022 14:00:52 +0200 Subject: [PATCH 115/131] Added several test cases distilled from reported issues. --- tests/libslic3r/test_arachne.cpp | 305 ++++++++++++++++++++++++++++++- 1 file changed, 296 insertions(+), 9 deletions(-) diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index 991fae00e..c309fe6c8 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -11,22 +11,22 @@ using namespace Slic3r::Arachne; //#define ARACHNE_DEBUG_OUT #ifdef ARACHNE_DEBUG_OUT -static void draw_extrusion(const std::string &path, const Polygons &polygons, const std::vector &vlines, const ExPolygons &contours) +static void export_perimeters_to_svg(const std::string &path, const Polygons &contours, const std::vector &perimeters, const ExPolygons &infill_area) { coordf_t stroke_width = scale_(0.03); - BoundingBox bbox = get_extents(polygons); + BoundingBox bbox = get_extents(contours); bbox.offset(scale_(1.)); ::Slic3r::SVG svg(path.c_str(), bbox); - svg.draw(contours, "cyan"); + svg.draw(infill_area, "cyan"); - for (const VariableWidthLines &vl : vlines) - for (const ExtrusionLine &el : vl) { - ThickPolyline thick_polyline = to_thick_polyline(el); + for (const Arachne::VariableWidthLines &perimeter : perimeters) + for (const Arachne::ExtrusionLine &extrusion_line : perimeter) { + ThickPolyline thick_polyline = to_thick_polyline(extrusion_line); svg.draw({thick_polyline}, "green", "blue", stroke_width); } - for (const Line &line : to_lines(polygons)) + for (const Line &line : to_lines(contours)) svg.draw(line, "red", stroke_width); } #endif @@ -63,7 +63,7 @@ TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { std::vector perimeters = wallToolPaths.getToolPaths(); #ifdef ARACHNE_DEBUG_OUT - draw_extrusion(debug_out_path("arachne-closed-extrusion-line.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); + export_perimeters_to_svg(debug_out_path("arachne-closed-extrusion-line.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); #endif for (VariableWidthLines &perimeter : perimeters) @@ -96,9 +96,296 @@ TEST_CASE("Arachne - Missing perimeter - #8472", "[ArachneMissingPerimeter8472]" std::vector perimeters = wallToolPaths.getToolPaths(); #ifdef ARACHNE_DEBUG_OUT - draw_extrusion(debug_out_path("arachne-missing-perimeter-8472.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); + export_perimeters_to_svg(debug_out_path("arachne-missing-perimeter-8472.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); #endif REQUIRE(perimeters.size() == 3); } +// This test case was distilled from GitHub issue #8593. +// Where on the symmetrical model, there were missing parts of extrusions in gear teeth based on model rotation. +TEST_CASE("Arachne - #8593 - Missing a part of the extrusion", "[ArachneMissingPartOfExtrusion8593]") { + const Polygon poly_orig = { + Point( 1800000, 28500000), + Point( 1100000, 30000000), + Point( 1000000, 30900000), + Point( 600000, 32300000), + Point( -600000, 32300000), + Point(-1000000, 30900000), + Point(-1100000, 30000000), + Point(-1800000, 29000000), + }; + + coord_t spacing = 377079; + coord_t inset_count = 3; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); + print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.315, false)); + print_object_config.wall_transition_angle.set(new ConfigOptionFloat(40.)); + print_object_config.wall_transition_length.set(new ConfigOptionFloatOrPercent(1., false)); + + // This behavior seems to be related to the rotation of the input polygon. + // There are specific angles in which this behavior is always triggered. + for (const double angle : {0., -PI / 2., -PI / 15.}) { + Polygon poly = poly_orig; + if (angle != 0.) + poly.rotate(angle); + + Polygons polygons = {poly}; + Arachne::WallToolPaths wall_tool_paths(polygons, spacing, spacing, inset_count, 0, 0.2, print_object_config, PrintConfig::defaults()); + wall_tool_paths.generate(); + std::vector perimeters = wall_tool_paths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + { + static int iRun = 0; + export_perimeters_to_svg(debug_out_path("arachne-missing-part-of-extrusion-8593-%d.svg", iRun++), polygons, perimeters, union_ex(wall_tool_paths.getInnerContour())); + } +#endif + } +} + +// This test case was distilled from GitHub issue #8573. +TEST_CASE("Arachne - #8573 - A gap in the perimeter - 1", "[ArachneGapInPerimeter8573_1]") { + const Polygon poly = { + Point(13960000, 500000), + Point(13920000, 1210000), + Point(13490000, 2270000), + Point(12960000, 3400000), + Point(12470000, 4320000), + Point(12160000, 4630000), + Point(12460000, 3780000), + Point(12700000, 2850000), + Point(12880000, 1910000), + Point(12950000, 1270000), + Point(13000000, 500000), + }; + + Polygons polygons = {poly}; + coord_t spacing = 407079; + coord_t inset_count = 2; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); +// print_object_config.wall_transition_angle.set(new ConfigOptionFloat(20.)); + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, print_object_config, PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-gap-in-perimeter-1-8573.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif +} + +// This test case was distilled from GitHub issue #8444. +TEST_CASE("Arachne - #8444 - A gap in the perimeter - 2", "[ArachneGapInPerimeter8444_2]") { + const Polygon poly = { + Point(14413938, 3825902), + Point(16817613, 711749), + Point(19653030, 67154), + Point(20075592, 925370), + Point(20245428, 1339788), + Point(20493219, 2121894), + Point(20570295, 2486625), + Point(20616559, 2835232), + Point(20631964, 3166882), + Point(20591800, 3858877), + Point(19928267, 2153012), + Point(19723020, 1829802), + Point(19482017, 1612364), + Point(19344810, 1542433), + Point(19200249, 1500902), + Point(19047680, 1487200), + Point(18631073, 1520777), + Point(18377524, 1567627), + Point(18132517, 1641174), + Point(17896307, 1741360), + Point(17669042, 1868075), + Point(17449999, 2021790), + }; + + Polygons polygons = {poly}; + coord_t spacing = 594159; + coord_t inset_count = 2; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); + // print_object_config.wall_transition_angle.set(new ConfigOptionFloat(20.)); + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.4, print_object_config, PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-gap-in-perimeter-2-8444.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif +} + +// This test case was distilled from GitHub issue #8528. +// There is a hole in the place where the number of perimeters is changing from 6 perimeters to 7 perimeters. +TEST_CASE("Arachne - #8528 - A hole when number of perimeters is changing", "[ArachneHoleOnPerimetersChange8528]") { + const Polygon poly = { + Point(-30000000, 27650000), + Point(-30000000, 33500000), + Point(-40000000, 33500000), + Point(-40500000, 33500000), + Point(-41100000, 33400000), + Point(-41600000, 33200000), + Point(-42100000, 32900000), + Point(-42600000, 32600000), + Point(-43000000, 32200000), + Point(-43300000, 31700000), + Point(-43600000, 31200000), + Point(-43800000, 30700000), + Point(-43900000, 30100000), + Point(-43900000, 29600000), + Point(-43957080, 25000000), + Point(-39042920, 25000000), + Point(-39042920, 27650000), + }; + + Polygons polygons = {poly}; + coord_t spacing = 814159; + coord_t inset_count = 5; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); + print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.68, false)); + + // Changing min_bead_width to 0.66 seems that resolve this issue, at least in this case. + print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.66, false)); + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.4, print_object_config, PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-hole-on-perimeters-change-8528.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif +} + +// This test case was distilled from GitHub issue #8528. +// There is an inconsistency between layers in length of the single perimeters. +TEST_CASE("Arachne - #8555 - Inconsistent single perimeter", "[ArachneInconsistentSinglePerimeter8555]") { + const Polygon poly_0 = { + Point(5527411, -38490007), + Point(11118814, -36631169), + Point(13529600, -36167120), + Point(11300145, -36114514), + Point(10484024, -36113916), + Point(5037323, -37985945), + Point(4097054, -39978866) + }; + const Polygon poly_1 = { + Point(5566841, -38517205), + Point(11185208, -36649404), + Point(13462719, -36211009), + Point(11357290, -36161329), + Point(10583855, -36160763), + Point(5105952, -38043516), + Point(4222019, -39917031) + }; + const Polygon poly_2 = { + Point(5606269, -38544404), + Point(11251599, -36667638), + Point(13391666, -36255700), + Point(10683552, -36207653), + Point(5174580, -38101085), + Point(4346981, -39855197) + }; + const Polygon poly_3 = { + Point(5645699, -38571603), + Point(11317993, -36685873), + Point(13324786, -36299588), + Point(10783383, -36254499), + Point(5243209, -38158655), + Point(4471947, -39793362) + }; + const Polygon poly_4 = { + Point(5685128, -38598801), + Point(11384385, -36704108), + Point(13257907, -36343476), + Point(10883211, -36301345), + Point(5311836, -38216224), + Point(4596909, -39731528) + }; + const Polygon poly_5 = { + Point(5724558, -38626000), + Point(11450778, -36722343), + Point(13191026, -36387365), + Point(10983042, -36348191), + Point(5380466, -38273795), + Point(4721874, -39669693) + }; + + Polygons polygons = {poly_0, poly_1, poly_2, poly_3, poly_4, poly_5}; + coord_t spacing = 417809; + coord_t inset_count = 2; + + for (size_t poly_idx = 0; poly_idx < polygons.size(); ++poly_idx) { + Polygons input_polygons{polygons[poly_idx]}; + Arachne::WallToolPaths wallToolPaths(input_polygons, spacing, spacing, inset_count, 0, 0.15, PrintObjectConfig::defaults(), PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-inconsistent-single-perimeter-8555-%d.svg", poly_idx), input_polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif + } +} + +// This test case was distilled from GitHub issue #8633. +// Open perimeter extrusion is shorter on endpoints in comparison to closed perimeter. +TEST_CASE("Arachne - #8633 - Shorter open perimeter", "[ArachneShorterOpenPerimeter8633]") { + const Polygon poly_0 = { + Point(6507498, 4189461), + Point(6460382, 3601960), + Point(6390896, 3181097), + Point(6294072, 2765838), + Point(6170293, 2357794), + + Point(7090581, 2045388), + Point(7232821, 2514293), + Point(7344089, 2991501), + Point(7423910, 3474969), + Point(7471937, 3962592), + Point(7487443, 4436235), + Point(6515575, 4436235), + }; + + const Polygon poly_1 = { + Point(6507498, 4189461), + Point(6460382, 3601960), + Point(6390896, 3181097), + Point(6294072, 2765838), + Point(6170293, 2357794), + + Point(6917958, 1586830), + Point(7090552, 2045398), + + Point(7232821, 2514293), + Point(7344089, 2991501), + Point(7423910, 3474969), + Point(7471937, 3962592), + Point(7487443, 4436235), + Point(6515575, 4436235), + }; + + Polygons polygons = {poly_0, poly_1}; + coord_t spacing = 617809; + coord_t inset_count = 1; + + PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); + print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.51, false)); + print_object_config.min_feature_size.set(new ConfigOptionFloatOrPercent(0.15, false)); + print_object_config.wall_transition_length.set(new ConfigOptionFloatOrPercent(0.6, false)); + + for (size_t poly_idx = 0; poly_idx < polygons.size(); ++poly_idx) { + Polygons input_polygons{polygons[poly_idx]}; + Arachne::WallToolPaths wallToolPaths(input_polygons, spacing, spacing, inset_count, 0, 0.15, print_object_config, PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-shorter-open-perimeter-8633-%d.svg", poly_idx), input_polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif + } +} \ No newline at end of file From e838acdcd18e3d6ce889f73b75548a986018dfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Wed, 10 Aug 2022 16:25:15 +0200 Subject: [PATCH 116/131] Added a lot of debugging outputs (SVG) into SkeletalTrapezoidation. --- .../Arachne/SkeletalTrapezoidation.cpp | 166 +++++++++++++++--- .../Arachne/SkeletalTrapezoidation.hpp | 7 + src/libslic3r/PerimeterGenerator.cpp | 35 ++++ src/libslic3r/SVG.cpp | 3 +- 4 files changed, 186 insertions(+), 25 deletions(-) diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index fbd3379d5..03677b5db 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -22,8 +22,6 @@ #define SKELETAL_TRAPEZOIDATION_BEAD_SEARCH_MAX 1000 //A limit to how long it'll keep searching for adjacent beads. Increasing will re-use beadings more often (saving performance), but search longer for beading (costing performance). -//#define ARACHNE_DEBUG - namespace boost::polygon { template<> struct geometry_concept @@ -46,6 +44,71 @@ template<> struct segment_traits namespace Slic3r::Arachne { +#ifdef ARACHNE_DEBUG +static void export_graph_to_svg(const std::string &path, + SkeletalTrapezoidationGraph &graph, + const Polygons &polys, + const std::vector> &edge_junctions = {}, + const bool beat_count = true, + const bool transition_middles = true, + const bool transition_ends = true) +{ + const std::vector colors = {"blue", "cyan", "red", "orange", "magenta", "pink", "purple", "green", "yellow"}; + coordf_t stroke_width = scale_(0.03); + BoundingBox bbox = get_extents(polys); + for (const auto &node : graph.nodes) + bbox.merge(node.p); + + bbox.offset(scale_(1.)); + + ::Slic3r::SVG svg(path.c_str(), bbox); + for (const auto &line : to_lines(polys)) + svg.draw(line, "gray", stroke_width); + + for (const auto &edge : graph.edges) + svg.draw(Line(edge.from->p, edge.to->p), (edge.data.centralIsSet() && edge.data.isCentral()) ? "blue" : "cyan", stroke_width); + + for (const auto &line_junction : edge_junctions) + for (const auto &extrusion_junction : *line_junction) + svg.draw(extrusion_junction.p, "orange", coord_t(stroke_width * 2.)); + + if (beat_count) { + for (const auto &node : graph.nodes) { + svg.draw(node.p, "red", coord_t(stroke_width * 1.6)); + svg.draw_text(node.p, std::to_string(node.data.bead_count).c_str(), "black", 1); + } + } + + if (transition_middles) { + for (auto &edge : graph.edges) { + if (std::shared_ptr> transitions = edge.data.getTransitions(); transitions) { + for (auto &transition : *transitions) { + Line edge_line = Line(edge.to->p, edge.from->p); + double edge_length = edge_line.length(); + Point pt = edge_line.a + (edge_line.vector().cast() * (double(transition.pos) / edge_length)).cast(); + svg.draw(pt, "magenta", coord_t(stroke_width * 1.5)); + svg.draw_text(pt, std::to_string(transition.lower_bead_count).c_str(), "black", 1); + } + } + } + } + + if (transition_ends) { + for (auto &edge : graph.edges) { + if (std::shared_ptr> transitions = edge.data.getTransitionEnds(); transitions) { + for (auto &transition : *transitions) { + Line edge_line = Line(edge.to->p, edge.from->p); + double edge_length = edge_line.length(); + Point pt = edge_line.a + (edge_line.vector().cast() * (double(transition.pos) / edge_length)).cast(); + svg.draw(pt, transition.is_lower_end ? "green" : "lime", coord_t(stroke_width * 1.5)); + svg.draw_text(pt, std::to_string(transition.lower_bead_count).c_str(), "black", 1); + } + } + } + } +} +#endif + SkeletalTrapezoidation::node_t& SkeletalTrapezoidation::makeNode(vd_t::vertex_type& vd_node, Point p) { auto he_node_it = vd_node_to_he_node.find(&vd_node); @@ -489,6 +552,10 @@ inline static void rotate_back_skeletal_trapezoidation_graph_after_fix(SkeletalT void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) { +#ifdef ARACHNE_DEBUG + this->outline = polys; +#endif + // Check self intersections. assert([&polys]() -> bool { EdgeGrid::Grid grid; @@ -517,7 +584,7 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys) Geometry::VoronoiDiagram voronoi_diagram; construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram); -#ifdef ARACHNE_DEBUG +#ifdef ARACHNE_DEBUG_VORONOI { static int iRun = 0; dump_voronoi_to_svg(debug_out_path("arachne_voronoi-diagram-%d.svg", iRun++).c_str(), voronoi_diagram, to_points(polys), to_lines(polys)); @@ -694,45 +761,62 @@ void SkeletalTrapezoidation::separatePointyQuadEndNodes() // vvvvvvvvvvvvvvvvvvvvv // -#if 0 -static void export_graph_to_svg(const std::string &path, const SkeletalTrapezoidationGraph &graph, const Polygons &polys) -{ - const std::vector colors = {"blue", "cyan", "red", "orange", "magenta", "pink", "purple", "green", "yellow"}; - coordf_t stroke_width = scale_(0.05); - BoundingBox bbox; - for (const auto &node : graph.nodes) - bbox.merge(node.p); - - bbox.offset(scale_(1.)); - ::Slic3r::SVG svg(path.c_str(), bbox); - for (const auto &line : to_lines(polys)) - svg.draw(line, "red", stroke_width); - - for (const auto &edge : graph.edges) - svg.draw(Line(edge.from->p, edge.to->p), "cyan", scale_(0.01)); -} -#endif - void SkeletalTrapezoidation::generateToolpaths(std::vector &generated_toolpaths, bool filter_outermost_central_edges) { +#ifdef ARACHNE_DEBUG + static int iRun = 0; +#endif + p_generated_toolpaths = &generated_toolpaths; updateIsCentral(); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-updateIsCentral-final-%d.svg", iRun), this->graph, this->outline); +#endif + filterCentral(central_filter_dist); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-filterCentral-final-%d.svg", iRun), this->graph, this->outline); +#endif + if (filter_outermost_central_edges) filterOuterCentral(); updateBeadCount(); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-updateBeadCount-final-%d.svg", iRun), this->graph, this->outline); +#endif + filterNoncentralRegions(); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-filterNoncentralRegions-final-%d.svg", iRun), this->graph, this->outline); +#endif + generateTransitioningRibs(); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateTransitioningRibs-final-%d.svg", iRun), this->graph, this->outline); +#endif + generateExtraRibs(); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateExtraRibs-final-%d.svg", iRun), this->graph, this->outline); +#endif + generateSegments(); + +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateSegments-final-%d.svg", iRun), this->graph, this->outline); +#endif + +#ifdef ARACHNE_DEBUG + ++iRun; +#endif } void SkeletalTrapezoidation::updateIsCentral() @@ -944,11 +1028,24 @@ void SkeletalTrapezoidation::generateTransitioningRibs() filterTransitionMids(); +#ifdef ARACHNE_DEBUG + static int iRun = 0; + export_graph_to_svg(debug_out_path("ST-generateTransitioningRibs-mids-%d.svg", iRun++), this->graph, this->outline); +#endif + ptr_vector_t> edge_transition_ends; // We only map the half edge in the upward direction. mapped items are not sorted generateAllTransitionEnds(edge_transition_ends); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateTransitioningRibs-ends-%d.svg", iRun++), this->graph, this->outline); +#endif + applyTransitions(edge_transition_ends); // Note that the shared pointer lists will be out of scope and thus destroyed here, since the remaining refs are weak_ptr. + +#ifdef ARACHNE_DEBUG + ++iRun; +#endif } @@ -1668,17 +1765,38 @@ void SkeletalTrapezoidation::generateSegments() } } } - + +#ifdef ARACHNE_DEBUG + static int iRun = 0; + export_graph_to_svg(debug_out_path("ST-generateSegments-before-propagation-%d.svg", iRun), this->graph, this->outline); +#endif + propagateBeadingsUpward(upward_quad_mids, node_beadings); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateSegments-upward-propagation-%d.svg", iRun), this->graph, this->outline); +#endif + propagateBeadingsDownward(upward_quad_mids, node_beadings); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateSegments-downward-propagation-%d.svg", iRun), this->graph, this->outline); +#endif + ptr_vector_t edge_junctions; // junctions ordered high R to low R generateJunctions(node_beadings, edge_junctions); +#ifdef ARACHNE_DEBUG + export_graph_to_svg(debug_out_path("ST-generateSegments-junctions-%d.svg", iRun), this->graph, this->outline, edge_junctions); +#endif + connectJunctions(edge_junctions); - + generateLocalMaximaSingleBeads(); + +#ifdef ARACHNE_DEBUG + ++iRun; +#endif } SkeletalTrapezoidation::edge_t* SkeletalTrapezoidation::getQuadMaxRedgeTo(edge_t* quad_start_edge) diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp index 83065cf87..819b71367 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.hpp @@ -20,6 +20,9 @@ #include "SkeletalTrapezoidationGraph.hpp" #include "../Geometry/Voronoi.hpp" +//#define ARACHNE_DEBUG +//#define ARACHNE_DEBUG_VORONOI + namespace Slic3r::Arachne { @@ -123,6 +126,10 @@ public: */ void generateToolpaths(std::vector &generated_toolpaths, bool filter_outermost_central_edges = false); +#ifdef ARACHNE_DEBUG + Polygons outline; +#endif + protected: /*! * Auxiliary for referencing one transition along an edge which may contain multiple transitions diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index dafa850cd..830d48571 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -12,6 +12,13 @@ #include #include +//#define ARACHNE_DEBUG + +#ifdef ARACHNE_DEBUG +#include "SVG.hpp" +#include "Utils.hpp" +#endif + namespace Slic3r { ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_polyline, ExtrusionRole role, const Flow &flow, const float tolerance, const float merge_tolerance) @@ -537,6 +544,27 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator &p return extrusion_coll; } +#ifdef ARACHNE_DEBUG +static void export_perimeters_to_svg(const std::string &path, const Polygons &contours, const std::vector &perimeters, const ExPolygons &infill_area) +{ + coordf_t stroke_width = scale_(0.03); + BoundingBox bbox = get_extents(contours); + bbox.offset(scale_(1.)); + ::Slic3r::SVG svg(path.c_str(), bbox); + + svg.draw(infill_area, "cyan"); + + for (const Arachne::VariableWidthLines &perimeter : perimeters) + for (const Arachne::ExtrusionLine &extrusion_line : perimeter) { + ThickPolyline thick_polyline = to_thick_polyline(extrusion_line); + svg.draw({thick_polyline}, "green", "blue", stroke_width); + } + + for (const Line &line : to_lines(contours)) + svg.draw(line, "red", stroke_width); +} +#endif + // Thanks, Cura developers, for implementing an algorithm for generating perimeters with variable width (Arachne) that is based on the paper // "A framework for adaptive width control of dense contour-parallel toolpaths in fused deposition modeling" void PerimeterGenerator::process_arachne() @@ -578,6 +606,13 @@ void PerimeterGenerator::process_arachne() std::vector perimeters = wallToolPaths.getToolPaths(); loop_number = int(perimeters.size()) - 1; +#ifdef ARACHNE_DEBUG + { + static int iRun = 0; + export_perimeters_to_svg(debug_out_path("arachne-perimeters-%d-%d.svg", layer_id, iRun++), to_polygons(last), perimeters, union_ex(wallToolPaths.getInnerContour())); + } +#endif + // All closed ExtrusionLine should have the same the first and the last point. // But in rare cases, Arachne produce ExtrusionLine marked as closed but without // equal the first and the last point. diff --git a/src/libslic3r/SVG.cpp b/src/libslic3r/SVG.cpp index 4928d5433..d68301e74 100644 --- a/src/libslic3r/SVG.cpp +++ b/src/libslic3r/SVG.cpp @@ -287,9 +287,10 @@ void SVG::draw_text(const Point &pt, const char *text, const char *color, const void SVG::draw_legend(const Point &pt, const char *text, const char *color, const coordf_t font_size) { fprintf(this->f, - R"()", + R"()", to_svg_x(float(pt.x() - origin.x())), to_svg_y(float(pt.y() - origin.y())), + font_size, color); fprintf(this->f, R"(%s)", From f60b88ba3edd40144ae8c7f564394ce191f1f467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 11 Aug 2022 16:21:57 +0200 Subject: [PATCH 117/131] Fix of #8597 - Assert on Windows about decrementing of std::vector::begin() in a specific case. --- src/libslic3r/Arachne/WallToolPaths.cpp | 54 +++++++++---------------- tests/libslic3r/test_arachne.cpp | 35 ++++++++++++++++ 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index 3552f6680..8399ae06e 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -329,60 +329,46 @@ void removeSmallAreas(Polygons &thiss, const double min_area_size, const bool re }; auto new_end = thiss.end(); - if(remove_holes) - { - for(auto it = thiss.begin(); it < new_end; it++) - { - // All polygons smaller than target are removed by replacing them with a polygon from the back of the vector - if(fabs(ClipperLib::Area(to_path(*it))) < min_area_size) - { - new_end--; + if (remove_holes) { + for (auto it = thiss.begin(); it < new_end;) { + // All polygons smaller than target are removed by replacing them with a polygon from the back of the vector. + if (fabs(ClipperLib::Area(to_path(*it))) < min_area_size) { + --new_end; *it = std::move(*new_end); - it--; // wind back the iterator such that the polygon just swaped in is checked next + continue; // Don't increment the iterator such that the polygon just swapped in is checked next. } + ++it; } - } - else - { + } else { // For each polygon, computes the signed area, move small outlines at the end of the vector and keep pointer on small holes std::vector small_holes; - for(auto it = thiss.begin(); it < new_end; it++) { - double area = ClipperLib::Area(to_path(*it)); - if (fabs(area) < min_area_size) - { - if(area >= 0) - { - new_end--; - if(it < new_end) { + for (auto it = thiss.begin(); it < new_end;) { + if (double area = ClipperLib::Area(to_path(*it)); fabs(area) < min_area_size) { + if (area >= 0) { + --new_end; + if (it < new_end) { std::swap(*new_end, *it); - it--; - } - else - { // Don't self-swap the last Path + continue; + } else { // Don't self-swap the last Path break; } - } - else - { + } else { small_holes.push_back(*it); } } + ++it; } // Removes small holes that have their first point inside one of the removed outlines // Iterating in reverse ensures that unprocessed small holes won't be moved const auto removed_outlines_start = new_end; - for(auto hole_it = small_holes.rbegin(); hole_it < small_holes.rend(); hole_it++) - { - for(auto outline_it = removed_outlines_start; outline_it < thiss.end() ; outline_it++) - { - if(Polygon(*outline_it).contains(*hole_it->begin())) { + for (auto hole_it = small_holes.rbegin(); hole_it < small_holes.rend(); hole_it++) + for (auto outline_it = removed_outlines_start; outline_it < thiss.end(); outline_it++) + if (Polygon(*outline_it).contains(*hole_it->begin())) { new_end--; *hole_it = std::move(*new_end); break; } - } - } } thiss.resize(new_end-thiss.begin()); } diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index c309fe6c8..b8af0fdcc 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -388,4 +388,39 @@ TEST_CASE("Arachne - #8633 - Shorter open perimeter", "[ArachneShorterOpenPerime export_perimeters_to_svg(debug_out_path("arachne-shorter-open-perimeter-8633-%d.svg", poly_idx), input_polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); #endif } +} + +// This test case was distilled from GitHub issue #8597. +// There was just an issue with decrementing std::vector::begin() in a specific case. +TEST_CASE("Arachne - #8597 - removeSmallAreas", "[ArachneRemoveSmallAreas8597]") { + const Polygon poly_0 = { + Point(-38768167, -3636556), + Point(-38763631, -3617883), + Point(-38763925, -3617820), + Point(-38990169, -3919539), + Point(-38928506, -3919539), + }; + + const Polygon poly_1 = { + Point(-39521732, -4480560), + Point(-39383333, -4398498), + Point(-39119825, -3925307), + Point(-39165608, -3926212), + Point(-39302205, -3959445), + Point(-39578719, -4537002), + }; + + Polygons polygons = {poly_0, poly_1}; + coord_t spacing = 407079; + coord_t inset_count = 2; + + Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, PrintObjectConfig::defaults(), PrintConfig::defaults()); + wallToolPaths.generate(); + std::vector perimeters = wallToolPaths.getToolPaths(); + +#ifdef ARACHNE_DEBUG_OUT + export_perimeters_to_svg(debug_out_path("arachne-remove-small-areas-8597.svg"), polygons, perimeters, union_ex(wallToolPaths.getInnerContour())); +#endif + + REQUIRE(perimeters.size() == 1); } \ No newline at end of file From 4fa76b2d8b38476559f8b21e46d022b49beed7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Thu, 11 Aug 2022 22:44:05 +0200 Subject: [PATCH 118/131] Reconnected endpoints of closed polyline when PolylineStitcher produced an open polyline mark as closed. --- src/libslic3r/Arachne/WallToolPaths.cpp | 8 +++++++ tests/libslic3r/test_arachne.cpp | 31 ++++++++----------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index 8399ae06e..dd2cda271 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -615,6 +615,14 @@ void WallToolPaths::stitchToolPaths(std::vector &toolpaths, { continue; } + + // PolylineStitcher, in some cases, produced closed extrusion (polygons), + // but the endpoints differ by a small distance. So we reconnect them. + // FIXME Lukas H.: Investigate more deeply why it is happening. + if (wall_polygon.junctions.front().p != wall_polygon.junctions.back().p && + (wall_polygon.junctions.back().p - wall_polygon.junctions.front().p).cast().norm() < stitch_distance) { + wall_polygon.junctions.emplace_back(wall_polygon.junctions.front()); + } wall_polygon.is_closed = true; wall_lines.emplace_back(std::move(wall_polygon)); // add stitched polygons to result } diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index b8af0fdcc..a675c8f72 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -33,30 +33,19 @@ static void export_perimeters_to_svg(const std::string &path, const Polygons &co TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { Polygon poly = { - Point(62478540, -7411873), Point(62478540, 9978540), Point(-62478540, 9978540), Point(-62478540, -7411873), Point(-58818049, -7411874), - Point(-58639424, -7393054), Point(-58430204, -7325743), Point(-58317958, -7261069), Point(-58187096, -7150294), Point(-58032997, -6934055), - Point(-57956770, -6723830), Point(-57927922, -6536131), Point(-57948215, -6249353), Point(-58038066, -5971432), Point(-58400146, -5419566), - Point(-58720844, -4711417), Point(-58812247, -4429032), Point(-58945877, -3868129), Point(-58999054, -3458536), Point(-59021495, -3000104), - Point(-58978088, -2345755), Point(-58945641, -2130557), Point(-58719408, -1284462), Point(-58350699, -492550), Point(-57854519, 218384), - Point(-57690839, 403070), Point(-57242241, 834472), Point(-56937894, 1068372), Point(-56522699, 1341801), Point(-56245930, 1488656), - Point(-55633586, 1748152), Point(-54872819, 1945077), Point(-54279560, 2011550), Point(-53999789, 2021482), Point(-53550613, 1995780), - Point(-53127364, 1945077), Point(-52852060, 1886312), Point(-52262142, 1711199), Point(-51479386, 1343079), Point(-50763215, 839141), - Point(-50302640, 384003), Point(-50150730, 224721), Point(-49616021, -551391), Point(-49279548, -1287513), Point(-49210805, -1492871), - Point(-49054178, -2131559), Point(-49004097, -2510916), Point(-48978506, -2999863), Point(-49012690, -3563440), Point(-49054263, -3868963), - Point(-49280289, -4714703), Point(-49649307, -5507428), Point(-49921685, -5909300), Point(-49982145, -6037568), Point(-50058406, -6311890), - Point(-50071436, -6450122), Point(-50045218, -6724784), Point(-50006267, -6852153), Point(-49876677, -7082551), Point(-49687434, -7260679), - Point(-49451449, -7373245), Point(-49184639, -7411873), Point(-13258854, -7411871), Point(-13258853, -7021460), Point(-44501672, -7021460), - Point(-44816622, -6971390), Point(-45100558, -6826592), Point(-45326629, -6600516), Point(-45471725, -6315721), Point(-45521460, -6001689), - Point(-45521460, 3000836), Point(-45509082, 3159381), Point(-45412385, 3459576), Point(-45326445, 3600421), Point(-45221777, 3722975), - Point(-44964550, 3909861), Point(-44815338, 3971666), Point(-44598502, 4016264), Point(58501687, 4021460), Point(58814884, 3971856), - Point(58964551, 3909863), Point(59221777, 3722976), Point(59326668, 3600164), Point(59436707, 3406438), Point(59508907, 3160338), - Point(59521460, 3000842), Point(59521460, -6001688), Point(59471724, -6315713), Point(59326597, -6600557), Point(59100555, -6826595), - Point(58814822, -6971976), Point(58501662, -7021460), Point(27258850, -7021460), Point(27258851, -7411871), Point(59755385, -7411874), + Point(-40000000, 10000000), + Point(-62480000, 10000000), + Point(-62480000, -7410000), + Point(-58430000, -7330000), + Point(-58400000, -5420000), + Point(-58720000, -4710000), + Point(-58940000, -3870000), + Point(-59020000, -3000000), }; Polygons polygons = {poly}; coord_t spacing = 407079; - coord_t inset_count = 8; + coord_t inset_count = 5; Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, PrintObjectConfig::defaults(), PrintConfig::defaults()); wallToolPaths.generate(); @@ -69,7 +58,7 @@ TEST_CASE("Arachne - Closed ExtrusionLine", "[ArachneClosedExtrusionLine]") { for (VariableWidthLines &perimeter : perimeters) for (ExtrusionLine &el : perimeter) if (el.is_closed) { -// REQUIRE(el.junctions.front().p == el.junctions.back().p); + REQUIRE(el.junctions.front().p == el.junctions.back().p); } } From 17e7b182ee13c72980beb6e0f4cf7889b1712b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Fri, 12 Aug 2022 09:17:11 +0200 Subject: [PATCH 119/131] Follow-up to 0161a59a93e326d5e573cffe61b9549a4d925189: Too big epsilon created tiny unconnected extrusions, so epsilon was changed to the smallest value that allows resolving rounding issues after division by two. --- src/libslic3r/Arachne/SkeletalTrapezoidation.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 03677b5db..d78ce06d1 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -2029,10 +2029,10 @@ void SkeletalTrapezoidation::generateJunctions(ptr_vector_t& for (junction_idx = (std::max(size_t(1), beading->toolpath_locations.size()) - 1) / 2; junction_idx < num_junctions; junction_idx--) { coord_t bead_R = beading->toolpath_locations[junction_idx]; - // toolpath_locations computed inside DistributedBeadingStrategy be off by 1 because of rounding errors. + // toolpath_locations computed inside DistributedBeadingStrategy could be off by 1 because of rounding errors. // In GH issue #8472, these roundings errors caused missing the middle extrusion. - // Adding some epsilon should help resolve those cases. - if (bead_R <= start_R + scaled(0.005)) + // Adding small epsilon should help resolve those cases. + if (bead_R <= start_R + 1) { // Junction coinciding with start node is used in this function call break; } From 7ebd0bbb3be9a96a245c172dcae5e9b9458677da Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 11 Aug 2022 15:38:29 +0200 Subject: [PATCH 120/131] Fix for #8668 - Don't set printable state on merge if all parts are unprintable --- src/slic3r/GUI/GUI_ObjectList.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 7d11113ac..d2e154eab 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2148,8 +2148,12 @@ void ObjectList::merge(bool to_multipart_object) const Vec3d mirror = transformation.get_mirror(); const Vec3d rotation = transformation.get_rotation(); - if (object->id() == (*m_objects)[obj_idxs.front()]->id()) + if (object->id() == (*m_objects)[obj_idxs.front()]->id()) { new_object->add_instance(); + new_object->instances[0]->printable = false; + } + new_object->instances[0]->printable |= object->instances[0]->printable; + const Transform3d& volume_offset_correction = transformation.get_matrix(); // merge volumes @@ -2214,6 +2218,9 @@ void ObjectList::merge(bool to_multipart_object) add_object_to_list(m_objects->size() - 1); select_item(m_objects_model->GetItemById(m_objects->size() - 1)); update_selections_on_canvas(); + + // update printable state for new volumes on canvas3D + wxGetApp().plater()->canvas3D()->update_instance_printable_state_for_object(int(model->objects.size()) - 1); } // merge all parts to the one single object // all part's settings will be lost From 522b3f6d984d974c70efa7b6a8a64da38e96f1e5 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 12 Aug 2022 09:53:44 +0200 Subject: [PATCH 121/131] Follow-up 370e8bd752e3f7c97b9804a56dc417dfb362cce8 - Update 3D-scene after splitting of the unprintable object --- src/slic3r/GUI/GUI_ObjectList.cpp | 2 ++ src/slic3r/GUI/Plater.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index d2e154eab..cb93288d1 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2035,6 +2035,8 @@ void ObjectList::split() Expand(parent); changed_object(obj_idx); + // update printable state for new volumes on canvas3D + wxGetApp().plater()->canvas3D()->update_instance_printable_state_for_object(obj_idx); } void ObjectList::merge(bool to_multipart_object) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8961d260a..45884cc9d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3136,6 +3136,8 @@ void Plater::priv::split_object() for (size_t idx : idxs) { get_selection().add_object((unsigned int)idx, false); + // update printable state for new volumes on canvas3D + q->canvas3D()->update_instance_printable_state_for_object(idx); } } } From db7946dbb6d792fdb55505c47ef6b46423ab7fe5 Mon Sep 17 00:00:00 2001 From: "Valter F.C" <6312421+valterfc@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:02:58 -0300 Subject: [PATCH 122/131] pt_BR translation improvements --- resources/localization/pt_BR/PrusaSlicer.mo | Bin 518673 -> 519104 bytes .../localization/pt_BR/PrusaSlicer_pt_BR.po | 24 ++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/resources/localization/pt_BR/PrusaSlicer.mo b/resources/localization/pt_BR/PrusaSlicer.mo index 8aead23b9feb91df06d981e4d847e88b3a57ccbe..06c73e16e7a10cfdeec6c9b5395deb9b3c0e47ed 100644 GIT binary patch delta 98523 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%0Df77eFyQa7~j8> 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 delta 98186 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 U+1uVZZvru6OC@wQ&dr+s5AK8B9RL6T diff --git a/resources/localization/pt_BR/PrusaSlicer_pt_BR.po b/resources/localization/pt_BR/PrusaSlicer_pt_BR.po index bd091d84c..5b57a32fd 100644 --- a/resources/localization/pt_BR/PrusaSlicer_pt_BR.po +++ b/resources/localization/pt_BR/PrusaSlicer_pt_BR.po @@ -5151,7 +5151,7 @@ msgstr "Config importação de ini/amf/3mf/gcode" #: src/slic3r/GUI/KBShortcutsDialog.cpp:85 msgid "Load Config from ini/amf/3mf/gcode and merge" -msgstr "Carregar config. de um. ini/AMF/3mf/Gcode e mesclar" +msgstr "Carregar config. de um. ini/AMF/3mf/gcode e mesclar" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 #: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 @@ -11459,11 +11459,11 @@ msgid "" "PrusaSlicer settings. If you have multiple extruders, the gcode is processed " "in extruder order." msgstr "" -"Este procedimento final é inserido no final do arquivo de saída, antes da " -"extremidade da impressora Gcode (e antes de qualquer troca de ferramenta " -"deste filamento em caso de impressoras multimaterial). Observe que você pode " -"usar variáveis de espaço reservado para todas as config. de PrusaSlicer. Se " -"você tiver várias extrusoras, o Gcode é processado em ordem de extrusora." +"Este procedimento final é inserido no final do arquivo de saída, antes do " +"G-code final da impressora (e antes de qualquer troca de ferramenta deste filamento em caso de " +"impressoras multimateriais). Observe que você pode usar variáveis de espaço reservado para todas as " +"Configurações do PrusaSlicer. Se você tiver várias extrusoras, o G-code será processado " +"em ordem de extrusão." #: src/libslic3r/PrintConfig.cpp:706 msgid "Ensure vertical shell thickness" @@ -12252,7 +12252,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1330 msgid "Verbose G-code" -msgstr "Gcode detalhado" +msgstr "G-code detalhado" #: src/libslic3r/PrintConfig.cpp:1331 msgid "" @@ -13665,7 +13665,7 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" "Este procedimento de início é inserido no começo, depois de qualquer " -"impressora iniciar Gcode (e depois de qualquer troca de ferramenta para este " +"G-code de início da impressora (e depois de qualquer troca de ferramenta para este " "filamento em caso de impressoras de vários materiais). Isso é usado para " "substituir as config. de um filamento específico. Se PrusaSlicer detecta " "M104, M109, M140 ou M190 em seus códigos personalizados, esses comandos não " @@ -13673,8 +13673,8 @@ msgstr "" "personalizar a ordem dos comandos de aquecimento e outras ações " "personalizadas. Observe que você pode usar variáveis de espaço reservado " "para todas as config. de PrusaSlicer, para que você possa colocar um comando " -"\"M109 S [temperatura_primeira_camada]\" onde quiser. Se você tiver várias " -"extrusoras, o Gcode é processado em ordem de extrusora." +"\"M109 S[first_layer_temperature]\" onde quiser. Se você tiver várias " +"extrusoras, o G-code é processado em ordem de extrusora." #: src/libslic3r/PrintConfig.cpp:2450 msgid "Color change G-code" @@ -16032,6 +16032,10 @@ msgid "" "surfaces, save a lot of the filament, and decrease the print time? Read more " "in the documentation." msgstr "" +"Preenchimento de raio\n" +"Você sabia que pode usar o preenchimento de Raio para suportar apenas superfícies " +"de topo, para economizar muito filamento e diminuir o tempo de impressão? Leia mais " +"na documentação." #: resources/data/hints.ini: [hint:Fullscreen mode] msgid "" From 60ad5d38c00795a979e7c06c7d3f3c4fe20260e9 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 12 Aug 2022 13:20:42 +0200 Subject: [PATCH 123/131] Localization: Some phrases are applied. Updated dictionaries for CS, DE, ES, FR, IT and PL --- resources/localization/PrusaSlicer.pot | 1314 ++++++++-------- resources/localization/ca/PrusaSlicer_ca.po | 1314 ++++++++-------- resources/localization/cs/PrusaSlicer.mo | Bin 518910 -> 519418 bytes resources/localization/cs/PrusaSlicer_cs.po | 1281 ++++++++-------- resources/localization/de/PrusaSlicer.mo | Bin 531950 -> 532447 bytes resources/localization/de/PrusaSlicer_de.po | 1294 ++++++++-------- resources/localization/en/PrusaSlicer_en.po | 1314 ++++++++-------- resources/localization/es/PrusaSlicer.mo | Bin 529348 -> 529862 bytes resources/localization/es/PrusaSlicer_es.po | 1285 ++++++++-------- resources/localization/fr/PrusaSlicer.mo | Bin 545223 -> 545758 bytes resources/localization/fr/PrusaSlicer_fr.po | 1277 ++++++++-------- resources/localization/hu/PrusaSlicer_hu.po | 1314 ++++++++-------- resources/localization/it/PrusaSlicer.mo | Bin 522794 -> 523276 bytes resources/localization/it/PrusaSlicer_it.po | 1292 ++++++++-------- .../localization/ko/PrusaSlicer_ko_KR.po | 1314 ++++++++-------- .../localization/ko_KR/PrusaSlicer_ko.po | 1314 ++++++++-------- .../localization/ko_KR/PrusaSlicer_ko_KR.po | 1314 ++++++++-------- resources/localization/nl/PrusaSlicer_nl.po | 1314 ++++++++-------- resources/localization/pl/PrusaSlicer.mo | Bin 510726 -> 511238 bytes resources/localization/pl/PrusaSlicer_pl.po | 1284 ++++++++-------- resources/localization/pt_BR/PrusaSlicer.mo | Bin 519104 -> 515513 bytes .../localization/pt_BR/PrusaSlicer_pt_BR.po | 1333 ++++++++--------- resources/localization/ru/PrusaSlicer.mo | Bin 692930 -> 687952 bytes resources/localization/ru/PrusaSlicer_ru.po | 1331 ++++++++-------- resources/localization/tr/PrusaSlicer_tr.po | 1314 ++++++++-------- resources/localization/uk/PrusaSlicer_uk.po | 1314 ++++++++-------- resources/localization/zh_CN/PrusaSlicer.mo | Bin 452745 -> 449547 bytes .../localization/zh_CN/PrusaSlicer_zh_CN.po | 1322 ++++++++-------- .../localization/zh_TW/PrusaSlicer_zh_TW.po | 1314 ++++++++-------- 29 files changed, 12862 insertions(+), 13291 deletions(-) diff --git a/resources/localization/PrusaSlicer.pot b/resources/localization/PrusaSlicer.pot index 61e786785..d9da31bf3 100644 --- a/resources/localization/PrusaSlicer.pot +++ b/resources/localization/PrusaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,54 +18,54 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, possible-c-format, possible-boost-format msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "" @@ -189,7 +189,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "" @@ -247,19 +247,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "" @@ -292,7 +291,7 @@ msgid "Load shape from STL..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "" @@ -305,7 +304,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "" @@ -504,19 +503,19 @@ msgstr "" msgid "Infill" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "" @@ -625,7 +624,7 @@ msgid "Standard" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "" @@ -865,7 +864,7 @@ msgstr "" msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "" @@ -1157,7 +1156,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "" @@ -1756,7 +1755,7 @@ msgstr "" msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1772,7 +1771,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "" @@ -1782,7 +1781,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "" @@ -1963,8 +1962,8 @@ msgstr "" msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "" @@ -2019,7 +2018,7 @@ msgstr "" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "" @@ -2243,7 +2242,7 @@ msgid "Add..." msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "" @@ -2290,7 +2289,7 @@ msgid "Next Undo action: %1%" msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "" @@ -2330,7 +2329,7 @@ msgid "Selection-Remove from rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "" @@ -2585,7 +2584,7 @@ msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "" @@ -2688,7 +2687,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "" @@ -2705,7 +2704,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "" @@ -2756,7 +2755,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "" @@ -2840,7 +2839,7 @@ msgid "Minimal points distance" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "" @@ -3605,7 +3604,7 @@ msgid "Speed" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3628,52 +3627,51 @@ msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "" @@ -3815,7 +3813,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "" @@ -3876,7 +3874,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "" @@ -4507,11 +4505,11 @@ msgstr "" msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "" @@ -4792,7 +4790,7 @@ msgstr "" msgid "Attention!" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "" @@ -4829,7 +4827,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "" @@ -5172,13 +5170,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "" @@ -5215,7 +5213,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "" @@ -5293,7 +5291,7 @@ msgid "Keyboard shortcuts" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -5301,11 +5299,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "" @@ -5331,13 +5329,13 @@ msgid "Print Settings" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "" @@ -5420,621 +5418,621 @@ msgstr "" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, possible-c-format, possible-boost-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, possible-c-format, possible-boost-format msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, possible-c-format, possible-boost-format msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, possible-boost-format msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, possible-c-format, possible-boost-format msgid "%d presets successfully imported." msgstr "" @@ -6256,8 +6254,8 @@ msgstr "" msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "" @@ -6327,7 +6325,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "" @@ -6475,7 +6473,7 @@ msgid "Select what kind of support do you need" msgstr "" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "" @@ -6573,7 +6571,7 @@ msgid "(including spool)" msgstr "" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "" @@ -7039,10 +7037,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "" @@ -7471,7 +7469,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "" @@ -7483,7 +7481,7 @@ msgstr "" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "" @@ -7780,11 +7778,11 @@ msgstr "" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "" @@ -7893,12 +7891,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "" @@ -8147,7 +8145,7 @@ msgstr "" msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "" @@ -8235,7 +8233,7 @@ msgstr "" msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "" @@ -8243,52 +8241,52 @@ msgstr "" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, possible-c-format, possible-boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8301,82 +8299,82 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8389,20 +8387,20 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8410,64 +8408,64 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8476,105 +8474,105 @@ msgstr "" msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, possible-boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -8582,14 +8580,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8599,7 +8597,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -8607,84 +8605,84 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, possible-boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, possible-boost-format msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8692,23 +8690,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8716,13 +8714,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8730,17 +8728,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -8748,68 +8746,68 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, possible-boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "" @@ -8892,7 +8890,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -8953,49 +8951,49 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9589,26 +9587,26 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, possible-boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10291,8 +10289,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "" @@ -10307,9 +10305,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "" @@ -10495,8 +10492,8 @@ msgstr "" msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -10623,8 +10620,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "" @@ -10690,7 +10688,7 @@ msgid "Extruder Color" msgstr "" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" @@ -10766,7 +10764,7 @@ msgstr "" msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "" @@ -10917,8 +10915,8 @@ msgid "" "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "" @@ -10976,7 +10974,7 @@ msgstr "" msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "" @@ -12463,7 +12461,7 @@ msgid "" "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -12983,33 +12981,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13021,11 +13021,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13034,63 +13034,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13099,462 +13071,462 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -13562,111 +13534,111 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " "be. If theyare closer, they will get merged into one pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -13675,240 +13647,240 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -13916,80 +13888,80 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/ca/PrusaSlicer_ca.po b/resources/localization/ca/PrusaSlicer_ca.po index 643d410af..eedceabc8 100644 --- a/resources/localization/ca/PrusaSlicer_ca.po +++ b/resources/localization/ca/PrusaSlicer_ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2022-03-04 17:01+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -18,16 +18,16 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Porcions del copyright" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Copyright" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,26 +35,26 @@ msgstr "" "Els acords de llicència de tots els programes (biblioteques) següents formen " "part de l'acord de llicència de l'aplicació" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Sobre %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Versió" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "està llicenciat sota el/els" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versió 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -62,7 +62,7 @@ msgstr "" "PrusaSlicer està basat en Slic3r d'Alessandro Ranellucci i la comunitat " "RepRap." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -72,7 +72,7 @@ msgstr "" "Petr Ledvina, Joseph Lenox, I. Sapir, Mike Sheldrake, Vojtech Bubnik i molts " "d'altres." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Copiar Informació de Versió" @@ -217,7 +217,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Mida" @@ -277,19 +277,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -324,7 +323,7 @@ msgid "Load shape from STL..." msgstr "Carregar forma des de l'STL..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Configuració" @@ -337,7 +336,7 @@ msgid "Load..." msgstr "Carregar..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Eliminar" @@ -565,21 +564,21 @@ msgstr "He de canviar al patró de farciment rectilini?" msgid "Infill" msgstr "Farciment" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" "La penetració del capçal no hauria de ser més gran que l'amplada del capçal." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Penetració del capçal invàlida" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "El diàmetre del cap d'agulla ha de ser més petit que el diàmetre del pilar." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Diàmetre del cap d'agulla invàlid" @@ -688,7 +687,7 @@ msgid "Standard" msgstr "Estàndard" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Tots" @@ -963,7 +962,7 @@ msgstr "Trieu un altre fabricant compatible amb %s" msgid "Firmware Type" msgstr "Tipus de Microprogramari(Firmware)" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Microprogramari(Firmware)" @@ -1287,7 +1286,7 @@ msgstr "Realitzar" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Desfer" @@ -1948,7 +1947,7 @@ msgstr "Confirmació" msgid "Cancelling..." msgstr "Cancel·lant..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galeria de Formes" @@ -1964,7 +1963,7 @@ msgstr "Afegir a la base" msgid "Add selected shape(s) to the bed" msgstr "Afegir la(es) forma(es) seleccionada(es) a la base" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Afegir" @@ -1974,7 +1973,7 @@ msgstr "Afegir una o més formes personalitzades" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Esborrar" @@ -2159,8 +2158,8 @@ msgstr "Moviment" msgid "Extrusion" msgstr "Extrusió" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retracció" @@ -2215,7 +2214,7 @@ msgstr "Configuració d'impressio" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -2439,7 +2438,7 @@ msgid "Add..." msgstr "Afegir..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Eliminar tot" @@ -2486,7 +2485,7 @@ msgid "Next Undo action: %1%" msgstr "Següent acció de Desfer: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Refer" @@ -2528,7 +2527,7 @@ msgid "Selection-Remove from rectangle" msgstr "Selecció-Retirar del rectangle" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Retalla" @@ -2791,7 +2790,7 @@ msgid "Quality" msgstr "Qualitat" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Distància de tancament" @@ -2899,7 +2898,7 @@ msgstr "Moure" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Girar" @@ -2916,7 +2915,7 @@ msgstr "Aplicar" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Escala" @@ -2970,7 +2969,7 @@ msgstr "" "La simplificació de moment només es permet quan se selecciona una sola peça" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Error" @@ -3054,7 +3053,7 @@ msgid "Minimal points distance" msgstr "Distància mínima de punts" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Densitat de punts de suport" @@ -3911,7 +3910,7 @@ msgid "Speed" msgstr "Velocitat" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3934,52 +3933,51 @@ msgstr "Faldilla i bassa" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Avançat" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Suports" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Pad" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Buidant l'interior" @@ -4121,7 +4119,7 @@ msgid "Revert conversion from meters" msgstr "Reverteix la conversió des de metres" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Combinar" @@ -4182,7 +4180,7 @@ msgid "Split the selected object into individual parts" msgstr "Dividir l'objecte seleccionat en parts individuals" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Dividir" @@ -4841,11 +4839,11 @@ msgstr "Alçada" msgid "Width" msgstr "Amplada" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Velocitat del ventilador" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatura" @@ -5142,7 +5140,7 @@ msgstr "No pots carregar un projecte SLA amb diverses peces a la base" msgid "Attention!" msgstr "Atenció!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Dreceres de teclat" @@ -5179,7 +5177,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carregar Configuració des de ini/amf/3mf/gcode i combina" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exportar el codi G" @@ -5534,13 +5532,13 @@ msgstr "Establir el número d'extrusor per als elements seleccionats" msgid "Objects List" msgstr "Llista d'objectes" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Obrir un fitxer de codi G" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Carregar la base des del disc" @@ -5577,7 +5575,7 @@ msgid "Show/Hide G-code window" msgstr "Mostrar/Ocultar finestra de codi G" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Previsualització" @@ -5661,7 +5659,7 @@ msgid "Keyboard shortcuts" msgstr "Dreceres de teclat" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Obrir instància nova de PrusaSlicer" @@ -5669,11 +5667,11 @@ msgstr "Obrir instància nova de PrusaSlicer" msgid "G-code preview" msgstr "Previsualització codi G" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Obrir visor codi G" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Obrir PrusaSlicer" @@ -5699,13 +5697,13 @@ msgid "Print Settings" msgstr "Configuració d'Impressió" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Configuració del Material" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Configuració del Filament" @@ -5788,7 +5786,7 @@ msgstr "Mostrar Sobre" msgid "Show Tip of the Day" msgstr "Mostra Consell del dia" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -5796,94 +5794,94 @@ msgstr "" "Obre la notificació del Consell del dia a la part inferior dreta o mostra un " "altre consell si ja està obert." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar la llista de les dreceres de teclat" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Vista Iso" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Superior" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Vista superior" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Inferior" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Vista inferior" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Frontal" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vista frontal" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Al darrere" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Vista del darrere" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Esquerra" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Vista esquerra" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Dreta" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Vista dreta" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nou projecte" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Començar un nou projecte" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Obrir Projecte" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Obrir un fitxer de projecte" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Projectes recents" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5891,511 +5889,511 @@ msgstr "" "El projecte seleccionat no està disponible.\n" "Voleu suprimir-lo de la llista de projectes recents?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Desar Projecte" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Desar el projecte actual com" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Desar Projecte &com" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Desar fitxer de projecte actual com" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importar STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Carregar un model" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importar STL (unitats imperials)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Carregar un model guardat en unitats imperials" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importar fitxer SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Carregar un fitxer SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importar &Configuració" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Carregar fitxer de configuració exportat" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importar Configuració des d'un &Projecte" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Carregar configuració des del fitxer de projecte" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importar &Conjunt de Configuració" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Carregar ajustaments d'un paquet" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importar" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exportar el codi &G" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exportar plataforma actual com a codi G" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "&Enviar codi G" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Enviar per imprimir la plataforma actual com a codi G" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exportar G-code a la targeta SD/disc USB" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporta a G-code a la targeta SD / disc USB" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exportar plataforma com a &ST" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exportar plataforma actual com a STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exportar plataforma com a STL &incloent suports" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exportar la plataforma actual com a STL incloent suports" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exportar &trajectòries d'eines com OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exportar trajectòries d'eines com a OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exportar &Configuració" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exportar la configuració actual al fitxer" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exportar Conjunt d'&Ajustos" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exportar todos los ajustes al archivo" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exportar Paquet de Configuració Amb Impressores Físiques" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Exportar tots els paràmetres preestablerts, incloses les impressores " "físiques, a l'arxiu" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Expulsar targeta &SD / disc USB" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Expulsar la targeta SD / disc USB després que s'hi hagi exportat codi G." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Laminat ràpid" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Laminar un fitxer en un codi G" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Laminat ràpid i Desa Com" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Laminar un fitxer en un codi G, guardar com" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Repetir el darrer laminat Ràpid" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Repetir el darrer laminat ràpid" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Laminar &Ara" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Començar un nou procés de laminat" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Reparar fitxer STL" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Repara automàticament un fitxer STL" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Previsualització codi &G" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&Sortir" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Tanca %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "&Seleccionar-ho tot" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Selecciona tots els objectes" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "&Deseleccionar-ho tot" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Desmarca tots els objectes" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Eliminar Selecció" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Suprimeix la selecció actual" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Eliminar &tot" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Suprimeix tots els objectes" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Desfer" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Refer" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Copia" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Copia la selecció al porta-retalls" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&Enganxa" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Enganxa el porta-retalls" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "&Recarregar des del disc" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "&Cercar" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Cerca a la configuració" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Pestanya Base d'impressió" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Mostrar la base" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Configuració d'&Impressió" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Mostra la configuració d'impressió" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Pestanya Configuració &Filament" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Mostra la configuració del filament" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Pestanya Configuració &Impressora" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Mostra la configuració de la impressora" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "&3D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Mostra la visualització d'edició 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "&Previsualització" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Mostra la vista 3D preliminar del laminat" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Obre el diàleg per modificar la galeria de formes" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Cua de pujada al &host d'impressió" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Mostra la finestra de la cua de càrrega de l'amfitrió" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Obre una instància nova" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Compara els predefinits" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Compara els predefinits" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Mostra les &etiquetes" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Mostra les etiquetes d'objecte/instància a l'escena 3D" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Barra lateral ocultable (&C)" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Amagar barra lateral" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Pantalla completa" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Pantalla completa" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Arxiu" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Finestra" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Ajuda" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Obrir codi G" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Obre &PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "&Enviar per imprimir" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Pestanya Configuració del &material" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Trieu un fitxer per laminar (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Cap fitxer prèviament laminat." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Arxiu anterior laminat (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") no trobat." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Arxiu no trobat" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Desa %s fitxer com a:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "Codi G" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Desa el fitxer zip com a:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Laminant" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Processant %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% ha estat laminat amb èxit." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Laminat realitzat!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Seleccioneu el fitxer STL que voleu reparar:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Desar fitxer OBJ (menys propens a errors de coordinació que STL) com:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "S'ha reparat el fitxer." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Reparar" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Desa la configuració com a:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "S'està carregant un fitxer de configuració" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Seleccioneu la configuració que voleu carregar:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "S'està exportant el paquet de configuració" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -6403,15 +6401,15 @@ msgstr "" "Alguns paràmetres estan modificats i els canvis no desats no s'exportaran al " "paquet de configuració." -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Desa el paquet predefinit com a:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Carregant un paquet de configuració" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d paràmetres inicials importats amb èxit." @@ -6638,8 +6636,8 @@ msgstr "Instàncies" msgid "Instance %d" msgstr "Instància %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Capes" @@ -6718,7 +6716,7 @@ msgstr "Nom descriptiu de la impressora" msgid "Add preset for this printer device" msgstr "Afegir ajustament preestablert per a aquest dispositiu d'impressió" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Cua de pujada al host d'impressió" @@ -6882,7 +6880,7 @@ msgid "Select what kind of support do you need" msgstr "Selecciona quin tipus de suport necessites" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Suport a la base només" @@ -6982,7 +6980,7 @@ msgid "(including spool)" msgstr "(inclosa la bobina)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Cost" @@ -7503,10 +7501,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Enganxa des del porta-retalls" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "General" @@ -8025,7 +8023,7 @@ msgid "Add/Remove presets" msgstr "Afegeix o suprimeix els predefinits" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Afegeix una impressora física" @@ -8037,7 +8035,7 @@ msgstr "Edita el predefinit" msgid "Change extruder color" msgstr "Canvia el color de l'extrusora" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Edita la impressora física" @@ -8356,11 +8354,11 @@ msgstr "NO EMPENAR EN ABSOLUT" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8477,12 +8475,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Simplement canvieu a la configuració predeterminada \"%1%\"" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Silenciós" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -8754,7 +8752,7 @@ msgstr "nom complet del perfil" msgid "symbolic profile name" msgstr "nom simbòlic del perfil" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Capes i Perímetres" @@ -8842,7 +8840,7 @@ msgstr "Superposició" msgid "Flow" msgstr "Fluxe" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Altre" @@ -8850,53 +8848,53 @@ msgstr "Altre" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Opcions de sortida" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Impressió seqüencial" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Separació de l'extrusor" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Fitxer de sortida" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Scripts de postprocessament" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notes" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Dependències" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Dependències del perfil" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Els scripts de postprocessament modificaran el fitxer de codi G al seu lloc." -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8917,82 +8915,82 @@ msgstr[1] "" "del codi G i\n" "l'estimació del temps d'impressió." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Trobades paraules clau reservades a" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Anul·lacions de filaments" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Broquet( nozzle )" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Llit" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Refredament" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Activar" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Configuració del ventilador" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Llindars de refrigeració" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Propietats del filament" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Substitució de velocitat d'impressió" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Paràmetres de la torre de neteja" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Paràmetres del canvi d'eina per a impressores d'un únic extrusor MM" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Configuració d'empenyiment" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Codi G personalitzat" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Codi G inicial" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "Codi G final" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Els consells de flux volumètric no estan disponibles" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -9014,20 +9012,20 @@ msgstr "" "\"engranatge\" a la pestanya Configuració d'impressora. Els perfils de la " "impressora física s'emmagatzemen al directori PrusaSlicer/physical_printer." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Mida i coordenades" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Capacitats" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Nombre d'extrusores de la impressora." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -9039,64 +9037,64 @@ msgstr "" "Voleu canviar el diàmetre de tots els extrusors al valor del diàmetre del " "nozzle del primer extrusor?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Diàmetre del broquet(nozzle)" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "Codi G per abans d'un canvi de capa" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "Codi G per després d'un canvi de capa" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "Codi G de canvi d'eina" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "Codi G per a entre objectes (per a impressió seqüencial)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "Codi G Canvi Color" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "Codi G per a Pausa d'Impressió" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Plantilla Codi G Personalitzat" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Pantalla" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Inclinació" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Temps d'inclinació" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Correccions" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Exposició" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -9105,39 +9103,39 @@ msgstr "Exposició" msgid "Machine limits" msgstr "Límits de la màquina" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Els valors d'aquesta columna són per al mode Normal" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Els valors d'aquesta columna són per al mode Silenciós" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Velocitats d'alimentació màximes" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Acceleracions màximes" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Límits de jerk" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Velocitats d'alimentació mínimes" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Ajust per a MM amb un sol extrusor" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Paràmetres multimaterial per a un sol extrusor" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -9145,19 +9143,19 @@ msgstr "" "Aquesta és una impressora multimaterial d'extrusor únic, els diàmetres de " "tots els extrusors s'establiran segons el valor nou. Vols procedir-hi?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Límits d'alçada de la capa" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Posició (per a impressores multi-extrusora)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Només aixecar Z" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -9165,11 +9163,11 @@ msgstr "" "Retracció quan l'eina està desactivada (configuracions avançades per a " "configuracions d'extrusors múltiples)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Reinicialitza el color del filament" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -9178,31 +9176,31 @@ msgstr "" "L'opció Netejar no està disponible quan utilitzeu el mode Retracció de " "firmware. L'inhabilito per habilitar la Retracció de firmware?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Retracció del microprogramari( fimware )" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "S'ha seleccionat una configuració nova de la impressora" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Separat" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "eliminar" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "esborrar" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "És un últim valor per defecte per a aquesta impressora." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -9211,7 +9209,7 @@ msgstr "" "Esteu segur que voleu suprimir la configuració preestablerta \"%1%\" de la " "impressora física \"%2%\"?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -9223,7 +9221,7 @@ msgstr[1] "" "Les impressores físiques que es mostren a continuació es basen en la " "configuració predefinida, la qual s'eliminarà." -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -9234,7 +9232,7 @@ msgstr[1] "" "Tingueu en compte que la configuració predefinida seleccionada també " "s'eliminarà d'aquestes impressores." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -9248,7 +9246,7 @@ msgstr[1] "" "Les impressores físiques que es mostren a continuació es basen únicament en " "la configuració predefinida, la qual s'eliminarà." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -9260,57 +9258,57 @@ msgstr[1] "" "Tingueu en compte que aquestes impressores s'esborraran després d'esborrar " "la configuració predefinida seleccionada." -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Segur que desitges %1% el predefinit seleccionat?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Predefinit" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Ajust" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Cercar" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Substitueix-ho per" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Expressió normal" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "No distingeix minúscules/majúscules" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Paraula sencera" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Coincideix amb una sola línia" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Esteu segur que voleu suprimir totes les substitucions?" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "Els límits de la màquina s'incorporaran al codi G i es faran servir per " "calcular el temps d'impressió." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9320,7 +9318,7 @@ msgstr "" "estimar el temps d'impressió, que per tant pot no ser exacte ja que la " "impressora pot aplicar un conjunt diferent de límits de la màquina." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9328,12 +9326,12 @@ msgstr "" "Els límits de la màquina no estan establerts, per tant, el temps d'impressió " "estimat pot no ser exacte." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "PANY BLOQUEJAT" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9341,12 +9339,12 @@ msgstr "" "indica que els paràmetres són els mateixos que els valors del sistema (o per " "defecte) per al grup d'opcions actual" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "PANY DESBLOQUEJAT" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9358,12 +9356,12 @@ msgstr "" "Feu clic a la icona PANY DESBLOQUEJAT per restablir tots els paràmetres del " "grup d'opcions actuals als valors del sistema (o per defecte)." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "VINYETA BLANCA" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9372,12 +9370,12 @@ msgstr "" "predeterminat),\n" "per al botó dret: indica que la configuració no s'ha modificat." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "FLETXA ENRERE" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9389,7 +9387,7 @@ msgstr "" "Feu clic al símbol FLETXA ENRERE per resetejar tots els paràmetres del grup " "d'opcions actuals als gravats anteriorment." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9397,7 +9395,7 @@ msgstr "" "La icona de PANY BLOQUEJAT indica que els paràmetres són els mateixos que " "els valors del sistema (per defecte) per al grup d'opcions actual" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9410,13 +9408,13 @@ msgstr "" "Feu clic per restablir totes les configuracions per al grup d'opcions " "actuals als valors del sistema (o per defecte)." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "La icona de VINYETA BLANCA indica un predifinit no del sistema (o no per " "defecte)" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9425,7 +9423,7 @@ msgstr "" "els de la darrera vegada que heu salvat els paràmetres per al grup d'opcions " "actual." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9436,7 +9434,7 @@ msgstr "" "són iguals als que es van desar per al grup d'opcions actual.\n" "Feu clic per tornar aquests valors als darrers desats." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -9444,7 +9442,7 @@ msgstr "" "La icona de PANY BLOQUEJAT indica que el valor és el mateix que el del " "sistema (per defecte)" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9454,7 +9452,7 @@ msgstr "" "configuracions i no són iguals als valors del sistema (o predeterminats).\n" "Feu clic per reiniciar el valor actual als del sistema (o predeterminats)" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9462,7 +9460,7 @@ msgstr "" "El símbol de VINYETA BLANCA indica que els valors són els mateixos que els " "dels paràmetres desats la darrera vegada." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9472,31 +9470,31 @@ msgstr "" "desat la darrera vegada.\n" "Feu clic per restaurar el valor al darrer paràmetre desat." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Perfil d'impressió de material" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Cap del suport" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Pilar de suport" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Connexió de les varetes de suport i unions" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Generació automàtica" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9505,11 +9503,11 @@ msgstr "" "\"%1%\" està desactivat perquè \"%2%\" és a la categoria \"%3%\".\n" "Per activar \"%1%\", si us plau desactiva \"%2%\"" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Elevació de l'objecte" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Pad al voltant de l'objecte" @@ -9602,7 +9600,7 @@ msgstr "" "per a què pregunti sobre els canvis no guardats novament." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9672,39 +9670,39 @@ msgstr "" "els canvis següents:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Comptador d'extrusors" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Seleccioneu els predefinits per comparar" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Mostra tots els predefinits (inclosos els incompatibles)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Valor predefinit esquerre" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Valor predefinit dret" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "No s'ha trobat un dels predefinits" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Els predefinits comparats tenen una tecnologia d'impressora diferent" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Els predefinits són els mateixos" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9713,11 +9711,11 @@ msgstr "" "Feu clic en aquest botó per seleccionar el mateix predefinit per al " "predefinit dret i esquerre." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Categoria sense definir" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Grup sense definir" @@ -10398,7 +10396,7 @@ msgstr "" "No es pot calcular l'amplada d'extrusió per a %1%: Variable \"%2%\" no " "accessible." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -10407,7 +10405,7 @@ msgstr "" "El fitxer 3mf seleccionat s'ha desat amb una versió més recent de %1% i no " "és compatible." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -10415,7 +10413,7 @@ msgstr "" "El 3MF seleccionat conté L'objecte pintat amb una versió més recent del " "PrusaSlicer i no és compatible." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -10423,7 +10421,7 @@ msgstr "" "El 3MF seleccionat conté un objecte pintat amb costura utilitzant una versió " "més recent del PrusaSlicer i no és compatible." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -11238,8 +11236,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -11256,9 +11254,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11481,8 +11478,8 @@ msgstr "" msgid "Default print profile" msgstr "Perfil d'impressió per defecte" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11637,8 +11634,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm o %" @@ -11725,7 +11723,7 @@ msgid "Extruder Color" msgstr "Color de l'extrusor" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Això només s'utilitza a la interfície Slic3r com a ajuda visual." @@ -11823,7 +11821,7 @@ msgstr "" msgid "approximate seconds" msgstr "segons aproximats" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Color" @@ -12010,8 +12008,8 @@ msgstr "" "tant, utilitzeu un calibre i realitzeu múltiples mesuraments al llarg del " "filament, després calculeu la mitjana." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Densitat" @@ -12081,7 +12079,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Desconegut)" @@ -13888,7 +13886,7 @@ msgstr "" "Utilitzeu aquesta opció per girar el patró de material de suport en el pla " "horitzontal." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14536,33 +14534,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14574,11 +14574,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14587,63 +14587,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14652,63 +14624,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Amplada de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Amplada de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Alçada de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Alçada de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Nombre de píxels a" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Nombre de píxels en X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Nombre de píxels en Y" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Mirall horitzontal de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Reflectir horitzontalment" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Activar mirall horitzontal de sortida d'imatges" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Mirall vertical de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Reflectir verticalment" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Activar mirall vertical de sortida d'imatges" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientació de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14718,55 +14690,55 @@ msgstr "" "mode retrat canviarà el significat dels paràmetres d'ample i alt de la " "pantalla i les imatges de sortida giraran 90 graus." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Paisatge" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Retrat" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Ràpida" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Inclinació ràpida" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Tiempo de la inclinación rápida" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lenta" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Inclinació lenta" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Temps de la inclinació lenta" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Àrea de farciment" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14777,40 +14749,40 @@ msgstr "" "llavors s'utilitzarà una inclinació lenta, en cas contrari - una inclinació " "ràpida" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Correcció d'escala de la impressora" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Correcció d'escalat de la impressora a l'eix X" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Correcció de l'eix X d'escalat de la impressora" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Correcció d'escalat de la impressora a l'eix Y" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Correcció de l'eix X d'escalat de la impressora" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Correcció d'escalat de la impressora a l'eix Z" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Correcció de l'eix X d'escalat de la impressora" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Correcció absoluta de la impressora" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14818,22 +14790,22 @@ msgstr "" "Augmentarà o reduirà el nombre de polígons 2D laminats d'acord amb el signe " "de la correcció." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Amplada mínima del peu d'elefant" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Amplada mínima de les característiques a mantenir quan es fa una compensació " "del peu d'elefant." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Correcció gamma de la impressora" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14843,43 +14815,43 @@ msgstr "" "gamma de zero significa que el llindar es troba al mig. Aquest comportament " "elimina l'antialiasing sense perdre forats als polígons." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Tipus de material SLA" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Alçada de la capa inicial" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Volum de l'ampolla" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Pes de l'ampolla" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "diners/ampolla" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Capes esvaïdes" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14887,106 +14859,106 @@ msgstr "" "El nombre de capes necessàries per al temps d'exposició s'esvaeix des del " "temps d'exposició inicial fins al temps d'exposició" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Temps mínim d'exposició" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Temps màxim d'exposició" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Temps d'exposició" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Temps mínim d'exposició inicial" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Temps màxim d'exposició inicial" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Temps d'exposició inicial" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Correcció per a l'expansió" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Correcció per a l'expansió en l'eix X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Correcció per a l'expansió en l'eix Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Correcció per a l'expansió en l'eix Z" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Notes de material d'impressió de l'SLA" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Podeu posar les vostres notes sobre el material d'impressió de l'SLA aquí." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Perfil de material de l'SLA per defecte" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Generar suports" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Generar suports per als models" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diàmetre frontal del cap" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diàmetre de la part en punta del cap" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Penetració del cap" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quant ha de penetrar el cap del pin a la superfície del model" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Amplada del cap" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Amplada des del centre de l'esfera posterior fins al centre de l'esfera " "frontal" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Diàmetre del pilar" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diàmetre en mm dels pilars de suport" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Percentatge de diàmetre de pilar petit" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14994,11 +14966,11 @@ msgstr "" "El percentatge de pilars més petits en comparació del diàmetre de pilar " "normal que s'utilitzen en àrees problemàtiques on no hi ha cap pilar normal." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Ponts màxims en un pilar" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -15006,11 +14978,11 @@ msgstr "" "Nombre màxim de ponts que es poden col·locar sobre un pilar. Els ponts " "mantenen els punts de suport i es connecten als pilars com branques petites." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Mode de connexió del pilar" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -15020,23 +14992,23 @@ msgstr "" "(doble ziga-zaga) o dinàmica que canviarà automàticament entre els dos " "primers en funció de la distància dels dos pilars." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Ziga-Zaga" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Creu" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinàmic" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Factor d'eixamplament del pilar" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -15044,27 +15016,27 @@ msgstr "" "La fusió de ponts o pilars a altres pilars pot augmentar el radi. Zero vol " "dir que no hi ha augment, un significa augment total." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Diàmetre de la base de suport" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diàmetre en mm de la base del pilar" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Alçada de la base de suport" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "L'alçada del con de la base d'un pilar" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Distància de seguretat de la base de suports" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -15074,27 +15046,27 @@ msgstr "" "mode de zero elevació on hi ha un buit d'acord quan aquest paràmetre " "s'introdueix entre el model i el pad." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Angle crític" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "L'angle per defecte per connectar pals de suport i unions." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Longitud màxima del pont" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "La longitud màxima d'un pont" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Distància màxima d'enllaç del pilar" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -15102,7 +15074,7 @@ msgstr "" "La distància màxima entre dos pilars perquè s'uneixin entre si. Un valor " "zero prohibirà l'encadenament de pilars." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -15110,39 +15082,39 @@ msgstr "" "Quant els suports haurien d'aixecar l'objecte suportat. Si \"Pad al voltant " "de l'objecte\" està activat, aquest valor serà ignorat." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Aquesta és una mesura relativa de la densitat de punts de suport." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Distància mínima dels punts de suport" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "No es col·locaran punts de suport més a prop d'aquest llindar." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Utilitza el pad" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Afegeix un pad sota el model compatible" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Gruix de la paret del pad" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "El gruix dels pads i les parets de cavitat opcionals." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Alçada de la paret del pad" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -15154,19 +15126,19 @@ msgstr "" "algunes resines poden produir un efecte de succió extrem dins de la cavitat, " "cosa que dificulta l'enlairament de la impressió de la làmina de la cuba." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Grandària de la vora del pad" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Fins on cal estendre el pad al voltant de la geometria continguda" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Distància màxima de combinació" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -15177,11 +15149,11 @@ msgstr "" "centre de dos pads més petits. Si són més a prop, es fusionaran en un sol " "pad." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Pendent de paret del pad" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -15189,23 +15161,23 @@ msgstr "" "El pendent de la paret del pad en relació amb el pla del llit. 90 graus " "significa parets rectes." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Crea un pad al voltant de l'objecte i ignora l'elevació de suport" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Pad al voltant de l'objecte a tot arreu" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Força el pad al voltant de l'objecte a tot arreu" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Espai del pad amb l'objecte" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -15213,54 +15185,54 @@ msgstr "" "L'espai entre la part de sota l'objecte i el pad generat en mode de zero " "elevació." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Pas del connector de l'objecte al Pad" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "Distància entre dos palets de suport entre la peça i la base generada." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Amplada del connector del pad amb l'objecte" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Ample dels palets de suport que connecten la peça i la base generada." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Penetració del connector de l'objecte al Pad" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Com haurien de penetrar els connectors petits al model del cos." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Habilitar buidatge" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Buidar un model per tenir un interior buit" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Gruix de la paret" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Gruix mínim de paret d'un model buit." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Precisió" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -15268,7 +15240,7 @@ msgstr "" "Rendiment vs precisió de càlcul. Els valors més baixos poden produir " "artefactes no desitjats." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -15282,11 +15254,11 @@ msgstr "" "de tancament més gran fa que interior sigui més arrodonit. Si és zero, " "l'interior sembla molt a l'exterior." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Velocitat d'impressió" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -15296,63 +15268,63 @@ msgstr "" "amb més viscositat o amb algunes peces buides. Alenteix el moviment " "d'inclinació i afegeix un retard abans de l'exposició." -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exporta OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exporta el/s model/s com a OBJ." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exporta SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Laminar el model i exportar les capes d'impressió d'SLA com a PNG." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exporta 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exporta el/s model/s com a 3MF." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exporta AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exporta el/s model/s com a AMF." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exporta STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exporta el/s model/s com a STL." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Laminar el model i exportar les trajectòries com a codi G." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Visualitzador de codi G" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualitzar un codi G ja laminat i desat" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Laminar" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -15360,73 +15332,73 @@ msgstr "" "Laminar el model com FFF o SLA basat en el valor de configuració de " "printer_technology." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Ajuda" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Mostra aquesta ajuda." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Ajuda (opcions FFF)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "Mostra la llista completa d'opcions de configuració d'impressió/G-code." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Ajuda (opcions de l'SLA)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Mostra la llista completa d'opcions de configuració d'impressió de l'SLA." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Informació del model de sortida" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Escriure informació sobre el model a la consola." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Desa el fitxer de configuració" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Desa la configuració al fitxer especificat." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Alinear xy" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Alinear el model amb el punt donat." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Tallar model a una Z donada." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centre" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centrar la impressió al voltant del centre donat." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "No organitzar" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -15434,11 +15406,11 @@ msgstr "" "No reordeneu els models donats abans de fusionar-los i mantingueu les " "coordenades XY originals." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Assegurar a la base" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -15446,23 +15418,23 @@ msgstr "" "Eleva l'objecte per sobre del llit quan està parcialment a sota. Activat per " "defecte, utilitza --no-ensure-on-bed per desactivar-lo." -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Multiplica les còpies per aquest factor." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplicar per quadrícula" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Multiplica les còpies creant una quadrícula." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -15470,7 +15442,7 @@ msgstr "" "Organitzar els models subministrats en una base i combinar-los en un sol " "model per fer accions una vegada." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -15479,31 +15451,31 @@ msgstr "" "implícitament cada vegada que necessitem laminar el model per fer l'acció " "sol·licitada)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Angle de rotació al voltant de l'eix Z en graus." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Rotar al voltant de l'eix X" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Angle de rotació al voltant de l'eix X en graus." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Rotar al voltant de l'eix Y" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotació al voltant de l'eix Y en graus." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Factor d'escalat o percentatge." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15511,23 +15483,23 @@ msgstr "" "Detecta parts no connectades en els models indicats i els divideix en " "objectes separats." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Escalar per Adaptar-se" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Escala per ajustar-se al volum donat." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignora els fitxers de configuració inexistents" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "No fallar si el fitxer subministrat per a --load no existeix." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -15535,7 +15507,7 @@ msgstr "" "Regla de compatibilitat en carregar configuracions des de fitxers de " "configuració i fitxers de projecte (3MF, AMF)." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15548,11 +15520,11 @@ msgstr "" "abandonar o substituir un valor desconegut amb un valor per defecte " "silenciosament o verbosament." -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Sortir en cas de valors de configuració desconeguts" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -15560,7 +15532,7 @@ msgstr "" "Permet la lectura de valors de configuració desconeguts substituint-los " "verbosament pels predeterminats." -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -15568,11 +15540,11 @@ msgstr "" "Permet llegir valors de configuració desconeguts substituint-los " "silenciosament pels predeterminats." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Carrega el fitxer de configuració" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15580,11 +15552,11 @@ msgstr "" "Carrega la configuració des del fitxer especificat. Es pot utilitzar més " "d'una vegada per carregar les opcions des de diversos fitxers." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Fitxer de sortida" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15592,11 +15564,11 @@ msgstr "" "El fitxer on s'escriurà la sortida (si no s'especifica, es basarà en el " "fitxer d'entrada)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Mode d'instància única" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15607,11 +15579,11 @@ msgstr "" "una finestra del PrusaSlicer existent. Substitueix el valor de configuració " "\"single_instance\" de les preferències de l'aplicació." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Directori de dades" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15621,11 +15593,11 @@ msgstr "" "mantenir diferents perfils o incloure configuracions des d'un emmagatzematge " "de xarxa." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Nivell de registre" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15635,11 +15607,11 @@ msgstr "" "depuració, 5:traça\n" "Per exemple. loglevel=2 registrarà missatges de fallada, error i perill." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Renderitzar amb un programari renderitzador" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/cs/PrusaSlicer.mo b/resources/localization/cs/PrusaSlicer.mo index 256f2244ff88cf8aa82b8d4abf7023db49426a4e..f6a80823aff567cc5c740d138e4e2789e93296bb 100644 GIT binary patch delta 70730 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 lJ(6*95l2{2$R&5W@ff diff --git a/resources/localization/cs/PrusaSlicer_cs.po b/resources/localization/cs/PrusaSlicer_cs.po index 054f72061..44aafff77 100644 --- a/resources/localization/cs/PrusaSlicer_cs.po +++ b/resources/localization/cs/PrusaSlicer_cs.po @@ -9,7 +9,7 @@ msgstr "" "%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -37,9 +37,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -152,7 +151,7 @@ msgstr[2] "%1% (%2$d stěny)" msgstr[3] "%1% (%2$d stěn)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Přednastavení" @@ -171,7 +170,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%2% bylo nahrazeno hodnotou %1%" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% byl úspěšně naslicován." @@ -193,7 +192,7 @@ msgstr "%3.2f mm³/s při rychlosti filamentu %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d perimetry: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d přednastavení úspěšně importováno." @@ -365,7 +364,7 @@ msgstr "" msgid "&About %s" msgstr "&O %su" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "&Sbalit Postranní panel" @@ -377,27 +376,27 @@ msgstr "&Konfigurace" msgid "&Configuration Snapshots" msgstr "Zálohy konfigura&ce" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Kopírovat" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Sma&zat vybrané" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Editovat" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Exportovat" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Panel Nastavení &filamentu" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Soubor" @@ -405,19 +404,19 @@ msgstr "&Soubor" msgid "&Finish" msgstr "&Dokončit" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Fullscreen" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "&G-code Prohlížeč" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Pomoc" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importovat" @@ -425,7 +424,7 @@ msgstr "&Importovat" msgid "&Language" msgstr "&Jazyk" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nový projekt" @@ -433,19 +432,19 @@ msgstr "&Nový projekt" msgid "&Next >" msgstr "&Další>" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Otevřít G-code" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Otevřít projekt" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Vloži&t" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Panel Podložka" @@ -453,35 +452,35 @@ msgstr "&Panel Podložka" msgid "&Preferences" msgstr "Nas&tavení" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Ukonči&t" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Vpřed" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "Op&ravit soubor STL" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Uložit projekt" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Vybrat &Vše" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Zpět" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Zobrazení" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Okno" @@ -490,7 +489,7 @@ msgstr "&Okno" msgid "(All)" msgstr "(Všechny)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "&(Znovu) Slicovat" @@ -502,7 +501,7 @@ msgstr "(Znovu)Slicovat" msgid "(Some lines not shown)" msgstr "(Některé řádky nejsou zobrazeny)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Neznámý)" @@ -514,7 +513,7 @@ msgstr "(včetně cívky)" msgid "(minimum)" msgstr "(minimálně)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") nebyl nalezen." @@ -570,7 +569,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (silné)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -660,7 +659,7 @@ msgstr "" "Obecným pravidlem je 60 °C pro PLA a 110 °C pro ABS. Zadejte nula, pokud " "nemáte vyhřívanou podložku." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -686,7 +685,7 @@ msgstr "API klíč" msgid "Abort" msgstr "Přerušit" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "O %s" @@ -703,7 +702,7 @@ msgstr "Kontrola akcelerací (pokročilé)" msgid "Access violation" msgstr "Porušení přístupu" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Přesnost" @@ -743,7 +742,7 @@ msgstr "" "abyste zkrátili dobu tisku a snížili spotřebu filamentu? Přečtěte si více v " "dokumentaci." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Přidat" @@ -806,7 +805,7 @@ msgstr "Přidání tvaru z galerie" msgid "Add Shapes from Gallery" msgstr "Přidat tvary z galerie" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Pod podepíraný model přidá podložku" @@ -923,7 +922,7 @@ msgid "Add pause print" msgstr "Přidat pozastavení tisku" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Přidat fyzickou tiskárnu" @@ -1022,17 +1021,16 @@ msgstr "Adresa" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Pokročilý" @@ -1067,16 +1065,16 @@ msgstr "" "materiálu vždy vytlačovat do čistící věže, aby se spolehlivě vytvořily " "následné výplně nebo objekty." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-code po změně vrstvy" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Zarovnat XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Zarovnejte model s daným bodem." @@ -1089,7 +1087,7 @@ msgid "Aligned Rectilinear" msgstr "Zarovnaný přímočarý" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Všechny" @@ -1289,7 +1287,7 @@ msgstr "Automaticky aplikovat změnu barvy" msgid "Apply to all the remaining small objects being loaded." msgstr "Použít na všechny zbývající malé načítané objekty." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1301,7 +1299,7 @@ msgstr "Arachne generátor perimetrů" msgid "Archimedean Chords" msgstr "Archimedean Chords" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Opravdu chcete %1% vybrané přednastavení?" @@ -1318,7 +1316,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "Opravdu chcete pokračovat?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1331,7 +1329,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "Opravdu chcete odstranit tiskárnu \"%1%\"?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Jste si jisti, že chcete odstranit všechna nahrazení?" @@ -1339,7 +1337,7 @@ msgstr "Jste si jisti, že chcete odstranit všechna nahrazení?" msgid "Are you sure you want to do it?" msgstr "Opravdu to chcete udělat?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Zaplněná plocha" @@ -1371,7 +1369,7 @@ msgstr "" "Uspořádat upravit velikost mezery mezi objekty a umožnit automatické " "otáčení modelů?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1524,7 +1522,7 @@ msgstr "Automatické generování podpěrných bodů" msgid "Autogeneration will erase all manually edited points." msgstr "Automatické generování vymaže všechny ručně vytvořené body." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Automatické generování" @@ -1532,7 +1530,7 @@ msgstr "Automatické generování" msgid "Automatic updates" msgstr "Automatické aktualizace" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Automaticky opravit STL soubor" @@ -1548,11 +1546,11 @@ msgstr "Vyhnout se přejíždění perimetrů" msgid "Avoid crossing perimeters - Max detour length" msgstr "Vyhnout se přejíždění perimetrů - maximální délka objízdné cesty" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "ŠIPKA ZPĚT" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1564,7 +1562,7 @@ msgstr "" "Klikněte pro reset všech nastavení pro aktuální skupinu nastavení na " "naposledy uložené přednastavení." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1578,7 +1576,7 @@ msgstr "" msgid "Background processing" msgstr "Zpracování na pozadí" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Záchrana při neznámých hodnotách konfigurace" @@ -1586,7 +1584,7 @@ msgstr "Záchrana při neznámých hodnotách konfigurace" msgid "Balanced" msgstr "Vyvážené" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Tisková podložka" @@ -1634,7 +1632,7 @@ msgstr "" "Teplota tiskové podložky pro další vrstvy po první vrstvě. Nastavením na " "hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-code před změnou vrstvy" @@ -1659,7 +1657,7 @@ msgstr "Nejlepší kvalita povrchu" msgid "Between objects G-code" msgstr "G-code mezi objekty" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-code mezi objekty (pro sekvenční tisk)" @@ -1681,11 +1679,11 @@ msgstr "Blokování podpěr" msgid "Block supports by angle" msgstr "Blokování podpěr dle úhlu" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Objem láhve" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Hmotnost láhve" @@ -1702,7 +1700,7 @@ msgstr "Spodních" msgid "Bottom" msgstr "Zespod" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Pohled zespod" @@ -1977,8 +1975,8 @@ msgstr "" "Nelze pokračovat bez podpěrných bodů! Přidejte podpěrné body nebo zakažte " "generování podpěr." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Možnosti" @@ -1986,7 +1984,7 @@ msgstr "Možnosti" msgid "Capture a configuration snapshot" msgstr "Vytvořit aktuální zálohu konfigurace" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Nerozlišovat malá a velká písmena" @@ -1994,11 +1992,11 @@ msgstr "Nerozlišovat malá a velká písmena" msgid "Category" msgstr "Kategorie" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Střed" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Vycentrujte tisk kolem daného středu." @@ -2106,7 +2104,7 @@ msgstr "" "Vyberte soubor, ze kterého chcete importovat texturu pro tiskovou podložku " "(PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" @@ -2154,7 +2152,7 @@ msgstr "Kruh" msgid "Circular" msgstr "Kruhový" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Klasický" @@ -2162,12 +2160,13 @@ msgstr "Klasický" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" "Klasický generátor obvodových stěn vytváří perimetry s konstantní šířkou " "vytlačovaného materiálu a pro velmi malé plochy se používá technika " "vyplňování mezer. Algoritmus Arachne vytváří perimetry s proměnnou šířkou " -"vytlačovaného materiálu." +"vytlačovaného materiálu. Toto nastavení ovlivňuje také koncentrickou výplň." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2246,7 +2245,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "Zavírání PrusaSliceru. Aktuální projekt je upravený." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Vzdálenost uzavření" @@ -2254,7 +2253,7 @@ msgstr "Vzdálenost uzavření" msgid "Closing radius" msgstr "Poloměr uzavření" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Sbalit postranní panel" @@ -2262,11 +2261,11 @@ msgstr "Sbalit postranní panel" msgid "Collapse/Expand the sidebar" msgstr "Sbalit/Rozbalit postranní panel" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Barva" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-code pro změnu barvy" @@ -2329,12 +2328,12 @@ msgstr "Příkazy" msgid "Comment:" msgstr "Komentář:" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Porovnání přednastavení" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Porovnání přednastavení" @@ -2342,7 +2341,7 @@ msgstr "Porovnání přednastavení" msgid "Compare this preset with some another" msgstr "Porovnat toto přednastavení s jiným" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Srovnávaná přednastavení mají odlišnou technologii tisku" @@ -2506,7 +2505,7 @@ msgstr "" "omezena na infill_anchor, ale ne delší než tento parametr. Nastavením tohoto " "parametru na nulu ukotvení zakážete." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Spojení podpůrných tyčí a spojek" @@ -2562,7 +2561,7 @@ msgstr "Pokračovat a instalovat aktualizace konfigurace?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "Pokračovat v aktivaci zálohy konfigurace %1%?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2580,7 +2579,7 @@ msgstr "" "Příspěvky od Vojtěcha Bubníka, Enrica Turriho, Oleksandry Iushchenko, Tamáse " "Mészárose, Lukáše Matěny, Vojtěcha Krále, Davida Kocíka a řady dalších." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2598,7 +2597,7 @@ msgstr "Převod z imperiálních jednotek" msgid "Convert from meters" msgstr "Převod z metrů" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Chlazení" @@ -2610,7 +2609,7 @@ msgstr "Chladicí pohyby se postupně zrychlují a začínají touto rychlostí. msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Chladící pohyby se postupně zrychlují až k této rychlosti." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Podmínky chlazení" @@ -2631,11 +2630,11 @@ msgctxt "PresetName" msgid "Copy" msgstr "Kopie" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Zkopírovat číslo verze" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Kopírovat výběr do schránky" @@ -2696,32 +2695,32 @@ msgstr "" "problém s cílovým zařízením. Zkuste exportovat znovu nebo použijte jiné " "zařízení. Poškozený výstupní G-code je v %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Autorská práva" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Korekce expanze" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Korekce roztažnosti v ose X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Korekce roztažnosti v ose Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Korekce roztažnosti v ose Z" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Korekce" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Náklady" @@ -2794,7 +2793,7 @@ msgstr "" "trojúhelníkových sítí. Operace uzavírání mezery může snížit konečné " "rozlišení tisku, proto je vhodné udržovat rozumně nízkou hodnotu." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" "Vytvoří podložku kolem objektu a ignorujte nadzvednutí objektu podpěrami" @@ -2811,7 +2810,7 @@ msgstr "Vytváření nového projektu. Některá přednastavení jsou upravená. msgid "Creating a new project while the current project is modified." msgstr "Vytvoření nového projektu. Současný projekt byl změněn." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kritický úhel" @@ -2819,7 +2818,7 @@ msgstr "Kritický úhel" msgid "Critical error" msgstr "Kritická chyba" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Cross" @@ -2865,8 +2864,8 @@ msgstr "" "crt/pem. Pokud zůstane pole prázdné, použije se výchozí úložiště certifikátů " "OS CA." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Vlastní G-code" @@ -2910,7 +2909,7 @@ msgid "Custom template (\"%1%\")" msgstr "Vlastní šablona (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Řezat" @@ -2918,7 +2917,7 @@ msgstr "Řezat" msgid "Cut by Plane" msgstr "Řez Rovinou" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Rozříznout model v dané výšce Z." @@ -2926,7 +2925,7 @@ msgstr "Rozříznout model v dané výšce Z." msgid "Cylinder" msgstr "Válec" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Odznačit Vš&e" @@ -2934,7 +2933,7 @@ msgstr "Odznačit Vš&e" msgid "Dark mode (experimental)" msgstr "Tmavý režim (experimentální)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Složka Data" @@ -2960,7 +2959,7 @@ msgstr "Odebrání Instancí" msgid "Default" msgstr "Výchozí" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Výchozí profil pro SLA materiál" @@ -2999,8 +2998,8 @@ msgstr "" msgid "Default print profile" msgstr "Výchozí tiskový profil" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3013,7 +3012,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Vytvořit vlastní tiskový profil" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3031,11 +3030,11 @@ msgstr "Zpoždění po vyjmutí" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Smazat" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Sm&azat Vše" @@ -3089,7 +3088,7 @@ msgid "Delete Subobject" msgstr "Smazání dílčího objektu" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Smazat vše" @@ -3146,16 +3145,16 @@ msgstr "Smazat značku - Levé tlačítko myši nebo klávesa \"-\"" msgid "Delete tool change" msgstr "Smazat změnu nástroje" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Smazat všechny objekty" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Smaže aktuální výběr" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Hustota" @@ -3167,9 +3166,9 @@ msgstr "Hustota vnitřní výplně vyjádřená v rozmezí 0 až 100 %." msgid "Density of the first raft or support layer." msgstr "Hustota prvního vrstvy raftu nebo podpěrné vrstvy." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Závislosti" @@ -3193,7 +3192,7 @@ msgstr "Odznačit vše" msgid "Deselect by rectangle" msgstr "Odznačit obdélníkovým výběrem myši" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Odznačit všechny objekty" @@ -3229,7 +3228,7 @@ msgstr "Oddělit od systémového přednastavení" msgid "Detach preset" msgstr "Oddělení přednastavení" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Odpojeno" @@ -3253,7 +3252,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Detekovat tenké stěny" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3277,15 +3276,15 @@ msgstr "Zařízení:" msgid "Diameter" msgstr "Průměr" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Průměr základny podpěr v mm" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Průměr podpěrných sloupů v mm" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Průměr konce podpůrného hrotu" @@ -3348,31 +3347,31 @@ msgstr "Odstranit všechny vámi provedené změny" msgid "Discard changes" msgstr "Zahodit změny" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Displej" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Výška displeje" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Horizontální zrcadlení displeje" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientace displeje" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Zobrazit okno s frontou nahrávání do tiskového serveru" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Vertikální zrcadlení displeje" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Šířka displeje" @@ -3391,7 +3390,7 @@ msgstr "" "Vzdálenost mezi obrysem a límcem (pokud není použit ochranný štít) nebo " "objekty." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3428,11 +3427,11 @@ msgstr "Vzdálenost, použitá pro funkci automatického rozmístění po podlo msgid "Divide by zero" msgstr "Dělení nulou" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nepodaří se, pokud neexistuje soubor dodaný k přepínači --load." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3488,7 +3487,7 @@ msgstr "Chcete pro tyto modely tiskáren vybrat výchozí SLA materiály?" msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Chcete pro tyto modely FFF tiskáren vybrat výchozí filamenty?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Neuspořádávat" @@ -3552,11 +3551,11 @@ msgstr "" msgid "Drop to bed" msgstr "Spadnout na podložku" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplikovat" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplikovat mřížkou" @@ -3573,11 +3572,11 @@ msgstr "Během ostatních vrstev bude ventilátor vždy běžet na %1%%%" msgid "During the other layers, fan will be turned off." msgstr "Během ostatních vrstev bude ventilátor vypnutý." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dynamic" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "E&xportovat" @@ -3628,7 +3627,7 @@ msgstr "Upravit vlastní G-code" msgid "Edit pause print message" msgstr "Upravit zprávu při pozastavení tisku" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Upravit fyzickou tiskárnu" @@ -3652,7 +3651,7 @@ msgstr "Editace" msgid "Eigen vectorization supported:" msgstr "Podporovaná vlastní vektorizace:" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Vysunou&t SD kartu / Flash disk" @@ -3660,7 +3659,7 @@ msgstr "Vysunou&t SD kartu / Flash disk" msgid "Eject SD card / Flash drive" msgstr "Vysunout SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Vysunout SD kartu / Flash disk po vyexportování G-codu." @@ -3677,7 +3676,7 @@ msgstr "Vysunutí zařízení %s(%s) se nezdařilo." msgid "Elephant foot compensation" msgstr "Kompenzace rozplácnutí první vrstvy" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Minimální šířka po kompenzaci rozplácnutí první vrstvy" @@ -3710,7 +3709,7 @@ msgstr "Emitovat do G-codu" msgid "Empty layer between %1% and %2%." msgstr "Prázdná vrstva mezi %1% a %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Zapnout" @@ -3727,11 +3726,11 @@ msgstr "Aktivace tmavého režimu" msgid "Enable fan if layer print time is below" msgstr "Zapnout ventilátor, pokud je doba tisku vrstvy kratší než" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Povolit tvorbu dutin" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Zapne horizontální zrcadlení výstupních obrázků" @@ -3744,7 +3743,7 @@ msgid "" "Enable ironing of the top layers with the hot print head for smooth surface" msgstr "Pro hladké vrchní vrstvy povolte ironing pomocí ohřáté tiskové hlavy" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3752,7 +3751,7 @@ msgstr "" "Umožňuje načítání neznámých konfiguračních hodnot jejich tichým nahrazením " "výchozími hodnotami." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3802,7 +3801,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Zapnout variabilní výšku vrstev" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Zapne vertikální zrcadlení výstupních obrázků" @@ -3818,7 +3817,7 @@ msgstr "" "Umožňuje vyplnit mezery mezi perimetry a mezi nejvnitřnějšími perimetry a " "výplní." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3850,7 +3849,7 @@ msgstr "Vynucení podpěr" msgid "Enqueued" msgstr "Zařazeno do fronty" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Zajistit položení na podložku" @@ -3959,7 +3958,7 @@ msgstr "" "Chyba: \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Chyba" @@ -4107,23 +4106,23 @@ msgstr "Expertní režim" msgid "Export" msgstr "Exportovat" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exportovat Konfigura&ci" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exportovat &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exportovat &Trasy extruderu jako OBJ" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exportovat 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exportovat AMF" @@ -4131,11 +4130,11 @@ msgstr "Exportovat AMF" msgid "Export AMF file:" msgstr "Exportovat AMF soubor:" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exportovat Konfigurační &Balík" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exportovat Konfigurační balík včetně fyzických tiskáren" @@ -4144,15 +4143,15 @@ msgid "Export G-Code." msgstr "Export G-codu." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exportovat G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exportovat G-code na SD kartu / Flash disk" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exportovat OBJ" @@ -4160,19 +4159,19 @@ msgstr "Exportovat OBJ" msgid "Export OBJ file:" msgstr "Exportovat OBJ soubor:" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exportovat Plochu jako &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exportovat T&iskovou plochu včetně podpěr jako STL" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exportovat SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exportovat STL" @@ -4180,11 +4179,11 @@ msgstr "Exportovat STL" msgid "Export STL file:" msgstr "Exportovat STL soubor:" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Exportovat do souboru všechna přednastavení včetně fyzických tiskáren" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exportovat všechna přednastavení do souboru" @@ -4196,23 +4195,23 @@ msgstr "Exportovat jako STL" msgid "Export config" msgstr "Exportovat konfiguraci" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exportovat současnou konfiguraci do souboru" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exportovat stávající plochu do G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exportovat aktuální podložku jako G-code na SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exportovat stávající plochu jako STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exportovat stávající plochu včetně podpěr jako STL" @@ -4229,19 +4228,19 @@ msgstr "Export dočasného 3MF souboru selhalo" msgid "Export sources full pathnames to 3mf and amf" msgstr "Exportovat absolutní cesty k 3mf a amf souborům" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exportovat model(y) jako 3MF." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exportovat model(y) jako AMF." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exportovat model(y) jako OBJ." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exportovat model(y) jako STL." @@ -4249,7 +4248,7 @@ msgstr "Exportovat model(y) jako STL." msgid "Export to SD card / Flash drive" msgstr "Export na SD kartu / Flash disk" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exportovat trasy extruderu jako OBJ" @@ -4261,7 +4260,7 @@ msgstr "Export." msgid "Exporting G-code" msgstr "Exportování souboru G-code" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Exportování konfiguračního balíku" @@ -4282,11 +4281,11 @@ msgstr "Exportování." msgid "Exposition time is out of printer profile bounds." msgstr "Doba osvitu je mimo rozsah profilu tiskárny." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Osvit" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Doba osvitu" @@ -4348,7 +4347,7 @@ msgstr "Barva extruderu" msgid "Extruder changed to" msgstr "Extruder změněn na" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Kolizní oblast extruderu" @@ -4357,7 +4356,7 @@ msgid "Extruder offset" msgstr "Odsazení extruderu" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4365,7 +4364,7 @@ msgid "Extruders" msgstr "Extrudery" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Počet extruderů" @@ -4405,7 +4404,7 @@ msgstr "Tiskárny technologie FFF" msgid "Facets" msgstr "Facety" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Vrstvy počátečního osvitu" @@ -4434,11 +4433,11 @@ msgstr "Některé otvory se do modelu nepodařilo se vyvrtat" msgid "Fan Speed (%)" msgstr "Rychlost ventilátoru (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Nastavení ventilátoru" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Rychlost ventilátoru" @@ -4471,11 +4470,11 @@ msgstr "Ventilátor vždy poběží na %1%%%" msgid "Fan will be turned off." msgstr "Ventilátor bude vypnutý." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Rychlý" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Rychlý náklon" @@ -4499,7 +4498,7 @@ msgstr "Typy extrudování" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -4511,7 +4510,7 @@ msgstr "Průměr filamentu:" msgid "Filament End G-code" msgstr "Filament Konec G-code" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Přepsání globálních hodnot" @@ -4520,7 +4519,7 @@ msgid "Filament Profiles Selection" msgstr "Výběr Filamentových Profilů" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Nastavení filamentu" @@ -4562,7 +4561,7 @@ msgstr "Poznámky k filamentu" msgid "Filament parking position" msgstr "Parkovací pozice filamentu" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Vlastnosti filamentu" @@ -4579,7 +4578,7 @@ msgstr "Doba vysouvání filamentu" msgid "Filaments" msgstr "Filamenty" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Soubor nenalezen" @@ -4647,7 +4646,7 @@ msgstr "Vyplní zbývající tiskovou plochu instancemi vybraného objektu" msgid "Filling bed" msgstr "Vyplňování podložky" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Najít" @@ -4659,11 +4658,11 @@ msgstr "Vyhledávání / nahrazování vzorů v řádcích G-code a jejich nahra msgid "Finished" msgstr "Dokončeno" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Firmware Retrakce" @@ -4878,7 +4877,7 @@ msgstr "" "U čistící věže pokud pracujte s rozpustnými materiály, je třeba\n" "synchronizovat vrstvy podpěr s vrstvami objektů." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Vynutit podložku všude okolo objektů" @@ -4912,7 +4911,7 @@ msgstr "" "Formát náhledových obrázků G-codu: Pro nejlepší kvalitu PNG, pro nejmenší " "velikost JPG, pro firmware s malou pamětí QOI" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4920,7 +4919,7 @@ msgstr "" "Pravidlo dopředné kompatibility při načítání konfigurací z konfiguračních " "souborů a souborů projektů (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Nalezená vyhrazená klíčová slova v" @@ -4932,11 +4931,11 @@ msgstr "Předchozí extruder" msgid "From Object List You can't delete the last solid part from object." msgstr "Ze seznamu objektů nemůžete smazat poslední část objektu." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Zepředu" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Pohled zepředu" @@ -4944,7 +4943,7 @@ msgstr "Pohled zepředu" msgid "Full fan speed at layer" msgstr "Maximální otáčky ventilátoru ve vrstvě" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Fullscreen" @@ -4992,7 +4991,7 @@ msgstr "Tloušťka členitého povrchu" msgid "Fuzzy skin type." msgstr "Typ členitého povrchu." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" @@ -5029,11 +5028,11 @@ msgstr "Nahrazení G-codu" msgid "G-code thumbnails" msgstr "Náhledy G-codu" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Prohlížeč G-codu" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, verze 3" @@ -5050,10 +5049,10 @@ msgstr "Galerie" msgid "Gap fill" msgstr "Výplň tenkých stěn" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Obecné" @@ -5083,11 +5082,11 @@ msgstr "" "ohledu na jakýkoli prah úhlu. To je užitečné pro získání větší přilnavosti " "předmětů s velmi tenkou nebo špatnou stopou na tiskové podložce." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Generovat podpěry" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Generovat podpěry modelů" @@ -5279,11 +5278,11 @@ msgstr "" msgid "Head diameter" msgstr "Průměr hrotu" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Průnik podpěry do modelu" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Průnik hrotu podpěry by neměl být větší než je tloušťka hrotu podpěry." @@ -5307,7 +5306,7 @@ msgstr "Výška (mm)" msgid "Height of skirt expressed in layers." msgstr "Výška obrysu vyjádřená ve vrstvách." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Výška displeje" @@ -5332,15 +5331,15 @@ msgstr "" "Ahoj, vítejte v %su! Tento %s vám pomůže se základní konfigurací; jen " "několik nastavení a budete připraveni tisknout." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Nápověda" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Nápověda (pro FFF)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Nápověda (pro SLA)" @@ -5375,7 +5374,7 @@ msgstr "Vysoká" msgid "High extruder current on filament swap" msgstr "Zvýšený proud do extruderového motoru při výměně filamentu" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Vysoká viskozita" @@ -5407,7 +5406,7 @@ msgstr "Průměr otvoru" msgid "Hollow and drill" msgstr "Vydutit a vyvrtat" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Vyduťte model, abyste měli vnitřek prázdný" @@ -5415,16 +5414,16 @@ msgstr "Vyduťte model, abyste měli vnitřek prázdný" msgid "Hollow this object" msgstr "Vydutit tento objekt" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Vytvoření dutiny" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5492,19 +5491,19 @@ msgstr "" "Pro více informací přejeďte kurzorem nad tlačítky\n" "nebo na tlačítko klikněte." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Jak široká má být podložka kolem geometrie" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Jak hluboko mají spojky proniknou do modelu." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Jak moc hrot podpěry pronikne do povrchu modelu" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5721,7 +5720,7 @@ msgstr "" "Pokud je povoleno, bude v pravém horním rohu 3D scény zobrazeno tlačítko pro " "ovládání bočního panelu" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -5990,7 +5989,7 @@ msgstr "" "offline distribučních bodů. Tuto možnost lze povolit pro certifikáty " "podepsané vlastním podpisem v případě, že se připojení nezdaří." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignorovat neexistující konfigurační soubory" @@ -6008,15 +6007,15 @@ msgstr "Nepovolený příkaz" msgid "Import" msgstr "Importovat" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importovat Konfigura&ci" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importovat Konfigurační &Balík" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Načíst konfiguraci z &Projektu" @@ -6032,7 +6031,7 @@ msgstr "Importovat Objekt" msgid "Import Objects" msgstr "Importovat Objekty" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importovat SL1 / SL1S Archiv" @@ -6040,11 +6039,11 @@ msgstr "Importovat SL1 / SL1S Archiv" msgid "Import SLA archive" msgstr "Importovat SLA archiv" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importovat STL (imperiální jednotky)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importovat STL/OBJ/AM&F/3MF" @@ -6172,11 +6171,11 @@ msgstr "Zdědí profil" msgid "Initial exposition time is out of printer profile bounds." msgstr "Doba počátečního osvitu je mimo rozsah profilu tiskárny." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Doba počátečního osvitu" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Výška první vrstvy" @@ -6280,7 +6279,7 @@ msgstr "Vnitřní chyba: %1%" msgid "Internal infill" msgstr "Vnitřní výplň" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Neplatný průnik podpěry do modelu" @@ -6308,7 +6307,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Neplatný číselný vstup." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Průměr hrotu podpěry je neplatný" @@ -6343,11 +6342,11 @@ msgstr "Způsob vyhlazování" msgid "Is it safe?" msgstr "Je to bezpečné?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Izometrické" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Izometrické zobrazení" @@ -6374,7 +6373,7 @@ msgstr "" "filamentu, aby se umožnily vysoké rychlosti zavádění filamentu a aby se " "překonal odpor při zavádění filamentu s ošklivě tvarovanou špičkou." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Toto je poslední přednastavení pro tuto fyzickou tiskárnu." @@ -6386,7 +6385,7 @@ msgstr "SLA technologií nelze tisknout vícedílné objekty." msgid "It's not possible to delete the last related preset for the printer." msgstr "Není možné odstranit poslední související přednastavení tiskárny." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Ryv limity" @@ -6452,7 +6451,7 @@ msgstr "Zachovejte vybraná nastavení." msgid "Keep upper part" msgstr "Zachovat horní část" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Klávesové zkratky" @@ -6460,11 +6459,11 @@ msgstr "Klávesové zkratky" msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "ZAMČENÝ ZÁMEK" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6472,7 +6471,7 @@ msgstr "" "Ikona ZAMKNUTÉHO ZÁMKU indikuje, že nastavení jsou stejná jako systémové " "(nebo výchozí) hodnoty pro aktuální skupinu nastavení" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6484,7 +6483,7 @@ msgstr "" msgid "Label objects" msgstr "Označování objektů" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Orientace na šířku" @@ -6524,7 +6523,7 @@ msgstr "" "\n" "Výška vrstvy bude resetována na 0,01." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Výškové limity vrstvy" @@ -6532,8 +6531,8 @@ msgstr "Výškové limity vrstvy" msgid "Layer range Settings to modify" msgstr "Nastavení pro vrstvy v rozsahu" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Vrstvy" @@ -6550,7 +6549,7 @@ msgstr "Vrstvy" msgid "Layers and Perimeters" msgstr "Vrstvy a perimetry" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Vrstvy a perimetry" @@ -6563,15 +6562,15 @@ msgstr "Možnosti rozložení" msgid "Leave \"%1%\" enabled" msgstr "Ponechat možnost \"%1%\" povolenou" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Zleva" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Hodnota levého přednastavení" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Pohled zleva" @@ -6610,7 +6609,7 @@ msgid "Length of the infill anchor" msgstr "Délka výplňové kotvy" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6622,7 +6621,7 @@ msgstr "" msgid "Lift Z" msgstr "Zvednout Z" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6648,7 +6647,7 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2293 msgid "Limited" -msgstr "Omezené" +msgstr "Omezeno" #: src/libslic3r/PrintConfig.cpp:1170 msgid "Line" @@ -6682,19 +6681,19 @@ msgstr "Přidání části" msgid "Load Project" msgstr "Načíst Projekt" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Načíst model" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Načíst SL1 / SL1S archiv" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Načíst jako model v imperiálních jednotkách" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6703,7 +6702,7 @@ msgstr "" "Načtěte a uložte nastavení z/do daného adresáře. To je užitečné pro " "udržování různých profilů nebo konfigurací ze síťového úložiště." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Načíst konfigurační soubor" @@ -6722,11 +6721,11 @@ msgstr "" "SL1 / SL1S archiv, která rovněž umožňuje rekonstruovat 3D modely z " "voxelových dat." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Načíst konfiguraci z projektu" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6734,11 +6733,11 @@ msgstr "" "Načíst konfiguraci ze zadaného souboru. Může být použito vícekrát než jednou " "pro načtení z více souborů." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Načíst exportovaný konfigurační soubor" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Načíst přednastavení z balíku" @@ -6770,11 +6769,11 @@ msgstr "Načítání konfigurace" msgid "Loading file" msgstr "Načítání souboru" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Načítání konfiguračního balíku" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Načítání konfiguračního souboru" @@ -6813,7 +6812,7 @@ msgstr "Lokální souřadnice" msgid "Lock supports under new islands" msgstr "Ukotvi podpěry pod novými ostrůvky" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Úroveň logování" @@ -6829,7 +6828,7 @@ msgstr "Nízká" msgid "Lowest Z height" msgstr "Nejnižší výška v ose Z" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6838,14 +6837,14 @@ msgstr "Nejnižší výška v ose Z" msgid "Machine limits" msgstr "Limity stroje" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" "Nejsou nastaveny limity zařízení, proto nemusí být odhad doby tisku přesný." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6855,7 +6854,7 @@ msgstr "" "tisku, což však nemusí být přesné, protože tiskárna může použít jinou sadu " "limitů." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -6880,20 +6879,20 @@ msgstr "Manuální úprava" msgid "Masked SLA file exported to %1%" msgstr "Soubor pro SLA byl exportován do %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Shoda na jednom řádku" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Panel Nastavení mate&riálu" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Materiál" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Nastavení materiálu" @@ -6902,7 +6901,7 @@ msgstr "Nastavení materiálu" msgid "Material Settings Tab" msgstr "Panel Nastavení materiálu" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Profil tiskového materiálu" @@ -6910,19 +6909,19 @@ msgstr "Profil tiskového materiálu" msgid "Max" msgstr "Maximum" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Maximální délka mostu" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Max počet mostů na sloupu" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Maximální vzdálenost pro sloučení" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Max. vzdálenost propojení podpěr" @@ -7018,7 +7017,7 @@ msgstr "Maximální zrychlení při retrakci" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Maximální zrychlení při retrakci (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Maximální zrychlení" @@ -7039,7 +7038,7 @@ msgstr "" "vytvoří low poly efekt a protože redukce G-codu se provádí v každé vrstvě " "nezávisle, mohou vznikat viditelné artefakty." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Maximální doba osvitu" @@ -7075,11 +7074,11 @@ msgstr "Maximální rychlost posuvu osy Y" msgid "Maximum feedrate of the Z axis" msgstr "Maximální rychlost posuvu osy Z" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Maximální rychlosti posuvu" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Maximální doba počátečního osvitu" @@ -7119,7 +7118,7 @@ msgstr "Maximální ryv (jerk) osy Z" msgid "Maximum length of the infill anchor" msgstr "Maximální délka výplňové kotvy" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7150,7 +7149,7 @@ msgid "Medium" msgstr "Střední" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Sloučit" @@ -7166,7 +7165,7 @@ msgstr "Sloučit objekty do jednoho vícedílného objektu" msgid "Merged" msgstr "Sloučení" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7205,7 +7204,7 @@ msgstr "Minimum" msgid "Min print speed" msgstr "Minimální rychlost tisku" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Minimální vzdálenost podpěrných bodů" @@ -7247,11 +7246,11 @@ msgstr "" "vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednodušení a " "použít vstup v plném rozlišení." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Minimální doba osvitu" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Minimální velikost prvku" @@ -7263,15 +7262,15 @@ msgstr "Minimální rychlosti posuvu během extruze" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimální rychlosti posuvu během extruze (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Minimální rychlosti posuvu" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Minimální doba počátečního osvitu" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Minimální šířka perimetru" @@ -7295,15 +7294,18 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Minimální tloušťka vrchní / spodní skořepiny" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" "Minimální tloušťka tenkých prvků. Prvky modelu, které jsou tenčí než tato " "hodnota, nebudou vytištěny, zatímco prvky silnější než minimální velikost " -"prvku budou rozšířeny na minimální šířku perimetru." +"prvku budou rozšířeny na minimální šířku perimetru. Pokud je vyjádřeno v " +"procentech (například 25%), bude vypočítáno na základě průměru trysky." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7326,11 +7328,11 @@ msgstr "Minimální rychlost při přesunu" msgid "Minimum travel feedrate (M205 T)" msgstr "Minimální rychlost při přesunu (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimální tloušťka stěny dutého modelu." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7356,7 +7358,7 @@ msgstr "" msgid "Mirror Object" msgstr "Zrcadlit Objekt" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Zrcadlit horizontálně" @@ -7376,7 +7378,7 @@ msgstr "Zrcadlit rozměr vybraného objektu podél osy Y" msgid "Mirror the selected object along the Z axis" msgstr "Zrcadlit rozměr vybraného objektu podél osy Z" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Zrcadlit vertikálně" @@ -7552,11 +7554,11 @@ msgstr "" "Mají být vloženy jako jeden objekt obsahující více částí, \n" "namísto vložení několika objektů?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Vynásobí kopie vytvořením mřížky." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Vynásobí kopie tímto číslem." @@ -7646,7 +7648,7 @@ msgstr "Nové rozvržení, přístup přes tlačítko nastavení v horním menu" msgid "New prerelease version %1% is available." msgstr "K dispozici je nová předběžná verze %1%." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Zvoleno nové přednastavení tiskárny" @@ -7705,7 +7707,7 @@ msgstr "" msgid "No pad can be generated for this model with the current configuration" msgstr "Pro aktuální model nelze vygenerovat žádnou podložku" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Žádné dříve slicované soubory." @@ -7713,7 +7715,7 @@ msgstr "Žádné dříve slicované soubory." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Bez řídkých vrstev (EXPERIMENTÁLNÍ)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Žádné podpůrné body nebudou umístěny blíže než je tento práh." @@ -7729,7 +7731,7 @@ msgid "None" msgstr "Žádné" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normální" @@ -7745,7 +7747,7 @@ msgstr "Nenalezeno:" msgid "Note" msgstr "Poznámka" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7754,7 +7756,7 @@ msgstr[1] "Pozor, vybrané přednastavení bude odstraněno i z těchto tiskáre msgstr[2] "Pozor, vybrané přednastavení bude odstraněno i z těchto tiskáren." msgstr[3] "Pozor, vybrané přednastavení bude odstraněno i z těchto tiskáren." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7772,7 +7774,7 @@ msgstr[3] "" "Upozorňujeme, že tyto tiskárny budou po smazání vybraného přednastavení " "odstraněny." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7821,12 +7823,12 @@ msgstr "Upozornění: Taoto přednastavení bude po uložení nahrazeno" msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Poznámka: některé zkratky nefungují v režimu editace." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Poznámky" @@ -7840,7 +7842,7 @@ msgstr "Oznámení" msgid "Notify about new releases" msgstr "Upozornění na nové verze" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Tryska" @@ -7852,7 +7854,7 @@ msgstr "Průměr trysky:" msgid "Nozzle and Bed Temperatures" msgstr "Teplota trysky a tiskové podložky" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Průměr trysky" @@ -7883,7 +7885,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Počet chladících pohybů" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Počet extrudérů tiskárny." @@ -7911,15 +7913,15 @@ msgstr "" "počet obrysových smyček může být větší než počet zde nakonfigurovaných. " "Nastavte tuto hodnotu na nulu, pro úplné deaktivování." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Počet pixelů v ose" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Počet pixelů v ose X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Počet pixelů v ose Y" @@ -7935,7 +7937,7 @@ msgstr "Počet plných vrstev generovaných na vrchních a spodních površích. msgid "Number of solid layers to generate on top surfaces." msgstr "Počet vrchních generovaných plných vrstev." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -7950,7 +7952,7 @@ msgstr "Počet změn nástroje" msgid "Object Settings to modify" msgstr "Změna nastavení objektu" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Nadzvednutí objektu" @@ -8073,7 +8075,7 @@ msgstr "Zapnou/vypnout režim jedné vrstvy vertikálního posuvníku" msgid "One layer mode" msgstr "Zobrazení po jedné vrstvě" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Jedno z přednastavení nebylo nalezeno" @@ -8096,7 +8098,7 @@ msgstr "" "odeberte všechny objekty kromě posledního, nebo povolte sekvenční režim " "pomocí \"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8108,7 +8110,7 @@ msgstr "" msgid "Only infill where needed" msgstr "Výplň pouze kde je potřeba" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Pouze zvednout Z" @@ -8150,7 +8152,7 @@ msgstr "" "V současné době není funkce \"Prevence odkapávání\" filamentu podporována " "společně s povolenou čistící věží." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Otevřít &PrusaSlicer" @@ -8170,11 +8172,11 @@ msgstr "Otevřít složku." msgid "Open G-code file:" msgstr "Otevřít soubor G-code:" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Otevřít prohlížeč G-codu" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Otevřít Novou Instanci" @@ -8182,20 +8184,20 @@ msgstr "Otevřít Novou Instanci" msgid "Open Preferences." msgstr "Otevřít Nastavení." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Otevřít PrusaSlicer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Otevřít G-code" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Otevře novou instanci PrusaSliceru" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Otevřít soubor s projektem" @@ -8238,7 +8240,7 @@ msgstr "Otevřít webovou stránku %s v prohlížeči" msgid "Open the Prusa3D drivers download page in your browser" msgstr "Otevřít stránku pro stahování Prusa 3D ovladačů ve vašem prohlížeči" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Otevřete dialogové okno pro úpravu galerie tvarů" @@ -8254,7 +8256,7 @@ msgstr "Otevírání průvodce nastavením" msgid "Opening new project while some presets are unsaved." msgstr "Otevírání nového projektu. Některá přednastavení nejsou uložena." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8331,7 +8333,7 @@ msgstr "Hledání optimální orientace zrušeno." msgid "Origin" msgstr "Počátek" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Ostatní" @@ -8351,15 +8353,15 @@ msgstr "Vnější a vnitřní límec" msgid "Outer brim only" msgstr "Pouze vnější okraj" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Výstupní soubor" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Info o výstupním modelu" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Výstupní soubor" @@ -8367,7 +8369,7 @@ msgstr "Výstupní soubor" msgid "Output filename format" msgstr "Formát názvu výstupního souboru" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Možnosti výstupu" @@ -8392,19 +8394,19 @@ msgstr "Mezní úhel převisu" msgid "Overlap" msgstr "Překrytí" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Panel Nastavení &tisku" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Podložka" @@ -8412,15 +8414,15 @@ msgstr "Podložka" msgid "Pad and Support" msgstr "Podložka a Podpěry" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Podložka okolo objektu" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Podložka všude okolo objektu" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Velikost límce podložky" @@ -8428,31 +8430,31 @@ msgstr "Velikost límce podložky" msgid "Pad brim size is too small for the current configuration." msgstr "Velikost okraje podložky je pro aktuální konfiguraci příliš malá." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Průnik spojky Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Rozteč spojek Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Šířka spojky Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Mezera Podložka-Objekt" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Výška bočnice podložky" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Sklon bočnice podložky" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Tloušťka stěny podložky" @@ -8583,7 +8585,7 @@ msgstr "Vložit" msgid "Paste From Clipboard" msgstr "Vložení ze schránky" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Vložit ze schránky" @@ -8621,7 +8623,7 @@ msgstr "Vzor použitý pro generování podpěr." msgid "Pause" msgstr "Pozastavení" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-code pro pozastavení tisku" @@ -8656,7 +8658,7 @@ msgstr "" "Provést integraci do systému (Nastaví tuto binárku tak, aby ji systém mohl " "prohledávat)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8699,7 +8701,7 @@ msgstr "" msgid "Perimeter" msgstr "Perimetr" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Počet ovlivněných perimetrů" @@ -8711,15 +8713,15 @@ msgstr "Extruder pro perimetry" msgid "Perimeter generator" msgstr "Generátor obvodových stěn" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Délka přechodu perimetru" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Filtr přechodového rozpětí perimetrů" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Prahový úhel přechodu perimetru" @@ -8770,27 +8772,27 @@ msgstr "" "Velikosti obrázků budou uloženy do souborů .gcode / .sl1 / .sl1s, v " "následujícím formátu: \"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Způsob propojení podpěr" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Průměr podpěry" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Koeficient rozšiřování podpěry" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Průměr hrotu podpěry by měl být menší než průměr podpěrných sloupů." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Průměr podpěrného hrotu" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Šířka podpěrného hrotu" @@ -8838,11 +8840,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Vyberte soubor, který chcete znovu načíst" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Autorská práva" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Orientace na výšku" @@ -8851,7 +8853,7 @@ msgstr "Orientace na výšku" msgid "Position" msgstr "Pozice" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Pozice (pro tiskárny s více extrudery)" @@ -8867,7 +8869,7 @@ msgstr "Pozice Y" msgid "Position of perimeters starting points." msgstr "Pozice začátku perimetrů." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "Post-processing skripty musí G-code upravit in place." @@ -8890,11 +8892,11 @@ msgstr "" "Upravte prosím skript tak, aby změnil G-code in place. V manuálu případně " "dohledáte jak G-code po zpracování přejmenovat.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Post-processing skripty" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "&Náhled" @@ -8965,7 +8967,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Přednastavení s názvem \"%1%\" již existuje." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -8974,7 +8976,7 @@ msgstr "" "Kliknutím na toto tlačítko vyberete stejná nastavení pro pravé i levé " "přednastavení." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Přednastavení jsou shodná" @@ -9014,7 +9016,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Vyrovnávač tlaku (experimentální)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9035,7 +9037,7 @@ msgstr "" "průměru trysky." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Náhled" @@ -9043,7 +9045,7 @@ msgstr "Náhled" msgid "Preview hollowed and drilled model" msgstr "Náhled dutého modelu" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Dříve slicovaný soubor (" @@ -9055,7 +9057,7 @@ msgstr "Příprava všech tiskových extruderů" msgid "Print" msgstr "Tisk" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Fronta na&hrávání do tiskového serveru" @@ -9063,7 +9065,7 @@ msgstr "Fronta na&hrávání do tiskového serveru" msgid "Print Diameters" msgstr "Parametry extruderu" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Nahrávání do tiskového serveru" @@ -9102,15 +9104,15 @@ msgstr "Pauzy tisku" msgid "Print settings" msgstr "Nastavení tisku" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Rychlost tisku" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Přepsání rychlosti tisku" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Panel Nastav&ení tiskárny" @@ -9145,11 +9147,11 @@ msgstr "Nastavení tiskárny" msgid "Printer Settings Tab" msgstr "Panel Nastavení tiskárny" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Absolutní korekce tiskárny" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Gamma korekce tiskárny" @@ -9161,32 +9163,32 @@ msgstr "Poznámky o tiskárně" msgid "Printer preset names" msgstr "Názvy přednastavení tiskáren" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Korekce měřítka v ose X" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Korekce měřítka v ose Y" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Korekce měřítka v ose Z" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Korekce měřítka tisku" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Korekce měřítka v ose X" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Korekce měřítka v ose Y" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Korekce měřítka v ose Z" @@ -9233,7 +9235,7 @@ msgid "Process %1% / 100" msgstr "Zpracováno %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Zpracovávám %s" @@ -9247,9 +9249,9 @@ msgstr "" "Zpracování modelu '%1%' s více než milionem trojúhelníků může být pomalé. " "Doporučujeme snížit množství trojúhelníků." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Profilové závislosti" @@ -9341,7 +9343,7 @@ msgid "" "PrusaSlicer has encountered an error while taking a configuration snapshot." msgstr "PrusaSlicer narazil na chybu při pořizování zálohy konfigurace." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9460,15 +9462,15 @@ msgstr "Rychlé" msgid "Quick Add Settings (%s)" msgstr "Rychlé přidání nastavení (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Rychlé Slicování" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Rychlé Slicování a Uložit jako" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Ukončit %s" @@ -9537,7 +9539,7 @@ msgstr "Šířka linky při rapidní extruzi" msgid "Ramming parameters" msgstr "Parametry rapidní extruze" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Nastavení rapidní extruze" @@ -9557,8 +9559,8 @@ msgstr "Rozsah" msgid "Rasterizing layers" msgstr "Rasterizace vrstev" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Znovu &načíst z disku" @@ -9570,15 +9572,15 @@ msgstr "Přenastavit" msgid "Ready" msgstr "Připraveno" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Zezadu" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Pohled zezadu" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "N&edávné projekty" @@ -9621,7 +9623,7 @@ msgid "Rectilinear grid" msgstr "Přímočará mřížka" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Vpřed" @@ -9654,7 +9656,7 @@ msgstr "Obnovit tiskárny" msgid "Regular" msgstr "Obvyklý" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Regulární výraz" @@ -9704,9 +9706,9 @@ msgstr "Znovu načíst z:" msgid "Reload plater from disk" msgstr "Znovu načíst podložku z disku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Znovu načíst podložku z disku" @@ -9732,7 +9734,7 @@ msgid "Remember output directory" msgstr "Pamatovat si výstupní složku" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Odebrat" @@ -9859,11 +9861,11 @@ msgstr "" msgid "Render" msgstr "Render" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Vykreslování pomocí softwaru" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -9871,7 +9873,7 @@ msgstr "" "Vykreslení pomocí softwaru. Namísto výchozího ovladače OpenGL je načten " "dodaný softwarový renderer MESA." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Oprava" @@ -9903,11 +9905,11 @@ msgstr "Opravování modelu službou Netfabb" msgid "Repairing was canceled" msgstr "Oprava byla zrušena" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Opakovat poslední rychlé slicování" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Opakovat poslední rychlé slicování" @@ -9919,7 +9921,7 @@ msgstr "Nahradit z:" msgid "Replace the selected volume with new STL" msgstr "Nahradit vybraný objekt novým STL souborem" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Nahradit" @@ -9987,7 +9989,7 @@ msgstr "Výchozí měřítko" msgid "Reset selection" msgstr "Resetovat výběr" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Obnovit na barvu filamentu" @@ -10011,8 +10013,8 @@ msgstr "Délka retrakce před očištěním" msgid "Retract on layer change" msgstr "Retrakce při změně vrstvy" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retrakce" @@ -10035,7 +10037,7 @@ msgstr "" "Retrakce není spuštěna, pokud jsou rychloposuny pojezdu kratší než tato " "délka." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10067,15 +10069,15 @@ msgstr "Vrátit převod z metrů" msgid "Review the substitutions and adjust them if needed." msgstr "Zkontrolujte náhrady a případně je upravte." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Zprava" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Hodnota pravého přednastavení" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Pohled zprava" @@ -10112,15 +10114,15 @@ msgstr "Pravé tlačítko myši:" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Otočit" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Otočit okolo osy X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Otočit okolo osy Y" @@ -10148,15 +10150,15 @@ msgstr "" msgid "Rotation" msgstr "Otáčení" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Úhel otočení kolem osy X ve stupních." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Úhel otočení kolem osy Y ve stupních." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Úhel otočení kolem osy Z ve stupních." @@ -10174,11 +10176,11 @@ msgstr "Spustit %s" msgid "Running post-processing scripts" msgstr "Vykonávají se postprodukční skripty" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "Od&eslat G-code" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Od&eslat do tiskárny" @@ -10208,7 +10210,7 @@ msgstr "Klávesové zkratky pro SLA gizma" msgid "SLA material" msgstr "SLA materiál" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Typ SLA materiálu" @@ -10220,7 +10222,7 @@ msgstr "SLA materiály" msgid "SLA print" msgstr "SLA tisk" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Poznámky pro SLA materiál" @@ -10232,7 +10234,7 @@ msgstr "Nastavení SLA tisku" msgid "SLA supports outside the print area were detected." msgstr "Byly zjištěny SLA podpěry mimo tiskovou oblast." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10251,7 +10253,7 @@ msgstr "Uložit" msgid "Save %s as:" msgstr "Uložit %s jako:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Uložit %s soubor jako:" @@ -10260,11 +10262,11 @@ msgstr "Uložit %s soubor jako:" msgid "Save G-code file as:" msgstr "Uložit G-code jako:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Uložit soubor OBJ (méně náchylný na chyby souřadnic než STL) jako:" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Uložit Projekt j&ako" @@ -10272,15 +10274,15 @@ msgstr "Uložit Projekt j&ako" msgid "Save SL1 / SL1S file as:" msgstr "Uložit SL1 / SL1S soubor jako:" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Uložit konfigurační soubor" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Uložit konfiguraci jako:" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Uložit konfiguraci do zadaného souboru." @@ -10290,11 +10292,11 @@ msgstr "Uložit konfiguraci do zadaného souboru." msgid "Save current %s" msgstr "Uložit stávající %s" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Uložit stávající projekt" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Uložit stávající projekt jako" @@ -10307,7 +10309,7 @@ msgstr "Uložit soubor jako:" msgid "Save preset" msgstr "Uložit přednastavení" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Uložit balík přednastavení jako:" @@ -10336,7 +10338,7 @@ msgstr "Uloží vybraná nastaneví do přednastavení \"%1%\"." msgid "Save the selected options." msgstr "Uložte vybrané možnosti." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Uložit ZIP soubor jako:" @@ -10350,7 +10352,7 @@ msgstr "Ukládání meshe do 3MF kontejneru selhalo." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Měřítko" @@ -10368,11 +10370,11 @@ msgstr "" "Přizpůsobit měřítko vybraného objektu, aby se objekt vešel do tiksového " "objemu" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Vyplnit tiskový objem" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Změnit velikost, aby se objekt vešel do zadaného tiskového prostoru." @@ -10380,7 +10382,7 @@ msgstr "Změnit velikost, aby se objekt vešel do zadaného tiskového prostoru. msgid "Scale to print volume" msgstr "Změnit velikost podle tiskového objemu" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Procentuální měřítko." @@ -10411,7 +10413,7 @@ msgstr "Seam preferred direction jitter" msgid "Seams" msgstr "Švy" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Vy&hledávání" @@ -10435,7 +10437,7 @@ msgstr "" msgid "Search in English" msgstr "Hledat v angličtině" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Vyhledávání v nastavení" @@ -10522,7 +10524,7 @@ msgstr "Vyberte jak chcete na soubor otevřít" msgid "Select by rectangle" msgstr "Označit obdélníkovým výběrem myši" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Zvolte konfiguraci k načtení:" @@ -10530,7 +10532,7 @@ msgstr "Zvolte konfiguraci k načtení:" msgid "Select coordinate space, in which the transformation will be performed." msgstr "Vyberte souřadnicový prostor, ve kterém bude provedena transformace." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Zvolte přednastavení k porovnání" @@ -10542,7 +10544,7 @@ msgstr "Vyberte tvar z galerie" msgid "Select showing settings" msgstr "Zvolte nastavení zobrazení" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Vyberte STL soubor k opravě:" @@ -10626,7 +10628,7 @@ msgstr "Výběr - Odebrání v seznamu" msgid "Selection-Remove from rectangle" msgstr "Výběr - Odebrání obdélníkovým výběrem" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Vybrat všechny objekty" @@ -10643,7 +10645,7 @@ msgstr "Odeslat G-code" msgid "Send system info" msgstr "Odeslat systémové informace" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Odeslat k tisku stávající plochu jako G-code" @@ -10667,7 +10669,7 @@ msgstr "Odesílání systémových informací..." msgid "Seq." msgstr "Sekv." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Sekvenční tisk" @@ -10683,7 +10685,7 @@ msgstr "Sériový port:" msgid "Service name" msgstr "Název služby" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Nastavit" @@ -10810,7 +10812,7 @@ msgstr "Nastavení vybraných položek jako tisknuté/netisknuté" msgid "Set settings tabs as menu items (experimental)" msgstr "Karty s nastavením zobrazovat jako položky v menu (experimentální)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -10965,7 +10967,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Nastavit horní ukazatel jako aktivní" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -10976,7 +10978,7 @@ msgstr "" "Například. loglevel=2 zaznamenává fatální chyby, chyby a varovné zprávy." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Nastavení" @@ -11025,7 +11027,7 @@ msgstr "Mám synchronizovat vrstvy podpěr, aby bylo možné zapnout Čistící msgid "Shape" msgstr "Tvar" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galerie Tvarů" @@ -11076,7 +11078,7 @@ msgstr "Zobrazovat \"Tip dne\" po spuštění" msgid "Show &Configuration Folder" msgstr "Otevřít adresář s &konfiguracemi" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Zobrazit &Popisky" @@ -11092,7 +11094,7 @@ msgstr "Zobrazit okno o Slic3ru" msgid "Show advanced settings" msgstr "Zobrazit rozšířená nastavení" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Zobrazit všechna přednastavení (včetně nekompatibilních)" @@ -11132,7 +11134,7 @@ msgstr "Zobrazit výšku objektu" msgid "Show object height on the ruler" msgstr "Zobrazit výšku objektu na pravítku" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Zobrazit popisky objektů / instancí ve 3D scéně" @@ -11160,43 +11162,43 @@ msgstr "Zobrazit podpěry" msgid "Show system information" msgstr "Zobrazit systémové informace" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Zobrazit 3D editaci" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Zobrazit 3D náhled vrstev" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Zobrazit nastavení filamentu" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Zobrazit kompletní seznam možností konfigurace SLA tisku." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Zobrazit kompletní seznam možností konfigurace tisku / G-codu." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Zobrazit seznam klávesových zkratek" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Zobrazit podložku" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Zobrazit nastavení tisku" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Zobrazit nastavení tiskárny" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Zobrazí tuto nápovědu." @@ -11281,7 +11283,7 @@ msgstr "Zjednodušit model" msgid "Single Extruder Multi Material" msgstr "MultiMaterial tisk s jedním extrudérem" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11293,15 +11295,15 @@ msgstr "" "Chcete nastavit průměry všech extruderových trysek podle průměru prvního " "extruderu?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Nastavení jednoho extruderu MM" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parametry jednoho multi materiálového extruderu" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Režim jedné instance" @@ -11320,7 +11322,7 @@ msgstr "Velikost" msgid "Size" msgstr "Rozměr" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Rozměry a počátek" @@ -11389,15 +11391,15 @@ msgstr "" msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r nebude měnit rychlost pod tuto rychlost." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Slicovat" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Slicovat soubor do G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Slicovat soubor do G-code, uložit jako" @@ -11414,15 +11416,15 @@ msgstr "Slicovat" msgid "Slice resolution" msgstr "Rozlišení slicování" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Naslicuje model a exportuje SLA tiskové vrstvy jako PNG soubory." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Naslicujte model a exportujte trasy jako G-code." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11439,13 +11441,13 @@ msgstr "Informace o slicování" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "Slicovaný objekt \"%1%\" vypadá jako logo nebo nápis" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Slicování" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Slicování dokončeno!" @@ -11481,7 +11483,7 @@ msgstr "Slicuji model" msgid "Slicing supports" msgstr "Slicování podpěr" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Pomalý" @@ -11489,7 +11491,7 @@ msgstr "Pomalý" msgid "Slow down if layer print time is below" msgstr "Zpomalit tisk pokud je doba tisku kratší než" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Pomalý náklon" @@ -11497,7 +11499,7 @@ msgstr "Pomalý náklon" msgid "Small perimeters" msgstr "Malé perimetry" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Procentní průměr malých pilířů" @@ -11594,7 +11596,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Některé SLA materiály byly odinstalovány." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11619,7 +11621,7 @@ msgid "" msgstr "" "Některé objekty jsou příliš vysoké a nelze je tisknout bez kolizí extruderu." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11637,7 +11639,7 @@ msgstr "" "Některá přednastavení jsou upravená a neuložené změny nebudou zachyceny v " "záloze konfigurace." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -11823,7 +11825,7 @@ msgid "Spiral vase" msgstr "Spirálová váza" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Rozdělit" @@ -11888,13 +11890,13 @@ msgstr "Běžné" msgid "Stars" msgstr "Hvězdy" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Začátek G-code" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Vytvořit nový projekt" @@ -11902,7 +11904,7 @@ msgstr "Vytvořit nový projekt" msgid "Start at height" msgstr "Začít ve výšce" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Zahájit nový slicovací proces" @@ -11952,7 +11954,7 @@ msgid "Status:" msgstr "Stav:" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Tichý" @@ -12011,19 +12013,19 @@ msgstr "Vynucení podpěr" msgid "Support Generator" msgstr "Generátor Podpěr" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Průměr podpěrné základny" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Výška podpěrné základny" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Bezpečná vzdálenost podpěrné základny" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Hrot podpěry" @@ -12077,7 +12079,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Extruder pro podpěry/raft/obrys" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Pouze na tiskové podložce" @@ -12085,12 +12087,12 @@ msgstr "Pouze na tiskové podložce" msgid "Support parameter change" msgstr "Změna nastavení podpěr" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Podpěrný pilíř" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Hustota podpěrných bodů" @@ -12099,16 +12101,16 @@ msgid "Support points edit" msgstr "Úprava podpěrných bodů" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Podpěry" @@ -12262,7 +12264,7 @@ msgstr "Pořizování konfiguračního snapshotu" msgid "Taking a configuration snapshot failed." msgstr "Pořizování konfiguračního snapshotu selhalo." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Teplota" @@ -12288,7 +12290,7 @@ msgstr "Kolísání teploty" msgid "Temperatures" msgstr "Teploty" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Šablona s vlastním G-code" @@ -12443,7 +12445,7 @@ msgstr "" "Čistící věž je při více objektech možná pouze v případě, že objekty mají " "všechny vrstvy stejné výšky" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12500,7 +12502,7 @@ msgstr "" "pouze tehdy, když je informace o rotacích zapsána do koordinátů daného " "objektu." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "Výchozí úhel pro připojení nosných tyčí a spojek." @@ -12617,7 +12619,7 @@ msgstr "Typ filamentu pro použití ve vlastních G-code." msgid "The file does not exist." msgstr "Soubor neexistuje." -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12649,7 +12651,7 @@ msgstr "Následující modely SLA tiskáren nemají vybrané žádné materiály msgid "The following characters are not allowed by a FAT file system:" msgstr "Následující znaky nejsou v souborovém systému FAT povoleny:" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12718,7 +12720,7 @@ msgstr "" msgid "The following values were substituted:" msgstr "Byly nahrazeny následující hodnoty:" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -12726,7 +12728,7 @@ msgstr "" "Mezera mezi spodkem objektu a generovanou podložkou v režimu nulového " "nadzvednutí." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Výška ukotvení podpěrného kužele" @@ -12764,7 +12766,7 @@ msgstr "Poslední změny barev byly uloženy pro tisk s více extrudery." msgid "The last color change data was saved for a single extruder printing." msgstr "Poslední změny barev byly uloženy pro tisk s jedním extruderem." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -12772,7 +12774,7 @@ msgstr "" "Maximální vzdálenost dvou podpůrných pilířů pro vzájemné provázání. Nulová " "hodnota zakáže provazování." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Maximální délka přemostění" @@ -12796,7 +12798,7 @@ msgstr "" "Maximální vzdálenost, o kterou může být každý bod pláště posunut (oběma " "směry), měřeno kolmo k obvodové stěně." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -12831,7 +12833,7 @@ msgstr "" "bottom_solid_layers, je-li to nutné k dosažení minimální tloušťky spodní " "skořepiny." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -12872,7 +12874,7 @@ msgstr "" "Objekt se zvýší tímto počtem vrstev a pod ním bude vytvořen podpůrný " "materiál." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -12881,7 +12883,7 @@ msgstr "" "pilířů. Menší pilíře jsou použity v problematických místech, kam se normální " "nevejdou." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -12891,7 +12893,7 @@ msgstr "" "Pokud tisk zabere více než je zadaná hodnota,\n" "bude použit pomalý náklon. V ostatních případech bude použit rychlý náklon" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -12909,7 +12911,7 @@ msgstr[3] "" "Níže uvedené fyzické tiskárny jsou založeny na přednastavení, které se " "chystáte odstranit." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -12983,7 +12985,7 @@ msgstr "Zadaný název je neplatný." msgid "The provided name is not valid;" msgstr "Zadaný název není platný;" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -12991,7 +12993,7 @@ msgstr "" "Vybraný 3MF soubor obsahuje objekt s namalovanými podpěrami novější verze " "PrusaSliceru a proto není kompatibilní." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -12999,7 +13001,7 @@ msgstr "" "Vybraný 3MF soubor obsahuje objekt multimateriálovým malováním pomocí " "novější verze PrusaSliceru a proto není kompatibilní." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13007,7 +13009,7 @@ msgstr "" "Vybraný 3MF soubor obsahuje objekt s namalovaný švem pomocí novější verze " "PrusaSliceru a proto není kompatibilní." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13048,7 +13050,7 @@ msgid "" msgstr "" "Vybraný objekt nebylo možné rozdělit, protože obsahuje pouze jednu část." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13083,7 +13085,7 @@ msgstr "Velikost objektu lze určit v palcích" msgid "The size of the object is zero" msgstr "Velikost objektu je nulová" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13155,7 +13157,7 @@ msgstr "Zadaný název není platný;" msgid "The supplied settings will cause an empty print." msgstr "Zadané nastavení způsobí prázdný tisk." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Tloušťka podložky a její volitelné duté stěny." @@ -13543,11 +13545,11 @@ msgstr "" msgid "This is a default preset." msgstr "Toto je výchozí přednastavení." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Relativní míra hustoty podpěrných bodů." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13560,7 +13562,7 @@ msgid "This is a system preset." msgstr "Toto je systémové přednastavení." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Toto je v Slic3ru jako názorná pomoc." @@ -13865,7 +13867,7 @@ msgstr "" "spustit výchozí konfiguraci. Před instalací kompatibilního nastavení s touto " "verzí %s dojde k vytvoření zálohy současné konfigurace." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -13877,7 +13879,7 @@ msgstr "" "například rozšířit seznam podporovaných druhů firmwaru. Lze se rozhodnout, " "že to budeme ignorovat, nebo že neznámou hodnotu nahradíme výchozí hodnotou." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -13899,15 +13901,15 @@ msgstr "" "Vlákna jsou používána pro paralelizaci časově náročnějších úloh. Optimální " "počet vláken je mírně nad počtem dostupných jader/procesorů." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Náklon" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Tilt pro resin s vysokou viskozitou" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Doba náklonu" @@ -13936,15 +13938,15 @@ msgstr "" "filament během jeho výměny (při provádění kódu T). Tento čas je přidán k " "celkové době tisku pomocí G-code odhadovače tiskového času." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Doba trvání rychlého náklonu" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Doba trvání pomalého náklonu" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Čas super pomalého náklonu" @@ -14006,7 +14008,7 @@ msgstr "Nástroj" msgid "Tool #" msgstr "Nástroj #" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-code pro výměnu nástroje" @@ -14028,7 +14030,7 @@ msgstr "Poloha nástroje" msgid "Tool type" msgstr "Typ nástroje" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametry při výměně (Multi Material s jedním extruderem)" @@ -14051,7 +14053,7 @@ msgstr "" "Nápověda pro tloušťku vrchní / spodní skořepiny: Není k dipozici z důvodu " "neplatné výšky vrstvy." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Pohled svrchu" @@ -14144,7 +14146,7 @@ msgstr "Rychloposun" msgid "Triangles" msgstr "Trojúhelníky" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14165,11 +14167,11 @@ msgstr "Typ tiskárny." msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "ODEMČENÝ ZÁMEK" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14181,7 +14183,7 @@ msgstr "" "Klikněte pro reset všech nastavení aktuální skupiny nastavení na systémové " "hodnoty." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14222,11 +14224,11 @@ msgstr "Nelze nahradit více než jednou částí" msgid "Undef" msgstr "Nedefinováno" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Nedefinovaná kategorie" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Nedefinovaná skupina" @@ -14240,7 +14242,7 @@ msgstr "Podtečení" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Zpět" @@ -14437,7 +14439,7 @@ msgstr "Scéna v režimu „free camera“" msgid "Use inches" msgstr "Používat palce" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Použít podložku" @@ -14526,11 +14528,11 @@ msgstr "" "Hodnota byla změněna a není shodná se systémovou hodnotou nebo naposled " "uloženým přednastavením" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Hodnoty v tomto sloupci jsou pro Normální režim" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Hodnoty v tomto sloupci jsou pro Tichý režim" @@ -14575,7 +14577,7 @@ msgstr "Výrobce:" msgid "Verbose G-code" msgstr "Komentáře do G-code" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Verze" @@ -14620,7 +14622,7 @@ msgid "" "to changes your choice." msgstr "Pro změnu předvolby jděte do Nastavení a zaškrtněte \"%1%\"." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Vizualizuje již naslicovaný a uložený G-code" @@ -14645,7 +14647,7 @@ msgstr "Změna pořadí Těles v Objektu" msgid "Volumetric" msgstr "Volumetrický" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Doporučení pro objemový průtok nejsou k dispozici" @@ -14668,16 +14670,16 @@ msgstr "Objemová rychlost" msgid "WARNING:" msgstr "VAROVÁNÍ:" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "BÍLÁ TEČKA" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "Ikona BÍLÉ TEČKY indikuje nesystémové (nebo jiné než výchozí) přednastavení." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14685,7 +14687,7 @@ msgstr "" "Ikona BÍLÉ TEČKY indikuje, že nastavení jsou shodná s naposledy uloženým " "přednastavením pro danou skupinu nastavení." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14693,7 +14695,7 @@ msgstr "" "Ikona BÍLÉ TEČKY indikuje, že je hodnota shodná s naposledy uloženým " "přednastavením." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Tloušťka stěny" @@ -14847,7 +14849,7 @@ msgstr "" "Když je retrakce kompenzována po rychloposunu, extruder vytlačuje toto další " "množství filamentu. Toto nastavení je zřídkakdy potřeba." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14862,16 +14864,19 @@ msgstr "" "perimetrů, ale mohou vzniknout mezery nebo vytlačení nadbytečného množství " "materiálu." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" "Při přechodu mezi různými počty perimetrů se ztenčujícím se dílem, je " -"vyhrazen určitý prostor pro rozdělení nebo spojení perimetrů." +"vyhrazen určitý prostor pro rozdělení nebo spojení perimetrů. Pokud je " +"vyjádřeno v procentech (například 100%), bude vypočítáno na základě průměru " +"trysky." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Celé slovo" @@ -14883,7 +14888,7 @@ msgstr "Šířka" msgid "Width (mm)" msgstr "Šířka (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Šířka od středu zadní koule ke středu přední koule" @@ -14891,16 +14896,16 @@ msgstr "Šířka od středu zadní koule ke středu přední koule" msgid "Width of a wipe tower" msgstr "Šířka čistící věže" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Šířka spojek, které spojují objekt s vygenerovanou podložkou." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Šířka displeje" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14913,7 +14918,7 @@ msgstr "" "perimetr stejně tlustý jako samotný prvek. Je-li vyjádřené procentuálně " "(například 85%), bude vypočteno v závislosti na průměru trysky." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14958,7 +14963,7 @@ msgstr "Čistící věž - Úprava objemu čištění" msgid "Wipe tower brim width" msgstr "Šířka límce čistící věže" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Parametry čistící věže" @@ -15023,7 +15028,7 @@ msgstr "" "\n" "Aktualizované balíčky nastavení:" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Vypsat informace o modelu do konsole." @@ -15109,7 +15114,7 @@ msgstr "" "Zde můžete zadat své osobní poznámky. Tento text bude přidán do komentáře " "záhlaví G code." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Zde můžete vkládat své poznámky týkající se tiskového materiálu SLA." @@ -15268,7 +15273,7 @@ msgstr "" "Vaše aktuálně provedené změny odstraní všechny uložené změny extruderu " "(nástroje)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Váš soubor byl opraven." @@ -15306,7 +15311,7 @@ msgstr "Odsazení Z" msgid "Z travel" msgstr "Posun v ose Z" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" @@ -15426,7 +15431,7 @@ msgstr "výchozí tiskový profil" msgid "default value" msgstr "výchozí hodnota" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "smazat" @@ -15504,7 +15509,7 @@ msgid "flow rate is maximized" msgstr "průtok je maximalizován" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15528,7 +15533,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15545,7 +15550,7 @@ msgid "in" msgstr "in" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15558,7 +15563,7 @@ msgstr "" "skupiny nastavení na systémové (nebo výchozí) hodnoty." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15567,7 +15572,7 @@ msgstr "" "aktuální skupinu nastavení" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15604,11 +15609,11 @@ msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "je založen na Slic3r od Alessandra Ranellucciho a RepRap komunity." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "je licencován pod" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15632,7 +15637,7 @@ msgstr "max PrusaSlicer verze" msgid "min PrusaSlicer version" msgstr "min PrusaSlicer verze" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -15672,19 +15677,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -15698,8 +15702,9 @@ msgstr "mm (nula pro vypnutí)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm nebo %" @@ -15761,7 +15766,7 @@ msgstr "model" msgid "modified" msgstr "upraveno" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "cena/láhev" @@ -15821,7 +15826,7 @@ msgstr "tiskárna" msgid "printer model" msgstr "model tiskárny" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "odebrat" @@ -15842,11 +15847,11 @@ msgstr "vyžaduje min. %s a max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -15969,8 +15974,8 @@ msgstr "zpětné volání se nezdařilo" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/de/PrusaSlicer.mo b/resources/localization/de/PrusaSlicer.mo index 88f7804b23ff6638c08d91326021f52edb50b50a..1c5ad938444df22953db61e087c036f6cbad2cc4 100644 GIT binary patch delta 98228 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 delta 98065 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 b7#4wWcVtJ)c2HP!SD}hZ-hC@eiMsy}&#LpC diff --git a/resources/localization/de/PrusaSlicer_de.po b/resources/localization/de/PrusaSlicer_de.po index 39157cf86..91fadfbd9 100644 --- a/resources/localization/de/PrusaSlicer_de.po +++ b/resources/localization/de/PrusaSlicer_de.po @@ -7,7 +7,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -36,9 +36,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -127,7 +126,7 @@ msgstr[0] "%1% (%2$d Wand)" msgstr[1] "%1% (%2$d Wände)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Voreinstellung" @@ -146,7 +145,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%1% wurde durch %2% ersetzt" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% wurde erfolgreich gesliced." @@ -168,7 +167,7 @@ msgstr "%3.2f mm³/s mit einer Filamentgeschwindigkeit von %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d Linien: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d Voreinstellungen erfolgreich importiert." @@ -343,7 +342,7 @@ msgstr "" msgid "&About %s" msgstr "Ü&ber %s" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Seitenleiste s&chließen" @@ -355,27 +354,27 @@ msgstr "&Konfiguration" msgid "&Configuration Snapshots" msgstr "Konfi&gurations-Momentaufnahmen" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Kopieren" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Löschen ausgewählte (&D)" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Bearbeiten" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Export" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&Filamenteinstellungen" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Datei" @@ -383,19 +382,19 @@ msgstr "&Datei" msgid "&Finish" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "Vollbild (&F)" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "&G-Code-Vorschau" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Hilfe" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Import" @@ -403,7 +402,7 @@ msgstr "&Import" msgid "&Language" msgstr "Sp&rache" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Neues Projekt" @@ -411,19 +410,19 @@ msgstr "&Neues Projekt" msgid "&Next >" msgstr "&Weiter >" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "Öffne G-C&ode" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Pr&ojekt öffnen" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Ei&nfügen" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Druck&platte" @@ -431,35 +430,35 @@ msgstr "Druck&platte" msgid "&Preferences" msgstr "&Einstellungen" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&Beenden" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Redo" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "STL-Datei &reparieren" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "Projekt &sichern" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Alle&s auswählen" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Undo" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Anzeige" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Fenster" @@ -468,7 +467,7 @@ msgstr "&Fenster" msgid "(All)" msgstr "(Alles)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Slice jet&zt" @@ -480,7 +479,7 @@ msgstr "(Re)Slice" msgid "(Some lines not shown)" msgstr "(Einige Zeilen nicht gezeigt)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Unbekannt)" @@ -492,7 +491,7 @@ msgstr "(einschließlich Spule)" msgid "(minimum)" msgstr "(Minimum)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") nicht gefunden." @@ -548,7 +547,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (schwer)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -637,7 +636,7 @@ msgstr "" "Ein Daumenwert ist 60 °C für PLA und 110 °C für ABS. Auf 0 setzen, falls " "kein beheiztes Druckbett vorhanden ist." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -664,7 +663,7 @@ msgstr "API Key" msgid "Abort" msgstr "Abbruch" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Über %s" @@ -681,7 +680,7 @@ msgstr "Beschleunigungskontrolle (fortgeschritten)" msgid "Access violation" msgstr "Zugriffsverletzung" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Genauigkeit" @@ -721,7 +720,7 @@ msgstr "" "Stütz kubisch verwenden können, um die Druckzeit zu verkürzen und den " "Filamentverbrauch zu senken? Lesen Sie mehr in der Dokumentation." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Hinzufügen" @@ -786,7 +785,7 @@ msgstr "Form aus Galerie hinzufügen" msgid "Add Shapes from Gallery" msgstr "Formen aus Galerie hinzufügen" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Fügt eine Grundschicht unter das gestützte Modell" @@ -904,7 +903,7 @@ msgid "Add pause print" msgstr "Druckpause hinzufügen" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Physischen Drucker hinzufügen" @@ -1005,22 +1004,16 @@ msgstr "Adresse" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 -msgid "Advanced" -msgstr "Erweiterte Einstellungen" - -#: src/slic3r/GUI/GUI_App.cpp:2239 src/slic3r/GUI/wxExtensions.cpp:710 -msgctxt "Mode" +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Erweitert" @@ -1051,16 +1044,16 @@ msgstr "" "Materialmenge in den Wischturm leiten, um aufeinanderfolgende Füll- oder " "Opferobjekt-Extrusionen zuverlässig herzustellen." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-Code am Schichtende" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Ausrichten von XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Das Modell auf den angegebenen Punkt ausrichten." @@ -1073,7 +1066,7 @@ msgid "Aligned Rectilinear" msgstr "Ausgerichtet Geradlinig" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Alle" @@ -1275,7 +1268,7 @@ msgstr "Farbwechsel automatisch anwenden" msgid "Apply to all the remaining small objects being loaded." msgstr "Anwenden auf alle verbleibenden kleinen Objekte, die geladen werden." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1287,7 +1280,7 @@ msgstr "Arachne Umfangsgenerator" msgid "Archimedean Chords" msgstr "Archimedische Bögen" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Sind Sie sicher, dass Sie die gewählte Voreinstellung %1% möchten?" @@ -1304,7 +1297,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "Sind Sie sicher, dass Sie weitermachen wollen?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1318,7 +1311,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "Sind Sie sicher, dass Sie den Drucker \"%1%\" löschen möchten?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Sind Sie sicher, dass Sie alle Ersetzungen löschen möchten?" @@ -1326,7 +1319,7 @@ msgstr "Sind Sie sicher, dass Sie alle Ersetzungen löschen möchten?" msgid "Are you sure you want to do it?" msgstr "Sind Sie sicher, dass Sie es tun wollen?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Bereichsfüllung" @@ -1358,7 +1351,7 @@ msgstr "" "a>klicken können, um die Größe des Abstands zwischen den Objekten anzupassen " "und automatische Drehungen zu ermöglichen?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1514,7 +1507,7 @@ msgstr "Stützpunkte automatisch generieren" msgid "Autogeneration will erase all manually edited points." msgstr "Die automatische Generierung löscht alle manuell bearbeiteten Punkte." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Automatische Erzeugung" @@ -1522,7 +1515,7 @@ msgstr "Automatische Erzeugung" msgid "Automatic updates" msgstr "Automatische Updates" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Repariere automatisch die STL Datei" @@ -1538,11 +1531,11 @@ msgstr "Kreuzen der Kontur vermeiden" msgid "Avoid crossing perimeters - Max detour length" msgstr "Kreuzen von Perimetern Vermeiden - Maximale Umleitungslänge" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "PFEIL ZURÜCK" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1554,7 +1547,7 @@ msgstr "" "übereinstimmen. Klicken Sie hier, um alle Einstellungen für die aktuelle " "Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1569,7 +1562,7 @@ msgstr "" msgid "Background processing" msgstr "Hintergrundberechnung" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Verhalten bei unbekannten Konfigurationswerten" @@ -1577,7 +1570,7 @@ msgstr "Verhalten bei unbekannten Konfigurationswerten" msgid "Balanced" msgstr "Balanziert" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Druckbett" @@ -1626,7 +1619,7 @@ msgstr "" "Wert auf null, um die Befehle zur Steuerung der Betttemperatur im Output zu " "deaktivieren." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-Code vor dem Schichtwechsel" @@ -1651,7 +1644,7 @@ msgstr "Beste Oberflächenqualität" msgid "Between objects G-code" msgstr "G-Code zwischen Objekten" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-Code zwischen Objekten (Sequentielles Drucken)" @@ -1673,11 +1666,11 @@ msgstr "Stützen blockieren" msgid "Block supports by angle" msgstr "Stützen nach Winkel blockieren" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Flaschenvolumen" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Flaschengewicht" @@ -1694,7 +1687,7 @@ msgstr "Boden" msgid "Bottom" msgstr "Unten" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Ansicht von unten" @@ -1975,8 +1968,8 @@ msgstr "" "Ohne Stützpunkte kann nicht weitergearbeitet werden! Fügen Sie Stützpunkte " "hinzu oder deaktivieren Sie die Stützen-Generierung." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Fähigkeiten" @@ -1984,7 +1977,7 @@ msgstr "Fähigkeiten" msgid "Capture a configuration snapshot" msgstr "Erfassen einer Konfigurations-Momentaufnahme" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Groß- und Kleinschreibung wird nicht berücksichtigt" @@ -1992,11 +1985,11 @@ msgstr "Groß- und Kleinschreibung wird nicht berücksichtigt" msgid "Category" msgstr "Kategorie" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Mitte" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Zentriert den Druck um den angegebenen Mittelpunkt." @@ -2104,7 +2097,7 @@ msgstr "" "Wählen Sie eine Datei aus, aus der Sie die Druckbetttextur importieren " "möchten (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wählen Sie eine Datei zum Slicen (STL/OBJ/AMF/3MF/PRUSA):" @@ -2154,7 +2147,7 @@ msgstr "Kreis" msgid "Circular" msgstr "Kreisförmig" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Klassisch" @@ -2162,11 +2155,14 @@ msgstr "Klassisch" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" -"Der klassische Umfangsgenerator erzeugt Umfänge mit konstanter " -"Extrusionsbreite und für sehr dünne Bereiche wird Lückenfüller verwendet. " -"Die Arachne-Engine erzeugt Umfänge mit variabler Extrusionsbreite." +"Der klassische Perimetergenerator erzeugt Perimeter mit konstanter " +"Extrusionsbreite und für sehr dünne Bereiche wird der Lückenfüller " +"verwendet. Die Arachne-Engine erzeugt Konturen mit variabler " +"Extrusionsbreite. Diese Einstellung wirkt sich auch auf die Konzentrische " +"Füllung aus." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2248,7 +2244,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "PrusaSlicer schließen. Das aktuelle Projekt wurde geändert." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Schliessabstand" @@ -2256,7 +2252,7 @@ msgstr "Schliessabstand" msgid "Closing radius" msgstr "Schließradius" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Seitenleiste zuklappen" @@ -2264,11 +2260,11 @@ msgstr "Seitenleiste zuklappen" msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/ausklappen" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Farbe" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-Code für Farbwechsel" @@ -2332,12 +2328,12 @@ msgstr "Befehle" msgid "Comment:" msgstr "Kommentar:" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Voreinstellungen vergleichen" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Voreinstellungen vergleichen" @@ -2345,7 +2341,7 @@ msgstr "Voreinstellungen vergleichen" msgid "Compare this preset with some another" msgstr "Diese Voreinstellung mit einer anderen vergleichen" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Verglichene Voreinstellungen haben unterschiedliche Druckertechnologie" @@ -2516,7 +2512,7 @@ msgstr "" "infill_anchor begrenzt, aber nicht länger als dieser Parameter. Setzen Sie " "diesen Parameter auf Null, um die Verankerung zu deaktivieren." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Verbindung von Stützstäben und Verbindungen" @@ -2574,7 +2570,7 @@ msgstr "Fortfahren und Konfigurationsupdates installieren?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "Aktivierung eines Konfigurations-Snapshots %1% fortsetzen?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2592,7 +2588,7 @@ msgstr "" "Beiträge von Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik und zahlreichen anderen." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2610,7 +2606,7 @@ msgstr "Von imperialen Einheiten umrechnen" msgid "Convert from meters" msgstr "Umrechnen von Meter" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Kühlung" @@ -2622,7 +2618,7 @@ msgstr "Kühlbewegungen beschleunigen von dieser Anfangsgeschwindigkeit aus." msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Kühlbewegungen beschleunigen auf diese Geschwindigkeit hin." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Kühlungsschwellwerte" @@ -2651,7 +2647,7 @@ msgstr "Kopieren" msgid "Copy Version Info" msgstr "Versionsinfo kopieren" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Auswahl in Zwischenablage kopieren" @@ -2716,32 +2712,32 @@ msgstr "" "versuchen Sie erneut zu exportieren oder ein anderes Gerät zu verwenden. Der " "beschädigte Ausgabe-G-Code liegt in %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Urheberrecht" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Korrektur der Ausdehnung" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Korrektur der Ausdehnung in der X-Achse" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Korrektur der Ausdehnung in der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Korrektur der Ausdehnung in der Z-Achse" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Korrekturen" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Kosten" @@ -2818,7 +2814,7 @@ msgstr "" "endgültige Druckauflösung verringern, daher ist es ratsam, den Wert relativ " "niedrig zu halten." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" "Erstellt eine Grundschicht um das Objekt herum und ignoriert die " @@ -2839,7 +2835,7 @@ msgid "Creating a new project while the current project is modified." msgstr "" "Erstellen eines neuen Projekts, während das aktuelle Projekt geändert wurde." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kritischer Winkel" @@ -2847,7 +2843,7 @@ msgstr "Kritischer Winkel" msgid "Critical error" msgstr "Kritischer Fehler" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Kreuz" @@ -2894,8 +2890,8 @@ msgstr "" "standardmäßige Zertifikatsverzeichnis der Betriebssystem-" "Zertifizierungsstelle verwendet." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Benutzerdefinierter G-Code" @@ -2939,7 +2935,7 @@ msgid "Custom template (\"%1%\")" msgstr "Benutzerdefinierte Vorlage (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Schneiden" @@ -2947,7 +2943,7 @@ msgstr "Schneiden" msgid "Cut by Plane" msgstr "Schneiden durch Ebene" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Schneidet Modell am gegebenen Z-Wert." @@ -2955,7 +2951,7 @@ msgstr "Schneidet Modell am gegebenen Z-Wert." msgid "Cylinder" msgstr "Zylinder" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "All&es Abwählen" @@ -2963,7 +2959,7 @@ msgstr "All&es Abwählen" msgid "Dark mode (experimental)" msgstr "Dunkler Modus (experimentell)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Datenverzeichnis" @@ -2989,7 +2985,7 @@ msgstr "Kopien verringern" msgid "Default" msgstr "Standard" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Standard-SLA-Materialprofil" @@ -3028,8 +3024,8 @@ msgstr "" msgid "Default print profile" msgstr "Standard-Druckprofil" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3042,7 +3038,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Benutzerdefiniertes Druckerprofil definieren" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3060,11 +3056,11 @@ msgstr "Verzögerung nach dem Entladen" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Löschen" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "&Alles löschen" @@ -3118,7 +3114,7 @@ msgid "Delete Subobject" msgstr "Subobjekt löschen" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Alle löschen" @@ -3176,16 +3172,16 @@ msgstr "Häkchen löschen - Linksklick oder Taste \"-\" drücken" msgid "Delete tool change" msgstr "Werkzeugwechsel löschen" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Löscht alle Objekte" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Löscht die aktuelle Auswahl" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Dichte" @@ -3197,9 +3193,9 @@ msgstr "Infilldichte. Als Prozentwert von 0% - 100% ausgedrückt." msgid "Density of the first raft or support layer." msgstr "Dichte des ersten Raft- oder Stützschicht." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Abhängigkeiten" @@ -3223,7 +3219,7 @@ msgstr "Alles abwählen" msgid "Deselect by rectangle" msgstr "Abwahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Alle Objekte abwählen" @@ -3259,7 +3255,7 @@ msgstr "Lösen von der Systemvoreinstellung" msgid "Detach preset" msgstr "Lösen der Voreinstellugen" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Losgelöst" @@ -3283,7 +3279,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Dünne Wände erkennen" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3307,15 +3303,15 @@ msgstr "Gerät:" msgid "Diameter" msgstr "Durchmesser" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Durchmesser der Pfeilerbasis in mm" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Durchmesser der Stützpfeiler in mm" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Durchmesser der Spitzenseite des Kopfes" @@ -3379,31 +3375,31 @@ msgstr "Alle benutzerdefinierten Änderungen verwerfen" msgid "Discard changes" msgstr "Änderungen verwerfen" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Displayhöhe" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Zeige horizontale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Displayausrichtung" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Zeige das Druckhost Warteschlangenfenster" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Zeige vertikale Spiegelung" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Displaybreite" @@ -3422,7 +3418,7 @@ msgstr "" "Abstand zwischen Schürze und Rand (wenn der Windschutz nicht verwendet wird) " "oder Objekten." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3462,11 +3458,11 @@ msgstr "Abstand für die automatische Druckplattenbelegung." msgid "Divide by zero" msgstr "Division durch Null" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nicht abbrechen, wenn eine an --load übergebene Datei nicht existiert." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3523,7 +3519,7 @@ msgstr "" msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Möchten Sie Standardfilamente für diese FFF-Druckermodelle auswählen?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Nicht Anordnen" @@ -3588,11 +3584,11 @@ msgstr "" msgid "Drop to bed" msgstr "Auf das Druckbett fallen lassen" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplizieren" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplizieren nach Raster" @@ -3609,11 +3605,11 @@ msgstr "Bei den anderen Schichten läuft der Lüfter immer mit %1%%%" msgid "During the other layers, fan will be turned off." msgstr "Bei den anderen Schichten wird der Lüfter ausgeschaltet." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dynamisch" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "E&xport" @@ -3665,7 +3661,7 @@ msgstr "Benutzerdefinierten G-Code bearbeiten" msgid "Edit pause print message" msgstr "Druckpausen-Mitteilung bearbeiten" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Physischen Drucker bearbeiten" @@ -3689,7 +3685,7 @@ msgstr "Bearbeitung" msgid "Eigen vectorization supported:" msgstr "Eigen Vektorisierung unterstützt:" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "SD-Kar&te/Flash-Laufwerk auswerfen" @@ -3697,7 +3693,7 @@ msgstr "SD-Kar&te/Flash-Laufwerk auswerfen" msgid "Eject SD card / Flash drive" msgstr "SD-Karte/Flash-Laufwerk auswerfen" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "SD-Karte / Flash-Laufwerk auswerfen, nachdem der G-Code dorthin exportiert " @@ -3716,7 +3712,7 @@ msgstr "Das Auswerfen von Gerät %s(%s) ist fehlgeschlagen." msgid "Elephant foot compensation" msgstr "Elefantenfußkompensation" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Elefantenfuß Mindestbreite" @@ -3749,7 +3745,7 @@ msgstr "In G-Code ausgeben" msgid "Empty layer between %1% and %2%." msgstr "Leere Schicht zwischen %1% und %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Aktivieren" @@ -3766,11 +3762,11 @@ msgstr "Dunkelmodus aktivieren" msgid "Enable fan if layer print time is below" msgstr "Lüfter einschalten wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Aushöhlung aktivieren" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Horizontale Spiegelung der Ausgabebilder aktivieren" @@ -3785,7 +3781,7 @@ msgstr "" "Ermöglicht das Bügeln der oberen Schichten mit dem heißen Druckkopf für eine " "glatte Oberfläche" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3793,7 +3789,7 @@ msgstr "" "Ermöglicht das Lesen unbekannter Konfigurationswerte, indem sie " "stillschweigend durch Standardwerte ersetzt werden." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3845,7 +3841,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Variable Schichthöhen aktivieren" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Vertikale Spiegelung der Ausgabebilder aktivieren" @@ -3861,7 +3857,7 @@ msgstr "" "Ermöglicht das Füllen von Lücken zwischen den Perimetern und zwischen den " "innersten Perimetern und dem Infill." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3893,7 +3889,7 @@ msgstr "Stützen erzwingen" msgid "Enqueued" msgstr "In der Warteschlange" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Auf dem Bett sicherstellen" @@ -4009,7 +4005,7 @@ msgstr "" "Fehler: \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Fehler" @@ -4161,23 +4157,23 @@ msgstr "Expertenmodus" msgid "Export" msgstr "Export" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Export &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Export &G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Werkzeugwege als OBJ expor&tieren" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Export 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exportiere AMF" @@ -4185,11 +4181,11 @@ msgstr "Exportiere AMF" msgid "Export AMF file:" msgstr "Exportiere AMF Datei:" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Konfigurationssa&mlung exportieren" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Konfigurations-Bundle mit physischen Druckern exportieren" @@ -4198,15 +4194,15 @@ msgid "Export G-Code." msgstr "G-Code exportieren." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Export G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exportiere OBJ" @@ -4214,19 +4210,19 @@ msgstr "Exportiere OBJ" msgid "Export OBJ file:" msgstr "Exportiere OBJ Datei:" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exportiere die Plattenbelegung als &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exportiere Plattenbelegung als STL einschließlich Stützen" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exportiere SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exportiere STL" @@ -4234,13 +4230,13 @@ msgstr "Exportiere STL" msgid "Export STL file:" msgstr "Exportiere STL Datei:" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Alle Voreinstellungen einschließlich physischer Drucker in eine Datei " "exportieren" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exportiere alle Voreinstellungen in eine Datei" @@ -4252,24 +4248,24 @@ msgstr "Exportiere als STL" msgid "Export config" msgstr "Konfiguration exportieren" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exportiere die aktuelle Konfiguration in eine Datei" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exportiere die aktuelle Plattenbelegung als G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" "Aktuelle Druckplatte als G-Code auf SD-Karte/Flash-Laufwerk exportieren" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exportiere die aktuelle Plattenbelegung als STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exportiert die aktuelle Plattenbelegung als STL einschließlich Stützen" @@ -4288,19 +4284,19 @@ msgstr "Export einer temporären 3MF Datei fehlgeschlagen" msgid "Export sources full pathnames to 3mf and amf" msgstr "Vollständige Pfadnamen der Quellen in 3mf und amf exportieren" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exportiert das/die Modell(e) als 3MF Datei." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exportiert das/die Modell(e) als AMF Datei." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exportiert das/die Modell(e) als OBJ Datei." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exportiert das/die Modell(e) als STL Datei." @@ -4308,7 +4304,7 @@ msgstr "Exportiert das/die Modell(e) als STL Datei." msgid "Export to SD card / Flash drive" msgstr "Export auf SD-Karte/Flash-Laufwerk" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Werkzeugweg als OBJ exportieren" @@ -4320,7 +4316,7 @@ msgstr "Export." msgid "Exporting G-code" msgstr "Exportiere G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Konfigurationsbündel exportieren" @@ -4341,11 +4337,11 @@ msgstr "Exportiere." msgid "Exposition time is out of printer profile bounds." msgstr "Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Belichtung" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Belichtungszeit" @@ -4407,7 +4403,7 @@ msgstr "Extruder Farbe" msgid "Extruder changed to" msgstr "Extruder geändert auf" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Extruder Freiraum" @@ -4416,7 +4412,7 @@ msgid "Extruder offset" msgstr "Extruder Offset" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4424,7 +4420,7 @@ msgid "Extruders" msgstr "Extruder" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Extruder Anzahl" @@ -4464,7 +4460,7 @@ msgstr "FFF Technologie Drucker" msgid "Facets" msgstr "Flächen" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Ausblendende Schichten" @@ -4496,11 +4492,11 @@ msgstr "Das Bohren einiger Löcher in das Modell ist fehlgeschlagen" msgid "Fan Speed (%)" msgstr "Lüftergeschwindigkeit (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Lüfter Einstellungen" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Lüftergeschwindigkeit" @@ -4535,11 +4531,11 @@ msgstr "Der Lüfter läuft immer mit %1%%%" msgid "Fan will be turned off." msgstr "Der Lüfter wird ausgeschaltet." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Schnell" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Schnelles Kippen" @@ -4563,7 +4559,7 @@ msgstr "Merkmalstypen" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -4575,7 +4571,7 @@ msgstr "Filamentdurchmesser:" msgid "Filament End G-code" msgstr "Filament Ende G-code" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Filament Übersteuerung" @@ -4584,7 +4580,7 @@ msgid "Filament Profiles Selection" msgstr "Filament Profile Auswahl" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Filamenteinstellungen" @@ -4626,7 +4622,7 @@ msgstr "Filament Bemerkungen" msgid "Filament parking position" msgstr "Filament Parkposition" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Filament Eigenschaften" @@ -4643,7 +4639,7 @@ msgstr "Filament Entladezeit" msgid "Filaments" msgstr "Filamente" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Datei nicht gefunden" @@ -4714,7 +4710,7 @@ msgstr "" msgid "Filling bed" msgstr "Bett füllen" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Suchen" @@ -4727,11 +4723,11 @@ msgstr "" msgid "Finished" msgstr "Fertig" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Firmware Einzug" @@ -4942,7 +4938,7 @@ msgstr "" "Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, " "müssen die Stützschichten mit den Objektschichten synchronisiert sein." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Grundschicht überall um Objekt erzwingen" @@ -4976,7 +4972,7 @@ msgstr "" "Format der G-Code-Miniaturansichten: PNG für beste Qualität, JPG für " "kleinste Größe, QOI für speicherarme Firmware" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4984,7 +4980,7 @@ msgstr "" "Vorwärtskompatibilitätsregel beim Laden von Konfigurationen aus " "Konfigurationsdateien und Projektdateien (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Reservierte Schlüsselwörter gefunden in" @@ -4998,11 +4994,11 @@ msgstr "" "Sie können nicht das letzte solide Teil des Objekts von der Objektliste " "löschen." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Front" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Frontalansicht" @@ -5010,7 +5006,7 @@ msgstr "Frontalansicht" msgid "Full fan speed at layer" msgstr "Volle Lüfterdrehzahl auf Schicht" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Vollbild" @@ -5059,7 +5055,7 @@ msgstr "Fuzzy Skin Stärke" msgid "Fuzzy skin type." msgstr "Fuzzy Skin Typ." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-Code" @@ -5097,11 +5093,11 @@ msgstr "G-code Ersetzungen" msgid "G-code thumbnails" msgstr "G-Code-Miniaturbilder" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G-Code-Viewer" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, Version 3" @@ -5118,10 +5114,10 @@ msgstr "Gallerie" msgid "Gap fill" msgstr "Lückenfüllung" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Allgemein" @@ -5153,11 +5149,11 @@ msgstr "" "um die Haftung von Objekten mit einem sehr dünnen oder schlechten Standfuß " "auf der Bauplatte zu erhöhen." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Stützen generieren" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Erzeugt Stützen für die Modelle" @@ -5350,11 +5346,11 @@ msgstr "" msgid "Head diameter" msgstr "Kopfdurchmesser" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Kopfeindringung" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Die Kopfeindringung sollte nicht größer als die Kopfbreite sein." @@ -5378,7 +5374,7 @@ msgstr "Höhe (mm)" msgid "Height of skirt expressed in layers." msgstr "Höhe der Schürze, ausgedrückt in Schichten." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Displayhöhe" @@ -5403,15 +5399,15 @@ msgstr "" "Hallo, willkommen bei %s! Dieses %s hilft Ihnen bei der Erstkonfiguration; " "nur ein paar Einstellungen und Sie sind bereit zum Drucken." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Hilfe" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Hilfe (FFF Optionen)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Hilfe (SLA Optionen)" @@ -5446,7 +5442,7 @@ msgstr "Hoch" msgid "High extruder current on filament swap" msgstr "Hohe Extruderstromstärke beim Filamentwechsel" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Hohe Viskosität" @@ -5480,7 +5476,7 @@ msgstr "Lochdurchmesser" msgid "Hollow and drill" msgstr "Aushöhlen und Bohren" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Ein Modell aushöhlen, um einen leeren Innenraum zu erhalten" @@ -5488,16 +5484,16 @@ msgstr "Ein Modell aushöhlen, um einen leeren Innenraum zu erhalten" msgid "Hollow this object" msgstr "Dieses Objekt aushöhlen" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Aushöhlen" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5566,20 +5562,20 @@ msgstr "" "zu erhalten,\n" "oder klicken Sie auf diese Schaltfläche." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" "Wie weit sich die Grundschicht um die enthaltene Geometrie erstrecken soll" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Wie weit die kleinen Verbinder in den Modellkörper eindringen sollen." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Wie tief der Nadelkopf in die Modelloberfläche eindringt" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5810,7 +5806,7 @@ msgstr "" "Wenn aktiviert, wird die Schaltfläche zum Zusammenklappen der Seitenleiste " "in der oberen rechten Ecke der 3D-Szene angezeigt" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -6090,7 +6086,7 @@ msgstr "" "Verteilungspunkten. Sie können diese Option für selbst signierte Zertifikate " "aktivieren, wenn die Verbindung fehlschlägt." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignoriere fehlende Konfigurationsdateien" @@ -6108,15 +6104,15 @@ msgstr "Unzulässiger Befehl" msgid "Import" msgstr "Importieren" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importiere &Konfiguration" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importiere Konfi&gurationssamlung" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importiere Konfiguration von &Projekt" @@ -6132,7 +6128,7 @@ msgstr "Objekt importieren" msgid "Import Objects" msgstr "Objekte importieren" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Import SL1 / SL1S Archiv" @@ -6140,11 +6136,11 @@ msgstr "Import SL1 / SL1S Archiv" msgid "Import SLA archive" msgstr "SLA-Archiv importieren" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "STL importieren (imperiale Einheiten)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importiere STL/OBJ/AM&F/3MF" @@ -6275,11 +6271,11 @@ msgstr "Übernimmt Profil" msgid "Initial exposition time is out of printer profile bounds." msgstr "Anfang-Belichtungszeit ist außerhalb der Druckerprofilgrenzen." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Anfangsschichthöhe" @@ -6385,7 +6381,7 @@ msgstr "Interner Fehler: %1%" msgid "Internal infill" msgstr "Internes Infill" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Ungültige Eindringtiefe des Stützkopfes" @@ -6413,7 +6409,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Ungültige numerische Eingabe." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Ungültiger Nadelkopfdurchmesser" @@ -6449,11 +6445,11 @@ msgstr "Bügeltyp" msgid "Is it safe?" msgstr "Ist das sicher?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Iso Ansicht" @@ -6482,7 +6478,7 @@ msgstr "" "und den Widerstand beim Laden eines Filaments mit einer ungünstig geformten " "Spitze zu überwinden." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" "Es handelt sich um die letzte Voreinstellung für diesen physischen Drucker." @@ -6498,7 +6494,7 @@ msgstr "" "Es ist nicht möglich, die letzte zugehörige Voreinstellung für den Drucker " "zu löschen." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Ruck-Begrenzungen" @@ -6564,7 +6560,7 @@ msgstr "Die gewählten Einstellungen werden beibehalten." msgid "Keep upper part" msgstr "Oberen Teil behalten" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Tastaturkürzel" @@ -6572,11 +6568,11 @@ msgstr "Tastaturkürzel" msgid "Keyboard shortcuts" msgstr "Tastaturkürzel" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "GESCHLOSSENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6584,7 +6580,7 @@ msgstr "" "Das Symbol GESCHLOSSENES SCHLOSS zeigt an, dass die Einstellungen mit den " "System- (oder Standard-) Werten für die aktuelle Optionsgruppe übereinstimmen" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6596,7 +6592,7 @@ msgstr "" msgid "Label objects" msgstr "Objekte benennen" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Querformat" @@ -6636,7 +6632,7 @@ msgstr "" "\n" "Die Schichthöhe wird auf 0,01 zurückgesetzt." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Schichthöhen Grenzen" @@ -6644,8 +6640,8 @@ msgstr "Schichthöhen Grenzen" msgid "Layer range Settings to modify" msgstr "Schichtbereicheinstellungen zum Ändern" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Schichten" @@ -6662,7 +6658,7 @@ msgstr "Schichten" msgid "Layers and Perimeters" msgstr "Schichten und Konturen" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Schichten und Umfänge" @@ -6675,15 +6671,15 @@ msgstr "Layout-Optionen" msgid "Leave \"%1%\" enabled" msgstr "\"%1%\" aktiviert lassen" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Links" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Linker voreingestellter Wert" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Anicht von Links" @@ -6722,7 +6718,7 @@ msgid "Length of the infill anchor" msgstr "Länge des Infill-Ankers" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6734,7 +6730,7 @@ msgstr "" msgid "Lift Z" msgstr "Z Hebung" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6794,19 +6790,19 @@ msgstr "Teil laden" msgid "Load Project" msgstr "Projekt laden" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Lade ein Modell" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Laden eines SL1 / SL1S Archiv" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Laden eines mit imperialen Einheiten gespeicherten Modells" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6816,7 +6812,7 @@ msgstr "" "nützlich, um verschiedene Profile zu pflegen oder Konfigurationen aus einem " "Netzwerkspeicher zu übernehmen." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Lade Konfigurationsdatei" @@ -6835,11 +6831,11 @@ msgstr "" "verwenden, mit denen Sie ebenfalls 3D-Modelle aus den Voxel-Daten " "rekonstruieren können." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Lade Konfiguration aus Projektdatei" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6847,11 +6843,11 @@ msgstr "" "Lädt die Konfiguration aus der angegebenen Datei. Es kann mehr als einmal " "verwendet werden, um Optionen aus mehreren Dateien zu laden." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Laden einer exportierten Konfigurationsdatei" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Lade Voreinstellungen aus einer Sammlung" @@ -6884,11 +6880,11 @@ msgstr "Lade Konfiguration" msgid "Loading file" msgstr "Lade Datei" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Laden eines Konfigurationsbündels" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Laden einer Konfigurationsdatei" @@ -6927,7 +6923,7 @@ msgstr "Lokale Koordinaten" msgid "Lock supports under new islands" msgstr "Fixiere Stützen unter neuen Inseln" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Logging-Level" @@ -6943,7 +6939,7 @@ msgstr "Niedrig" msgid "Lowest Z height" msgstr "Niedrigste Z-Höhe" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6952,7 +6948,7 @@ msgstr "Niedrigste Z-Höhe" msgid "Machine limits" msgstr "Maschinengrenzen" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -6960,7 +6956,7 @@ msgstr "" "Maschinengrenzen sind nicht gesetzt, daher ist die Schätzung der Druckzeit " "möglicherweise nicht genau." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6970,7 +6966,7 @@ msgstr "" "Schätzung der Druckzeit verwendet, die daher möglicherweise nicht genau ist, " "da der Drucker möglicherweise eine andere Reihe von Maschinenlimits anwendet." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -6997,20 +6993,20 @@ msgstr "Manuelle Bearbeitung" msgid "Masked SLA file exported to %1%" msgstr "Maskierte SLA-Datei exportiert nach %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Einzelne Zeile abgleichen" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Mate&rial Einstellungen" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Material" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Material Einstellungen" @@ -7019,7 +7015,7 @@ msgstr "Material Einstellungen" msgid "Material Settings Tab" msgstr "Materialeinstellungsreiter" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Material Druckprofil" @@ -7027,19 +7023,19 @@ msgstr "Material Druckprofil" msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Max Überbrückungslänge" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Max Brücken auf einem Pfeiler" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Maximaler Zusammenfügeabstand" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Max. Pfeiler Verbindungsabstand" @@ -7135,7 +7131,7 @@ msgstr "Maximale Beschleunigung beim Einzug" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Maximale Beschleunigung beim Einzug (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Maximale Beschleunigungen" @@ -7157,7 +7153,7 @@ msgstr "" "einen Low-Poly-Effekt, und da die G-Code-Reduzierung auf jeder Ebene " "unabhängig durchgeführt wird, können sichtbare Artefakte entstehen." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Maximale Belichtungszeit" @@ -7193,11 +7189,11 @@ msgstr "Maximaler Vorschub auf der Y-Achse" msgid "Maximum feedrate of the Z axis" msgstr "Maximaler Vorschub auf der Z-Achse" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Maximaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Maximale Anfang-Belichtungszeit" @@ -7237,7 +7233,7 @@ msgstr "Maximaler Ruck auf der Z-Achse" msgid "Maximum length of the infill anchor" msgstr "Maximale Länge des Infill-Ankers" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7272,7 +7268,7 @@ msgid "Medium" msgstr "Medium" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Zusammenfügen" @@ -7288,7 +7284,7 @@ msgstr "Objekte zu einem mehrteiligen Objekt zusammenführen" msgid "Merged" msgstr "Zusammengeführt" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7328,7 +7324,7 @@ msgstr "Min" msgid "Min print speed" msgstr "Minimale Druckgeschwindigkeit" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Minimaler Abstand der Stützpunkte" @@ -7370,11 +7366,11 @@ msgstr "" "Drucker wiedergeben kann. Setzen Sie den Wert auf Null, um die Vereinfachung " "zu deaktivieren und die volle Auflösung des Eingangsdatei zu verwenden." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Minimale Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Minimale Merkmalgröße" @@ -7386,15 +7382,15 @@ msgstr "Maximaler Vorschub bei Extrusion" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimaler Vorschub beim Extrudieren (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Minimaler Vorschub" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Minimale Anfang-Belichtungszeit" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Minimale Umfangsbreite" @@ -7419,15 +7415,19 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Mindeststärke einer Ober-/Bodenschale" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -"Minimale Dicke von dünnen Merkmalen. Modellmerkmale, die dünner sind als " -"dieser Wert, werden nicht gedruckt, während Merkmale, die dicker sind als " -"die Mindestmerkmalgröße, auf die Mindestumfangsbreite verbreitert werden." +"Minimale Dicke von dünnen Features. Modell-Features, die dünner als dieser " +"Wert sind, werden nicht gedruckt, während Features, die dicker als die " +"Mindest-Featuregröße sind, auf die Mindestumfangsbreite verbreitert werden. " +"Wenn der Wert in Prozent angegeben wird (z.B. 25%), wird er auf der " +"Grundlage des Düsendurchmessers berechnet." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7450,11 +7450,11 @@ msgstr "Minimaler Vorschub im Eilgang" msgid "Minimum travel feedrate (M205 T)" msgstr "Minimaler Vorschub im Eilgang (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Mindestwandstärke eines ausgehöhlten Modells." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7480,7 +7480,7 @@ msgstr "" msgid "Mirror Object" msgstr "Objekt spiegeln" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Horizontal spiegeln" @@ -7500,7 +7500,7 @@ msgstr "Ausgewähltes Objekt entlang der Y-Achse spiegeln" msgid "Mirror the selected object along the Z axis" msgstr "Ausgewähltes Objekt entlang der Z-Achse spiegeln" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Vertikal spiegeln" @@ -7676,11 +7676,11 @@ msgstr "" "Soll ich, anstatt sie als mehrere Objekte zu betrachten, \n" "diese Dateien als ein einzelnes Objekt mit mehreren Teilen behandeln?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Multiple Kopien durch Erstellen eines Rasters." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Mehrfache Kopien mit diesem Faktor." @@ -7772,7 +7772,7 @@ msgstr "" msgid "New prerelease version %1% is available." msgstr "Die neue Vorabversion %1% ist verfügbar." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Neue Druckervoreinstellung ausgewählt" @@ -7834,7 +7834,7 @@ msgstr "" "Für dieses Modell kann mit der aktuellen Konfiguration keine Grundschicht " "generiert werden" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Keine vorher gesclicete Datei." @@ -7842,7 +7842,7 @@ msgstr "Keine vorher gesclicete Datei." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Keine spärlichen Schichten (EXPERIMENTELL)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Es werden keine Stützpunkte näher als dieser Schwellenwert platziert." @@ -7858,7 +7858,7 @@ msgid "None" msgstr "Kein" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -7874,7 +7874,7 @@ msgstr "Nicht gefunden:" msgid "Note" msgstr "Hinweis" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7885,7 +7885,7 @@ msgstr[1] "" "Beachten Sie, dass die ausgewählte Voreinstellung auch von diesen Druckern " "gelöscht wird." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7897,7 +7897,7 @@ msgstr[1] "" "Beachten Sie, dass diese Drucker nach dem Löschen der ausgewählten " "Voreinstellung gelöscht werden." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7950,12 +7950,12 @@ msgstr "" "Hinweis: Einige Tastenkombinationen funktionieren nur im " "(Nicht-)Bearbeitungsmodus." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Anmerkungen" @@ -7969,7 +7969,7 @@ msgstr "Hinweis" msgid "Notify about new releases" msgstr "Über neue Releases benachrichtigen" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Düse" @@ -7981,7 +7981,7 @@ msgstr "Düsendurchmesser:" msgid "Nozzle and Bed Temperatures" msgstr "Düsen- und Bett-Temperaturen" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Düsendurchmesser" @@ -8012,7 +8012,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Anzahl der Kühlbewegungen" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Anzahl der Extruder des Druckers." @@ -8044,15 +8044,15 @@ msgstr "" "die hier konfigurierte. Setzen Sie diesen Wert auf null, um die Schürze " "komplett zu deaktivieren." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Anzahl an Pixeln in" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Anzahl an Pixeln in X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Anzahl an Pixeln in Y" @@ -8069,7 +8069,7 @@ msgstr "" msgid "Number of solid layers to generate on top surfaces." msgstr "Anzahl der zu erzeugenden massiven Schichten auf der Oberseite." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -8085,7 +8085,7 @@ msgstr "Anzahl der Werkzeugwechsel" msgid "Object Settings to modify" msgstr "Abweichende Objekteigenschaften" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Objekt-Hebung" @@ -8203,7 +8203,7 @@ msgstr "Ein/Aus Einschichtmodus des vertikalen Schiebereglers" msgid "One layer mode" msgstr "Eine Schicht Modus" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Eine der Voreinstellungen wird nicht gefunden" @@ -8228,7 +8228,7 @@ msgstr "" "Entfernen Sie entweder alle bis auf das letzte Objekt, oder aktivieren Sie " "den sequenziellen Modus durch \"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8240,7 +8240,7 @@ msgstr "" msgid "Only infill where needed" msgstr "Infill nur wo es notwendig ist drucken" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Nur Z anheben" @@ -8282,7 +8282,7 @@ msgstr "" "Die Sickervermeidung wird derzeit nicht unterstützt, wenn der Wischturm " "aktiviert ist." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Öffne &PrusaSlicer" @@ -8302,11 +8302,11 @@ msgstr "Öffne Ordner." msgid "Open G-code file:" msgstr "Öffne G-Code-Datei:" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "G-Code-Viewer öffnen" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Neue Instanz öffnen" @@ -8314,20 +8314,20 @@ msgstr "Neue Instanz öffnen" msgid "Open Preferences." msgstr "Einstellungen öffnen." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "PrusaSlicer öffnen" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Öffne eine G-Code-Datei" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Öffne eine neue PrusaSlicer-Instanz" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Öffne eine Projektdatei" @@ -8369,7 +8369,7 @@ msgstr "%s-Website in Ihrem Browser öffnen" msgid "Open the Prusa3D drivers download page in your browser" msgstr "Download-Seite für die Prusa3D-Treiber in Ihrem Browser öffnen" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Öffnen Sie den Dialog zum Ändern der Formengalerie" @@ -8387,7 +8387,7 @@ msgstr "" "Öffnen eines neuen Projekts, während einige Voreinstellungen nicht " "gespeichert sind." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8463,7 +8463,7 @@ msgstr "Ausrichtungssuche abgebrochen." msgid "Origin" msgstr "Nullpunkt" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Sonstige" @@ -8483,15 +8483,15 @@ msgstr "Äußere und innerer Rand" msgid "Outer brim only" msgstr "Nur äußerer Rand" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Ausgabedatei" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Ausgabe Modellinformationen" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Ausgabedatei" @@ -8499,7 +8499,7 @@ msgstr "Ausgabedatei" msgid "Output filename format" msgstr "Ausgabe Dateinamen Format" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Ausgabeoptionen" @@ -8524,19 +8524,19 @@ msgstr "Überhangsschwellwert" msgid "Overlap" msgstr "Überlappung" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "D&ruckeinstellungen" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Grundschicht (Pad)" @@ -8544,15 +8544,15 @@ msgstr "Grundschicht (Pad)" msgid "Pad and Support" msgstr "Grundschicht und Stützen" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Grundschicht um Objekt" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Grundschicht überall um Objekt" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Grundschicht Randgröße" @@ -8561,31 +8561,31 @@ msgid "Pad brim size is too small for the current configuration." msgstr "" "Die Randgröße der Grundschicht ist für die aktuelle Konfiguration zu klein." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Objektgrundschicht Verbindungseindringtiefe" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Objektgrundschicht Verbindungsschritte" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Objektgrundschicht Verbinderbreite" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Grundschicht Objekt Abstand" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Grundschicht Wandhöhe" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Grundschicht Wandneigung" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Grundschicht Wandstärke" @@ -8718,7 +8718,7 @@ msgstr "Einfügen" msgid "Paste From Clipboard" msgstr "Aus Zwischenablage einfügen" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8756,7 +8756,7 @@ msgstr "Unterstützungsmaterialmuster." msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "Druckpausen G-Code" @@ -8791,7 +8791,7 @@ msgstr "" "Desktop-Integration durchführen (stellt diese Binärdatei so ein, dass sie " "vom System durchsucht werden kann)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8835,7 +8835,7 @@ msgstr "" msgid "Perimeter" msgstr "Kontur" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Umfangsverteilung Anzahl" @@ -8847,15 +8847,15 @@ msgstr "Umfang Extruder" msgid "Perimeter generator" msgstr "Umfangsgenerator" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Umfangsübergang Länge" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Umfangs-Übergang-Filter-Rand" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Umfangsübergang Schwellenwinkel" @@ -8906,28 +8906,28 @@ msgstr "" "Bildgrößen, die in einer .gcode und .sl1 / .sl1s Datei gespeichert werden " "sollen, im folgenden Format: \"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Pfeiler-Verbindungsmodus" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Pfeiler-Durchmesser" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Pfeilerverbreiterungsfaktor" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "Der Nadelkopfdurchmesser sollte kleiner sein als der Säulendurchmesser." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Nadelkopf vorderer Durchmesser" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Nadelkopf Breite" @@ -8976,11 +8976,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Bitte wählen Sie die neu zu ladende Datei aus" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Teile des Urheberrechts" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Hochformat" @@ -8989,7 +8989,7 @@ msgstr "Hochformat" msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Position (für Multi-Extruder-Drucker)" @@ -9005,7 +9005,7 @@ msgstr "Y-Position" msgid "Position of perimeters starting points." msgstr "Position des Startpunktes des Umfangs." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Nachbearbeitungsskripte sollen die G-Code-Datei an ihrem Speicherort ändern." @@ -9030,11 +9030,11 @@ msgstr "" "Stelle zu ändern, und lesen Sie im Handbuch nach, wie Sie die " "nachbearbeitete G-Code-Datei optional umbenennen können.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Nachbearbeitungs Script" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "&Vorschau" @@ -9107,7 +9107,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Eine Voreinstellung mit dem Namen \"%1%\" existiert bereits." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9116,7 +9116,7 @@ msgstr "" "Klicken Sie auf diese Schaltfläche, um dieselbe Voreinstellung für die " "rechte und linke Voreinstellung auszuwählen." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Voreinstellungen sind gleich" @@ -9156,7 +9156,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Druckausgleich (experimentell)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9178,7 +9178,7 @@ msgstr "" "Düsendurchmessers berechnet." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Vorschau" @@ -9186,7 +9186,7 @@ msgstr "Vorschau" msgid "Preview hollowed and drilled model" msgstr "Vorschau des ausgehöhlten und aufgebohrten Modells" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Vorher geslicete Datei (" @@ -9198,7 +9198,7 @@ msgstr "Alle Druckextruder vorfüllen" msgid "Print" msgstr "Druck" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Druck&host Warteschlange" @@ -9206,7 +9206,7 @@ msgstr "Druck&host Warteschlange" msgid "Print Diameters" msgstr "Druckdurchmesser" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Hochladen zum Druckhost" @@ -9245,15 +9245,15 @@ msgstr "Druckpausen" msgid "Print settings" msgstr "Druckeinstellungen" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Druckgeschwindigkeit" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Korrektur der Druckgeschwindigkeit" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Druck&ereinstellungen" @@ -9289,11 +9289,11 @@ msgstr "Druckereinstellungen" msgid "Printer Settings Tab" msgstr "Druckereinstellungsreiter" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Drucker absolute Korrektur" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Drucker Gammakorrektur" @@ -9305,32 +9305,32 @@ msgstr "Drucker Anmerkungen" msgid "Printer preset names" msgstr "Drucker-Voreinstellungsnamen" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Druckerskalierung X-Achsen-Korrektur" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Druckerskalierung Y-Achsen-Korrektur" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Druckerskalierung Z-Achsen-Korrektur" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Drucker skalierte Korrektur" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Korrektur der Druckerskalierung in der X-Achse" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Korrektur der Druckerskalierung in der Y-Achse" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Korrektur der Druckerskalierung in der Z-Achse" @@ -9378,7 +9378,7 @@ msgid "Process %1% / 100" msgstr "Bearbeite %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Berechne %s" @@ -9392,9 +9392,9 @@ msgstr "" "Die Verarbeitung des Modells '%1%' mit mehr als 1M Dreiecken könnte langsam " "sein. Es wird dringend empfohlen, die Anzahl der Dreiecke zu reduzieren." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Profil Abhängigkeiten" @@ -9489,7 +9489,7 @@ msgstr "" "PrusaSlicer ist beim Erstellen eines Konfigurations-Snapshots auf einen " "Fehler gestoßen." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9610,15 +9610,15 @@ msgstr "Schnell" msgid "Quick Add Settings (%s)" msgstr "Schnelles Einstellen (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Quick Slice" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Quick Slice und Speichern unter" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "%s verlassen" @@ -9688,7 +9688,7 @@ msgstr "Breite der Rammlinie" msgid "Ramming parameters" msgstr "Rammparameter" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Einstellungen für das Rammen" @@ -9708,8 +9708,8 @@ msgstr "Bereich" msgid "Rasterizing layers" msgstr "Schichten werden gerastert" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Neu&laden von Festplatte" @@ -9721,15 +9721,15 @@ msgstr "Neu konfigurieren" msgid "Ready" msgstr "Fertig" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Hinten" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Ansicht von Hinten" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "L&etzte Projekte" @@ -9773,7 +9773,7 @@ msgid "Rectilinear grid" msgstr "Rechtwinkliges Gitter" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Redo" @@ -9804,7 +9804,7 @@ msgstr "Drucker aktualisieren" msgid "Regular" msgstr "Normal" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Regulärer Ausdruck" @@ -9854,9 +9854,9 @@ msgstr "Neuladen von:" msgid "Reload plater from disk" msgstr "Druckplatte neu von der Festplatte laden" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Druckplatte neu von der Festplatte laden" @@ -9882,7 +9882,7 @@ msgid "Remember output directory" msgstr "Ausgabeverzeichnis merken" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Entfernen" @@ -10010,11 +10010,11 @@ msgstr "" msgid "Render" msgstr "Render" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Rendern mit einem Software-Renderer" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -10022,7 +10022,7 @@ msgstr "" "Rendern mit einem Software-Renderer. Der mitgelieferte MESA-Software-" "Renderer wird anstelle des standardmäßigen OpenGL-Treibers geladen." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Reparieren" @@ -10054,11 +10054,11 @@ msgstr "Reparieren des Modells durch den Netfabb-Dienst" msgid "Repairing was canceled" msgstr "Reparieren wurde abgebrochen" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Letzten Quick Slice wiederholen" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Letzten Quick Slice wiederholen" @@ -10070,7 +10070,7 @@ msgstr "Ersetzen von:" msgid "Replace the selected volume with new STL" msgstr "Das ausgewählte Volumen durch eine neue STL ersetzen" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Ersetzen mit" @@ -10138,7 +10138,7 @@ msgstr "Skalierung zurücksetzen" msgid "Reset selection" msgstr "Auswahl zurücksetzen" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Zurücksetzen auf Filamentfarbe" @@ -10162,8 +10162,8 @@ msgstr "Einzugslänge vor einer Reinigung" msgid "Retract on layer change" msgstr "Bei Schichtwechsel einziehen" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Einzug" @@ -10186,7 +10186,7 @@ msgstr "" "Der Einzug wird nicht ausgelöst, wenn die Fahrbewegungen kürzer als diese " "Länge sind." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10218,15 +10218,15 @@ msgstr "Umrechnung von Metern umkehren" msgid "Review the substitutions and adjust them if needed." msgstr "Überprüfen Sie die Ersetzungen und passen Sie sie bei Bedarf an." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Rechts" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Rechter voreingestellter Wert" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Ansicht von rechts" @@ -10266,15 +10266,15 @@ msgstr "Rechte Maustaste:" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Drehen" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Rotiere um X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Rotiere um Y" @@ -10303,15 +10303,15 @@ msgstr "" msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Rotationswinkel um die X-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Rotationswinkel um die Y-Achse in Grad." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Rotationswinkel um die Z-Achse in Grad." @@ -10329,11 +10329,11 @@ msgstr "%s ausführen" msgid "Running post-processing scripts" msgstr "Post-Prozess Scripts werden ausgeführt" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "S&ende G-code" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Zum Drucken s&enden" @@ -10363,7 +10363,7 @@ msgstr "SLA Gizmo Tastaturkürzel" msgid "SLA material" msgstr "SLA Material" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA Materialtyp" @@ -10375,7 +10375,7 @@ msgstr "SLA Materialien" msgid "SLA print" msgstr "SLA Druck" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA Druckmaterial-Anmerkungen" @@ -10387,7 +10387,7 @@ msgstr "SLA Druckeinstellungen" msgid "SLA supports outside the print area were detected." msgstr "SLA-Stützen außerhalb des Druckbereichs wurden erkannt." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10406,7 +10406,7 @@ msgstr "Speichern" msgid "Save %s as:" msgstr "Speichere %s als:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Speichere %s Datei als:" @@ -10415,12 +10415,12 @@ msgstr "Speichere %s Datei als:" msgid "Save G-code file as:" msgstr "Speichere G-Code Datei als:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Speichern als OBJ-Datei (weniger anfällig für Koordinatenfehler als STL):" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Projekt speichern &als" @@ -10428,15 +10428,15 @@ msgstr "Projekt speichern &als" msgid "Save SL1 / SL1S file as:" msgstr "SL1 / SL1S-Datei speichern unter:" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Speichere Konfigurationsdatei" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Konfiguration speichern unter:" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Sichert die Konfiguration in der angegebenen Datei." @@ -10446,11 +10446,11 @@ msgstr "Sichert die Konfiguration in der angegebenen Datei." msgid "Save current %s" msgstr "Speichere aktuelle %s" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Speichere aktuelle Projektdatei" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Speichere aktuelle Projektdatei als" @@ -10463,7 +10463,7 @@ msgstr "Speichere Datei als:" msgid "Save preset" msgstr "Sichern der Voreinstellung" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Sichern der Voreinstellungssammlung unter:" @@ -10492,7 +10492,7 @@ msgstr "Speichern der ausgewählten Optionen unter der Voreinstellung \"%1%\"." msgid "Save the selected options." msgstr "Speichern der ausgewählten Optionen." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Speichere Zip Datei als:" @@ -10506,7 +10506,7 @@ msgstr "Sichern des Netzes in einen 3MF-Container fehlgeschlagen." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Skalieren" @@ -10523,11 +10523,11 @@ msgid "Scale the selected object to fit the print volume" msgstr "" "Skalieren des ausgewählten Objekts so, dass es in das Druckvolumen passt" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Passend skalieren" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Auf das gegebene Volumen skalieren." @@ -10535,7 +10535,7 @@ msgstr "Auf das gegebene Volumen skalieren." msgid "Scale to print volume" msgstr "Auf Druckvolumen skalieren" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Skalierungsfaktor oder Prozentsatz." @@ -10566,7 +10566,7 @@ msgstr "Bevorzugte Zitterrichtung für Nähte" msgid "Seams" msgstr "Nähte" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Suc&hen" @@ -10590,7 +10590,7 @@ msgstr "" msgid "Search in English" msgstr "Suche in Englisch" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Suche in Einstellungen" @@ -10679,7 +10679,7 @@ msgstr "Wählen Sie eine Aktion, die auf die Datei angewendet werden soll" msgid "Select by rectangle" msgstr "Auswahl über Rechteck" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Konfiguration zum Laden auswählen:" @@ -10687,7 +10687,7 @@ msgstr "Konfiguration zum Laden auswählen:" msgid "Select coordinate space, in which the transformation will be performed." msgstr "Koordinatenraum wählen, in dem die Transformation durchgeführt wird." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Voreinstellungen zum Vergleichen wählen" @@ -10699,7 +10699,7 @@ msgstr "Form aus der Galerie auswählen" msgid "Select showing settings" msgstr "Wähle Anzeigeeinstellungen" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Geben Sie die STL-Datei an, die repariert werden soll:" @@ -10784,7 +10784,7 @@ msgstr "Auswahl aus Liste entfernen" msgid "Selection-Remove from rectangle" msgstr "Auswahl über Rechteck entfernen" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Alle Objekte auswählen" @@ -10801,7 +10801,7 @@ msgstr "Sende G-code" msgid "Send system info" msgstr "Sende Systeminfo" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Sende die aktuelle Plattenbelegung als G-Code zum Drucken" @@ -10825,7 +10825,7 @@ msgstr "Sende Systeminfo..." msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Sequentielles Drucken" @@ -10842,7 +10842,7 @@ msgstr "Serieller Port:" msgid "Service name" msgstr "Name des Dienstes" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Setzen" @@ -10970,7 +10970,7 @@ msgstr "Ausgewählte Elemente als druckbar/ nicht druckbar festlegen" msgid "Set settings tabs as menu items (experimental)" msgstr "Einstellungsregisterkarten als Menüpunkte festlegen (experimentell)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -11132,7 +11132,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Oberen Schieber aktiv setzen" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -11144,7 +11144,7 @@ msgstr "" "Warnstufenmeldungen." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Einstellungen" @@ -11199,7 +11199,7 @@ msgstr "" msgid "Shape" msgstr "Form" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Formen-Galerie" @@ -11250,7 +11250,7 @@ msgstr "Benachrichtigung \"Tipp des Tages\" nach dem Start anzeigen" msgid "Show &Configuration Folder" msgstr "Zeige &Konfigurationsordner" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Anzeigen Beschriftungen (&L)" @@ -11266,7 +11266,7 @@ msgstr "\"Über\"-Dialog anzeigen" msgid "Show advanced settings" msgstr "Ausführliche Einstellungen anzeigen" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Alle Voreinstellungen anzeigen (auch inkompatible)" @@ -11306,7 +11306,7 @@ msgstr "Objekthöhe anzeigen" msgid "Show object height on the ruler" msgstr "Objekthöhe auf dem Lineal anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Objekt-/Kopiebeschriftungen in der 3D-Szene anzeigen" @@ -11334,47 +11334,47 @@ msgstr "Stützen anzeigen" msgid "Show system information" msgstr "Systeminformationen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Anzeigen des 3D Editiermodus" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Vorschau der 3D-Schnitte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Filamenteinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für SLA Druck " "an." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "Zeigt die vollständige Liste der Konfigurationsmöglichkeiten für Druck/GCode " "an." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Liste der Tastaturkürzel anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Druckplatte anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Druckeinstellungen anzeigen" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Druckereinstellungen anzeigen" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Diese Hilfe zeigen." @@ -11462,7 +11462,7 @@ msgstr "Modell vereinfachen" msgid "Single Extruder Multi Material" msgstr "Einzelextruder mit Multi-Material" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11474,15 +11474,15 @@ msgstr "" "Möchten Sie den Durchmesser für alle Extruder auf den Wert des ersten " "Extruderdüsendurchmessers ändern?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Einzelextruder MM Setup" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Einzelextruder Multimaterial Parameter" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Einzelinstanz-Modus" @@ -11501,7 +11501,7 @@ msgstr "Größe" msgid "Size" msgstr "Größe" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Größe und Koordinaten" @@ -11574,15 +11574,15 @@ msgstr "" "PrusaSlicer wird die Geschwindigkeit nicht unterhalb dieser Geschwindigkeit " "skalieren." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Slice" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Datei zu G-Code slicen" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Datei zu G-Code slicen, speichern als" @@ -11599,15 +11599,15 @@ msgstr "Jetzt slicen" msgid "Slice resolution" msgstr "Slice Auflösung" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Slice das Modell und Export von SLA-Druckschichten als PNG." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Modell slicen und Werkzeugwege als G-Code exportieren." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11624,13 +11624,13 @@ msgstr "Slice-Info" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "Das Objekt \"%1%\" sieht aus wie ein Logo oder ein Schild" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Slice" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Slicing abgeschlossen!" @@ -11665,7 +11665,7 @@ msgstr "Slice das Modell" msgid "Slicing supports" msgstr "Slice Stützen" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Langsam" @@ -11673,7 +11673,7 @@ msgstr "Langsam" msgid "Slow down if layer print time is below" msgstr "Langsamer drucken wenn die Schichtdruckzeit geringer ist als" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Langsames Kippen" @@ -11681,7 +11681,7 @@ msgstr "Langsames Kippen" msgid "Small perimeters" msgstr "Dünne Außenkonturen" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Kleiner Pfeilerdurchmesser in Prozent" @@ -11779,7 +11779,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Einige SLA-Materialien wurden deinstalliert." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11806,7 +11806,7 @@ msgstr "" "Einige Objekte sind zu hoch und können nicht ohne Zusammenstoß mit dem " "Extruder gedruckt werden." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11825,7 +11825,7 @@ msgstr "" "Einige Voreinstellungen werden geändert und die nicht gespeicherten " "Änderungen werden vom Konfigurations-Snapshot nicht erfasst." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -12016,7 +12016,7 @@ msgid "Spiral vase" msgstr "Spiralvasenmodus" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Trennen" @@ -12083,13 +12083,13 @@ msgstr "Standard" msgid "Stars" msgstr "Sterne" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Start G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Ein neues Projekt beginnen" @@ -12097,7 +12097,7 @@ msgstr "Ein neues Projekt beginnen" msgid "Start at height" msgstr "Starte auf Höhe" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Neuen Slicing-Prozess starten" @@ -12149,7 +12149,7 @@ msgid "Status:" msgstr "Status:" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Stealth" @@ -12208,19 +12208,19 @@ msgstr "Stützverstärker" msgid "Support Generator" msgstr "Stütz-Generator" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Stützfuß Durchmesser" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Stützfuß Höhe" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Sicherheitsabstand der Stützbasis" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Stützkopf" @@ -12274,7 +12274,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Stützmaterial/Raft/Schürzen Extruder" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Stützen nur auf dem Druckbett" @@ -12282,12 +12282,12 @@ msgstr "Stützen nur auf dem Druckbett" msgid "Support parameter change" msgstr "Stützparameter Änderung" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Stützpfeiler" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Stützpunktdichte" @@ -12296,16 +12296,16 @@ msgid "Support points edit" msgstr "Stützpunkte editieren" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Stützen" @@ -12460,7 +12460,7 @@ msgstr "Schnappschuss der Konfiguration erstellen" msgid "Taking a configuration snapshot failed." msgstr "Schnappschuss der Konfiguration erstellen fehlgeschlagen." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatur" @@ -12486,7 +12486,7 @@ msgstr "Temperaturen" msgid "Temperatures" msgstr "Temperaturen" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Vorlage Benutzerdefinierter G-Code" @@ -12647,7 +12647,7 @@ msgstr "" "Der Wischturm wird nur für mehrere Objekte unterstützt, wenn diese die " "gleiche Schichthöhe haben" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12706,7 +12706,7 @@ msgstr "" "Weltkoordinatensystem möglich,\n" "sobald die Drehung in die Objektkoordinaten eingearbeitet wurde." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" "Der Standardwinkel für die Verbindung von Stützstäben und Verbindungen." @@ -12815,7 +12815,7 @@ msgstr "" msgid "The file does not exist." msgstr "Die Datei existiert nicht." -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12849,7 +12849,7 @@ msgstr "" msgid "The following characters are not allowed by a FAT file system:" msgstr "Die folgenden Zeichen sind in einem FAT-Dateisystem nicht zulässig:" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12907,7 +12907,7 @@ msgstr "" msgid "The following values were substituted:" msgstr "Die folgenden Werte wurden ersetzt:" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -12915,7 +12915,7 @@ msgstr "" "Der Abstand zwischen dem Objektboden und der erzeugten Grundschicht im " "Nullhöhenmodus." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Die Höhe des Pfeilergrundkegels" @@ -12957,7 +12957,7 @@ msgstr "" "Die letzten Farbwechsel-Daten wurden für einen Einzel-Extruder-Druck " "gespeichert." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -12965,7 +12965,7 @@ msgstr "" "Der maximale Abstand zwischen 2 Pfeilern, die miteinander verbunden werden. " "Ein Wert von null verhindert die Kaskadierung von Pfeilern." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Die maximale Länge einer Überbrückung" @@ -12990,7 +12990,7 @@ msgstr "" "Der maximale Abstand, um den jeder Außenhautpunkt (in beide Richtungen) " "versetzt werden kann, gemessen senkrecht zur Umfangswand." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -13025,7 +13025,7 @@ msgstr "" "Die Anzahl der unteren Massivschichten wird über bottom_solid_layers erhöht, " "wenn es notwendig ist, um die Mindeststärke der Bodenschale zu erfüllen." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -13068,7 +13068,7 @@ msgstr "" "Das Objekt wird um diese Anzahl von Schichten angehoben, und darunter wird " "Trägermaterial erzeugt." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -13077,7 +13077,7 @@ msgstr "" "Pfeiler, die in problematischen Bereichen eingesetzt werden, in die ein " "normaler Pfeiler nicht passt." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13088,7 +13088,7 @@ msgstr "" "wird eine langsame Verkippung verwendet, andernfalls - eine schnelle " "Verkippung" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -13100,7 +13100,7 @@ msgstr[1] "" "Die unten aufgeführten physischen Drucker basieren auf der Voreinstellung, " "die Sie löschen möchten." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -13162,7 +13162,7 @@ msgstr "Der angegebene Dateiname ist ungültig." msgid "The provided name is not valid;" msgstr "Der angegebene Name ist ungültig;" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -13170,7 +13170,7 @@ msgstr "" "Das ausgewählte 3MF enthält Objekte mit bemalten FDM-Stützen, die eine " "neuere Version von PrusaSlicer verwenden und nicht kompatibel sind." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -13178,7 +13178,7 @@ msgstr "" "Das ausgewählte 3MF enthält ein mit Multimaterial Aufmal Objekt, das eine " "neuere Version von PrusaSlicer verwendet und nicht kompatibel ist." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13186,7 +13186,7 @@ msgstr "" "Das ausgewählte 3MF enthält ein Aufmal-Naht Objekt, das eine neuere Version " "von PrusaSlicer verwendet und nicht kompatibel ist." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13234,7 +13234,7 @@ msgstr "" "Das ausgewählte Objekt konnte nicht geteilt werden, da es nur ein solides " "Teil enthält." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13271,7 +13271,7 @@ msgstr "Die Größe des Objekts kann in Zoll angegeben werden" msgid "The size of the object is zero" msgstr "Die Größe des Objekts ist Null" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13349,7 +13349,7 @@ msgstr "Der angegebene Name ist ungültig;" msgid "The supplied settings will cause an empty print." msgstr "Die vorgenommenen Einstellungen führen zu einem leeren Druck." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Die Stärke der Grundschicht und seine optionalen Hohlraumwände." @@ -13753,11 +13753,11 @@ msgstr "" msgid "This is a default preset." msgstr "Dies ist eine Standard-Voreinstellung." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Dies ist ein relatives Maß für die Dichte der Stützpunkte." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13770,7 +13770,7 @@ msgid "This is a system preset." msgstr "Dies ist eine Systemvoreinstellung." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Dies wird nur als visuelles Hilfsmittel in der PrusaSlicer-" @@ -14101,7 +14101,7 @@ msgstr "" "Konfiguration erstellt, bevor die mit dieser %s-Version kompatiblen Dateien " "installiert werden." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14115,7 +14115,7 @@ msgstr "" "oder einen unbekannten Wert stillschweigend oder interaktiv durch einen " "Standardwert zu ersetzen." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14139,15 +14139,15 @@ msgstr "" "auszuführen. Die optimale Anzahl beträgt etwas mehr als die Anzahl der " "verfügbaren Kerne/Prozessoren." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Kippen" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Kippen für hochviskoses Harz" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Kippzeit" @@ -14177,15 +14177,15 @@ msgstr "" "während eines Werkzeugwechsels (bei Ausführung des T-Codes) ein Filament " "entlädt. Diese Zeit wird vom G-Code Zeitschätzer zur Gesamtdruckzeit addiert." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Dauer des schnellen Kippens" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Dauer des langsamen Kippens" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Dauer des super-langsamen Kippens" @@ -14248,7 +14248,7 @@ msgstr "Werkzeug" msgid "Tool #" msgstr "Werkzeug #" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-Code für Werkzeugwechsel" @@ -14270,7 +14270,7 @@ msgstr "Werkzeugposition" msgid "Tool type" msgstr "Werkzeugtyp" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Werkzeugwechsel-Parameter für MM-Drucker mit einem Extruder" @@ -14293,7 +14293,7 @@ msgstr "" "Hinweis zur Ober-/Bodenschalestärke: Nicht verfügbar wegen ungültiger " "Schichthöhe." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Ansicht von oben" @@ -14389,7 +14389,7 @@ msgstr "Eilgang" msgid "Triangles" msgstr "Dreiecke" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14411,11 +14411,11 @@ msgstr "Druckertyp." msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "OFFENES SCHLOSS" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14428,7 +14428,7 @@ msgstr "" "Klicken Sie, um alle Einstellungen für die aktuelle Optionsgruppe auf die " "System- (oder Standard-) Werte zurückzusetzen." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14472,11 +14472,11 @@ msgstr "Kann nicht durch mehr als ein Volumen ersetzt werden" msgid "Undef" msgstr "Undef" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Kategorie nicht definieren" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Gruppe nicht definieren" @@ -14490,7 +14490,7 @@ msgstr "Unterlauf" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Undo" @@ -14688,7 +14688,7 @@ msgstr "Benutze freie Kamera" msgid "Use inches" msgstr "Zoll verwenden" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Grundschicht benutzen" @@ -14780,11 +14780,11 @@ msgstr "" "Der Wert wurde geändert und ist nicht gleich wie die Systemeinstellung oder " "die letzte abgespeicherte Voreinstellung" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Werte in dieser Spalte sind für den normalen Modus" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Werte in dieser Spalte sind für den Stealth Modus" @@ -14830,7 +14830,7 @@ msgstr "Hersteller:" msgid "Verbose G-code" msgstr "Ausführlicher G-Code" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Version" @@ -14879,7 +14879,7 @@ msgstr "" "Besuchen Sie \"Einstellungen\" und prüfen Sie \"%1%\"\n" "um Ihre Auswahl zu ändern." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualisierung eines bereits gesliceten und gespeicherten G-Codes" @@ -14904,7 +14904,7 @@ msgstr "Volumen in Objekt neu angeordnet" msgid "Volumetric" msgstr "Volumetrisch" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Hinweise zum Volumenstrom nicht verfügbar" @@ -14927,17 +14927,17 @@ msgstr "Volumengeschwindigkeit" msgid "WARNING:" msgstr "WARNUNG:" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "WEISSER PUNKT" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "Das Symbol mit dem WEISSEN PUNKT zeigt eine Nicht-System- (oder nicht " "standardmäßige) Voreinstellung an." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14945,7 +14945,7 @@ msgstr "" "Das Symbol WEISSER PUNKT zeigt an, dass die Einstellungen dieselben sind wie " "in der zuletzt gespeicherten Voreinstellung für die aktuelle Optionsgruppe." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14953,7 +14953,7 @@ msgstr "" "Das Symbol WEISSER PUNKT zeigt an, dass der Wert identisch ist mit " "demjenigen in der zuletzt gespeicherten Voreinstellung." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Wandstärke" @@ -15118,7 +15118,7 @@ msgstr "" "Extruder diese zusätzliche Menge an Filament ausgeben. Diese Einstellung " "wird selten benötigt." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -15134,17 +15134,19 @@ msgstr "" "Umfänge, aber es können Lücken entstehen oder die Umfänge werden übermäßig " "ausgedehnt." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" "Beim Übergang zwischen verschiedenen Anzahlen von Umfängen, wenn das Teil " -"dünner wird, wird eine bestimmte Menge an Platz zugewiesen, um die Umfänge " -"zu teilen oder zu verbinden." +"dünner wird, wird eine bestimmte Menge an Platz zum Teilen oder Verbinden " +"der Umfangssegmente zugewiesen. Wenn er als Prozentsatz ausgedrückt wird (z." +"B. 100%), wird er auf der Grundlage des Düsendurchmessers berechnet." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Ganzes Wort" @@ -15156,7 +15158,7 @@ msgstr "Breite" msgid "Width (mm)" msgstr "Breite (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Abstand von der Mitte der hinteren Kugel bis zur Mitte der vorderen Kugel" @@ -15165,18 +15167,18 @@ msgstr "" msgid "Width of a wipe tower" msgstr "Breite des Reinigungsturms" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Breite der Verbindungsstäbe, die das Objekt und die erzeugte Grundschicht " "verbinden." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Displaybreite" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -15190,7 +15192,7 @@ msgstr "" "Merkmal selbst. Wird die Breite als Prozentsatz (z.B. 85%) angegeben, wird " "sie auf der Grundlage des Düsendurchmessers errechnet." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -15234,7 +15236,7 @@ msgstr "Reinigungsturm - Anpassung des Reinigungsvolumens" msgid "Wipe tower brim width" msgstr "Wischturm Randbreite" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Reinigungsturm Parameter" @@ -15300,7 +15302,7 @@ msgstr "" "\n" "Aktualisierte Konfigurationssammlungen:" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Schreibt Informationen über das Modell auf die Konsole." @@ -15391,7 +15393,7 @@ msgstr "" "Sie können hier Ihre persönlichen Notizen eingeben. Der Text wird dem " "Header vom G-Code hinzugefügt." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Sie können Ihre Notizen zum SLA Druckmaterial hier eingeben." @@ -15558,7 +15560,7 @@ msgstr "" "Ihre aktuellen Änderungen löschen alle gespeicherten Extruder-(Werkzeug-) " "Wechsel." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Ihre Datei wurde repariert." @@ -15597,7 +15599,7 @@ msgstr "Z-Abstand" msgid "Z travel" msgstr "Z Eilgang" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zickzack" @@ -15719,7 +15721,7 @@ msgstr "Standard-Druckprofil" msgid "default value" msgstr "Standardwert" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "löschen" @@ -15797,7 +15799,7 @@ msgid "flow rate is maximized" msgstr "die Durchflussmenge ist am Maximum" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15822,7 +15824,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15839,7 +15841,7 @@ msgid "in" msgstr "in" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15853,7 +15855,7 @@ msgstr "" "aktuelle Optionsgruppe auf die System- (oder Standard-) Werte zurückzusetzen." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15862,7 +15864,7 @@ msgstr "" "die aktuelle Optionsgruppe übereinstimmen" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15899,11 +15901,11 @@ msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "basiert auf Slic3r von Alessandro Ranellucci und der RepRap Community." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "ist unter der Lizenz der" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15927,7 +15929,7 @@ msgstr "max PrusaSlicer Version" msgid "min PrusaSlicer version" msgstr "min PrusaSlicer Version" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -15967,19 +15969,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -15993,8 +15994,9 @@ msgstr "mm (Null zum Deaktivieren)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm oder %" @@ -16056,7 +16058,7 @@ msgstr "Modell" msgid "modified" msgstr "geändert" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "Kosten/Flasche" @@ -16114,7 +16116,7 @@ msgstr "Drucker" msgid "printer model" msgstr "Druckermodell" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "Entfernen" @@ -16135,11 +16137,11 @@ msgstr "benötigt min. %s und max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -16262,8 +16264,8 @@ msgstr "Schreibabruf fehlgeschlagen" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/en/PrusaSlicer_en.po b/resources/localization/en/PrusaSlicer_en.po index 0edd2bb13..e11caac1a 100644 --- a/resources/localization/en/PrusaSlicer_en.po +++ b/resources/localization/en/PrusaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,54 +13,54 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.3\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "" @@ -184,7 +184,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "" @@ -242,19 +242,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "" @@ -287,7 +286,7 @@ msgid "Load shape from STL..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "" @@ -300,7 +299,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "" @@ -499,19 +498,19 @@ msgstr "" msgid "Infill" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "" @@ -620,7 +619,7 @@ msgid "Standard" msgstr "" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "" @@ -870,7 +869,7 @@ msgstr "" msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "" @@ -1162,7 +1161,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "" @@ -1765,7 +1764,7 @@ msgstr "" msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1781,7 +1780,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "" @@ -1791,7 +1790,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "" @@ -1972,8 +1971,8 @@ msgstr "" msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "" @@ -2028,7 +2027,7 @@ msgstr "" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "" @@ -2252,7 +2251,7 @@ msgid "Add..." msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "" @@ -2299,7 +2298,7 @@ msgid "Next Undo action: %1%" msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "" @@ -2339,7 +2338,7 @@ msgid "Selection-Remove from rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "" @@ -2594,7 +2593,7 @@ msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "" @@ -2697,7 +2696,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "" @@ -2714,7 +2713,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "" @@ -2765,7 +2764,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "" @@ -2849,7 +2848,7 @@ msgid "Minimal points distance" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "" @@ -3614,7 +3613,7 @@ msgid "Speed" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3637,52 +3636,51 @@ msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "" @@ -3824,7 +3822,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "" @@ -3885,7 +3883,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "" @@ -4516,11 +4514,11 @@ msgstr "" msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "" @@ -4801,7 +4799,7 @@ msgstr "" msgid "Attention!" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "" @@ -4838,7 +4836,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "" @@ -5181,13 +5179,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "" @@ -5224,7 +5222,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "" @@ -5302,7 +5300,7 @@ msgid "Keyboard shortcuts" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -5310,11 +5308,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "" @@ -5340,13 +5338,13 @@ msgid "Print Settings" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "" @@ -5429,621 +5427,621 @@ msgstr "" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "" @@ -6265,8 +6263,8 @@ msgstr "" msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "" @@ -6336,7 +6334,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "" @@ -6484,7 +6482,7 @@ msgid "Select what kind of support do you need" msgstr "" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "" @@ -6582,7 +6580,7 @@ msgid "(including spool)" msgstr "" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "" @@ -7048,10 +7046,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "" @@ -7480,7 +7478,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "" @@ -7492,7 +7490,7 @@ msgstr "" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "" @@ -7789,11 +7787,11 @@ msgstr "" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "" @@ -7902,12 +7900,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "" @@ -8156,7 +8154,7 @@ msgstr "" msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "" @@ -8244,7 +8242,7 @@ msgstr "" msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "" @@ -8252,52 +8250,52 @@ msgstr "" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8310,82 +8308,82 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Toolchange parameters with single extruder MM printers" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8398,20 +8396,20 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8419,64 +8417,64 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8485,105 +8483,105 @@ msgstr "" msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -8591,14 +8589,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8608,7 +8606,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -8616,84 +8614,84 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8701,23 +8699,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8725,13 +8723,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8739,17 +8737,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "WHITE BULLET icon indicates a non-system (or non-default) preset." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -8757,68 +8755,68 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "" @@ -8901,7 +8899,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -8962,49 +8960,49 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9598,26 +9596,26 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10301,8 +10299,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "" @@ -10317,9 +10315,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "" @@ -10514,8 +10511,8 @@ msgstr "" msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -10649,8 +10646,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "" @@ -10716,7 +10714,7 @@ msgid "Extruder Color" msgstr "" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" @@ -10797,7 +10795,7 @@ msgstr "" msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "" @@ -10953,8 +10951,8 @@ msgid "" "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "" @@ -11012,7 +11010,7 @@ msgstr "" msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "" @@ -12516,7 +12514,7 @@ msgid "" "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13046,33 +13044,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13084,11 +13084,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13097,63 +13097,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13162,462 +13134,462 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" "then a slow tilt will be used, otherwise - a fast tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -13625,19 +13597,19 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -13647,92 +13619,92 @@ msgstr "" "one. This parameter defines how far the center of two smaller pads should " "be. If they are closer, they will get merged into one pad." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -13741,240 +13713,240 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -13982,80 +13954,80 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/es/PrusaSlicer.mo b/resources/localization/es/PrusaSlicer.mo index debeea5caf10cb3be1b25f9810219affff3800f1..c5f301767fa43a2d1258723c76461280d7a85e71 100644 GIT binary patch delta 70670 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 diff --git a/resources/localization/es/PrusaSlicer_es.po b/resources/localization/es/PrusaSlicer_es.po index 150affdae..4f2f5ef51 100644 --- a/resources/localization/es/PrusaSlicer_es.po +++ b/resources/localization/es/PrusaSlicer_es.po @@ -7,7 +7,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -35,9 +35,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -126,7 +125,7 @@ msgstr[0] "%1% (%2$d carcasa)" msgstr[1] "%1% (%2$d carcasas)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Preset" @@ -145,7 +144,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%1% fue sustituido con %2%" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% fue laminado con éxito." @@ -166,7 +165,7 @@ msgstr "%3.2f mm³/s a una velocidad de filamento de %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d líneas: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d ajustes iniciales importados con éxito." @@ -335,7 +334,7 @@ msgstr "" msgid "&About %s" msgstr "&Acerca de %s" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "&Contraer la barra lateral" @@ -347,27 +346,27 @@ msgstr "&Configuración" msgid "&Configuration Snapshots" msgstr "Instantáneas de la &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Copiar" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "&Eliminar selección" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Pestaña de Ajustes de &filamento" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Archivo" @@ -375,19 +374,19 @@ msgstr "&Archivo" msgid "&Finish" msgstr "&Terminar" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Pantalla completa" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Previsualización Código &G" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "Ayu&da" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importar" @@ -395,7 +394,7 @@ msgstr "&Importar" msgid "&Language" msgstr "&Idioma" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nuevo proyecto" @@ -403,19 +402,19 @@ msgstr "&Nuevo proyecto" msgid "&Next >" msgstr "&Siguiente >" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "Abrir código G (&O)" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Abrir pr&oyecto" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&Pegar" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Pestaña Base de impresión" @@ -423,35 +422,35 @@ msgstr "&Pestaña Base de impresión" msgid "&Preferences" msgstr "&Preferencias" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Sa&lir" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Rehacer" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Reparar archivo STL" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "G&uardar proyecto" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "&Seleccionar Todo" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Des&hacer" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "Ve&r" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Ventana" @@ -460,7 +459,7 @@ msgstr "&Ventana" msgid "(All)" msgstr "(Todo)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Laminar A&hora" @@ -472,7 +471,7 @@ msgstr "(Re)laminar" msgid "(Some lines not shown)" msgstr "(Algunas líneas no se muestran)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Desconocido)" @@ -484,7 +483,7 @@ msgstr "(incluyendo la bobina)" msgid "(minimum)" msgstr "(mínimo)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") no encontrado." @@ -540,7 +539,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (pesado)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -629,7 +628,7 @@ msgstr "" "Una buena aproximación son unos 60°C para PLA y 110°C para ABS. Deja el " "valor a cero si no tienes base calefactable." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -655,7 +654,7 @@ msgstr "Clave API" msgid "Abort" msgstr "Abortar" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Acerca de %s" @@ -672,7 +671,7 @@ msgstr "Control de aceleración (avanzado)" msgid "Access violation" msgstr "Violación de acceso" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Precisión" @@ -712,7 +711,7 @@ msgstr "" "soporte para reducir el tiempo de impresión y el consumo de filamento? Lee " "más en la documentación." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Añadir" @@ -777,7 +776,7 @@ msgstr "Añadir Forma desde la Galería" msgid "Add Shapes from Gallery" msgstr "Añadir Formas desde la Galería" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Añade un pad debajo del modelo compatible" @@ -894,7 +893,7 @@ msgid "Add pause print" msgstr "Añadir pausa de impresión" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Añadir impresora física" @@ -994,17 +993,16 @@ msgstr "Dirección" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Avanzado" @@ -1040,16 +1038,16 @@ msgstr "" "esta cantidad de material en la torre de limpieza para producir de forma " "fiable sucesivas rellenos u objetos de sacrificio." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "Código G tras un cambio de capa" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Alinear XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Alinear el modelo a un punto dado." @@ -1062,7 +1060,7 @@ msgid "Aligned Rectilinear" msgstr "Rectilíneo Alineado" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Todo" @@ -1264,7 +1262,7 @@ msgstr "Aplicar el cambio de color automáticamente" msgid "Apply to all the remaining small objects being loaded." msgstr "Aplicar a todos los objetos pequeños restantes que se cargan." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1276,7 +1274,7 @@ msgstr "Generador de perímetros Arachne" msgid "Archimedean Chords" msgstr "Acordes de Arquímedes" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "¿Estás seguro de que deseas %1% el preset seleccionado?" @@ -1293,7 +1291,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "¿Estás seguro de que quieres continuar?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1307,7 +1305,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "¿Estás seguro de que quieres borrar la impresora \"%1%\"?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "¿Está seguro de que quiere eliminar todas las sustituciones?" @@ -1315,7 +1313,7 @@ msgstr "¿Está seguro de que quiere eliminar todas las sustituciones?" msgid "Are you sure you want to do it?" msgstr "¿Estás seguro de que quieres hacerlo?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Área de relleno" @@ -1347,7 +1345,7 @@ msgstr "" "iconoOrdenar para ajustar el tamaño del espacio entre los objetos y " "permitir las rotaciones automáticas?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1501,7 +1499,7 @@ msgstr "Genera los puntos de apoyo automáticamente" msgid "Autogeneration will erase all manually edited points." msgstr "La autogeneración borrará todos los puntos editados manualmente." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Generación automática" @@ -1509,7 +1507,7 @@ msgstr "Generación automática" msgid "Automatic updates" msgstr "Actualizaciones automáticas" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Archivo STL reparado automáticamente" @@ -1525,11 +1523,11 @@ msgstr "Evita cruzar perímetros" msgid "Avoid crossing perimeters - Max detour length" msgstr "Evitar cruzar perímetros - Longitud máxima del desvío" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "FLECHA HACIA ATRÁS" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1540,7 +1538,7 @@ msgstr "" "iguales a los que se guardaron para el grupo de opciones actual.\n" "Haz clic para devolver esos valores a los últimos guardados." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1554,7 +1552,7 @@ msgstr "" msgid "Background processing" msgstr "Procesamiento en segundo plano" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Salir en caso de valores de configuración desconocidos" @@ -1562,7 +1560,7 @@ msgstr "Salir en caso de valores de configuración desconocidos" msgid "Balanced" msgstr "Balanceado" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Base" @@ -1611,7 +1609,7 @@ msgstr "" "Ajusta esto a cero para deshabilitar los comandos de control de temperatura " "de la base calefactable en la salida." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "Código G para antes del cambio de capa" @@ -1636,7 +1634,7 @@ msgstr "La mejor calidad de superficie" msgid "Between objects G-code" msgstr "Código G para entre objetos" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "Código G para entre objetos (para impresión secuencial)" @@ -1658,11 +1656,11 @@ msgstr "Bloquear soportes" msgid "Block supports by angle" msgstr "Bloquear soportes según ángulo" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Volumen de la botella" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Peso botella" @@ -1679,7 +1677,7 @@ msgstr "Inferior" msgid "Bottom" msgstr "Inferior" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Vista inferior" @@ -1960,8 +1958,8 @@ msgstr "" "No se puede proceder sin puntos de soporte! Añade puntos de soporte o " "desactiva la generación de soportes." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Capacidades" @@ -1969,7 +1967,7 @@ msgstr "Capacidades" msgid "Capture a configuration snapshot" msgstr "Captura una instantánea de configuración" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "No distingue entre mayúsculas y minúsculas" @@ -1977,11 +1975,11 @@ msgstr "No distingue entre mayúsculas y minúsculas" msgid "Category" msgstr "Categoría" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centrar la impresión alrededor del centro dado." @@ -2088,7 +2086,7 @@ msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "" "Escoge un archivo para importar la textura de la base de impresión (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Elije un archivo para laminar (STL/OBJ/AMF/3MF/PRUSA):" @@ -2134,7 +2132,7 @@ msgstr "Círculo" msgid "Circular" msgstr "Circular" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Clásico" @@ -2142,11 +2140,13 @@ msgstr "Clásico" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" "El generador de perímetros clásico produce perímetros con una anchura de " "extrusión constante y para las zonas muy finas se utiliza gap-fill. El motor " -"Arachne produce perímetros con un ancho de extrusión variable." +"de Arachne produce perímetros con un ancho de extrusión variable. Este " +"ajuste también afecta al relleno Concéntrico." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2224,7 +2224,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "Cerrando PrusaSlicer. Se modifica el proyecto actual." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Distancia de cierre" @@ -2232,7 +2232,7 @@ msgstr "Distancia de cierre" msgid "Closing radius" msgstr "Radio de cierre" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Ocultar barra lateral" @@ -2240,11 +2240,11 @@ msgstr "Ocultar barra lateral" msgid "Collapse/Expand the sidebar" msgstr "Ocultar/Expandir barra lateral" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Color" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "Código G Cambio Color" @@ -2308,12 +2308,12 @@ msgstr "Comandos" msgid "Comment:" msgstr "Comentario:" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Comparar Ajustes" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Comparar justes" @@ -2321,7 +2321,7 @@ msgstr "Comparar justes" msgid "Compare this preset with some another" msgstr "Comparar este ajuste con algún otro" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Los ajustes comparados tienen diferentes tecnologías de impresión" @@ -2489,7 +2489,7 @@ msgstr "" "más largo que este parámetro. Establezca este parámetro a cero para " "deshabilitar el anclaje." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Conexión de las varillas de soporte y uniones" @@ -2545,7 +2545,7 @@ msgstr "¿Continuar e instalar las actualizaciones de configuración?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "¿Continuar activando una instantánea de configuración %1%?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2563,7 +2563,7 @@ msgstr "" "Contribuciones de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, " "Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik y muchos otros." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2581,7 +2581,7 @@ msgstr "Convertir de unidades imperiales" msgid "Convert from meters" msgstr "Convertir de metros" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Enfriamiento" @@ -2597,7 +2597,7 @@ msgstr "" "Los movimientos de enfriamiento se están acelerando gradualmente hacia esta " "velocidad." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Umbrales de enfriamiento" @@ -2618,11 +2618,11 @@ msgctxt "PresetName" msgid "Copy" msgstr "Copiar" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Copiar Información de Versión" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Copiar selección al portapapeles" @@ -2685,32 +2685,32 @@ msgstr "" "un problema con el dispositivo de destino, intenta exportar nuevamente o usa " "un dispositivo diferente. El código G de salida dañado está en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Corrección para la expansión" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Corrección de la expansión en el eje X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Corrección de la expansión en el eje Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Corrección de la expansión en el eje Z" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Correcciones" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Coste" @@ -2786,7 +2786,7 @@ msgstr "" "puede reducir la resolución de la impresión, por lo tanto es aconsejable " "mantener ese valor razonablemente bajo." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Crear pad alrededor del objeto e ignorar la elevación del soporte" @@ -2802,7 +2802,7 @@ msgstr "Creando un nuevo proyecto mientras se modifican algunos ajustes." msgid "Creating a new project while the current project is modified." msgstr "Creando un nuevo proyecto mientras se modifica el proyecto actual." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Ángulo crítico" @@ -2810,7 +2810,7 @@ msgstr "Ángulo crítico" msgid "Critical error" msgstr "Error crítico" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Cruzado" @@ -2856,8 +2856,8 @@ msgstr "" "conexiones HTTPS OctoPrint, en formato crt/pem. Si se deja en blanco, el " "repositorio de certificados OS CA será usado." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Código G personalizado" @@ -2901,7 +2901,7 @@ msgid "Custom template (\"%1%\")" msgstr "Plantilla personalizada (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Cortar" @@ -2909,7 +2909,7 @@ msgstr "Cortar" msgid "Cut by Plane" msgstr "Cortar por el Plano" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Cortar modelo a una Z dada." @@ -2917,7 +2917,7 @@ msgstr "Cortar modelo a una Z dada." msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "D&eseleccionar todo" @@ -2925,7 +2925,7 @@ msgstr "D&eseleccionar todo" msgid "Dark mode (experimental)" msgstr "Modo oscuro (experimental)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Directorio de datos" @@ -2951,7 +2951,7 @@ msgstr "Reducir Instancias" msgid "Default" msgstr "Por defecto" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Perfil de material de SLA predeterminado" @@ -2992,8 +2992,8 @@ msgstr "" msgid "Default print profile" msgstr "Perfil de impresión por defecto" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3007,7 +3007,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Definir un perfil de impresora personalizado" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3026,11 +3026,11 @@ msgstr "Retardo tras la descarga" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Borrar" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Borrar &Todo" @@ -3084,7 +3084,7 @@ msgid "Delete Subobject" msgstr "Eliminar Subobjeto" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Eliminar todo" @@ -3143,16 +3143,16 @@ msgstr "" msgid "Delete tool change" msgstr "Eliminar cambio de herramienta" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Borra todos los objetos" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Borrar la selección actual" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Densidad" @@ -3164,9 +3164,9 @@ msgstr "Densidad de relleno interior, expresado en el rango 0% - 100%." msgid "Density of the first raft or support layer." msgstr "Densidad de la primera balsa o capa de soporte." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Dependencias" @@ -3190,7 +3190,7 @@ msgstr "Deseleccionar todo" msgid "Deselect by rectangle" msgstr "Deseleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Deseleccionar todos los objetos" @@ -3226,7 +3226,7 @@ msgstr "Separar del ajuste del sistema" msgid "Detach preset" msgstr "Separar ajuste" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Separado" @@ -3250,7 +3250,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Detecta paredes delgadas" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3274,15 +3274,15 @@ msgstr "Dispositivo:" msgid "Diameter" msgstr "Diámetro" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diámetro en mm del pilar de la base" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diámetro en mm de los pilares de soporte" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diámetro de la parte en punta de la cabeza" @@ -3347,31 +3347,31 @@ msgstr "Descartar todos los cambios personalizados" msgid "Discard changes" msgstr "Descartar los cambios" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Pantalla" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Altura de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Espejo horizontal de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientación de la pantalla" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Mostrar la ventana de la cola de carga del host de impresión" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Espejo vertical de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Anchura de la pantalla" @@ -3390,7 +3390,7 @@ msgstr "" "Distancia entre el faldón y el borde (cuando no se utiliza el protector " "contra corrientes de aire) u objetos." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3432,11 +3432,11 @@ msgstr "" msgid "Divide by zero" msgstr "Dividir por cero" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "No fallar si el archivo suministrado para --load no existe." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3496,7 +3496,7 @@ msgstr "" "¿Desea seleccionar filamentos predeterminados para estos modelos de " "impresoras FFF?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "No organizar" @@ -3560,11 +3560,11 @@ msgstr "" msgid "Drop to bed" msgstr "Colocar en la Cama" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplicar por cuadrícula" @@ -3581,11 +3581,11 @@ msgstr "Durante el resto de capas, el ventilador siempre funcionará al %1%%%" msgid "During the other layers, fan will be turned off." msgstr "Durante las otras capas, el ventilador se apagará." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinámico" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "E&xportar" @@ -3636,7 +3636,7 @@ msgstr "Editar código G personalizado" msgid "Edit pause print message" msgstr "Editar mensaje de pausa de impresión" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Editar impresora física" @@ -3660,7 +3660,7 @@ msgstr "Edición" msgid "Eigen vectorization supported:" msgstr "Se admite la vectorización propia:" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Expul&sar Tarjeta SD / Unidad Flash" @@ -3668,7 +3668,7 @@ msgstr "Expul&sar Tarjeta SD / Unidad Flash" msgid "Eject SD card / Flash drive" msgstr "Expulsa la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Expulsa la tarjeta SD / disco USB después de que se haya exportado a él." @@ -3686,7 +3686,7 @@ msgstr "La expulsión del dispositivo %s(%s) ha fallado." msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Ancho mínimo del pie de elefante" @@ -3720,7 +3720,7 @@ msgstr "Emitir a código G" msgid "Empty layer between %1% and %2%." msgstr "Capa vacía entre %1% y %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Habilitar" @@ -3738,11 +3738,11 @@ msgid "Enable fan if layer print time is below" msgstr "" "Habilitar ventilador si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Habilitar vaciado" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Activar espejo horizontal de salida de imágenes" @@ -3757,7 +3757,7 @@ msgstr "" "Habilitar el alisado de las capas superiores con el cabezal de impresión " "caliente para obtener una superficie lisa" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3765,7 +3765,7 @@ msgstr "" "Permite leer valores de configuración desconocidos sustituyéndolos " "silenciosamente por los predeterminados." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3816,7 +3816,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Habilitar la función de altura de capa variable" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Activar espejo vertical de salida de imágenes" @@ -3832,7 +3832,7 @@ msgstr "" "Permite rellenar los huecos entre los perímetros y entre los perímetros más " "internos y el relleno." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3864,7 +3864,7 @@ msgstr "Imponer soportes" msgid "Enqueued" msgstr "En cola" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Asegurar en la base" @@ -3978,7 +3978,7 @@ msgstr "" "Error: \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Error" @@ -4129,23 +4129,23 @@ msgstr "Modo experto" msgid "Export" msgstr "Exportar" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exportar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exportar código &G" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exportar &Movimientos como OBJ" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exportar AMF" @@ -4153,11 +4153,11 @@ msgstr "Exportar AMF" msgid "Export AMF file:" msgstr "Exportar archivo AMF:" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exportar Conjunto de A&justes" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exportar Paquete de Configuración Con Impresoras Físicas" @@ -4166,15 +4166,15 @@ msgid "Export G-Code." msgstr "Exportar Código G." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exportar código G" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exportar código G a la Tarjeta SD / Unidad Flash" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exportar OBJ" @@ -4182,19 +4182,19 @@ msgstr "Exportar OBJ" msgid "Export OBJ file:" msgstr "Exportar archivo OBJ:" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exportar Plataforma como &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exportar plataforma como STL &Incluyendo Soportes" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exportar SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exportar STL" @@ -4202,13 +4202,13 @@ msgstr "Exportar STL" msgid "Export STL file:" msgstr "Exportar archivo STL:" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Exportar todos los ajustes preestablecidos, incluidas las impresoras " "físicas, al archivo" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exportar todos los ajustes al archivo" @@ -4220,23 +4220,23 @@ msgstr "Exportar como STL" msgid "Export config" msgstr "Exportar configuración" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exportar la configuración actual al archivo" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exportar plataforma actual como código G" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporta a G-code en la tarjeta SD / disco USB" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exportar plataforma actual como STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exportar la plataforma actual como STL incluyendo soportes" @@ -4255,19 +4255,19 @@ msgstr "La exportación de un archivo temporal de 3mf falló" msgid "Export sources full pathnames to 3mf and amf" msgstr "Exportar nombres de ruta completos de las fuentes a 3mf y amf" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exportar el(los) objeto(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exportar el(los) objeto(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exportar el(los) objeto(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exportar el(los) objeto(s) como STL." @@ -4275,7 +4275,7 @@ msgstr "Exportar el(los) objeto(s) como STL." msgid "Export to SD card / Flash drive" msgstr "Exportar a tarjeta SD / tarjeta Flash" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" @@ -4287,7 +4287,7 @@ msgstr "Exportar." msgid "Exporting G-code" msgstr "Exportando código G" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Exportando el paquete de configuración" @@ -4309,11 +4309,11 @@ msgid "Exposition time is out of printer profile bounds." msgstr "" "Tiempo de exposición inicial fuera de los límites del perfil de impresión." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Exposición" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Tiempo de exposición" @@ -4375,7 +4375,7 @@ msgstr "Color del extrusor" msgid "Extruder changed to" msgstr "El extrusor cambia a" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Separación del extrusor" @@ -4384,7 +4384,7 @@ msgid "Extruder offset" msgstr "Offset del extrusor" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4392,7 +4392,7 @@ msgid "Extruders" msgstr "Extrusores" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Contador de extrusores" @@ -4432,7 +4432,7 @@ msgstr "Impresoras de Tecnología FFF" msgid "Facets" msgstr "Facetas" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Capas descoloridas" @@ -4462,11 +4462,11 @@ msgstr "Fallo en la perforación de algunos agujeros en el modelo" msgid "Fan Speed (%)" msgstr "Velocidad Ventilador (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Configuración del ventilador" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Velocidad del ventilador" @@ -4500,11 +4500,11 @@ msgstr "El ventilador siempre funcionará al %1%%%" msgid "Fan will be turned off." msgstr "El ventilador se apagará." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Rápida" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Inclinación rápida" @@ -4528,7 +4528,7 @@ msgstr "Tipos de funciones" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filamento" @@ -4540,7 +4540,7 @@ msgstr "Diámetro del filamento:" msgid "Filament End G-code" msgstr "Código G Final del Filamento" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Anulaciones de filamentos" @@ -4549,7 +4549,7 @@ msgid "Filament Profiles Selection" msgstr "Selección Perfiles de Filamento" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Configuración del filamento" @@ -4591,7 +4591,7 @@ msgstr "Notas del filamento" msgid "Filament parking position" msgstr "Posición de aparcar el filamento" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Propiedades del filamento" @@ -4608,7 +4608,7 @@ msgstr "Tiempo de descarga del filamento" msgid "Filaments" msgstr "Filamentos" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Archivo no encontrado" @@ -4677,7 +4677,7 @@ msgstr "" msgid "Filling bed" msgstr "Rellenando base" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Buscar" @@ -4689,11 +4689,11 @@ msgstr "Buscar / reemplazar patrones en líneas de código G y sustituirlos." msgid "Finished" msgstr "Terminado" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Retracción del firmware" @@ -4904,7 +4904,7 @@ msgstr "" "Para que la Torre de limpieza funcione con soportes solubles, las capas de " "soportes necesitan estar sincronizadas con las capas del objeto." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Forzar el pad alrededor del objeto en todas partes" @@ -4938,7 +4938,7 @@ msgstr "" "Formato de miniaturas de código G: PNG para la mejor calidad, JPG para el " "tamaño más pequeño, QOI para el firmware de baja memoria" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4946,7 +4946,7 @@ msgstr "" "Regla de compatibilidad al cargar configuraciones desde archivos de " "configuración y archivos de proyecto (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Encontradas palabras clave reservadas en" @@ -4960,11 +4960,11 @@ msgstr "" "Desde la Lista de Objetos no puedes eliminar la última parte sólida del " "objeto." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Frontal" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vista frontal" @@ -4972,7 +4972,7 @@ msgstr "Vista frontal" msgid "Full fan speed at layer" msgstr "Velocidad máxima del ventilador en la capa" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Pantalla completa" @@ -5021,7 +5021,7 @@ msgstr "Espesor de la piel difusa" msgid "Fuzzy skin type." msgstr "Tipo de Piel difusa." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "Código G" @@ -5059,11 +5059,11 @@ msgstr "Sustituciones del código G" msgid "G-code thumbnails" msgstr "Miniaturas de código G" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Visor código G" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" @@ -5080,10 +5080,10 @@ msgstr "Galería" msgid "Gap fill" msgstr "Relleno del hueco" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "General" @@ -5114,11 +5114,11 @@ msgstr "" "para obtener una mayor adhesión de los objetos que tienen una huella muy " "delgada o deficiente en la placa de construcción." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Generar soportes" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Generar soportes para los modelos" @@ -5311,11 +5311,11 @@ msgstr "" msgid "Head diameter" msgstr "Diámetro de la cabeza" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Penetración de la cabeza" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" "La penetración de la cabeza no debaría ser mayor que el ancho de la cabeza." @@ -5341,7 +5341,7 @@ msgstr "Altura (mm)" msgid "Height of skirt expressed in layers." msgstr "Altura de la falda expresada en capas." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Altura de la pantalla" @@ -5366,15 +5366,15 @@ msgstr "" "Hola, bienvenido a %s! Este %s te ayuda con la configuración inicial; sólo " "unos pocos ajustes y estarás preparado para imprimir." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Ayuda" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Ayuda (opciones FFF)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Ayuda (opciones SLA)" @@ -5409,7 +5409,7 @@ msgstr "Alto" msgid "High extruder current on filament swap" msgstr "Alta intensidad en el extrusor durante el cambio de filamento" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Alta viscosidad" @@ -5441,7 +5441,7 @@ msgstr "Diámetro del orificio" msgid "Hollow and drill" msgstr "Vaciado y taladrado" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Vaciado de un modelo para tener un interior vacío" @@ -5449,16 +5449,16 @@ msgstr "Vaciado de un modelo para tener un interior vacío" msgid "Hollow this object" msgstr "Vaciar este objeto" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Vaciando el interior" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5528,22 +5528,22 @@ msgstr "" "Sitúa el cursos sobre los botones para más información o haz clic en este " "botón." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" "¿Hasta dónde debe extenderse el pad alrededor de la geometría contenida" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" "Cuanto deberían penetrar los conectores pequeños en el modelo del cuerpo." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "" "Cuánto tiene que penetrar la cabeza del pin en la superficie del modelo" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5764,7 +5764,7 @@ msgstr "" "Si está habilitado, el botón de la barra lateral ocultable aparecerá en la " "esquina superior derecha de la escena 3D" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -6041,7 +6041,7 @@ msgstr "" "habilitar esta opción para los certificados autofirmados si la conexión " "falla." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignorar archivos de configuración inexistentes" @@ -6059,15 +6059,15 @@ msgstr "Instrucción ilegal" msgid "Import" msgstr "Importar" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importar &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importar &Conjunto de Ajustes" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importar configuración desde un &Proyecto" @@ -6083,7 +6083,7 @@ msgstr "Importar Objeto" msgid "Import Objects" msgstr "Importar Objetos" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importar Archivo SL1 / SL1S" @@ -6091,11 +6091,11 @@ msgstr "Importar Archivo SL1 / SL1S" msgid "Import SLA archive" msgstr "Importar archivo SLA" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importar STL (Unidades Imperiales)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importar STL/OBJ/AM&F/3MF" @@ -6225,11 +6225,11 @@ msgstr "" "El tiempo de exposición inicial está fuera de los límites del perfil de " "impresión." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Tiempo de exposición inicial" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Altura de la capa inicial" @@ -6334,7 +6334,7 @@ msgstr "Error interno: %1%" msgid "Internal infill" msgstr "Relleno interno" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Penetración inválida de la cabeza" @@ -6362,7 +6362,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Entrada numérica no válida." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Diámetro de la cabeza del pin inválido" @@ -6398,11 +6398,11 @@ msgstr "Tipo de alisado" msgid "Is it safe?" msgstr "¿Es seguro?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Vista Iso" @@ -6430,7 +6430,7 @@ msgstr "" "alimentación de rampa rápidas y superar la resistencia cuando se carga un " "filamento con una punta de forma fea." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Es un último valor predeterminado para esta impresora." @@ -6444,7 +6444,7 @@ msgstr "" "No es posible borrar el último ajuste preestablecido relacionado con la " "impresora." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Límites del jerk" @@ -6510,7 +6510,7 @@ msgstr "Mantener los ajustes seleccionados." msgid "Keep upper part" msgstr "Mantener la parte superior" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" @@ -6518,11 +6518,11 @@ msgstr "Atajos de teclado" msgid "Keyboard shortcuts" msgstr "Atajos de teclado" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "CANDADO CERRADO" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6530,7 +6530,7 @@ msgstr "" "El icono de CANDADO BLOQUEADO indica que los ajustes son los mismos que los " "valores del sistema (por defecto) para el grupo de opciones actual" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6542,7 +6542,7 @@ msgstr "" msgid "Label objects" msgstr "Etiquetar objetos" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Paisaje" @@ -6582,7 +6582,7 @@ msgstr "" "\n" "La altura de capa se restablecerá a 0.01." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Límites de altura de la capa" @@ -6590,8 +6590,8 @@ msgstr "Límites de altura de la capa" msgid "Layer range Settings to modify" msgstr "Ajustes del Rango de capas a modificar" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Capas" @@ -6608,7 +6608,7 @@ msgstr "Capas" msgid "Layers and Perimeters" msgstr "Capas y Perímetros" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Capas y perímetros" @@ -6621,15 +6621,15 @@ msgstr "Opciones de diseño" msgid "Leave \"%1%\" enabled" msgstr "Dejar \"%1%\" activado" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Izquierda" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Valor del Ajuste Izquierdo" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Vista izquierda" @@ -6668,7 +6668,7 @@ msgid "Length of the infill anchor" msgstr "Longitud del relleno del anclaje" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6680,7 +6680,7 @@ msgstr "" msgid "Lift Z" msgstr "Levantar Z" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6740,19 +6740,19 @@ msgstr "Cargar pieza" msgid "Load Project" msgstr "Cargar Proyecto" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Cargar un modelo" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Cargar un archivo SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Cargar un modelo guardado con unidades imperiales" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6762,7 +6762,7 @@ msgstr "" "mantener diferentes perfiles o incluir configuraciones desde un " "almacenamiento de red." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Cargar archivo de configuración" @@ -6780,11 +6780,11 @@ msgstr "" "mismo modo, puedes utilizar Archivo-Importar-Importar archivo SL1 / SL1S, " "que también te permite reconstruir modelos 3D a partir de los datos de voxel." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Cargar configuración desde archivo de proyecto" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6792,11 +6792,11 @@ msgstr "" "Cargar la configuración desde el archivo especificado. Se puede usar más de " "una vez para cargar opciones de varios archivos." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Cargar archivo de configuración exportado" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Cargar ajustes de un paquete" @@ -6828,11 +6828,11 @@ msgstr "Cargando configuración" msgid "Loading file" msgstr "Cargando archivo" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Cargando un paquete de configuración" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Cargando un archivo de configuración" @@ -6871,7 +6871,7 @@ msgstr "Coordenadas locales" msgid "Lock supports under new islands" msgstr "Bloquear soportes bajo nuevas islas" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Nivel de registro" @@ -6887,7 +6887,7 @@ msgstr "Bajo" msgid "Lowest Z height" msgstr "Altura Z más baja" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6896,7 +6896,7 @@ msgstr "Altura Z más baja" msgid "Machine limits" msgstr "Límites de la máquina" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -6904,7 +6904,7 @@ msgstr "" "Los límites de la máquina no están establecidos, por lo tanto, el tiempo " "estimado de impresión puede no ser exacto." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6915,7 +6915,7 @@ msgstr "" "que la impresora puede aplicar un conjunto diferente de límites de la " "máquina." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -6941,20 +6941,20 @@ msgstr "Edición manual" msgid "Masked SLA file exported to %1%" msgstr "Archivo SLA enmascarado exportado a %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Coincidir con una sola línea" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Pestaña Ajustes de Mate&rial" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Material" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Configuraciones del material" @@ -6963,7 +6963,7 @@ msgstr "Configuraciones del material" msgid "Material Settings Tab" msgstr "Pestaña Ajustes de Material" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Perfil de impresión del material" @@ -6971,19 +6971,19 @@ msgstr "Perfil de impresión del material" msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Distancia máxima de puentes" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Puentes maximos en un pilar" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Distancia máxima de combinación" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Distancia máxima de enlace del pilar" @@ -7079,7 +7079,7 @@ msgstr "Aceleración máxima al retraer" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Aceleración máxima al retraer (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Aceleraciones máximas" @@ -7102,7 +7102,7 @@ msgstr "" "reducción del código G se realiza en cada capa de forma independiente, " "pueden producirse artefactos visibles." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Tiempo de exposición máximo" @@ -7138,11 +7138,11 @@ msgstr "Máximo avance del eje Y" msgid "Maximum feedrate of the Z axis" msgstr "Máximo avance del eje Z" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Avance máximo" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Tiempo de exposición inicial máximo" @@ -7182,7 +7182,7 @@ msgstr "Maximo jerk del eje Z" msgid "Maximum length of the infill anchor" msgstr "Máxima longitud del relleno del anclaje" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7215,7 +7215,7 @@ msgid "Medium" msgstr "Medio" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Combinar" @@ -7231,7 +7231,7 @@ msgstr "Juntar objeto en un objeto multipieza" msgid "Merged" msgstr "Juntar" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7271,7 +7271,7 @@ msgstr "Min" msgid "Min print speed" msgstr "Velocidad de impresión mínima" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Distancia mínima de los puntos de apoyo" @@ -7313,11 +7313,11 @@ msgstr "" "impresoras pueden ofrecer. Establézcalo en cero para desactivar cualquier " "simplificación y usar la resolución completa de la entrada." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Tiempo de exposición mínimo" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Tamaño mínimo de la característica" @@ -7329,15 +7329,15 @@ msgstr "Avance mínimo al extruir" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avance mínimo al extruir (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Avances míninos" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Tiempo de exposición inicial mínimo" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Ancho mínimo del perímetro" @@ -7362,16 +7362,19 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Espesor mínimo de una carcasa superior / inferior" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" "Espesor mínimo de las características delgadas. Las características del " -"modelo que sean más delgadas que este valor no se imprimirán, mientras que " -"las características más gruesas que el tamaño mínimo de la característica se " -"ensancharán hasta el ancho mínimo del perímetro." +"modelo que sean más finas que este valor no se imprimirán, mientras que las " +"características más gruesas que el tamaño mínimo de la característica se " +"ensancharán hasta el ancho mínimo del perímetro. Si se expresa en porcentaje " +"(por ejemplo 25%), se calculará en función del diámetro de la boquilla." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7394,11 +7397,11 @@ msgstr "Avance mínimo de movimiento" msgid "Minimum travel feedrate (M205 T)" msgstr "Velocidad mínima sin extrusión (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Mínimo de espesor de la pared de un modelo vaciado." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7423,7 +7426,7 @@ msgstr "" msgid "Mirror Object" msgstr "Reflejar objeto" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Reflejar horizontalmente" @@ -7443,7 +7446,7 @@ msgstr "Duplicar el objeto seleccionado a lo largo del eje Y" msgid "Mirror the selected object along the Z axis" msgstr "Duplicar el objeto seleccionado a lo largo del eje Z" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Reflejar verticalmente" @@ -7624,11 +7627,11 @@ msgstr "" "En lugar de considerarlos como objetos múltiples, ¿debería considerar\n" "estos archivos para formar un solo objeto que tiene varias partes?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Multiplicar copias creando una rejilla." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Multiplicar las copias por este factor." @@ -7719,7 +7722,7 @@ msgstr "" msgid "New prerelease version %1% is available." msgstr "La nueva versión prelanzamiento %1% está disponible." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Se ha seleccionado un nuevo ajuste de la impresora" @@ -7780,7 +7783,7 @@ msgid "No pad can be generated for this model with the current configuration" msgstr "" "No se puede generar el pad para este modelo con la configuración actual" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Ningún archivo previamente laminado." @@ -7788,7 +7791,7 @@ msgstr "Ningún archivo previamente laminado." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sin capas dispersas (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Ningún punto de soporte se colocará más cerca de este umbral." @@ -7804,7 +7807,7 @@ msgid "None" msgstr "Ninguno" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -7820,7 +7823,7 @@ msgstr "No encontrado:" msgid "Note" msgstr "Nota" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7831,7 +7834,7 @@ msgstr[1] "" "Ten en cuenta que el ajuste seleccionado se eliminará también de estas " "impresoras." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7843,7 +7846,7 @@ msgstr[1] "" "Ten en cuenta que estas impresoras se eliminarán después de borrar el ajuste " "seleccionado." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7894,12 +7897,12 @@ msgstr "Nota: Este ajuste se reemplazará tras guardar" msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: algunos accesos directos funcionan solo en modo de (no)edición." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notas" @@ -7913,7 +7916,7 @@ msgstr "Date cuenta" msgid "Notify about new releases" msgstr "Notificar sobre nuevos lanzamientos" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Boquilla" @@ -7925,7 +7928,7 @@ msgstr "Diámetro de la boquilla:" msgid "Nozzle and Bed Temperatures" msgstr "Temperaturas de la Base y la Boquilla" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" @@ -7957,7 +7960,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Número de movimientos de enfriamiento" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Número de extrusores de la impresora." @@ -7987,15 +7990,15 @@ msgstr "" "Extrusión, el número de bucles puede ser mayor que el configurado aquí. " "Ajuste esto a cero para deshabilitar la falda por completo." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Número de píxeles en" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Número de píxeles en X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Número de píxeles en Y" @@ -8012,7 +8015,7 @@ msgstr "" msgid "Number of solid layers to generate on top surfaces." msgstr "Número de capas sólidas para generar en las superficies superiores." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -8028,7 +8031,7 @@ msgstr "Número de cambios de herramienta" msgid "Object Settings to modify" msgstr "Configuraciones de objetos para modificar" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Elevación del objeto" @@ -8147,7 +8150,7 @@ msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" msgid "One layer mode" msgstr "Modo de capa única" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Uno de los ajustes no se encuentra" @@ -8170,7 +8173,7 @@ msgstr "" "Elimina todos menos el último objeto o habilita el modo secuencial en " "\"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8182,7 +8185,7 @@ msgstr "" msgid "Only infill where needed" msgstr "Solo rellenar cuando sea necesario" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Solo levantar Z" @@ -8224,7 +8227,7 @@ msgstr "" "La prevención de goteo actualmente no es compatible con la torre de limpieza " "activa." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Abrir &PrusaSlicer" @@ -8244,11 +8247,11 @@ msgstr "Abrir carpeta." msgid "Open G-code file:" msgstr "Abrir archivo código G:" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Abrir visor código G" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Abrir Nueva Instancia" @@ -8256,20 +8259,20 @@ msgstr "Abrir Nueva Instancia" msgid "Open Preferences." msgstr "Abrir Preferencias." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Abrir PrusaSlicer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Abrir un archivo código G" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Abrir instancia nueva de PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Abrir un archivo de proyecto" @@ -8312,7 +8315,7 @@ msgid "Open the Prusa3D drivers download page in your browser" msgstr "" "Abrir la página de descarga de los controladores Prusa3D en su navegador" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Abre el diálogo para modificar la galería de formas" @@ -8328,7 +8331,7 @@ msgstr "Abriendo Asistente de Configuración" msgid "Opening new project while some presets are unsaved." msgstr "Abre un nuevo proyecto mientras algunos ajustes están sin guardar." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8405,7 +8408,7 @@ msgstr "Búsqueda de orientación cancelada." msgid "Origin" msgstr "Origen" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Otro" @@ -8425,15 +8428,15 @@ msgstr "Borde interior y exterior" msgid "Outer brim only" msgstr "Sólo el borde exterior" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Archivo de salida" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Información del modelo de salida" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Archivo de salida" @@ -8441,7 +8444,7 @@ msgstr "Archivo de salida" msgid "Output filename format" msgstr "Formato de nombre de salida" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Opciones de salida" @@ -8466,19 +8469,19 @@ msgstr "Umbral de voladizos" msgid "Overlap" msgstr "Superposición" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Configu&ración de Impresión" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Pad" @@ -8486,15 +8489,15 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad y soportes" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Pad alrededor del objeto" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Pad alrededor del objeto en todos lados" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Tamaño del borde del pad" @@ -8504,31 +8507,31 @@ msgstr "" "El tamaño del borde del pad es demasiado pequeño para la configuración " "actual." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Penetración del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Paso del conector del objeto al Pad" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Anchura del conector del pad al objeto" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Espacio del pad con el objeto" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Altura de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Pendiente de la pared del pad" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Espesor de la pared del pad" @@ -8660,7 +8663,7 @@ msgstr "Pegar" msgid "Paste From Clipboard" msgstr "Pegar Desde Portapapeles" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Pegar portapapeles" @@ -8698,7 +8701,7 @@ msgstr "Patrón utilizado para generar material de soporte." msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "Pausar Código G de Impresión" @@ -8734,7 +8737,7 @@ msgstr "" "Realiza la integración del escritorio (Establece este binario para que pueda " "ser buscado por el sistema)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8777,7 +8780,7 @@ msgstr "" msgid "Perimeter" msgstr "Perímetro" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Recuento de la distribución del perímetro" @@ -8789,15 +8792,15 @@ msgstr "Extrusor para perímetros" msgid "Perimeter generator" msgstr "Generador de perímetros" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Longitud de transición del perímetro" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Margen del filtro de transición del perímetro" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Ángulo del umbral de transición del perímetro" @@ -8849,28 +8852,28 @@ msgstr "" "Tamaños de imagen que se almacenarán en archivos .gcode y .sl1 / .sl1s, en " "el siguiente formato: \"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Modo de conexión del pilar" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Diámetro del pilar" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Factor de ensanchamiento del pilar" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "El diámetro de la cabeza del pin debe ser menor que el diámetro del pilar." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diámetro frontal de la cabeza" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Ancho de la cabeza" @@ -8920,11 +8923,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Por favor selecciona el archivo a volver a cargar" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Porciones del copyright" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Retrato" @@ -8933,7 +8936,7 @@ msgstr "Retrato" msgid "Position" msgstr "Posición" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Posición (para impresoras con múltiples extrusores )" @@ -8949,7 +8952,7 @@ msgstr "Posición Y" msgid "Position of perimeters starting points." msgstr "Posición de los puntos de inicio del perímetro." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Los scripts de postprocesamiento modificarán el archivo de código G en su " @@ -8975,11 +8978,11 @@ msgstr "" "en su lugar y consulta el manual sobre cómo renombrar opcionalmente el " "archivo de código G post-procesado.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Scripts de postprocesamiento" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Pre&visualizar" @@ -9052,7 +9055,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Ya existe un preset con el nombre \"%1%\"." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9061,7 +9064,7 @@ msgstr "" "Haz clic en este botón para seleccionar el mismo ajuste para el ajuste " "derecho e izquierdo." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Los ajustes son los mismos" @@ -9101,7 +9104,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Ecualizador de presión (experimental)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9122,7 +9125,7 @@ msgstr "" "diámetro de la boquilla." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Previsualización" @@ -9130,7 +9133,7 @@ msgstr "Previsualización" msgid "Preview hollowed and drilled model" msgstr "Vista preliminar del modelo con su interior vaciado y taladrado" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Archivo anterior laminado (" @@ -9142,7 +9145,7 @@ msgstr "Cebar todos los extrusores de impresión" msgid "Print" msgstr "Imprimir" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Cola de subida al &host de impresión" @@ -9150,7 +9153,7 @@ msgstr "Cola de subida al &host de impresión" msgid "Print Diameters" msgstr "Diámetros de impresión" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Subida al host de impresión" @@ -9189,15 +9192,15 @@ msgstr "Pausas de impresión" msgid "Print settings" msgstr "Configuración de impresión" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Velocidad de impresión" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Anular la velocidad de impresión" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Configuración de Impr&esión" @@ -9232,11 +9235,11 @@ msgstr "Configuración de la Impresora" msgid "Printer Settings Tab" msgstr "Pestaña Ajustes Impresora" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Corrección absoluta de la impresora" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Corrección gamma de la impresora" @@ -9248,32 +9251,32 @@ msgstr "Notas de la impresora" msgid "Printer preset names" msgstr "Nombres de ajustes de la impresora" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Corrección del escalado de la impresora en el eje X" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Corrección del escalado de la impresora en el eje Y" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Corrección del escalado de la impresora en el eje Z" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Corrección de escala de la impresora" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Corrección del escalado de la impresora en el eje X" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Corrección del escalado de la impresora en el eje Y" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Corrección del escalado de la impresora en el eje Z" @@ -9320,7 +9323,7 @@ msgid "Process %1% / 100" msgstr "Proceso %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Procesando %s" @@ -9334,9 +9337,9 @@ msgstr "" "El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser " "lento. Es muy recomendable reducir la cantidad de triángulos." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Dependencias de perfil" @@ -9432,7 +9435,7 @@ msgstr "" "PrusaSlicer ha encontrado un error al tomar una instantánea de la " "configuración." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9554,15 +9557,15 @@ msgstr "Rápido" msgid "Quick Add Settings (%s)" msgstr "Añadir ajustes rápidos (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Laminado rápido y Guardar como" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Cerrar %s" @@ -9630,7 +9633,7 @@ msgstr "Ancho de la linea de empuje" msgid "Ramming parameters" msgstr "Parámetros de empuje" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Ajustes de empuje" @@ -9650,8 +9653,8 @@ msgstr "Rango" msgid "Rasterizing layers" msgstr "Rastrerizando capas" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Re&cargar desde el Disco" @@ -9663,15 +9666,15 @@ msgstr "Reconfigurar" msgid "Ready" msgstr "Listo" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Trasera" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Vista trasera" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Proy&ectos recientes" @@ -9716,7 +9719,7 @@ msgid "Rectilinear grid" msgstr "Rejilla rectilínea" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Rehacer" @@ -9747,7 +9750,7 @@ msgstr "Actualizar lista de impresoras" msgid "Regular" msgstr "Habitual" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Expresión regular" @@ -9797,9 +9800,9 @@ msgstr "Recargar desde:" msgid "Reload plater from disk" msgstr "Recargar la base desde el disco" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Cargar la base del disco" @@ -9825,7 +9828,7 @@ msgid "Remember output directory" msgstr "Recordar el directorio de salida" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Eliminar" @@ -9953,11 +9956,11 @@ msgstr "" msgid "Render" msgstr "Renderizar" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Renderizar con un software renderizador" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -9965,7 +9968,7 @@ msgstr "" "Render con un software de renderizado. El procesador de software MESA " "incluido se carga en lugar del controlador OpenGL predeterminado." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Reparar" @@ -9997,11 +10000,11 @@ msgstr "Reparar el modelo mediante el servicio de Netfabb" msgid "Repairing was canceled" msgstr "La reparación fue cancelada" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Repetir el último laminado rápido" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Repetir el último laminado rápido" @@ -10013,7 +10016,7 @@ msgstr "Reemplazar de:" msgid "Replace the selected volume with new STL" msgstr "Sustituir el volumen seleccionado por un nuevo STL" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Reemplazar con" @@ -10081,7 +10084,7 @@ msgstr "Reiniciar escala" msgid "Reset selection" msgstr "Reiniciar selección" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Reiniciar Filament Color" @@ -10105,8 +10108,8 @@ msgstr "Retracta cantidad antes de limpiar" msgid "Retract on layer change" msgstr "Retraer en el cambio de capa" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retracción" @@ -10129,7 +10132,7 @@ msgstr "" "La retracción no se activa cuando los movimientos de desplazamiento son más " "cortos que esta longitud." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10161,15 +10164,15 @@ msgstr "Revertir la conversión a metros" msgid "Review the substitutions and adjust them if needed." msgstr "Revisalas sustituciones y ajústalas si es necesario." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Derecha" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Valor del Ajuste Derecho" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Vista derecha" @@ -10206,15 +10209,15 @@ msgstr "Botón derecho del ratón:" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Girar" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Rotar alrededor del eje X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Rotar alrededor del eje Y" @@ -10243,15 +10246,15 @@ msgstr "" msgid "Rotation" msgstr "Rotación" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Ángulo de rotación alrededor del eje X en grados." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Ángulo de rotación alrededor del eje Y en grados." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Ángulo de rotación alrededor del eje Z en grados." @@ -10269,11 +10272,11 @@ msgstr "Ejecutar %s" msgid "Running post-processing scripts" msgstr "Ejecutando scripts de post-procesamiento" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "&Enviar código G" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "E&nviar para imprimir" @@ -10303,7 +10306,7 @@ msgstr "Herramienta de atajos de teclado SLA" msgid "SLA material" msgstr "Material SLA" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Tipo Material SLA" @@ -10315,7 +10318,7 @@ msgstr "Materiales SLA" msgid "SLA print" msgstr "Impresión SLA" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Notas del material de impresión de SLA" @@ -10327,7 +10330,7 @@ msgstr "Ajustes de impresión SLA" msgid "SLA supports outside the print area were detected." msgstr "Se detectaron soportes SLA fuera del área de impresión." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10346,7 +10349,7 @@ msgstr "Guardar" msgid "Save %s as:" msgstr "Guardar %s como:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Guardar archivo %s como:" @@ -10355,12 +10358,12 @@ msgstr "Guardar archivo %s como:" msgid "Save G-code file as:" msgstr "Guardar archivo Código G como:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Guardar archivo OBJ (menos propenso a errores de coordinación que STL) como:" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Guardar Proyecto &como" @@ -10368,15 +10371,15 @@ msgstr "Guardar Proyecto &como" msgid "Save SL1 / SL1S file as:" msgstr "Guardar archivo SL1 / SL1S como:" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Guardar archivo de configuración" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Guardar la configuración como:" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Guarda la configuración al archivo especificado." @@ -10386,11 +10389,11 @@ msgstr "Guarda la configuración al archivo especificado." msgid "Save current %s" msgstr "Guardar lo actual %s" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Guardar el proyecto actual como" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Guardar archivo de proyecto actual como" @@ -10403,7 +10406,7 @@ msgstr "Guardar archivo como:" msgid "Save preset" msgstr "Guardar ajuste inicial" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Guarde el conjunto de ajustes iniciales como:" @@ -10432,7 +10435,7 @@ msgstr "Guardar las opciones seleccionadas al ajuste \"%1%\"." msgid "Save the selected options." msgstr "Guardar las opciones seleccionadas." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Guardar archivo zip como:" @@ -10446,7 +10449,7 @@ msgstr "Error al guardar la malla en el contenedor 3MF." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Escalar" @@ -10463,11 +10466,11 @@ msgid "Scale the selected object to fit the print volume" msgstr "" "Escala los objetos seleccionados para ajustarse al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Escalar para Adaptarse" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Escalar para ajustarse al volumen dado." @@ -10475,7 +10478,7 @@ msgstr "Escalar para ajustarse al volumen dado." msgid "Scale to print volume" msgstr "Escalar al volumen de impresión" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Factor de escalado o porcentaje." @@ -10506,7 +10509,7 @@ msgstr "Dirección preferida de unión jitter" msgid "Seams" msgstr "Costuras" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Busca&r" @@ -10530,7 +10533,7 @@ msgstr "" msgid "Search in English" msgstr "Buscar en Inglés" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Buscar en los ajustes" @@ -10617,7 +10620,7 @@ msgstr "Selecciona una acción para aplicar al archivo" msgid "Select by rectangle" msgstr "Seleccionar mediante rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Seleccione la configuración para cargar:" @@ -10626,7 +10629,7 @@ msgid "Select coordinate space, in which the transformation will be performed." msgstr "" "Escoge el espacio de coordenadas en el que se realizará la transformación." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Selecciona los ajustes para comparar" @@ -10638,7 +10641,7 @@ msgstr "Seleccionar la forma en la galería" msgid "Select showing settings" msgstr "Seleccionar los ajustes mostrados" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Seleccione el archivo STL para reparar:" @@ -10725,7 +10728,7 @@ msgstr "Selección-Retirar de la lista" msgid "Selection-Remove from rectangle" msgstr "Selección-Retirar del rectángulo" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Seleccionar todos los objetos" @@ -10742,7 +10745,7 @@ msgstr "Enviar código G" msgid "Send system info" msgstr "Enviar info del sistema" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Enviar para imprimir la plataforma actual como código G" @@ -10766,7 +10769,7 @@ msgstr "Enviando info del sistema..." msgid "Seq." msgstr "Sec." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Impresión secuencial" @@ -10782,7 +10785,7 @@ msgstr "Puerto serie:" msgid "Service name" msgstr "Nombre del servicio" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Ajuste" @@ -10910,7 +10913,7 @@ msgid "Set settings tabs as menu items (experimental)" msgstr "" "Establecer pestañas de configuración como elementos de menú (experimental)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -11072,7 +11075,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Establecer el pulgar superior como activo" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -11083,7 +11086,7 @@ msgstr "" "Por ejemplo. loglevel=2 registrará mensajes de fallo, error y peligro." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Ajustes" @@ -11134,7 +11137,7 @@ msgstr "" msgid "Shape" msgstr "Aspecto" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galería de Formas" @@ -11185,7 +11188,7 @@ msgstr "Mostrar la notificación de \"Consejo del día\" tras el inicio" msgid "Show &Configuration Folder" msgstr "Mostrar carpeta &Configuración" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Mostrar &Etiquetas" @@ -11201,7 +11204,7 @@ msgstr "Mostrar Acerca de" msgid "Show advanced settings" msgstr "Mostrar ajustes avanzados" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Mostrar todos los ajustes (incluidos los incompatibles)" @@ -11241,7 +11244,7 @@ msgstr "Mostrar altura del objeto" msgid "Show object height on the ruler" msgstr "Mostrar altura del objeto en la regla" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Muestra etiquetas de pieza/repetición en vista 3D" @@ -11269,45 +11272,45 @@ msgstr "Muestra soportes" msgid "Show system information" msgstr "Mostrar la información del sistema" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Muestra la vista de edición 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Muestra la vista 3D preliminar del laminado" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Mostrar los ajustes de filamento" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Muestra la lista completa de opciones de configuración de impresión SLA." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "Muestra la lista completa de opciones de configuración de impresión/G-code." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar la lista de los atajos de teclado" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Mostrar la base" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Mostrar los ajustes de impresión" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Mostrar la configuración de la impresora" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Mostrar esta ayuda." @@ -11394,7 +11397,7 @@ msgstr "Simplificar el modelo" msgid "Single Extruder Multi Material" msgstr "Extrusor único Multi Material" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11406,15 +11409,15 @@ msgstr "" "¿Deseas cambiar el diámetro de todos los extrusores al valor del diámetro " "del nozzle del primer extrusor?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Ajuste para MM con un solo extrusor" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parámetros multimaterial para un sólo extrusor" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Modo de instancia única" @@ -11427,7 +11430,7 @@ msgctxt "OfFile" msgid "Size" msgstr "Tamaño" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Tamaño y coordenadas" @@ -11497,15 +11500,15 @@ msgstr "" msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r no escalará la velocidad por debajo de esta velocidad." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Laminar" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Laminar un archivo en un código G" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Laminar un archivo en un código G, guárdar como" @@ -11522,15 +11525,15 @@ msgstr "Laminar ahora" msgid "Slice resolution" msgstr "Resolución del laminado" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Laminar el modelo y exportar las capas de impresión de SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Laminar el modelo y exportar las trayectorias como código G." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11547,13 +11550,13 @@ msgstr "Información del laminado" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "El objeto laminado \"%1%\" parece un logotipo o un cartel" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Laminado" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "¡Laminado realizado!" @@ -11589,7 +11592,7 @@ msgstr "Laminando modelo" msgid "Slicing supports" msgstr "Soportes para el laminado" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lenta" @@ -11598,7 +11601,7 @@ msgid "Slow down if layer print time is below" msgstr "" "Disminuir la velocidad si el tiempo de impresión de la capa está por debajo" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Inclinación lenta" @@ -11606,7 +11609,7 @@ msgstr "Inclinación lenta" msgid "Small perimeters" msgstr "Perímetros pequeños" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Porcentaje de diámetro de pilar pequeño" @@ -11703,7 +11706,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Se han desinstalado algunos materiales SLA." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11730,7 +11733,7 @@ msgstr "" "Algunos objetos son demasiado altos y no se pueden imprimir sin que " "colisione el extrusor." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11749,7 +11752,7 @@ msgstr "" "Algunos ajustes están modificados y los cambios no guardados no serán " "capturados por la instantánea de configuración." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -11939,7 +11942,7 @@ msgid "Spiral vase" msgstr "Modo vaso" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Dividir" @@ -12008,13 +12011,13 @@ msgstr "Estándar" msgid "Stars" msgstr "Estrellas" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Código G inicial" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Empezar un nuevo proyecto" @@ -12022,7 +12025,7 @@ msgstr "Empezar un nuevo proyecto" msgid "Start at height" msgstr "Comenzar en altura" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Comenzar un nuevo proceso de laminado" @@ -12074,7 +12077,7 @@ msgid "Status:" msgstr "Estado:" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Silencio" @@ -12133,19 +12136,19 @@ msgstr "Forzado de Soporte" msgid "Support Generator" msgstr "Generador de Soportes" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Diámetro de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Altura de la base del soporte" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Distancia de seguridad de la base de soportes" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Cabeza del soporte" @@ -12199,7 +12202,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Extrusor para el material de soporte/falda/balsa" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Soporte en la base solamente" @@ -12207,12 +12210,12 @@ msgstr "Soporte en la base solamente" msgid "Support parameter change" msgstr "Cambio de parámetros de soporte" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Pilares de soporte" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Densidad de los puntos de soporte" @@ -12221,16 +12224,16 @@ msgid "Support points edit" msgstr "Edición de puntos de soporte" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Soportes" @@ -12387,7 +12390,7 @@ msgstr "Tomando una instantánea de la configuración" msgid "Taking a configuration snapshot failed." msgstr "La toma de una instantánea de la configuración ha fallado." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatura" @@ -12413,7 +12416,7 @@ msgstr "Variación de temperatura" msgid "Temperatures" msgstr "Temperaturas" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Plantilla Código G Personalizado" @@ -12574,7 +12577,7 @@ msgstr "" "La torre de limpieza sólo es compatible con varios objetos si tienen alturas " "de capas iguales" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12629,7 +12632,7 @@ msgstr "" "posible en sistema de coordenadas Mundo, una vez que la rotación se ha " "aplicado a las coordenadas del objeto." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "El ángulo por defecto para la conexión de sticks y uniones de soporte." @@ -12732,7 +12735,7 @@ msgstr "El tipo de material de filamento para uso en códigos G personalizados." msgid "The file does not exist." msgstr "El archivo no existe." -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12768,7 +12771,7 @@ msgid "The following characters are not allowed by a FAT file system:" msgstr "" "Los siguientes caracteres no están permitidos por un sistema de archivos FAT:" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12827,7 +12830,7 @@ msgstr "" msgid "The following values were substituted:" msgstr "Se sustituyeron los siguientes valores:" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -12835,7 +12838,7 @@ msgstr "" "El espacio entre la parte de debajo del objeto y el pad generado en el modo " "de cero elevación." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "La altura del cono de la base de un pilar" @@ -12877,7 +12880,7 @@ msgstr "" "La información del último cambio de color se ha guardado para impresión con " "un solo extrusor." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -12885,7 +12888,7 @@ msgstr "" "La distancia máxima entre dos pilares par que se unan entre si. Un valor " "cero prohibirá el encadenamiento de pilares." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "La longitud máxima de un puente" @@ -12909,7 +12912,7 @@ msgstr "" "La distancia máxima a la que puede desplazarse cada punto de piel (en ambos " "sentidos), medida perpendicularmente al muro perimetral." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -12944,7 +12947,7 @@ msgstr "" "bottom_solid_layers si es necesario para asegurar un espesor mínimo en la " "pared de inferior." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -12987,7 +12990,7 @@ msgstr "" "El objeto será elevado por este número de capas y se generará material de " "soporte debajo de él." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -12996,7 +12999,7 @@ msgstr "" "pilar normal que se utilizan en áreas problemáticas donde no cabe un pilar " "normal." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13007,7 +13010,7 @@ msgstr "" "entonces se utilizará una inclinación lenta, de lo contrario - una " "inclinación rápida" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -13019,7 +13022,7 @@ msgstr[1] "" "Las impresoras físicas que se muestran a continuación se basan en el ajuste, " "que se va a eliminar." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -13081,7 +13084,7 @@ msgstr "El nombre proporcionado no es válido." msgid "The provided name is not valid;" msgstr "El nombre proporcionado no es válido;" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -13089,7 +13092,7 @@ msgstr "" "El 3MF seleccionado contiene un objeto pintado compatible con FDM que " "utiliza una versión más reciente de PrusaSlicer y no es compatible." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -13097,7 +13100,7 @@ msgstr "" "El 3MF seleccionado contiene un objeto pintado multimaterial que utiliza una " "versión más reciente de PrusaSlicer y no es compatible." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13105,7 +13108,7 @@ msgstr "" "El 3MF seleccionado contiene un objeto pintado con una versión más reciente " "de PrusaSlicer y no es compatible." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13152,7 +13155,7 @@ msgstr "" "El objeto seleccionado no ha podido ser dividido porque sólo contiene una " "parte sólida." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13189,7 +13192,7 @@ msgstr "El tamaño del objeto puede ser especificado en pulgadas" msgid "The size of the object is zero" msgstr "El tamaño del objeto es cero" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13267,7 +13270,7 @@ msgstr "El nombre proporcionado no es válido;" msgid "The supplied settings will cause an empty print." msgstr "Los ajustes proporcionados causarán una impresión vacía." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "El grosor de las pads y sus paredes de cavidad opcionales." @@ -13666,11 +13669,11 @@ msgstr "" msgid "This is a default preset." msgstr "Este es un ajuste por defecto." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Esta es una medida relativa de la densidad de los puntos de soporte." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13683,7 +13686,7 @@ msgid "This is a system preset." msgstr "Este es un ajuste del sistema." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Esto solo se usa en la interfaz de Slic3r como ayuda visual." @@ -14008,7 +14011,7 @@ msgstr "" "copia de respaldo de la configuración existente antes de instalar la nueva " "compatible con esta versión de %s." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14021,7 +14024,7 @@ msgstr "" "decidir abandonar o sustituir un valor desconocido con un valor por defecto " "silenciosamente o verbosamente." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14043,15 +14046,15 @@ msgstr "" "Núcleos usados para tareas multi-recurso. Número óptimo de núcleos es " "ligeramente sobre el numero de núcleos/procesadores disponibles." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Inclinación" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Inclinación para resina de alta viscosidad" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Tiempo de inclinación" @@ -14082,15 +14085,15 @@ msgstr "" "código T). Este tiempo se añade al tiempo total de impresión mediante el " "estimador de tiempo del código G." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Tiempo de la inclinación rápida" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Tiempo de la inclinación lenta" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Tiempo de la inclinación super lenta" @@ -14152,7 +14155,7 @@ msgstr "Herramienta" msgid "Tool #" msgstr "Herramienta nº" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "Código G de cambio de herramienta" @@ -14174,7 +14177,7 @@ msgstr "Posición de herramienta" msgid "Tool type" msgstr "Tipo de herramienta" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Parámetros del cambio de herramienta para impresoras de un único extrusor MM" @@ -14198,7 +14201,7 @@ msgstr "" "Sugerencia de grosor de la carcasa superior / inferior: no disponible debido " "a una altura de capa inválida." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Vista superior" @@ -14293,7 +14296,7 @@ msgstr "Recorrido" msgid "Triangles" msgstr "Triángulos" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14315,11 +14318,11 @@ msgstr "Tipo de impresora." msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "CANDADO ABIERTO" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14332,7 +14335,7 @@ msgstr "" "Haz clic para restablecer todas las configuraciones para el grupo de " "opciones actual a los valores del sistema (o predeterminados)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14374,11 +14377,11 @@ msgstr "No se puede sustituir con más de un volumen" msgid "Undef" msgstr "Undef" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Categoría sin definir" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Grupo sin definir" @@ -14392,7 +14395,7 @@ msgstr "Subflujo" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Deshacer" @@ -14590,7 +14593,7 @@ msgstr "Usar la cámara libre" msgid "Use inches" msgstr "Usar pulgadas" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Usar pad" @@ -14681,11 +14684,11 @@ msgstr "" "El valor ha cambiado y ya no es igual al valor del sistema o al último valor " "guardado" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Los valores en esta columna son para el modo Normal" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Los valores en esta columna son para el modo Silencioso" @@ -14731,7 +14734,7 @@ msgstr "Vendedor:" msgid "Verbose G-code" msgstr "Código G detallado" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Versión" @@ -14780,7 +14783,7 @@ msgstr "" "Visita \"Preferencias\" y marca\"%1%\"\n" "para cambiar tu elección." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualizar un código G ya laminado y guardado" @@ -14805,7 +14808,7 @@ msgstr "Volúmenes en Objetos reordenados" msgid "Volumetric" msgstr "Volumétrico" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Sugerencias de flujo volumétrico no disponibles" @@ -14828,15 +14831,15 @@ msgstr "Velocidad volumétrica" msgid "WARNING:" msgstr "AVISO:" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "VIÑETA BLANCA" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "El icono de VIÑETA BLANCA un ajuste no del sistema (o no por defecto)" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14844,7 +14847,7 @@ msgstr "" "El símbolo de VIÑETA BLANCA indica que los ajustes son los mismos que los de " "la última vez que salvaste los ajustes para el grupo de opciones actual." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14852,7 +14855,7 @@ msgstr "" "El símbolo de VIÑETA BLANCA indica que los valores son los mismos que los de " "los ajustes guardados la última vez." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Espesor de pared" @@ -15014,7 +15017,7 @@ msgstr "" "Cuando la retracción se compensa después de un movimiento, el extrusor " "necesitará introducir más filamento. Este ajuste raramente se necesita." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -15028,17 +15031,19 @@ msgstr "" "restante. Reduciendo este ajuste se reduce el número y la longitud de estos " "perímetros centrales, pero puede dejar huecos o sobresalir." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" "Cuando se pasa de un número de perímetros a otro a medida que la pieza se " -"hace más fina, se asigna una cierta cantidad de espacio para dividir o unir " -"los segmentos del perímetro." +"vuelve más fina, se asigna una cierta cantidad de espacio para dividir o " +"unir los segmentos del perímetro. Si se expresa como un porcentaje (por " +"ejemplo, 100%), se calculará en función del diámetro de la boquilla." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Palabra completa" @@ -15050,7 +15055,7 @@ msgstr "Ancho" msgid "Width (mm)" msgstr "Ancho (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Ancho desde el centro de la esfera trasera al centro de la esfera delantera" @@ -15059,17 +15064,17 @@ msgstr "" msgid "Width of a wipe tower" msgstr "Ancho de la torre de limpieza" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Ancho de los palitos de apoyo que conectan la pieza y la base generada." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Ancho de la pantalla" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -15083,7 +15088,7 @@ msgstr "" "grueso como la propia característica. Si se expresa en porcentaje (por " "ejemplo, 85%), se calculará en función del diámetro de la boquilla." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -15127,7 +15132,7 @@ msgstr "Torre de limpieza - Ajuste del volumen de purga" msgid "Wipe tower brim width" msgstr "Ancho de la balsa de la torre de limpieza" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Parámetros de la torre de limpieza" @@ -15192,7 +15197,7 @@ msgstr "" "problema con la nueva versión.\n" "Updated configuration bundles:" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Escribir información sobre el modelo en la consola." @@ -15283,7 +15288,7 @@ msgstr "" "Puede poner sus notas personales aquí. Este texto se añadirá al código G " "como comentarios." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Puede poner tus notas sobre el material de impresión de SLA aquí." @@ -15444,7 +15449,7 @@ msgstr "" "Tus cambios actuales eliminarán todos los cambios guardados del extrusor " "(herramienta)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Tu fichero fue reparado." @@ -15483,7 +15488,7 @@ msgstr "Ajuste en altura Z" msgid "Z travel" msgstr "Recorrido en Z" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" @@ -15605,7 +15610,7 @@ msgstr "perfil de impresión por defecto" msgid "default value" msgstr "valor por defecto" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "borra" @@ -15683,7 +15688,7 @@ msgid "flow rate is maximized" msgstr "se maximiza el flujo de material" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15708,7 +15713,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15725,7 +15730,7 @@ msgid "in" msgstr "en" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15738,7 +15743,7 @@ msgstr "" "del grupo de opciones actual a los valores del sistema (o predeterminados)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15747,7 +15752,7 @@ msgstr "" "defecto) para el grupo de opciones actual" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15784,11 +15789,11 @@ msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "está basado en Slic3r de Alessandro Ranellucci y la comunidad RepRap." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "está licenciado bajo el/los" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15812,7 +15817,7 @@ msgstr "máxima versión PrusaSlicer" msgid "min PrusaSlicer version" msgstr "mínima versión PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -15852,19 +15857,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -15878,8 +15882,9 @@ msgstr "mm (cero para deshabilitar)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm o %" @@ -15941,7 +15946,7 @@ msgstr "modelo" msgid "modified" msgstr "modificado" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "dinero/botella" @@ -15999,7 +16004,7 @@ msgstr "impresora" msgid "printer model" msgstr "modelo de impresora" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "eliminar" @@ -16020,11 +16025,11 @@ msgstr "requiere un min. %s y un max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "$" @@ -16147,8 +16152,8 @@ msgstr "fallo write calledback" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/fr/PrusaSlicer.mo b/resources/localization/fr/PrusaSlicer.mo index bfccc56a691c2f3702a48f0157320d5e2fc48348..f87b6c2de0f6afa1c1f3be72bb7ef28af7be014a 100644 GIT binary patch delta 70647 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 E0~pPK{Qv*} delta 70453 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 Zho!1K_Cp1K?1u`0^ao=nCJ1j- 1);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -35,9 +35,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -126,7 +125,7 @@ msgstr[0] "%1% (%2$d coque)" msgstr[1] "%1% (%2$d coques)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Préréglage" @@ -145,7 +144,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%1% a été substitué avec %2%" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% a été découpé avec succès." @@ -167,7 +166,7 @@ msgstr "%3.2f mm³/s à une vitesse de filament de %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d lignes : %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d préréglages importés avec succès." @@ -339,7 +338,7 @@ msgstr "" msgid "&About %s" msgstr "&Au sujet de %s" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "&Réduire la barre latérale" @@ -351,27 +350,27 @@ msgstr "&Configuration" msgid "&Configuration Snapshots" msgstr "Instantanés de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Copier" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Supprimer la sélection" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Editer" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Exporter" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Onglet des Réglages du &Filament" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Fichier" @@ -379,19 +378,19 @@ msgstr "&Fichier" msgid "&Finish" msgstr "&Fin" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Plein écran" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "&Aperçu du G-code" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Aide" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importer" @@ -399,7 +398,7 @@ msgstr "&Importer" msgid "&Language" msgstr "&Langue" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nouveau Projet" @@ -407,19 +406,19 @@ msgstr "&Nouveau Projet" msgid "&Next >" msgstr "&Suivant >" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Ouvrir le G-code" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Ouvrir Projet" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "C&oller" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Onglet du &Plateau" @@ -427,35 +426,35 @@ msgstr "Onglet du &Plateau" msgid "&Preferences" msgstr "&Préférences" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&Quitter" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Rétablir" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Réparer le fichier STL" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Enregistrer le Projet" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "&Tout sélectionner" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Ann&uler" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Vue" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "Fenê&tre" @@ -464,7 +463,7 @@ msgstr "Fenê&tre" msgid "(All)" msgstr "(Tout)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Découper Main&tenant" @@ -476,7 +475,7 @@ msgstr "(Re)découper" msgid "(Some lines not shown)" msgstr "(Certaines lignes ne sont pas représentées)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Inconnu)" @@ -488,7 +487,7 @@ msgstr "(bobine incluse)" msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") non trouvé." @@ -544,7 +543,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (important)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -635,7 +634,7 @@ msgstr "" "La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro " "si vous n'avez pas de lit chauffant." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -662,7 +661,7 @@ msgstr "Clé API" msgid "Abort" msgstr "Annuler" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Au sujet de %s" @@ -679,7 +678,7 @@ msgstr "Contrôle de l'accélération (avancé)" msgid "Access violation" msgstr "Violation d'accès" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Précision" @@ -719,7 +718,7 @@ msgstr "" "cubique de support pour réduire le temps d'impression et la consommation de " "filament ? Lire la suite dans la documentation." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Ajouter" @@ -783,7 +782,7 @@ msgstr "Ajouter une Forme depuis la Galerie" msgid "Add Shapes from Gallery" msgstr "Ajouter des formes à partir de la Galerie" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Ajouter une base sous le modèle supporté" @@ -901,7 +900,7 @@ msgid "Add pause print" msgstr "Ajouter une pause d'impression" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Ajouter une imprimante physique" @@ -1002,17 +1001,16 @@ msgstr "Adresse" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Avancé" @@ -1048,16 +1046,16 @@ msgstr "" "cette quantité de matériau dans la tour de nettoyage pour produire un " "remplissage successif ou des extrusions d'objet sacrificiel de façon fiable." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-Code après changement de couche" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Aligner XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Aligner le modèle sur le point défini." @@ -1070,7 +1068,7 @@ msgid "Aligned Rectilinear" msgstr "Rectiligne Aligné" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Tous" @@ -1279,7 +1277,7 @@ msgstr "Appliquer le changement de couleur automatiquement" msgid "Apply to all the remaining small objects being loaded." msgstr "Appliquer à tous les petits objets restants en cours de chargement." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1291,7 +1289,7 @@ msgstr "Générateur de périmètre Arachne" msgid "Archimedean Chords" msgstr "Accords d'Archimède" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Êtes-vous sûr de vouloir %1% le préréglage sélectionné ?" @@ -1308,7 +1306,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "Êtes-vous sûr de vouloir continuer ?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1322,7 +1320,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "Voulez-vous vraiment supprimer l'imprimante \"%1%\" ?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Voulez-vous vraiment supprimer toutes les substitutions ?" @@ -1330,7 +1328,7 @@ msgstr "Voulez-vous vraiment supprimer toutes les substitutions ?" msgid "Are you sure you want to do it?" msgstr "Êtes-vous certain de vouloir le faire ?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Remplissage de zone" @@ -1362,7 +1360,7 @@ msgstr "" "d'agencement pour ajuster la taille de l'espace entre les objets et " "autoriser les rotations automatiques ?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1519,7 +1517,7 @@ msgstr "Autogénérer les points de support" msgid "Autogeneration will erase all manually edited points." msgstr "L'autogénération va effacer tous les points édités manuellement." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Génération automatique" @@ -1527,7 +1525,7 @@ msgstr "Génération automatique" msgid "Automatic updates" msgstr "Mises à jour automatiques" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Réparer automatiquement un fichier STL" @@ -1543,11 +1541,11 @@ msgstr "Éviter de traverser les périmètres" msgid "Avoid crossing perimeters - Max detour length" msgstr "Éviter de croiser les périmètres - Longueur de détour maximum" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "FLÈCHE ARRIÈRE" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1560,7 +1558,7 @@ msgstr "" "Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec " "les valeurs du dernier préréglage enregistré." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1574,7 +1572,7 @@ msgstr "" msgid "Background processing" msgstr "Tâche en arrière plan" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Purger les valeurs de configuration inconnues" @@ -1582,7 +1580,7 @@ msgstr "Purger les valeurs de configuration inconnues" msgid "Balanced" msgstr "Équilibré" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Plateau" @@ -1631,7 +1629,7 @@ msgstr "" "zéro pour désactiver les commandes de contrôle de température du plateau " "dans la sortie." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-Code avant changement de couche" @@ -1656,7 +1654,7 @@ msgstr "Meilleure qualité de surface" msgid "Between objects G-code" msgstr "Entre le G-code des objets" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "Entre le G-code des objets (pour une impression séquentielle)" @@ -1678,11 +1676,11 @@ msgstr "Bloquer les supports" msgid "Block supports by angle" msgstr "Bloquer les supports par angle" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Volume de la bouteille" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Poids de la bouteille" @@ -1699,7 +1697,7 @@ msgstr "Bas" msgid "Bottom" msgstr "Dessous" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Vue du Dessous" @@ -1981,8 +1979,8 @@ msgstr "" "Il n'est pas possible de continuer sans ajouter des points de support ! " "Ajoutez des points de support ou désactivez la génération de support." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Fonctionnalités" @@ -1990,7 +1988,7 @@ msgstr "Fonctionnalités" msgid "Capture a configuration snapshot" msgstr "Capturer un instantané de la configuration" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Insensible à la casse" @@ -1998,11 +1996,11 @@ msgstr "Insensible à la casse" msgid "Category" msgstr "Catégorie" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centrer" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centrer l'impression autour d'un point donné." @@ -2111,7 +2109,7 @@ msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "" "Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :" @@ -2158,7 +2156,7 @@ msgstr "Cercle" msgid "Circular" msgstr "Circulaire" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Classique" @@ -2166,12 +2164,14 @@ msgstr "Classique" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" "Le générateur de périmètre classique produit des périmètres avec une largeur " "d'extrusion constante et pour les zones très minces, le remplissage des " "trous est utilisé. Le moteur Arachne produit des périmètres avec une largeur " -"d'extrusion variable." +"d'extrusion variable. Ce paramètre affecte également le remplissage " +"concentrique." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2250,7 +2250,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "Fermeture de PrusaSlicer. Le projet en cours est modifié." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Intervalle d'espacement" @@ -2258,7 +2258,7 @@ msgstr "Intervalle d'espacement" msgid "Closing radius" msgstr "Rayon de fermeture" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Réduire la barre latérale" @@ -2266,11 +2266,11 @@ msgstr "Réduire la barre latérale" msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Couleur" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-code de changement de couleur" @@ -2335,12 +2335,12 @@ msgstr "Commandes" msgid "Comment:" msgstr "Commentaire :" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Comparer les préréglages" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Comparer les Préréglages" @@ -2348,7 +2348,7 @@ msgstr "Comparer les Préréglages" msgid "Compare this preset with some another" msgstr "Comparez ce préréglage avec un autre" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Les préréglages comparés ont une technologie d'imprimante différente" @@ -2517,7 +2517,7 @@ msgstr "" "limitée à infill_anchor, mais pas plus longue que ce paramètre. Réglez ce " "paramètre sur zéro pour désactiver l'ancrage." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Connexion des tiges de support et jonctions" @@ -2574,7 +2574,7 @@ msgstr "Continuer et installer les mises à jour de configuration ?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "Continuer à activer un instantané de configuration %1% ?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2592,7 +2592,7 @@ msgstr "" "Contributions de Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik et bien d'autres." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2611,7 +2611,7 @@ msgstr "Convertir à partir des unités impériales" msgid "Convert from meters" msgstr "Convertir à partir de mètres" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Refroidissement" @@ -2627,7 +2627,7 @@ msgstr "" "Les mouvements de refroidissement accélèrent progressivement jusqu'à cette " "vitesse." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Seuils de refroidissement" @@ -2656,7 +2656,7 @@ msgstr "Copier" msgid "Copy Version Info" msgstr "Copier les Infos de Version" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Copier la sélection dans le presse-papier" @@ -2720,32 +2720,32 @@ msgstr "" "nouveau l'export ou utilisez un matériel différent. Le G-code de sortie " "corrompu se trouve en %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Droits d'auteur" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Correction avant expansion" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Correction pour l'expansion selon l'axe X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Correction pour l'expansion selon l'axe Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Correction pour l'expansion selon l'axe Z" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Corrections" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Coût" @@ -2821,7 +2821,7 @@ msgstr "" "fermeture de l'espacement peut réduire la résolution de l'impression finale, " "aussi est-il conseillé de conserver une valeur relativement basse." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Créer un socle autour de l'objet et ignorer l'élévation du support" @@ -2838,7 +2838,7 @@ msgstr "" msgid "Creating a new project while the current project is modified." msgstr "Création d'un nouveau projet alors que le projet en cours est modifié." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Angle critique" @@ -2846,7 +2846,7 @@ msgstr "Angle critique" msgid "Critical error" msgstr "Erreur critique" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Croiser" @@ -2892,8 +2892,8 @@ msgstr "" "connexions HTTPS OctoPrint, au format crt / pem. Si ce champ est vide, le " "certificat par défaut OS CA certificate repository est utilisé." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "G-code personnalisé" @@ -2937,7 +2937,7 @@ msgid "Custom template (\"%1%\")" msgstr "Modèle personnalisé (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Couper" @@ -2945,7 +2945,7 @@ msgstr "Couper" msgid "Cut by Plane" msgstr "Couper selon un Plan" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Couper le modèle au Z donné." @@ -2953,7 +2953,7 @@ msgstr "Couper le modèle au Z donné." msgid "Cylinder" msgstr "Cylindre" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Tout &Déselectionner" @@ -2961,7 +2961,7 @@ msgstr "Tout &Déselectionner" msgid "Dark mode (experimental)" msgstr "Mode sombre (expérimental)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Répertoire de données" @@ -2987,7 +2987,7 @@ msgstr "Diminuer les Instances" msgid "Default" msgstr "Défaut" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Profil par défaut du matériau SLA" @@ -3027,8 +3027,8 @@ msgstr "" msgid "Default print profile" msgstr "Profil de filament par défaut" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3042,7 +3042,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Définissez un profil d'imprimante personnalisée" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3060,11 +3060,11 @@ msgstr "Délai après le déchargement" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Supprimer" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Tout &Supprimer" @@ -3118,7 +3118,7 @@ msgid "Delete Subobject" msgstr "Supprimer le sous-objet" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Tout Supprimer" @@ -3177,16 +3177,16 @@ msgstr "" msgid "Delete tool change" msgstr "Supprimer le changement d'outil" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Supprimer tous les objets" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Supprime la sélection en cours" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Densité" @@ -3198,9 +3198,9 @@ msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%. msgid "Density of the first raft or support layer." msgstr "Densité de la premières couche de raft ou de support." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Dépendances" @@ -3224,7 +3224,7 @@ msgstr "Désélectionner tout" msgid "Deselect by rectangle" msgstr "Désélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Désélectionner tous les objets" @@ -3259,7 +3259,7 @@ msgstr "Détacher du préréglage système" msgid "Detach preset" msgstr "Détacher le préréglage" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Détaché" @@ -3283,7 +3283,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Détecter les parois fines" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3307,15 +3307,15 @@ msgstr "Appareil :" msgid "Diameter" msgstr "Diamètre" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diamètre en mm de la base du pilier" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diamètre en mm des piliers de support" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diamètre du côté de pointage de la tête" @@ -3380,33 +3380,33 @@ msgstr "Éliminer toutes les modifications personnalisées" msgid "Discard changes" msgstr "Annuler les modifications" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Afficher" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Hauteur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Afficher la symétrie horizontale" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientation de l'affichage" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "" "Afficher la fenêtre de la File d'Attente de Téléchargement de l'Hôte " "d'Impression" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Afficher la symétrie verticale" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Largeur de l'affichage" @@ -3425,7 +3425,7 @@ msgstr "" "Distance entre la jupe et la bordure (lorsque le bouclier contre les flux " "d'air n'est pas utilisé) ou les objets." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3468,12 +3468,12 @@ msgstr "Distance utilisée par la fonction d'agencement automatique du plateau." msgid "Divide by zero" msgstr "Diviser par zéro" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" "Ne pas obtenir d'échec si un fichier fourni pour --télécharger n'existe pas." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3533,7 +3533,7 @@ msgstr "" "Voulez-vous sélectionner les filaments par défaut pour ces modèles " "d'imprimantes FFF ?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Ne pas agencer" @@ -3597,11 +3597,11 @@ msgstr "" msgid "Drop to bed" msgstr "Déposer sur le plateau" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Dupliquer" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Dupliquer par grille" @@ -3619,11 +3619,11 @@ msgstr "" msgid "During the other layers, fan will be turned off." msgstr "Pour les autres couches, le ventilateur sera désactivé." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dynamique" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "E&xporter" @@ -3677,7 +3677,7 @@ msgstr "Éditer un G-code personnalisé" msgid "Edit pause print message" msgstr "Modifier le message de pause d'impression" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Modifier l'imprimante physique" @@ -3701,7 +3701,7 @@ msgstr "Édition" msgid "Eigen vectorization supported:" msgstr "Vectorisation d'Eigen prise en charge :" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Éje&cter la carte SD / la clé USB" @@ -3709,7 +3709,7 @@ msgstr "Éje&cter la carte SD / la clé USB" msgid "Eject SD card / Flash drive" msgstr "Éjecter la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Éjecter la carte SD / la clef USB une fois que la G-code y a été exporté." @@ -3727,7 +3727,7 @@ msgstr "L'éjection de l'appareil %s(%s) a échoué." msgid "Elephant foot compensation" msgstr "Compensation de l'effet patte d'éléphant" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Largeur minimum du pied d'éléphant" @@ -3761,7 +3761,7 @@ msgstr "Émettre en G-code" msgid "Empty layer between %1% and %2%." msgstr "Couche vide entre %1% et %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Activer" @@ -3779,11 +3779,11 @@ msgid "Enable fan if layer print time is below" msgstr "" "Activer le ventilateur si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Activer l'évidement" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Active la symétrie horizontale des images de sortie" @@ -3798,7 +3798,7 @@ msgstr "" "Activer le lissage des couches supérieures avec la tête d'impression chaude " "pour une surface lisse" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3806,7 +3806,7 @@ msgstr "" "Activer la lecture des valeurs de configuration inconnues en les remplaçant " "silencieusement par les valeurs par défaut." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3858,7 +3858,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Activer la fonction de hauteur de couche variable" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Activer la symétrie verticale des images de sortie" @@ -3874,7 +3874,7 @@ msgstr "" "Permet de combler les espaces entre les périmètres et entre les périmètres " "et remplissage les plus intérieurs." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3906,7 +3906,7 @@ msgstr "Forcer les supports" msgid "Enqueued" msgstr "Placé dans la file d'attente" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Assurer le contact avec le plateau" @@ -4022,7 +4022,7 @@ msgstr "" "Erreur : \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Erreur" @@ -4172,23 +4172,23 @@ msgstr "Mode expert" msgid "Export" msgstr "Exporter" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exporter la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exporter le &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exporter les &Parcours d'outils en OBJ" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exporter 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exporter AMF" @@ -4196,11 +4196,11 @@ msgstr "Exporter AMF" msgid "Export AMF file:" msgstr "Exporter le fichier AMF :" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exporter le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exporter le Lot de Configurations Avec les Imprimantes Physiques" @@ -4209,15 +4209,15 @@ msgid "Export G-Code." msgstr "Exporter le G-code." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exporter le G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exporter le G-code vers la carte SD / la clé USB" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exporter OBJ" @@ -4225,19 +4225,19 @@ msgstr "Exporter OBJ" msgid "Export OBJ file:" msgstr "Exporter le fichier OBJ :" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exporter le plateau en &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exporter la plateau en STL &avec les Supports" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exporter SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exporter STL" @@ -4245,13 +4245,13 @@ msgstr "Exporter STL" msgid "Export STL file:" msgstr "Exporter le fichier STL :" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Exporter tous les préréglage y compris les imprimantes physiques vers un " "fichier" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exporter tous les préréglage vers un fichier" @@ -4263,24 +4263,24 @@ msgstr "Exporter en tant que STL" msgid "Export config" msgstr "Exporter la configuration" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exporter la configuration actuelle vers un fichier" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exporter le plateau courant en G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" "Exporter le plateau actuel en tant que G-code vers la carte SD / la clef USB" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exporter le plateau courant en STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exporter le contenu du plateau en STL, supports inclus" @@ -4299,19 +4299,19 @@ msgstr "Exporter un fichier temporaire 3mf qui a échoué" msgid "Export sources full pathnames to 3mf and amf" msgstr "Exporter les noms de chemins complets des sources vers 3mf et amf" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exporter le(s) modèle(s) en tant que 3MF." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exporter le(s) modèle(s) en tant que AMF." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exporter le(s) modèle(s) en tant que OBJ." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exporter le(s) modèle(s) en tant que STL." @@ -4319,7 +4319,7 @@ msgstr "Exporter le(s) modèle(s) en tant que STL." msgid "Export to SD card / Flash drive" msgstr "Exporter vers une carte SD / une clé USB" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exporter le parcours en tant que OBJ" @@ -4331,7 +4331,7 @@ msgstr "Exporter." msgid "Exporting G-code" msgstr "Exportation du G-code" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Exportation du lot de configuration" @@ -4352,11 +4352,11 @@ msgstr "Exportation." msgid "Exposition time is out of printer profile bounds." msgstr "Le temps d'exposition dépasse les limites du profil d'imprimante." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Exposition" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Temps d'exposition" @@ -4418,7 +4418,7 @@ msgstr "Couleur de l'extrudeur" msgid "Extruder changed to" msgstr "Extrudeur changé à" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Dégagement de l'extrudeur" @@ -4427,7 +4427,7 @@ msgid "Extruder offset" msgstr "Décalage de l'extrudeur" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4435,7 +4435,7 @@ msgid "Extruders" msgstr "Extrudeurs" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Nombre d'extrudeurs" @@ -4475,7 +4475,7 @@ msgstr "Imprimantes Technologie FFF" msgid "Facets" msgstr "Faces" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Couches estompées" @@ -4506,11 +4506,11 @@ msgstr "Échec du perçage de certains trous dans le modèle" msgid "Fan Speed (%)" msgstr "Vitesse du ventilateur (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Réglages du ventilateur" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Vitesse du ventilateur" @@ -4545,11 +4545,11 @@ msgstr "Le ventilateur fonctionnera toujours à %1%%%" msgid "Fan will be turned off." msgstr "Le ventilateur sera désactivé." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Rapide" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Inclinaison rapide" @@ -4573,7 +4573,7 @@ msgstr "Types de fonctionnalité" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -4585,7 +4585,7 @@ msgstr "Diamètre du Filament :" msgid "Filament End G-code" msgstr "G-code de fin du filament" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Réglages dérogatoires du Filament" @@ -4594,7 +4594,7 @@ msgid "Filament Profiles Selection" msgstr "Sélection des Profils de Filament" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Réglages du filament" @@ -4636,7 +4636,7 @@ msgstr "Notes du filament" msgid "Filament parking position" msgstr "Position d'attente du filament" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Propriétés du filament" @@ -4653,7 +4653,7 @@ msgstr "Temps de déchargement du filament" msgid "Filaments" msgstr "Filaments" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Fichier non trouvé" @@ -4724,7 +4724,7 @@ msgstr "" msgid "Filling bed" msgstr "Remplissage du plateau" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Rechercher" @@ -4737,11 +4737,11 @@ msgstr "" msgid "Finished" msgstr "Terminé" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Rétraction du Firmware" @@ -4956,7 +4956,7 @@ msgstr "" "couches de support\n" "doivent être synchronisées avec les couches de l'objet." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Forcer le socle partout autour de l'objet" @@ -4990,7 +4990,7 @@ msgstr "" "Format des vignettes du G-code : PNG pour une meilleure qualité, JPG pour la " "plus petite taille, QOI pour un firmware à faible mémoire" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4998,7 +4998,7 @@ msgstr "" "Règle de compatibilité ascendante lors du chargement des configurations à " "partir des fichiers de configuration et des fichiers de projet (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Mots-clés réservés trouvés dans" @@ -5012,11 +5012,11 @@ msgstr "" "Depuis la Liste d'Objet Vous ne pouvez pas supprimer la dernière partie " "solide de l'objet." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Avant" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vue Avant" @@ -5024,7 +5024,7 @@ msgstr "Vue Avant" msgid "Full fan speed at layer" msgstr "Ventilateur à pleine vitesse pour la couche" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Plein écran" @@ -5073,7 +5073,7 @@ msgstr "Épaisseur de la surface irrégulière" msgid "Fuzzy skin type." msgstr "Type de surface irrégulière." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" @@ -5111,11 +5111,11 @@ msgstr "Substitutions de G-code" msgid "G-code thumbnails" msgstr "Vignettes G-code" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Visionneuse de G-code" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero Licence Publique Générale, version 3" @@ -5132,10 +5132,10 @@ msgstr "Galerie" msgid "Gap fill" msgstr "Remplissage des trous" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Général" @@ -5165,11 +5165,11 @@ msgstr "" "d'inclinaison. Ceci est utile pour obtenir une meilleure adhérence pour des " "objets ayant une surface de contact très fine ou limitée sur le plateau." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Générer des supports" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Générer des supports pour les modèles" @@ -5365,11 +5365,11 @@ msgstr "" msgid "Head diameter" msgstr "Diamètre de la tête" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Pénétration de la tête" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" "La pénétration de la tête ne doit pas être supérieure à la largeur de la " @@ -5396,7 +5396,7 @@ msgstr "Hauteur (mm)" msgid "Height of skirt expressed in layers." msgstr "Hauteur de la jupe exprimée en couches." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Hauteur de l'affichage" @@ -5422,15 +5422,15 @@ msgstr "" "configuration initiale ; juste quelques paramètres et vous serez prêt à " "imprimer." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Aide" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Aide (options FFF)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Aide (options SLA)" @@ -5465,7 +5465,7 @@ msgstr "Élevé" msgid "High extruder current on filament swap" msgstr "Courant de l'extrudeur élevé lors du changement de filament" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Haute viscosité" @@ -5499,7 +5499,7 @@ msgstr "Diamètre du trou" msgid "Hollow and drill" msgstr "Évider et percer" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Évider un modèle pour avoir un intérieur vide" @@ -5507,16 +5507,16 @@ msgstr "Évider un modèle pour avoir un intérieur vide" msgid "Hollow this object" msgstr "Évider cet objet" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Évidement" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5586,21 +5586,21 @@ msgstr "" "Passez le curseur au dessus des boutons pour obtenir plus d'informations\n" "ou cliquez sur ce bouton." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Jusqu'où le socle doit-il s'étendre autour de la géométrie contenue" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" "À quelle profondeur les petits connecteurs doivent-ils pénétrer dans le " "corps du modèle." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Niveau de pénétration de l'épingle dans la surface du modèle" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5823,7 +5823,7 @@ msgstr "" "Si activé, le bouton de réduction de la barre latérale apparaîtra dans le " "coin supérieur droit de la scène 3D" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -6100,7 +6100,7 @@ msgstr "" "de distribution manquants ou hors ligne. On peut vouloir activer cette " "option pour les certificats auto-signés si la connexion échoue." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignorer les fichiers de configuration non-existants" @@ -6118,15 +6118,15 @@ msgstr "Instruction illégale" msgid "Import" msgstr "Importer" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importer la &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importer le &Lot de Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importer la Configuration à partir du &Projet" @@ -6142,7 +6142,7 @@ msgstr "Importer l'Objet" msgid "Import Objects" msgstr "Importer les Objets" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importer l'archive SL1 / SL1S" @@ -6150,11 +6150,11 @@ msgstr "Importer l'archive SL1 / SL1S" msgid "Import SLA archive" msgstr "Importer l'archive SLA" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importer le STL (unités impériales)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importer STL/OBJ/AM&F/3MF" @@ -6284,11 +6284,11 @@ msgstr "" "Le temps d'exposition initial est en dehors des limites du profil " "d'imprimante." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Temps d'exposition initial" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Hauteur de couche initiale" @@ -6395,7 +6395,7 @@ msgstr "Erreur interne : %1%" msgid "Internal infill" msgstr "Remplissage interne" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Pénétration de Tête invalide" @@ -6423,7 +6423,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Entrée numérique non valide." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Diamètre de tête d'épingle non valide" @@ -6459,11 +6459,11 @@ msgstr "Type de lissage" msgid "Is it safe?" msgstr "Is it safe?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Isométrique" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Vue Isométrique" @@ -6492,7 +6492,7 @@ msgstr "" "d'expulsion rapide et pour compenser la résistance lors du chargement d'un " "filament avec une pointe mal taillée." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "C'est le dernier préréglage pour cette imprimante physique." @@ -6508,7 +6508,7 @@ msgstr "" "Il n'est pas possible de supprimer le dernier préréglage associé pour " "l'imprimante." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Limites de mouvements brusques" @@ -6574,7 +6574,7 @@ msgstr "Conserver les paramètres sélectionnés." msgid "Keep upper part" msgstr "Garder la partie du haut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Raccourcis Clavier" @@ -6582,11 +6582,11 @@ msgstr "Raccourcis Clavier" msgid "Keyboard shortcuts" msgstr "Raccourcis clavier" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "CADENAS FERMÉ" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6594,7 +6594,7 @@ msgstr "" "L'icône CADENAS FERMÉ indique que les réglages sont les mêmes que les " "valeurs système (ou par défaut) pour le groupe d'options actuel" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6606,7 +6606,7 @@ msgstr "" msgid "Label objects" msgstr "Marquer les objets" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Paysage" @@ -6647,7 +6647,7 @@ msgstr "" "\n" "La hauteur de la couche sera réinitialisée à 0,01." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Limites de hauteur de couche" @@ -6655,8 +6655,8 @@ msgstr "Limites de hauteur de couche" msgid "Layer range Settings to modify" msgstr "Réglages de zone de Couche à modifier" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Couches" @@ -6673,7 +6673,7 @@ msgstr "Couches" msgid "Layers and Perimeters" msgstr "Couches et Périmètres" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Couches et périmètres" @@ -6686,15 +6686,15 @@ msgstr "Options de disposition" msgid "Leave \"%1%\" enabled" msgstr "Conserver \"%1%\" activé" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Gauche" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Valeur du Préréglage gauche" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Vue Gauche" @@ -6733,7 +6733,7 @@ msgid "Length of the infill anchor" msgstr "Longueur de l'ancre de remplissage" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6745,7 +6745,7 @@ msgstr "" msgid "Lift Z" msgstr "Levage de l'axe Z" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6806,19 +6806,19 @@ msgstr "Charger une Partie" msgid "Load Project" msgstr "Charger le Projet" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Charger un modèle" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Charger une archive SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Charger un modèle enregistré avec des unités impériales" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6828,7 +6828,7 @@ msgstr "" "pour conserver différents profils ou inclure des configurations depuis un " "stockage réseau." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Charger le fichier de configuration" @@ -6847,11 +6847,11 @@ msgstr "" "Importer-Importer archive SL1 / SL1S, qui vous permet également de " "reconstruire des modèles 3D à partir des données voxel." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Charger la configuration depuis le fichier du projet" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6859,11 +6859,11 @@ msgstr "" "Charger la configuration depuis le fichier spécifié. Ceci peut être utilisé " "plusieurs fois afin de charger des options depuis plusieurs fichiers." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Charger le fichier de configuration exporté" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Charger les préréglages à partir d'un lot" @@ -6896,11 +6896,11 @@ msgstr "Chargement de la configuration" msgid "Loading file" msgstr "Chargement du fichier" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Chargement d'un lot de configuration" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Chargement d'un fichier de configuration" @@ -6939,7 +6939,7 @@ msgstr "Coordonnées locaux" msgid "Lock supports under new islands" msgstr "Verrouiller les supports sous de nouveaux îlots" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Niveau d'enregistrement" @@ -6955,7 +6955,7 @@ msgstr "Faible" msgid "Lowest Z height" msgstr "Hauteur en Z la plus basse" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6964,7 +6964,7 @@ msgstr "Hauteur en Z la plus basse" msgid "Machine limits" msgstr "Limites de la machine" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -6972,7 +6972,7 @@ msgstr "" "Les limites de la machine ne sont pas définies, par conséquent l'estimation " "du temps d'impression peut ne pas être précise." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6983,7 +6983,7 @@ msgstr "" "être précis car l'imprimante peut appliquer un ensemble différent de limites " "de la machine." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -7009,20 +7009,20 @@ msgstr "Édition manuelle" msgid "Masked SLA file exported to %1%" msgstr "Fichier SLA masqué exporté vers %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Correspondance d'une seule ligne" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Onglet Réglage&s Matériau" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Matériau" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Réglages Matériau" @@ -7031,7 +7031,7 @@ msgstr "Réglages Matériau" msgid "Material Settings Tab" msgstr "Onglet de réglages du matériau" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Profil d'impression du matériau" @@ -7039,19 +7039,19 @@ msgstr "Profil d'impression du matériau" msgid "Max" msgstr "Maximum" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Longueur maximum de pont" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Nombre de ponts maximum par pilier" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Distance maximum de fusion" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Distance maximum de jonction de pilier" @@ -7148,7 +7148,7 @@ msgstr "Accélération maximum lors de la rétraction" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Accélération maximale lors de la rétraction (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Accélérations maximum" @@ -7171,7 +7171,7 @@ msgstr "" "effectuée à chaque couche indépendamment, des artefacts visibles peuvent " "être produits." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Temps d'exposition maximum" @@ -7207,11 +7207,11 @@ msgstr "Vitesse d'avance maximum de l'axe Y" msgid "Maximum feedrate of the Z axis" msgstr "Vitesse d'avance maximum de l'axe Z" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Vitesses d'avance maximum" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Temps d'exposition initiale Maximum" @@ -7251,7 +7251,7 @@ msgstr "Mouvement brusque maximum de l'axe Z" msgid "Maximum length of the infill anchor" msgstr "Longueur maximum de l'ancre de remplissage" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7284,7 +7284,7 @@ msgid "Medium" msgstr "Moyen" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Fusionner" @@ -7300,7 +7300,7 @@ msgstr "Fusionner des objets en un seul objet multi-pièces" msgid "Merged" msgstr "Fusionné" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7342,7 +7342,7 @@ msgstr "Minimum" msgid "Min print speed" msgstr "Vitesse d'impression minimale" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Distance minimale des points de support" @@ -7384,11 +7384,11 @@ msgstr "" "ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute " "simplification et utiliser la résolution complète de l'entrée." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Temps d'exposition minimum" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Taille minimale d'élément" @@ -7400,15 +7400,15 @@ msgstr "Vitesse d'avance minimum lors de l'extrusion" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Vitesse d'avance minimum lors de l'extrusion (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Vitesses d'avance minimum" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Temps d'exposition initiale minimum" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Largeur minimale du périmètre" @@ -7433,16 +7433,19 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Épaisseur minimale d'une coque supérieure/inférieure" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" "Épaisseur minimale des éléments fins. Les éléments du modèle qui sont plus " "fins que cette valeur ne seront pas imprimés, tandis que les éléments plus " "épais que la taille minimale d'élément seront élargis à la largeur minimale " -"du périmètre." +"du périmètre. Si elle est exprimée en pourcentage (par exemple 25%), elle " +"sera calculée en fonction du diamètre de la buse." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7465,11 +7468,11 @@ msgstr "Vitesse d'avance minimum en déplacement" msgid "Minimum travel feedrate (M205 T)" msgstr "Vitesse d'avance minimum en déplacement (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Épaisseur de paroi minimale d'un modèle évidé." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7495,7 +7498,7 @@ msgstr "" msgid "Mirror Object" msgstr "Symétriser l'Objet" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Symétriser horizontalement" @@ -7515,7 +7518,7 @@ msgstr "Symétriser l'objet sélectionné selon l'axe Y" msgid "Mirror the selected object along the Z axis" msgstr "Symétriser l'objet sélectionné selon l'axe Z" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Symétriser verticalement" @@ -7692,11 +7695,11 @@ msgstr "" "Au lieu de les considérer en tant que plusieurs objets, dois-je considérer\n" "ces fichiers en tant que un seul objet ayant plusieurs pièces ?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Multiplier les copies en créant une grille." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Multiplier les copies par ce facteur." @@ -7787,7 +7790,7 @@ msgstr "" msgid "New prerelease version %1% is available." msgstr "La nouvelle version préliminaire %1% est disponible." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Nouveau préréglage d'imprimante sélectionné" @@ -7848,7 +7851,7 @@ msgid "No pad can be generated for this model with the current configuration" msgstr "" "Aucun socle ne peut être généré pour ce modèle avec la configuration actuelle" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Aucun fichier précédemment découpé." @@ -7856,7 +7859,7 @@ msgstr "Aucun fichier précédemment découpé." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Sans couches dispersées (EXPERIMENTAL)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Aucun point de support ne sera positionné plus près que ce seuil." @@ -7872,7 +7875,7 @@ msgid "None" msgstr "Aucun" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -7888,7 +7891,7 @@ msgstr "Introuvable:" msgid "Note" msgstr "Remarque" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7899,7 +7902,7 @@ msgstr[1] "" "Notez que les préréglages sélectionnés seront également supprimés de cette " "imprimante." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7911,7 +7914,7 @@ msgstr[1] "" "Notez que ces imprimantes seront supprimées après la suppression du " "préréglage sélectionné." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7964,12 +7967,12 @@ msgid "Note: some shortcuts work in (non)editing mode only." msgstr "" "Remarque: certains raccourcis ne fonctionnent qu'en mode de (non-)édition." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notes" @@ -7983,7 +7986,7 @@ msgstr "Remarque" msgid "Notify about new releases" msgstr "Avertir des nouvelles versions" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Buse" @@ -7995,7 +7998,7 @@ msgstr "Diamètre de la Buse :" msgid "Nozzle and Bed Temperatures" msgstr "Températures de la buse et du plateau" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Diamètre de la buse" @@ -8028,7 +8031,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Nombres de mouvements de refroidissement" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Nombre d'extrudeurs de l'imprimante." @@ -8057,15 +8060,15 @@ msgstr "" "paramétrée, le nombre de boucles minimal sera plus grand que celui configuré " "ici. Mettez à zéro pour désactiver complètement la jupe." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Nombre de pixels présents" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Nombre de pixels présents dans X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Nombre de pixels présents dans Y" @@ -8083,7 +8086,7 @@ msgstr "" msgid "Number of solid layers to generate on top surfaces." msgstr "Nombre de couches solides à générer sur les surfaces supérieures." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -8099,7 +8102,7 @@ msgstr "Nombre de changements d'outil" msgid "Object Settings to modify" msgstr "Réglages de l'Objet à modifier" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Élévation de l'objet" @@ -8218,7 +8221,7 @@ msgstr "On/Off mode couche unique de la barre de défilement verticale" msgid "One layer mode" msgstr "Mode couche unique" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "L'un des préréglages est introuvable" @@ -8243,7 +8246,7 @@ msgstr "" "Vous devez soit retirer tous les objets sauf le dernier, soit activer le " "mode séquentiel avec \"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8255,7 +8258,7 @@ msgstr "" msgid "Only infill where needed" msgstr "Faire remplissage seulement où cela est nécessaire" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Lever Z seulement" @@ -8297,7 +8300,7 @@ msgstr "" "La prévention des écoulements n'est actuellement pas supportée lorsque la " "tour de nettoyage est activée." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Ouvrir &PrusaSlicer" @@ -8317,11 +8320,11 @@ msgstr "Ouvrir un répertoire." msgid "Open G-code file:" msgstr "Ouvrir un fichier G-code :" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Ouvrir la visionneuse de G-code" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Ouvrir une Nouvelle Instance" @@ -8329,20 +8332,20 @@ msgstr "Ouvrir une Nouvelle Instance" msgid "Open Preferences." msgstr "Ouvrir les Préférences." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Ouvrir PrusaSlicer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Ouvrir un fichier G-code" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Ouvrir une nouvelle instance de PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Ouvrir un fichier de projet" @@ -8386,7 +8389,7 @@ msgid "Open the Prusa3D drivers download page in your browser" msgstr "" "Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Ouvrir la boîte de dialogue pour modifier la galerie de formes" @@ -8404,7 +8407,7 @@ msgstr "" "Ouverture d'un nouveau projet alors que certains préréglages ne sont pas " "enregistrés." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8480,7 +8483,7 @@ msgstr "Recherche de l'orientation annulée." msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Autre" @@ -8500,15 +8503,15 @@ msgstr "Bordure extérieure et intérieure" msgid "Outer brim only" msgstr "Bordure extérieure uniquement" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Fichier de Sortie" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Information du Modèle de Sortie" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Fichier de sortie" @@ -8516,7 +8519,7 @@ msgstr "Fichier de sortie" msgid "Output filename format" msgstr "Format du nom de fichier de sortie" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Options de sortie" @@ -8541,19 +8544,19 @@ msgstr "Seuil de surplomb" msgid "Overlap" msgstr "Chevauchement" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Onglet des &Réglages d'Impression" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Socle" @@ -8561,15 +8564,15 @@ msgstr "Socle" msgid "Pad and Support" msgstr "Socle et Support" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Socle autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Socle partout autour de l'objet" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Taille du bord de socle" @@ -8578,31 +8581,31 @@ msgid "Pad brim size is too small for the current configuration." msgstr "" "La taille du bord de socle est trop petite pour la configuration actuelle." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Pénétration du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Pas du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Largeur du connecteur de l'objet socle" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Espace entre l'objet et le socle" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Hauteur de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Inclinaison de la paroi du socle" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Épaisseur de la paroi du socle" @@ -8736,7 +8739,7 @@ msgstr "Coller" msgid "Paste From Clipboard" msgstr "Coller Depuis le Presse-Papier" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Coller le presse-papier" @@ -8774,7 +8777,7 @@ msgstr "Motif utilisé pour générer les supports." msgid "Pause" msgstr "Pause" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-code de pause de l'impression" @@ -8810,7 +8813,7 @@ msgstr "" "Exécuter l'intégration au bureau (définit ce binaire pour qu'il soit " "consultable par le système)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8852,7 +8855,7 @@ msgstr "" msgid "Perimeter" msgstr "Périmètre" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Nombre de distributions des périmètres" @@ -8864,15 +8867,15 @@ msgstr "Extrudeur pour les périmètres" msgid "Perimeter generator" msgstr "Générateur des périmètres" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Longueur de transition des périmètres" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Marge du filtre de transition des périmètres" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Angle de seuil de transition des périmètres" @@ -8924,29 +8927,29 @@ msgstr "" "Tailles des images à stocker dans un fichier .gcode et .sl1 / .sl1s, au " "format suivant : \"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Mode de connexion par pilier" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Diamètre du pilier" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Facteur d'élargissement du pilier" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "Le diamètre de la tête d'épingle doit être plus petit que le diamètre du " "pilier." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diamètre avant de la tête d'épingle" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Largeur de la tête d'épingle" @@ -8995,11 +8998,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Veuillez sélectionner le fichier à recharger" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Copyright des sections" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Portrait" @@ -9008,7 +9011,7 @@ msgstr "Portrait" msgid "Position" msgstr "Position" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Position (pour les imprimantes multi-extrudeurs)" @@ -9024,7 +9027,7 @@ msgstr "Position Y" msgid "Position of perimeters starting points." msgstr "Position des points de départ des périmètres." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Les scripts de post-traitement doivent modifier le fichier de G-code sur " @@ -9050,11 +9053,11 @@ msgstr "" "place et consultez le manuel sur la façon de renommer éventuellement le " "fichier de G-code post-traité.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Scripts de post-traitement" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Pré&visualisation" @@ -9127,7 +9130,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Un préréglage avec le nom \"%1%\" existe déjà." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9136,7 +9139,7 @@ msgstr "" "Cliquez sur ce bouton pour sélectionner le même préréglage pour les " "préréglages droit et gauche." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Les préréglages sont les mêmes" @@ -9177,7 +9180,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Égaliseur de pression (expérimental)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9199,7 +9202,7 @@ msgstr "" "la buse." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Aperçu" @@ -9207,7 +9210,7 @@ msgstr "Aperçu" msgid "Preview hollowed and drilled model" msgstr "Aperçu du modèle évidé et percé" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Fichier précédemment découpé (" @@ -9219,7 +9222,7 @@ msgstr "Préparer tous les extrudeurs d'impression" msgid "Print" msgstr "Imprimer" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "File d'Attente de Téléchargement de l'&Hôte d'Impression" @@ -9227,7 +9230,7 @@ msgstr "File d'Attente de Téléchargement de l'&Hôte d'Impression" msgid "Print Diameters" msgstr "Diamètres d'Impression" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Téléchargement de l'Hôte d'Impression" @@ -9266,15 +9269,15 @@ msgstr "Pauses d'impression" msgid "Print settings" msgstr "Réglages d'impression" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Vitesse d'impression" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Contournement de la vitesse d'impression" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Onglet des Réglages de l'Imprimant&e" @@ -9309,11 +9312,11 @@ msgstr "Réglages de l'Imprimante" msgid "Printer Settings Tab" msgstr "Onglet Réglages de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Correction absolue de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Correction gamma de l'imprimante" @@ -9325,32 +9328,32 @@ msgstr "Notes de l'imprimante" msgid "Printer preset names" msgstr "Noms des préréglages de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe X" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe Y" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe Z" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Correction de redimensionnement de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe Y" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe Y" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Correction de la mise à l'échelle de l'imprimante sur l'axe Z" @@ -9397,7 +9400,7 @@ msgid "Process %1% / 100" msgstr "Processus %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Traitement %s" @@ -9411,9 +9414,9 @@ msgstr "" "Le traitement du modèle '%1%' avec plus de 1 million de triangles peut être " "lent. Il est fortement recommandé de réduire la quantité de triangles." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Dépendances du profil" @@ -9508,7 +9511,7 @@ msgstr "" "PrusaSlicer a rencontré une erreur lors de la prise d'un instantané de " "configuration." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9630,15 +9633,15 @@ msgstr "Rapide" msgid "Quick Add Settings (%s)" msgstr "Ajout de Réglages Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Découpage Rapide" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Découpage Rapide et Enregistrer Sous" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Quitter %s" @@ -9707,7 +9710,7 @@ msgstr "Largeur de la ligne d'expulsion" msgid "Ramming parameters" msgstr "Paramètres de l'expulsion" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Réglages de l'expulsion" @@ -9727,8 +9730,8 @@ msgstr "Zone" msgid "Rasterizing layers" msgstr "Tramage des couches" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Re&charger à partir du disque" @@ -9740,15 +9743,15 @@ msgstr "Reconfigurer" msgid "Ready" msgstr "Prêt" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Arrière" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Vue Arrière" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Proj&ets récents" @@ -9793,7 +9796,7 @@ msgid "Rectilinear grid" msgstr "Grille rectiligne" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Rétablir" @@ -9824,7 +9827,7 @@ msgstr "Actualiser les imprimantes" msgid "Regular" msgstr "Ordinaire" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Expression régulière" @@ -9874,9 +9877,9 @@ msgstr "Recharger depuis :" msgid "Reload plater from disk" msgstr "Recharger le plateau depuis le disque" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Recharger le plateau à partir du disque" @@ -9902,7 +9905,7 @@ msgid "Remember output directory" msgstr "Se souvenir du répertoire de sortie" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Retirer" @@ -10031,11 +10034,11 @@ msgstr "" msgid "Render" msgstr "Rendre" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Rendu avec avec un logiciel de rendu" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -10043,7 +10046,7 @@ msgstr "" "Appliquer un rendu avec un logiciel de rendu. Le logiciel de rendu MESA qui " "est fourni est chargé à la place du pilote OpenGL présent par défaut." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Réparer" @@ -10075,11 +10078,11 @@ msgstr "Réparation d'un modèle par le service Netfabb" msgid "Repairing was canceled" msgstr "La réparation a été annulée" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Répéter le Dernier Découpage Rapide" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Répéter le dernier découpage rapide" @@ -10091,7 +10094,7 @@ msgstr "Remplacer par :" msgid "Replace the selected volume with new STL" msgstr "Remplacer le volume sélectionné par le nouveau STL" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Remplacer avec" @@ -10159,7 +10162,7 @@ msgstr "Réinitialiser l'échelle" msgid "Reset selection" msgstr "Réinitialiser la sélection" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Réinitialiser la Couleur du Filament" @@ -10183,8 +10186,8 @@ msgstr "Quantité de rétractation avant essuyage" msgid "Retract on layer change" msgstr "Rétracter lors des changements de couche" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Rétraction" @@ -10207,7 +10210,7 @@ msgstr "" "La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts " "que cette distance." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10239,15 +10242,15 @@ msgstr "Rétablir la conversion des mètres" msgid "Review the substitutions and adjust them if needed." msgstr "Passez en revue les substitutions et ajustez-les si nécessaire." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Droite" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Valeur du Préréglage droit" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Vue Droite" @@ -10282,15 +10285,15 @@ msgstr "Clic droit souris :" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Pivoter" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Pivoter autour de X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Pivoter autour de Y" @@ -10323,15 +10326,15 @@ msgstr "" msgid "Rotation" msgstr "Rotation" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Angle de rotation autour de l'axe X en degrés." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotation autour de l'axe Y en degrés." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Angle de rotation autour de l'axe Z en degrés." @@ -10349,11 +10352,11 @@ msgstr "Run %s" msgid "Running post-processing scripts" msgstr "Exécuter des scripts de post-traitement" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "&Envoyer le G-code" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Envoyer pour imprimer" @@ -10383,7 +10386,7 @@ msgstr "Raccourcis clavier pour le gizmo SLA" msgid "SLA material" msgstr "Matériau SLA" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Type de matériau SLA" @@ -10395,7 +10398,7 @@ msgstr "Matériaux SLA" msgid "SLA print" msgstr "Impression SLA" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Notes concernant le matériau d'impression SLA" @@ -10407,7 +10410,7 @@ msgstr "Réglages d'impression SLA" msgid "SLA supports outside the print area were detected." msgstr "Des supports SLA en dehors de la zone d'impression ont été détectés." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10426,7 +10429,7 @@ msgstr "Enregistrer" msgid "Save %s as:" msgstr "Enregistrer %s sous :" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Enregistrer le fichier %s sous :" @@ -10435,13 +10438,13 @@ msgstr "Enregistrer le fichier %s sous :" msgid "Save G-code file as:" msgstr "Enregistrer le fichier G-code sous :" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le " "STL) sous :" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Enregistrer le Projet &sous" @@ -10449,15 +10452,15 @@ msgstr "Enregistrer le Projet &sous" msgid "Save SL1 / SL1S file as:" msgstr "Enregistrer le fichier SL1 / SL1S sous :" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Enregistrer le fichier de configuration" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Enregistrer la configuration sous :" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Enregistrer la configuration dans le fichier spécifié." @@ -10467,11 +10470,11 @@ msgstr "Enregistrer la configuration dans le fichier spécifié." msgid "Save current %s" msgstr "Enregistrer l'état actuel %s" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Enregistrer le fichier du projet en cours" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Enregistrer le fichier du projet en cours sous" @@ -10484,7 +10487,7 @@ msgstr "Enregistrer le fichier sous :" msgid "Save preset" msgstr "Enregistrer le préréglage" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Enregistrer le lot de préréglages sous :" @@ -10513,7 +10516,7 @@ msgstr "Enregistrer les options sélectionnées dans le préréglage \"%1%\"." msgid "Save the selected options." msgstr "Enregistrer les options sélectionnées." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Enregistrer le fichier zip sous :" @@ -10527,7 +10530,7 @@ msgstr "Échec de la sauvegarde du maillage dans le contenant 3MF." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Redimensionner" @@ -10544,11 +10547,11 @@ msgid "Scale the selected object to fit the print volume" msgstr "" "Redimensionner l'objet sélectionné pour qu'il s'ajuste au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Redimensionner pour Ajuster" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Redimensionner pour ajuster à un volume donné." @@ -10556,7 +10559,7 @@ msgstr "Redimensionner pour ajuster à un volume donné." msgid "Scale to print volume" msgstr "Redimensionner pour ajuster au volume d'impression" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Facteur ou pourcentage de redimensionnement." @@ -10587,7 +10590,7 @@ msgstr "Gigue de la direction préférée de la jointure" msgid "Seams" msgstr "Jointures" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Recherc&her" @@ -10611,7 +10614,7 @@ msgstr "" msgid "Search in English" msgstr "Rechercher en anglais" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Rechercher dans les réglages" @@ -10700,7 +10703,7 @@ msgstr "Sélectionnez une action à appliquer au fichier" msgid "Select by rectangle" msgstr "Sélectionner par rectangle" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Sélectionner la configuration à charger :" @@ -10710,7 +10713,7 @@ msgstr "" "Sélectionnez un espace de coordonnées dans lequel la transformation sera " "effectuée." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Sélectionner les préréglages à comparer" @@ -10722,7 +10725,7 @@ msgstr "Sélectionner la forme dans la galerie" msgid "Select showing settings" msgstr "Sélectionner les réglages d'affichage" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Sélectionner le fichier STL à réparer :" @@ -10809,7 +10812,7 @@ msgstr "Sélection-Retirer de la liste" msgid "Selection-Remove from rectangle" msgstr "Sélection-Retirer du rectangle" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Sélectionner tous les objets" @@ -10826,7 +10829,7 @@ msgstr "Envoyer le G-code" msgid "Send system info" msgstr "Envoyer les informations système" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Envoyer pour imprimer le plateau actuel en tant que G-code" @@ -10850,7 +10853,7 @@ msgstr "Envoi des informations système..." msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Impression séquentielle" @@ -10867,7 +10870,7 @@ msgstr "Port série :" msgid "Service name" msgstr "Nom du service" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Appliquer" @@ -10995,7 +10998,7 @@ msgstr "Définir les éléments sélectionnés comme Imprimables/Non Imprimables msgid "Set settings tabs as menu items (experimental)" msgstr "Définir les onglets de réglages comme éléments du menu (expérimental)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -11164,7 +11167,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Définir le curseur du haut comme actif" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -11176,7 +11179,7 @@ msgstr "" "d'avertissement de niveau fatal." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Réglages" @@ -11228,7 +11231,7 @@ msgstr "" msgid "Shape" msgstr "Forme" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galerie de Formes" @@ -11279,7 +11282,7 @@ msgstr "Afficher la notification \"Astuce du jour\" après le démarrage" msgid "Show &Configuration Folder" msgstr "Afficher le Répertoire de &Configuration" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Afficher les &Labels" @@ -11295,7 +11298,7 @@ msgstr "Afficher la boîte de dialogue à propos" msgid "Show advanced settings" msgstr "Afficher les réglages avancés" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Afficher tous les préréglages (y compris incompatibles)" @@ -11335,7 +11338,7 @@ msgstr "Afficher la hauteur de l'objet" msgid "Show object height on the ruler" msgstr "Afficher la hauteur de l'objet sur la règle" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Afficher les labels de l'objet /instance dans la scène 3D" @@ -11363,45 +11366,45 @@ msgstr "Afficher les supports" msgid "Show system information" msgstr "Afficher les informations système" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Afficher la vue d'édition 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Afficher la prévisualisation des tranches 3D" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Afficher les réglages de filament" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Afficher la liste complète des options de configuration d'impression SLA." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "Afficher la liste complète des options de configuration d'impression/G-code." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Afficher la liste des raccourcis clavier" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Afficher le plateau" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Afficher les réglages d'impression" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Afficher les réglages de l'imprimante" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Afficher cette aide." @@ -11490,7 +11493,7 @@ msgstr "Simplifier le modèle" msgid "Single Extruder Multi Material" msgstr "Multi Material à extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11502,15 +11505,15 @@ msgstr "" "Voulez-vous modifier le diamètre pour tous les extrudeurs\n" "en utilisant la valeur du diamètre de la buse du premier extrudeur ?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Réglage MM pour extrudeur unique" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Paramètres multimatériaux pour extrudeur unique" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Mode d'instance unique" @@ -11529,7 +11532,7 @@ msgstr "Taille" msgid "Size" msgstr "Taille" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Taille et coordonnées" @@ -11599,15 +11602,15 @@ msgstr "" msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r ne descendra pas en-dessous de cette vitesse." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Découper" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Découper un fichier en G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Découper un fichier en G-code, enregistrer sous" @@ -11624,16 +11627,16 @@ msgstr "Découper maintenant" msgid "Slice resolution" msgstr "Résolution de découpage" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" "Découper le modèle et exporter les couches d'impression SLA en tant que PNG." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Découper le modèle et exporter les parcours en tant que G-code." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11650,13 +11653,13 @@ msgstr "Informations de découpage" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "L'objet découpe \"%1%\" ressemble à un logo ou à un signe" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Découpe" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Découpe Effectuée !" @@ -11692,7 +11695,7 @@ msgstr "Découpe du modèle" msgid "Slicing supports" msgstr "Découpe des supports" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lent" @@ -11700,7 +11703,7 @@ msgstr "Lent" msgid "Slow down if layer print time is below" msgstr "Ralentir si le temps d'impression de la couche est inférieur à" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Inclinaison lente" @@ -11708,7 +11711,7 @@ msgstr "Inclinaison lente" msgid "Small perimeters" msgstr "Périmètres courts" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Pourcentage de pilier petit diamètre" @@ -11808,7 +11811,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Certains matériaux SLA ont été désinstallés." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11836,7 +11839,7 @@ msgstr "" "Certains objets sont trop grands et ne peuvent pas être imprimés sans " "collision avec l'extrudeur." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11855,7 +11858,7 @@ msgstr "" "Certains préréglages sont modifiés et les modifications non enregistrées ne " "seront pas capturées par l'instantané de configuration." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -12050,7 +12053,7 @@ msgid "Spiral vase" msgstr "Vase spirale" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Scinder" @@ -12119,13 +12122,13 @@ msgstr "Standard" msgid "Stars" msgstr "Étoiles" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G-code de début" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Démarrer un nouveau projet" @@ -12133,7 +12136,7 @@ msgstr "Démarrer un nouveau projet" msgid "Start at height" msgstr "Hauteur de début" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Démarrer un nouveau processus de découpe" @@ -12184,7 +12187,7 @@ msgid "Status:" msgstr "État :" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Mode silencieux" @@ -12244,19 +12247,19 @@ msgstr "Générateur de Support" msgid "Support Generator" msgstr "Générateur de support" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Diamètre de la base du support" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Hauteur de la base du support" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Distance de sécurité de la base du support" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Tête du support" @@ -12310,7 +12313,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Extrudeur pour support/raft/jupe" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Supports sur le plateau uniquement" @@ -12318,12 +12321,12 @@ msgstr "Supports sur le plateau uniquement" msgid "Support parameter change" msgstr "Changement des paramètres de support" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Pilier de support" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Densité des points de support" @@ -12332,16 +12335,16 @@ msgid "Support points edit" msgstr "Éditer les points de support" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Supports" @@ -12498,7 +12501,7 @@ msgstr "Prise d'un instantané de configuration" msgid "Taking a configuration snapshot failed." msgstr "Échec de la prise d'un instantané de configuration." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Température" @@ -12524,7 +12527,7 @@ msgstr "Variation de température" msgid "Temperatures" msgstr "Températures" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "G-code de modèle personnalisé" @@ -12687,7 +12690,7 @@ msgstr "" "La tour de nettoyage est uniquement supportée pour plusieurs objets s'ils " "ont une même hauteur de couche" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12744,7 +12747,7 @@ msgstr "" "dans le système de coordonnées seulement quand la rotation est incorporée " "aux coordonnées de l'objet." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" "L'angle par défaut pour connecter les tiges de support et les jonctions." @@ -12849,7 +12852,7 @@ msgstr "" msgid "The file does not exist." msgstr "Le fichier n'existe pas." -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12886,7 +12889,7 @@ msgstr "" "Les caractères suivants ne sont pas autorisés par un système de fichiers " "FAT :" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12943,14 +12946,14 @@ msgstr "" msgid "The following values were substituted:" msgstr "Les valeurs suivantes ont été remplacées :" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" "Espace entre le bas de l'objet et le socle généré en mode élévation zéro." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "La hauteur du cône de la base du pilier" @@ -12993,7 +12996,7 @@ msgstr "" "Les dernières données de changement de couleur ont été sauvegardées une vue " "d'une impression avec extrudeur simple." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -13001,7 +13004,7 @@ msgstr "" "La distance maximum entre deux piliers pour qu'ils soient reliés. Une valeur " "de zéro empêchera les piliers en cascade." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "La longueur maximum d'un pont" @@ -13026,7 +13029,7 @@ msgstr "" "La distance maximale à laquelle chaque point de la surface peut être décalé " "(dans les deux sens), mesurée perpendiculairement à la paroi de périmètre." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -13061,7 +13064,7 @@ msgstr "" "bottom_solid_layers si nécessaire pour satisfaire l'épaisseur minimale de la " "coque inférieure." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -13104,7 +13107,7 @@ msgstr "" "L'objet sera surélevé de ce nombre de couches, et du support sera généré en " "dessous." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -13113,7 +13116,7 @@ msgstr "" "normal qui sont utilisés dans les zones problématiques où un pilier normal " "ne peut pas rentrer." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13123,7 +13126,7 @@ msgstr "" "Si la zone d'impression excède la valeur spécifiée,\n" "alors une inclinaison lente sera appliquée, sinon - une inclinaison rapide" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -13135,7 +13138,7 @@ msgstr[1] "" "Les imprimantes physiques ci-dessous sont basées uniquement sur le " "préréglage que vous allez supprimer." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -13197,7 +13200,7 @@ msgstr "Le nom de fichier fourni n'est pas valide." msgid "The provided name is not valid;" msgstr "Le nom fourni n'est pas valide ;" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -13205,7 +13208,7 @@ msgstr "" "Le 3MF sélectionné contient un objet avec des supports FDM peints utilisant " "une version plus récente de PrusaSlicer et n'est pas compatible." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -13213,7 +13216,7 @@ msgstr "" "Le 3MF sélectionné contient un objet avec de la peinture multi-matériaux " "utilisant une version plus récente de PrusaSlicer et n'est pas compatible." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13221,7 +13224,7 @@ msgstr "" "Le 3MF sélectionné contient un objet avec une jointure peinte utilisant une " "version plus récente de PrusaSlicer et n'est pas compatible." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13268,7 +13271,7 @@ msgstr "" "L'objet sélectionné n'a pas pu être divisé car il ne contient qu'une seule " "partie solide." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13305,7 +13308,7 @@ msgstr "La taille de l'objet peut être spécifiée en pouces" msgid "The size of the object is zero" msgstr "La taille de l'objet est nulle" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13385,7 +13388,7 @@ msgstr "Le nom fourni n'est pas valide ;" msgid "The supplied settings will cause an empty print." msgstr "Les réglages fournis vont entraîner une impression vide." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "L'épaisseur du socle et de ses parois de cavité optionnelles." @@ -13788,11 +13791,11 @@ msgstr "" msgid "This is a default preset." msgstr "Ceci est un préréglage par défaut." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Ceci est une mesure relative de la densité des points de support." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13806,7 +13809,7 @@ msgid "This is a system preset." msgstr "Ceci est un préréglage système." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Ceci est utilisé dans l'interface de Slic3r uniquement en tant que " @@ -14135,7 +14138,7 @@ msgstr "" "permettra de créer une sauvegarde de la configuration existante avant " "d'installer les fichiers compatibles avec ce %s." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14148,7 +14151,7 @@ msgstr "" "On peut décider de renflouer ou de substituer une valeur inconnue par une " "valeur par défaut de manière silencieuse ou verbeuse." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14171,15 +14174,15 @@ msgstr "" "optimal de threads est légèrement supérieur au nombre de coeurs/processeurs " "disponibles." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Incliner" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Inclinaison pour résine à haute viscosité" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Durée de l'inclinaison" @@ -14210,15 +14213,15 @@ msgstr "" "exécute le T code). Ce temps est ajouté au temps total d'impression par " "l'estimateur de temps du G-code." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Durée de l'inclinaison rapide" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Durée de l'inclinaison lente" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Temps de l'inclinaison super lente" @@ -14280,7 +14283,7 @@ msgstr "Outil" msgid "Tool #" msgstr "Outil #" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-code de changement d'outil" @@ -14302,7 +14305,7 @@ msgstr "Position de l'outil" msgid "Tool type" msgstr "Type d'outil" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-" @@ -14327,7 +14330,7 @@ msgstr "" "Indice d'épaisseur de coque supérieure / inférieure : non disponible en " "raison de la hauteur de couche non valide." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Vue du Dessus" @@ -14424,7 +14427,7 @@ msgstr "Déplacement" msgid "Triangles" msgstr "Triangles" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14446,11 +14449,11 @@ msgstr "Type d'imprimante." msgid "Type:" msgstr "Type :" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "CADENAS OUVERT" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14463,7 +14466,7 @@ msgstr "" "Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur " "les valeurs du système (ou par défaut)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14506,11 +14509,11 @@ msgstr "Impossible de remplacer par plus d'un volume" msgid "Undef" msgstr "Undef" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Catégorie non définie" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Groupe non défini" @@ -14524,7 +14527,7 @@ msgstr "Soupassement" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Annuler" @@ -14725,7 +14728,7 @@ msgstr "Utiliser la caméra libre" msgid "Use inches" msgstr "Utiliser les pouces" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Utiliser un socle" @@ -14815,11 +14818,11 @@ msgstr "" "La valeur a été changée et n'est pas égale à la valeur du système ou au " "dernier préréglage sauvegardé" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Les valeurs de cette colonne sont pour le mode Normal" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Les valeurs de cette colonne sont pour le mode Silencieux" @@ -14865,7 +14868,7 @@ msgstr "Fournisseur :" msgid "Verbose G-code" msgstr "G-code commenté" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Version" @@ -14914,7 +14917,7 @@ msgstr "" "Accédez aux \"Préférences\" et cochez \"%1%\"\n" "pour modifier votre choix." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualisez un G-code déjà découpé et enregistré" @@ -14939,7 +14942,7 @@ msgstr "Volumes dans l'Objet réorganisés" msgid "Volumetric" msgstr "Volumétrique" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Indications du débit volumétrique non disponible" @@ -14962,17 +14965,17 @@ msgstr "Vitesse volumétrique" msgid "WARNING:" msgstr "ATTENTION :" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "PUCE BLANCHE" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "L'icône en forme de PUCE BLANCHE indique un préréglage non-système (ou non " "par défaut)." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14980,7 +14983,7 @@ msgstr "" "L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au " "dernier préréglage sauvegardé pour le groupe d'options actuel." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14988,7 +14991,7 @@ msgstr "" "L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier " "préréglage sauvegardé." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Épaisseur de la paroi" @@ -15155,7 +15158,7 @@ msgstr "" "exprimera cette quantité de filament en plus. Ce réglage est rarement " "nécessaire." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -15170,17 +15173,19 @@ msgstr "" "longueur de ces périmètres centraux, mais peut laisser des trous ou " "entraîner une sur-extrusion." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" "Lors de la transition entre différents nombres de périmètres à mesure que la " "pièce s'amincit, un certain espace est alloué pour diviser ou joindre les " -"segments de périmètre." +"segments de périmètre. Si elle est exprimée en pourcentage (par exemple " +"100%), elle sera calculée en fonction du diamètre de la buse." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Mot entier" @@ -15192,7 +15197,7 @@ msgstr "Largeur" msgid "Width (mm)" msgstr "Largeur (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Largeur depuis le centre arrière de la sphère jusqu'au centre avant de la " @@ -15202,17 +15207,17 @@ msgstr "" msgid "Width of a wipe tower" msgstr "Largeur d'une tour de nettoyage" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Largeur des bâtonnets de connexion qui connectent l'objet et le socle généré." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Largeur de l'affichage" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -15226,7 +15231,7 @@ msgstr "" "épais que l'élément lui-même. Si elle est exprimée en pourcentage (par " "exemple 85%), elle sera calculée en fonction du diamètre de la buse." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -15270,7 +15275,7 @@ msgstr "Tour de nettoyage - Ajustement du volume de purge" msgid "Wipe tower brim width" msgstr "Largeur de la bordure de la tour de nettoyage" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Paramètres de la tour de nettoyage" @@ -15336,7 +15341,7 @@ msgstr "" "\n" "Ensembles de configuration mis à jour :" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "" "Rédiger des informations au sujet du modèle en direction de la console." @@ -15429,7 +15434,7 @@ msgstr "" "Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté " "au commentaire en entête du G-Code." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Vous pouvez mettre ici vos annotations concernant le matériau d'impression " @@ -15603,7 +15608,7 @@ msgstr "" "Vos changements actuels supprimeront toutes les changement enregistrés de " "l'extrudeur (outil)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Votre fichier a été réparé." @@ -15642,7 +15647,7 @@ msgstr "Décalage Z" msgid "Z travel" msgstr "Déplacement Z" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" @@ -15764,7 +15769,7 @@ msgstr "profil d'impression par défaut" msgid "default value" msgstr "valeur par défaut" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "supprimer" @@ -15842,7 +15847,7 @@ msgid "flow rate is maximized" msgstr "le débit est maximisé" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15867,7 +15872,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15884,7 +15889,7 @@ msgid "in" msgstr "in" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15897,7 +15902,7 @@ msgstr "" "groupe d'options actuel sur les valeurs du système (ou par défaut)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15906,7 +15911,7 @@ msgstr "" "défaut) pour le groupe d'options en cours" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15943,11 +15948,11 @@ msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "est basé sur Slic3r par Alessandro Ranellucci et la communauté RepRap." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "est sous licence" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15971,7 +15976,7 @@ msgstr "Version maximum de PrusaSlicer" msgid "min PrusaSlicer version" msgstr "Version minimum de PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -16011,19 +16016,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -16037,8 +16041,9 @@ msgstr "mm (zéro pour désactiver)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm ou %" @@ -16100,7 +16105,7 @@ msgstr "modèle" msgid "modified" msgstr "modifié" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "prix/bouteille" @@ -16158,7 +16163,7 @@ msgstr "imprimer" msgid "printer model" msgstr "modèle de l'imprimante" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "retirer" @@ -16179,11 +16184,11 @@ msgstr "nécessite min. %s et max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -16306,8 +16311,8 @@ msgstr "échec de l'écriture du rappel" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/hu/PrusaSlicer_hu.po b/resources/localization/hu/PrusaSlicer_hu.po index 3c14607f2..6d256cec8 100644 --- a/resources/localization/hu/PrusaSlicer_hu.po +++ b/resources/localization/hu/PrusaSlicer_hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -18,16 +18,16 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Az összetevők szerzői joga" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Szerzői jog" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,33 +35,33 @@ msgstr "" "A következő programok (könyvtárak) licencszerződései az alkalmazás " "licencszerződésének részét képezik" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Szerző: %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Verzió" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "engedélyezve van a következő szerint" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, 3-as verzió" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" "A PrusaSlicer alapja Alessandro Ranellucci és a RepRap közösség Slic3r-je." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -71,7 +71,7 @@ msgstr "" "Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik és még sokan mások " "közreműködésével." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Verzióinformáció Másolása" @@ -214,7 +214,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Méret" @@ -272,19 +272,18 @@ msgstr "A 0,0 G-kód koordináta távolsága a téglalap bal elülső sarkától #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -319,7 +318,7 @@ msgid "Load shape from STL..." msgstr "Alakzat betöltése STL-ből..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Beállítások" @@ -332,7 +331,7 @@ msgid "Load..." msgstr "Betöltés..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Eltávolítás" @@ -558,19 +557,19 @@ msgstr "Váltsak egyenes vonalú kitöltési mintára?" msgid "Infill" msgstr "Kitöltés" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "A fej benyúlása nem lehet nagyobb, mint a fej szélessége." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Érvénytelen Fej benyúlás" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "A tűfej átmérőjének kisebbnek kell lennie, az oszlop átmérőjénél." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Érvénytelen tűfej átmérő" @@ -679,7 +678,7 @@ msgid "Standard" msgstr "Standard" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Összes" @@ -952,7 +951,7 @@ msgstr "A %s által támogatott egyéb gyártó kiválasztása" msgid "Firmware Type" msgstr "Firmware Típus" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" @@ -1270,7 +1269,7 @@ msgstr "Végrahajtás" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Visszavonás" @@ -1936,7 +1935,7 @@ msgstr "Megerősítés" msgid "Cancelling..." msgstr "Visszavonás..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Alakzat Galéria" @@ -1952,7 +1951,7 @@ msgstr "Hozzáadás a tárgyasztalhoz" msgid "Add selected shape(s) to the bed" msgstr "Kijelölt alakzat(ok) hozzáadása a tárgyasztalhoz" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Hozzáadás" @@ -1962,7 +1961,7 @@ msgstr "Egy vagy több egyedi alakzat hozzáadása" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Törlés" @@ -2146,8 +2145,8 @@ msgstr "Mozgás" msgid "Extrusion" msgstr "Extrudálás" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Visszahúzás" @@ -2202,7 +2201,7 @@ msgstr "Nyomtatási beállítások" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -2426,7 +2425,7 @@ msgid "Add..." msgstr "Hozzáadás..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Összes törlése" @@ -2474,7 +2473,7 @@ msgid "Next Undo action: %1%" msgstr "Következő visszavonás művelet: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Mégis" @@ -2516,7 +2515,7 @@ msgid "Selection-Remove from rectangle" msgstr "Kijelölés – Eltávolítás a téglalapból" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Vágás" @@ -2777,7 +2776,7 @@ msgid "Quality" msgstr "Minőség" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Zárótávolság" @@ -2882,7 +2881,7 @@ msgstr "Mozgatás" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Forgatás" @@ -2899,7 +2898,7 @@ msgstr "Alkalmaz" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Skálázás" @@ -2954,7 +2953,7 @@ msgstr "" "engedélyezett" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Hiba" @@ -3040,7 +3039,7 @@ msgid "Minimal points distance" msgstr "Pontok minimális távolsága" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Támadztó pontok sűrűsége" @@ -3894,7 +3893,7 @@ msgid "Speed" msgstr "Sebesség" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3917,52 +3916,51 @@ msgstr "Szoknya és karima" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Haladó" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Támasztékok" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Párna" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Üregesítés" @@ -4105,7 +4103,7 @@ msgid "Revert conversion from meters" msgstr "Konvertálás visszavonása (metrikus mértékegységről)" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Összevonás" @@ -4166,7 +4164,7 @@ msgid "Split the selected object into individual parts" msgstr "A kijelölt objektum különálló alkatrészekre bontása" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Felbontás" @@ -4827,11 +4825,11 @@ msgstr "Magasság" msgid "Width" msgstr "Szélesség" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Ventilátor sebesség" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Hőmérséklet" @@ -5132,7 +5130,7 @@ msgstr "" msgid "Attention!" msgstr "Figyelem!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Gyorsbillentyűk" @@ -5171,7 +5169,7 @@ msgstr "" "Konfiguráció betöltése ini/amf/3mf/gcode fájlból, és hozzáadás a meglévőhöz" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "G-kód exportálása" @@ -5527,13 +5525,13 @@ msgstr "Extruder számának beállítása a kiválasztott elemekhez" msgid "Objects List" msgstr "Objektumok Listája" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "G-kód fájl megnyitása" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Tárgyasztal újratöltése lemezről" @@ -5570,7 +5568,7 @@ msgid "Show/Hide G-code window" msgstr "G-kód ablak megjelenítése/elrejtése" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Előnézet" @@ -5654,7 +5652,7 @@ msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Új PrusaSlicer példány megnyitása" @@ -5662,11 +5660,11 @@ msgstr "Új PrusaSlicer példány megnyitása" msgid "G-code preview" msgstr "G-kód előnézet" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "G-kód nézegető megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "PrusaSlicer megnyitása" @@ -5692,13 +5690,13 @@ msgid "Print Settings" msgstr "Nyomtatási Beállítások" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Alapanyag Beállítások" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Filament Beállítások" @@ -5781,7 +5779,7 @@ msgstr "A Szerzőről szóló párbeszédpanel megnyitása" msgid "Show Tip of the Day" msgstr "Nap Tippje Mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -5789,94 +5787,94 @@ msgstr "" "Megnyitja a nap tippje értesítést a jobb alsó sarokban, vagy egy másik " "tippet jelenít meg, ha már nyitva van." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "A billentyűparancsok listájának megjelenítése" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Izometrikus" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Izometrikus nézet" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Felül" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Felülnézet" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Alul" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Alulnézet" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Elöl" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Elölnézet" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Hátul" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Hátulnézet" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Bal" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Balnézet" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Jobb" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Jobbnézet" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "Új Projekt" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Új projekt elkezdése" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Projekt megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Projekt fájl megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Legutóbbi projektek" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5884,510 +5882,510 @@ msgstr "" "A kiválasztott projekt már nem elérhető.\n" "El szeretné távolítani a legutóbbi projektek listájáról?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "Projekt mentése" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Aktuális projekt fájl mentése" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Projekt mentése másként" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Aktuális projekt fájl mentése másként" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "STL/OBJ/AM&F/3MF Importálása" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Modell betöltése" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "STL (Angolszász mértékegységek) Importálása" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Angolszász mértékegységekkel mentett modell importálása" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "SL1 / SL1S Archív Importálása" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "SL1 / Sl1S archív betöltése" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Konfiguráció Importálása" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Korábban exportált konfigurációs fájl betöltése" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Konfiguráció Importálása Projektből" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Konfiguráció betöltése projekt fájlból" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Konfigurációs Csomag Importálása" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Előbeállítások betöltése konfigurációs csomagból" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "Importálás" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "G-kód Exportálása" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Az aktuális tárgyasztal exportálása G-kódként" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "G-kód Küldése" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Az aktuális tárgyasztal küldése nyomtatóra G-kódként" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "G-kód Exportálása SD Kártyára / Flash memóriára" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Tárgyasztal Exportálása G-kódként SD Kártyára / Flash memóriára" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Tárgyasztal Exportálása STL-ként" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Tárgyasztal Exportálása STL-ként" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Tárgyasztal Exportálása STL-ként támasztékokkal együtt" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Tárgyasztal Exportálása STL-ként támasztékokkal együtt" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Szerszámpálya Exportálása OBJ-ként" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Szerszámpálya Exportálása OBJ-ként" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Beállítások Exportálása" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Aktuális beállítások exportálása fájlba" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Konfigurációs Csomag Exportálása" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Az összes előbeállítás exportálása fájlba" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Konfigurációs Csomag Exportálása Fizikai Nyomtatókkal együtt" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Konfigurációs csomag exportálása a fizikai nyomtatókkal együtt" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "Exportlálás" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "SD Kártya / Flash meghajtó eltávolítása" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "SD-kártyát / Flash meghajtót eltávolítása a G-kódot exportálása után." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Gyors Szeletelés" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Fájl szeletelése G-kódba" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Gyors Szeletelés és Mentés Másként" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Fájl szeletelése G-kódba, mentés másként" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Az Előző Gyors Szeletetelés Megismétlése" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Az előző gyors szeletetelés megismétlése" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Újra)Szeletelés Most" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Új szeletelés indítása" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "STL fájl javítása" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "STL fájl automatikus javítása" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "G-Kód Előnézet" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Bezárás" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Kilépés %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Összes kijelőlése" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Az összes objektum kijelölése" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Összes Kijelölés Megszüntetése" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Az összes objektum kijelölésének megszüntetése" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Kijelöltek törlése" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Az összes kijelölt objektum törlése" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Összes törlése" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Az összes objektum törlése" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Visszavonás" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "Mégis" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "Másolás" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Kijelöltek másolása a vágólapra" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&Beillesztés" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Beillesztés a vágólapról" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Újratöltés lemezről" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Keresés" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Keresés a beállításokban" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Tárgyasztal Fül" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Tárgyasztal mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Nyomtatási Beállítások Fül" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Nyomtatási beállítások mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Filament Beállítások Fül" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Filament beállítások mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Nyomtató Beállítások Fül" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Nyomtató beállítások mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "3D szerkesztő nézet mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Előnézet" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "3D szeletek nézet mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Dialógusablak megnyitása az Alakzat Galéria szerkesztéséhez" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Nyomtató-feltöltési várakozási sor" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "A Nyomtató-feltöltési várakozási sor ablak megjelenítése" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Új Példány Megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Előbeállítások Összehasonlítása" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Előbeállítások összehasonlítása" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Címkék Mutatása" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Objektum/példánycímkék megjelenítése 3D-s jelenetben" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Oldalsáv Összecsukása" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "&Az oldalsáv összecsukása" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "Teljes Képernyő" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Teljes képernyő" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Fájl" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Szerkesztés" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Ablak" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Nézet" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Segítség" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&G-kód megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "PrusaSlicer Megnyitása" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "Exportálás" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Nyomtatásra küldés" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Anyagbeállítások Lap" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Válasszon egy fájlt a szeleteléshez (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Nincs korábban szeletelt fájl." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "A korábban szeletelt fájl (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") nem található." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Fájl Nem Található" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s fájl mentése másként:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-kód" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Zip fájl mentése másként:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Szeletelés" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Feldolgozás %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% szeletelése sikeresen megtörtént." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Szeletelés Kész!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Válassza ki a javítandó STL fájlt:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "OBJ fájl mentése (kevésbé hajlamos a koordinációs hibákra, mint az STL) a " "másként:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "A fájlja javításra került." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Javítás" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Konfiguráció mentése a következőként:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Konfigurációs fájl betöltése" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "A Betöltendő konfiguráció kiválasztása:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Konfigurációs csomag exportálása" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -6395,15 +6393,15 @@ msgstr "" "Egyes előre beállított értékek módosultak, és a nem mentett módosítások nem " "kerülnek exportálásra a konfigurációs csomagba." -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Előbeállítási csomag mentése a következőként:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Konfigurációs csomag betöltése" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d előbeállítás sikeresen importálva." @@ -6630,8 +6628,8 @@ msgstr "Példányok" msgid "Instance %d" msgstr "Példány %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Rétegek" @@ -6710,7 +6708,7 @@ msgstr "A nyomtató leíró elnevezése" msgid "Add preset for this printer device" msgstr "Előbeállítás hozzáadása ehhez a nyomtatóeszközhöz" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Nyomtató feltöltés" @@ -6872,7 +6870,7 @@ msgid "Select what kind of support do you need" msgstr "Válassza ki, milyen támaszra van szüksége" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Támaszték csak tárgyasztalról" @@ -6972,7 +6970,7 @@ msgid "(including spool)" msgstr "(beleértve a spulnit)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Költség" @@ -7495,10 +7493,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Beillesztés Vágólapról" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Általános" @@ -8022,7 +8020,7 @@ msgid "Add/Remove presets" msgstr "Előbeállítás Hozzáadása/Eltávolítása" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Fizikai nyomtató hozzáadása" @@ -8034,7 +8032,7 @@ msgstr "Előbeállítás szerkesztése" msgid "Change extruder color" msgstr "Az Extruder színének változtatása" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Fizikai nyomtató szerkesztése" @@ -8348,11 +8346,11 @@ msgstr "EGYÁLTALÁN NINCS TÖMÖRÍTÉS" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8466,12 +8464,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Csak váltson a(z) \"%1%\" előbeállításra" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Lopakodó" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normál" @@ -8739,7 +8737,7 @@ msgstr "teljes profil név" msgid "symbolic profile name" msgstr "szimbolikus profil név" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Rétegek és kerületek" @@ -8827,7 +8825,7 @@ msgstr "Átfedés" msgid "Flow" msgstr "Áramlás" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Egyéb" @@ -8835,52 +8833,52 @@ msgstr "Egyéb" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Kimeneti lehetőségek" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Szekvenciális nyomtatás" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Extruder körüli szabad tér" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Kimeneti fájl" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Utófeldolgozó szkriptek" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Megjegyzések" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Függőségek" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Profilfüggőségek" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "Az utófeldolgozási szkriptek a G-kód fájlt helyben módosítják." -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8899,83 +8897,83 @@ msgstr[1] "" "Kérjük, távolítsa el ezeket, mivel problémákat okozhat a G-kód " "megjelenítésében és a nyomtatási idő becslésében." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Fenntartott kulcsszavakat találtam az" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Filament Felülbírálások" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Fúvóka" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Tárgyasztal" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Hűtés" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Engedélyezés" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Ventilátor Beállítások" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Hűtési küszöbök" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Filament tulajdonságok" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Nyomtatási sebesség felülbírálás" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Törlőtorony paraméterek" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Szerszámváltási paraméterek egy extruderes Több Anyagos (MM) nyomtatónál" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Tömörítési beállítások" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Egyéni G-kód" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G-kód kezdete" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "G-kód vége" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Térfogatáramlási tippek nem állnak rendelkezésre" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8997,20 +8995,20 @@ msgstr "" "beállításai lapon a \"fogaskerék\" ikonra kattint. A fizikai nyomtató " "profilok a PrusaSlicer/physical_printer könyvtárban kerülnek tárolásra." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Méret és koordináták" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Képességek" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "A nyomtató Extrudereinek száma." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -9021,64 +9019,64 @@ msgstr "" "ezért minden extruder átmérőjének azonosnak kell lennie.\n" "Szeretné az összes extruder fúvókaátmérőjét az első extruderéhez igazítani?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Fúvóka Átmérő" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-kód Rétegváltás Előtt" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-kód Rétegváltás Után" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-kód Szerszám Váltás" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-kód Objektumok Között (egymás utáni nyomtatáshoz)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-kód Színváltás" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-kód Nyomtatás Szüneteltetése" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "G-kód Egyedi Minta" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Kijelző" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Billentés" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Billentési idő" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Korrekciók" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Expozíció" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -9087,39 +9085,39 @@ msgstr "Expozíció" msgid "Machine limits" msgstr "Gépi limitek" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Ez az oszlop a Normál módra vonatkozik" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Ez az oszlop a Lopakodó módra vonatkozik" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Maximum előtolások" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Maximum gyorsulások" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Rántás korlátok" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Minimum előtolások" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Egy extruders MM beállítása" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Egyetlen extruder többanyagú paraméterei" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -9127,19 +9125,19 @@ msgstr "" "Ez egy egy-extruderes, többféle anyagot használó nyomtató, az összes " "extruder átmérője az új értékre lesz beállítva. Szeretné folytatni?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Rétegmagasság korlátok" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Pozíció (több extruderes nyomtatók esetében)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Csak a Z tengely emelése" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -9147,11 +9145,11 @@ msgstr "" "Visszahúzás, ha a szerszám ki van kapcsolva (több extruderes beállítások " "speciális beállításai)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Filament színének visszaállítása" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -9161,31 +9159,31 @@ msgstr "" "\n" "Kikapcsolja a Törlést, hogy engedélyezze a Firmware visszahúzást?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Firmware visszahúzás" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Új nyomtató előbeállítás kiválasztva" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Független_" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "eltávolít" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "törlés" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Ez az utolsó előbeállítás ehhez a fizikai nyomtatóhoz." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -9194,7 +9192,7 @@ msgstr "" "Biztos, hogy törölni szeretné a \"%1%\" előbeállítást a \"%2%\" fizikai " "nyomtatóról?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -9206,7 +9204,7 @@ msgstr[1] "" "Az alábbi fizikai nyomtatók azon az előbeállításon alapulnak, amelyet " "törölni készül." -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -9217,7 +9215,7 @@ msgstr[1] "" "Vegye figyelembe, hogy a kiválasztott előbeállítás törlődik ezekről a " "nyomtatókról is." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -9231,7 +9229,7 @@ msgstr[1] "" "Az alábbi fizikai nyomtatók csak azon az előbeállításon alapulnak, amelyet " "törölni készül." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -9243,57 +9241,57 @@ msgstr[1] "" "Vegye figyelembe, hogy ezek a nyomtatók is törlődnek a kiválasztott " "előbeállítás törlése után." -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Biztos, hogy a kiválasztott előbeállítást %1% szeretné?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Előbeállítás" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Beállítás" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Keresés" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Csere erre" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Reguláris kifejezés" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Nagy- és kisbetű érzékeny" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Teljes szó" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Egysoros egyeztetés" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "A gépi korlátok a G-kódba kerülnek, és a nyomtatási idő becslésére " "szolgálnak." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9303,7 +9301,7 @@ msgstr "" "felhasználásra kerülnek. A nyomtató más gépi korlátokat alkalmazhat, ezért a " "nyomtatási idő becslése pontatlan lehet." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9311,12 +9309,12 @@ msgstr "" "A gépi korlátok nincsenek beállítva, ezért a nyomtatási idő becslése " "pontatlan lehet." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "ZÁRT LAKAT" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9324,12 +9322,12 @@ msgstr "" "azt jelzi, hogy a beállítások megegyeznek az aktuális opciócsoport rendszer- " "(vagy alapértelmezett) értékeivel" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "NYITOTT LAKAT" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9341,12 +9339,12 @@ msgstr "" "Kattintson a NYITOTT LAKAT ikonra az aktuális opciócsoport összes " "beállításának visszaállításához a rendszer (vagy az alapértelmezett) értékre." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "SZÜRKE PÖTTY" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9355,12 +9353,12 @@ msgstr "" "értéket jelez,\n" "jobb gomb esetén: azt jelzi, hogy a beállításokat nem módosították." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "VISSZA NYÍL" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9372,7 +9370,7 @@ msgstr "" "Kattintson a VISSZA NYÍL ikonra az aktuális opciócsoport összes " "beállításának visszaállításához az utoljára mentett állapotra." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9380,7 +9378,7 @@ msgstr "" "ZÁRT LAKAT ikon azt jelzi, hogy a beállítások megegyeznek az aktuális " "opciócsoport rendszer- (vagy alapértelmezett) értékeivel" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9393,13 +9391,13 @@ msgstr "" "Kattintson az aktuális opciócsoport összes beállításának visszaállításához a " "rendszer (vagy az alapértelmezett) értékre." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "A SZÜRKE PÖTTY ikon a rendszeren kívüli (vagy nem alapértelmezett) " "előbeállítást jelzi." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9407,7 +9405,7 @@ msgstr "" "A SZÜRKE PÖTTY ikon azt jelzi, hogy a beállítások megegyeznek az aktuális " "opciócsoport utoljára mentett előbeállításával." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9419,7 +9417,7 @@ msgstr "" "Kattintson az aktuális opciócsoport összes beállításának visszaállításához " "az utoljára mentett állapotra." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -9427,7 +9425,7 @@ msgstr "" "ZÁRT LAKAT ikon azt jelzi, hogy az érték megegyezik a rendszer (vagy " "alapértelmezett) értékével." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9438,7 +9436,7 @@ msgstr "" "Kattintson az aktuális érték visszaállításához a rendszer (vagy " "alapértelmezett) értékre." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9446,7 +9444,7 @@ msgstr "" "A SZÜRKE PÖTTY azt jelzi, hogy az érték megegyezik az utoljára mentett " "előbeállítással." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9457,31 +9455,31 @@ msgstr "" "Kattintson az aktuális érték visszaállításához az utoljára mentett " "beállításra." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Anyag" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Anyag nyomtatási profil" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Támasztó fej" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Támasztó pillér" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "A tartópálcák és a csomópontok csatlakoztatása" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Automatikus generálás" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9491,11 +9489,11 @@ msgstr "" "kategóriában. \n" "\"%1%\" engedélyezéséhez kapcsolja ki a \"%2%\"-ot." -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Objektum magassága" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Párna az objektum körül" @@ -9589,7 +9587,7 @@ msgstr "" "hogy újra rákérdezzen a nem mentett módosításokra." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9660,41 +9658,41 @@ msgstr "" "következő el nem mentett változtatásokat tartalmazza:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Extruderek száma" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Előbeállítások kiválasztása az összehasonlításhoz" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Minden előbeállítás megjelenítése (beleértve az inkompatibiliseket is)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Bal Előbeállítás Értéke" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Jobb Előbeállítás Értéke" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Az egyik előbeállítás nem található" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" "Az összehasonlított előbeállítások különböző nyomtatási technológiával " "rendelkeznek" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Az előbeállítások megyegyeznek" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9703,11 +9701,11 @@ msgstr "" "Erre a gombra kattintva ugyanazt az előbeállítást választhatja ki a jobb és " "a bal előbeállításhoz." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Nem definiált kategória" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Nem definiált csoport" @@ -10394,7 +10392,7 @@ msgstr "" "Nem lehet kiszámítani a %1% extrudálási szélességet: %2%\" változó nem " "elérhető." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -10403,7 +10401,7 @@ msgstr "" "A kiválasztott 3mf fájl a %1% egy újabb verziójával lett mentve, és nem " "kompatibilis." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -10411,7 +10409,7 @@ msgstr "" "A kiválasztott 3MF a PrusaSlicer újabb verziójával készült FDM támaszték " "festett objektumot tartalmaz, és nem kompatibilis." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -10419,7 +10417,7 @@ msgstr "" "A kiválasztott 3MF a PrusaSlicer egy újabb verziójával készült varrat " "festett objektumot tartalmaz, és nem kompatibilis." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -11230,8 +11228,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -11246,9 +11244,8 @@ msgstr "Ez a ventilátorsebesség minden híd és túlnyúlás során érvényes #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11469,8 +11466,8 @@ msgstr "" msgid "Default print profile" msgstr "Alapértelmezett nyomtatási profil" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11623,8 +11620,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm vagy %" @@ -11710,7 +11708,7 @@ msgid "Extruder Color" msgstr "Extruder színe" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Ezt csak a Slic3r felületén használjuk vizuális segítségként." @@ -11809,7 +11807,7 @@ msgstr "" msgid "approximate seconds" msgstr "becsült másodperc" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Szín" @@ -11988,8 +11986,8 @@ msgstr "" "tolómérőt, és végezzen többszöri mérést az izzószál mentén, majd számítsa ki " "az átlagot." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Sűrűség" @@ -12056,7 +12054,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Ismeretlen)" @@ -13860,7 +13858,7 @@ msgstr "" "Ezzel a beállítással elforgathatja a támaszanyag mintázatát a vízszintes " "síkon." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14511,33 +14509,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14549,11 +14549,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14562,63 +14562,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14627,63 +14599,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Kijelző szélesség" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Kijelző szélessége" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Kijelző magasság" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Kijelző magassága" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Pixelek száma" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Pixelek száma X irányban" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Pixelek száma Y irányban" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Kijelző vízszintes tükrözése" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Tükrözés vízszintesen" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "A kimeneti képek vízszintes tükrözése" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Kijelző függőleges tükrözése" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Tükrözés függőlegesen" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "A kimeneti képe függőleges tükrözése" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Kijelző tájolás" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14693,55 +14665,55 @@ msgstr "" "mód megfordítja a kijelző szélességi és magassági paramétereinek jelentését, " "és a kimeneti képek 90 fokkal el lesznek forgatva." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Tájkép" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Portré" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Gyors" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Gyors billentés" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "A gyors billenés időtartama" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lassú" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Lassú billentés" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "A lassú billentés időtartama" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Felület kitöltés" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14752,40 +14724,40 @@ msgstr "" "meghaladja a megadott értéket, \n" "akkor lassú billenés, ellenkező esetben gyors billenés fog történni" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Nyomtató méretkorrekciója" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Nyomtató méretkorrekciója az X tengelyen" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Nyomtató méretkorrekciója az X tengelyen" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Nyomtató méretkorrekciója az Y tengelyen" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Printer scaling correction in Y axis" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Nyomtató méretkorrekciója a Z tengelyen" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Nyomtató méretkorrekciója a Z tengelyen" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Nyomtató abszolút korrekció" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14793,21 +14765,21 @@ msgstr "" "A szeletelt 2D poligonokat megnöveli vagy összezsugorítja a korrekció " "előjelének megfelelően." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Elefántláb minimális szélesség" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Az elefántláb-kompenzáció során megőrzendő jellemzők minimális szélessége." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Nyomtató Gamma korrekció" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14818,43 +14790,43 @@ msgstr "" "viselkedés megszünteti az élsimítást anélkül, hogy a sokszögek lyukai " "elvesznének." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA anyag típus" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Első réteg magasság" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Flakon térfogata" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "A flakon súlya" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "pénz/flakon" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Áttűnő rétegek" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14862,103 +14834,103 @@ msgstr "" "A szükséges rétegek száma a kezdeti expozíciós időről az expozíciós időre " "való átmenethez" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Minimális expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Maximum expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Minimális kezdeti expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Maximum kezdeti expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Kezdeti expozíciós idő" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Terjeszkedés miatti korrekció" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Terjeszkedés miatti korrekció az X tengelyen" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Terjeszkedés miatti korrekció az Y tengelyen" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Terjeszkedés miatti korrekció az Z tengelyen" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA anyag megjegyzések" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Az SLA anyaggal kapcsolatos jegyzeteit ide írhatja." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Alapértelmezett SLA anyagprofil" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Támasztók generálása" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Támasztók generálása a modellekhez" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Tűfej elülső átmérője" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "A fej mutató oldalának átmérője" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Fej benyúlás" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Mennyire kell a tűhegynek benyúlnia a modell felületébe" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Tűfej szélessége" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Szélesség a hátsó gömb középpontjától az első gömb középpontjáig" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Pillér átmérője" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "A támasztó pillérek átmérője mm-ben" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Kis pillér átmérője százalék" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14966,11 +14938,11 @@ msgstr "" "A kisebb pillérek normál pillérek átmérőjéhez viszonyított aránya, amelyeket " "olyan problémás helyeken használnak, ahol egy normál pillér nem fér el." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Max hidak egy pilléren" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14978,11 +14950,11 @@ msgstr "" "Az egy pilléren elhelyezhető hidak maximális száma. A hidak tartják a " "támasztópont tűfejeit, és kis ágakként csatlakoznak a pillérekhez." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Pillér összekötési mód" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14992,23 +14964,23 @@ msgstr "" "kereszt (dupla cikk-cakk) vagy dinamikus, amely automatikusan vált az első " "kettő között a két pillér távolságától függően." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Cikk-Cakk" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Kereszt" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinamikus" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Pillérszélesítési tényező" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -15017,27 +14989,27 @@ msgstr "" "sugarat. A nulla azt jelenti, hogy nincs növelés, az egy pedig teljes " "növelést jelent." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "A támasztó alapjának átmérője" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "A pillér alapjának átmérője mm-ben" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "A támasztó alapjának magassága" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "A pillér alapkúpjának magassága" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "A támasztó alapjának biztonsági távolsága" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -15047,28 +15019,28 @@ msgstr "" "nulla magasságú módban van értelme, ahol a modell és a pillér közé egy ennek " "a paraméternek megfelelő rés kerül beillesztésre." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kritikus szög" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" "Az alapértelmezett szög a támasztópálcák és csomópontok összekötéséhez." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Híd max. hossza" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "A híd maximális hossza" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Maximális oszlop áthidalási távolság" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -15076,7 +15048,7 @@ msgstr "" "Két oszlop maximális távolsága, amelyeket még össze lehet kötni egymással. A " "nulla érték tiltja az oszlopok kaszkádosítását." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -15084,40 +15056,40 @@ msgstr "" "Mennyire emeljék fel a támasztók a megtámasztott objektumot. Ha a \"Párna az " "objektum körül\" opció engedélyezve van, ez az érték nem számít." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Ez a támasztási pontok sűrűségének relatív mérőszáma." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "A támasztási pontok minimális távolsága" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "" "Nem kerülnek támasztási pontok ennél a küszöbértéknél közelebb egymáshoz." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Párna használata" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Párna hozzáadása a támasztott modell alá" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Párna falvastagság" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "A párna és az opcionális üreg falainak vastagsága." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Párna fal magassága" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -15129,19 +15101,19 @@ msgstr "" "szívóhatást fejthetnek ki az üregben, ami megnehezíti a nyomtatás lehúzását " "a kádfóliáról." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Párna karima mérete" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Milyen messzire terjedjen ki a párna az körbevett geometria körül" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Maximális összeolvadási távolság" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -15152,11 +15124,11 @@ msgstr "" "milyen messze legyen egymástól. Ha ennél közelebb vannak egymáshoz, akkor " "egy párnává olvadnak össze." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Párnafal meredekség" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -15164,80 +15136,80 @@ msgstr "" "A párnafal meredeksége a tárgyasztal síkjához képest. A 90 fok egyenes falat " "jelent." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" "Hozzon létre párnát az objektum körül és hagyja figyelmen kívül a támasztók " "magasságát" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Párna az objektum körül mindenhol" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Párna kényszerítése az objektum körül mindenhol" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Párna objektum hézag" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" "Az objektum alja és a generált párna közötti hézag nulla magasságú módban." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Párna objektum összekötő lépésköz" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "Az objektumot és a generált párnát összekötő pálcák közötti távolság." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Párna objektum összekötő szélessége" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Az objektumot és a generált párnát összekötő csatlakozó pálcák szélessége." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Párna objektum összekötő benyúlása" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Az apró összekötőknek mennyire kell benyúlniuk a modell testébe." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Üregesítés engedélyezése" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Üregesítse a modellt, hogy üres legyen a belseje" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Falvastagság" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Az üreges modell minimális falvastagsága." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Pontosság" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -15245,7 +15217,7 @@ msgstr "" "Teljesítmény kontra számítási pontosság. Az alacsonyabb értékek nemkívánatos " "műtermékeket okozhatnak." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -15259,11 +15231,11 @@ msgstr "" "lekerekíti a belső teret. Nulla értéknél a belső tér leginkább a külsőhöz " "fog hasonlítani." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Nyomtatási sebesség" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -15273,65 +15245,65 @@ msgstr "" "nyomtatási profilra lehet szükség. Lelassítja a billenőmozgást, és " "késleltetést ad hozzá az expozíció előtt." -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "OBJ exportálása" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Modell(ek) exportálása OBJ formátumban." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "SLA exportálása" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" "Szeletelje fel a modellt és exportálja az SLA nyomtatási rétegeket PNG " "formátumban." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "3MF exportálása" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Modell(ek) exportálása 3MF formátumban." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "AMF exportálása" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Modell(ek) exportálása AMF formátumban." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "STL exportálása" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Modell(ek) exportálása STL formátumban." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Szeletelje a modellt és exportálja a szerszámpályákat G-kódként." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G-kód nézegető" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Egy már felszeletelt és elmentett G-kód megjelenítése" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Szeletelés_" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -15339,73 +15311,73 @@ msgstr "" "A modell szeletelése FFF-, vagy SLA-ként a printer_technology konfigurációs " "érték alapján." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Súgó" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Ennek a súgónak a megjelenítése." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Súgó (FFF lehetőségek)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "A nyomtatási/G-kód konfigurációs lehetőségek teljes listájának megjelenítése." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Súgó (SLA lehetőségek)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Az SLA nyomtatási konfigurációs beállítások teljes listájának megjelenítése." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Modell Információ Kimenet" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "A modellre vonatkozó információk írása a konzolra." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Konfigurációs fájl mentése" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "A konfiguráció mentése a megadott fájlba." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY igazítása" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "A modell igazítása egy megadott ponthoz." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "A modellt elvágása egy megadott Z-nél." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Középre igazítás_" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "A nyomtatás középre igazítása a megadott középpont körül." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Ne rendezzen" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -15413,11 +15385,11 @@ msgstr "" "Az egyesítés előtt ne rendezze át az adott modelleket, és tartsa meg az " "eredeti XY-koordinátákat." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Ágyra igazítás" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -15426,23 +15398,23 @@ msgstr "" "Alapértelmezés szerint engedélyezve van, kikapcsolásához használja a --no-" "ensure-on-bed opciót." -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Megkettőzés" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Másolatok sokszorozása ezzel a tényezővel." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Megkettőzés rács szerint" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Másolatok sokszorozása rács létrehozásával." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -15450,7 +15422,7 @@ msgstr "" "A megadott modellek elredezése és egyetlen modellé való összevonása a " "tárgyasztalon, hogy egyszerre lehessen végrehajtani a műveleteket." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -15459,31 +15431,31 @@ msgstr "" "hozzáadódik, ha a modellt fel kell szeletelnünk a kért művelet " "végrehajtásához)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Az Z tengely körüli forgatási szög fokban." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Forgatás X körül" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Az X tengely körüli forgatási szög fokban." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Forgatás Y körül" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Az Y tengely körüli forgatási szög fokban." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Skálázási tényező vagy százalék." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15491,23 +15463,23 @@ msgstr "" "Az összekapcsolatlan részek felismerése és különálló objektumokra való " "bontása az adott modell(ek)ben." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Skálázás Mérethez Igazítva" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "A megadott térfogatra való skálázás." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Nem létező konfigurációs fájlok figyelmen kívül hagyása" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Ne hibázzon, ha a --betöltéshez megadott fájl nem létezik." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -15515,7 +15487,7 @@ msgstr "" "Előre kompatibilitási szabály konfigurációs és projektfájlokból (3MF, AMF) " "történő konfiguráció betöltéskor." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15528,11 +15500,11 @@ msgstr "" "hogy kilép, vagy az ismeretlen értéket egy alapértelmezett értékkel " "helyettesíti csendben vagy megjegyzéssel." -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Kilépés ismeretlen konfigurációs értékek esetén" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -15540,7 +15512,7 @@ msgstr "" "Ismeretlen konfigurációs értékek olvasásának engedélyezése. Az " "alapértelmezett értékek helyettesítése megjegyzéssel." -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -15548,11 +15520,11 @@ msgstr "" "Ismeretlen konfigurációs értékek olvasásának engedélyezése. Az " "alapértelmezett értékek helyettesítése csendben." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Konfigurációs fájl betöltése" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15560,11 +15532,11 @@ msgstr "" "Konfiguráció betöltése a megadott fájlból. Többször is használható " "beállítások több fájlból történő betöltéséhez." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Kimeneti Fájl" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15572,11 +15544,11 @@ msgstr "" "Az a fájl, ahová a kimenet kiírásra kerül (ha nincs megadva, akkor a " "bemeneti fájlon alapul)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Egypéldányos mód" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15587,11 +15559,11 @@ msgstr "" "alkalmazás beállításai közül felülírja a \"single_instance\" konfigurációs " "értéket." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Adatkönyvtár" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15601,11 +15573,11 @@ msgstr "" "különböző profilok karbantartásához vagy a hálózaton tárolt konfigurációk " "beviteléhez." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Naplózási szint" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15616,11 +15588,11 @@ msgstr "" "Például: loglevel=2 a végzetes, hiba és figyelmeztetés szintű üzeneteket " "naplózza." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Renderelés szoftveres renderelővel" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/it/PrusaSlicer.mo b/resources/localization/it/PrusaSlicer.mo index dfcf41b65e0bfd2c1437a658e4972351465446ae..1b378778633746b4f02c023bbca1549a069d70c7 100644 GIT binary patch delta 70771 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�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 diff --git a/resources/localization/it/PrusaSlicer_it.po b/resources/localization/it/PrusaSlicer_it.po index a5f6cc278..f6f6c3937 100644 --- a/resources/localization/it/PrusaSlicer_it.po +++ b/resources/localization/it/PrusaSlicer_it.po @@ -7,7 +7,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -35,9 +35,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -126,7 +125,7 @@ msgstr[0] "%1% (%2$d guscio)" msgstr[1] "%1% (%2$d gusci)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Preset" @@ -145,7 +144,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%1% è stato sostituito con %2%" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% slice generato correttamente." @@ -166,7 +165,7 @@ msgstr "%3.2f mm³/s alla velocità del filamento di %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d linee: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d preset importati correttamente." @@ -337,7 +336,7 @@ msgstr "" msgid "&About %s" msgstr "Inform&azioni su %s" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Ridu&ci barra laterale" @@ -349,27 +348,27 @@ msgstr "&Configurazione" msgid "&Configuration Snapshots" msgstr "Istantanee di &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Copia" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Eli&mina selezionati" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Modifiche" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Esporta" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Impostazioni &Filamento" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&File" @@ -377,19 +376,19 @@ msgstr "&File" msgid "&Finish" msgstr "&Completa" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "Schermo intero (&F)" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Anteprima &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Aiuto" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importa" @@ -397,7 +396,7 @@ msgstr "&Importa" msgid "&Language" msgstr "&Lingua" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nuovo progetto" @@ -405,19 +404,19 @@ msgstr "&Nuovo progetto" msgid "&Next >" msgstr "&Successivo>" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "Apri G-code" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Apri Pr&ogetto" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "I&ncolla" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Piano" @@ -425,35 +424,35 @@ msgstr "&Piano" msgid "&Preferences" msgstr "&Preferenze" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Es&ci" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Ripeti" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Ripara file STL" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Salva Progetto" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "&Seleziona tutto" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Ann&ulla" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "Fines&tra" @@ -462,7 +461,7 @@ msgstr "Fines&tra" msgid "(All)" msgstr "(Tutto)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Sli&ce Ora" @@ -474,7 +473,7 @@ msgstr "(Ri)processa" msgid "(Some lines not shown)" msgstr "(Alcune linee non mostrate)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Sconosciuto)" @@ -486,7 +485,7 @@ msgstr "(bobina inclusa)" msgid "(minimum)" msgstr "(minimo)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") non trovato." @@ -542,7 +541,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (pesante)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -633,7 +632,7 @@ msgstr "" "Una regola generale è 60°C per il PLA e 110°C per l'ABS. Lascia a zero se " "non hai un piano riscaldato." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -659,7 +658,7 @@ msgstr "Chiave API" msgid "Abort" msgstr "Annulla" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Informazioni su %s" @@ -676,7 +675,7 @@ msgstr "Controllo Accelerazione (avanzato)" msgid "Access violation" msgstr "Violazione di accesso" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Precisione" @@ -716,7 +715,7 @@ msgstr "" "diminuire il tempo di stampa e per ridurre il consumo di filamento? Leggi di " "più nella documentazione." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Aggiungi" @@ -779,7 +778,7 @@ msgstr "Aggiungi forma da Galleria" msgid "Add Shapes from Gallery" msgstr "Aggiungere forme dalla galleria" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Aggiungi un pad sotto il modello supportato" @@ -897,7 +896,7 @@ msgid "Add pause print" msgstr "Aggiungi pausa di stampa" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Aggiungi stampante fisica" @@ -997,17 +996,16 @@ msgstr "Indirizzo" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Avanzate" @@ -1043,16 +1041,16 @@ msgstr "" "questo materiale in una torre di pulitura al fine di ottenere una successiva " "estrusione affidabile su oggetto sacrificale o riempimento." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-code dopo il cambio layer" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Allinea XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Allinea il modello al punto dato." @@ -1065,7 +1063,7 @@ msgid "Aligned Rectilinear" msgstr "Allineato Rettilineo " #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Tutto" @@ -1267,7 +1265,7 @@ msgstr "Applica automaticamente il cambio di colore" msgid "Apply to all the remaining small objects being loaded." msgstr "Applicare a tutti i piccoli oggetti rimanenti che vengono caricati." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1279,7 +1277,7 @@ msgstr "Generatore perimetri Arachne" msgid "Archimedean Chords" msgstr "Corde di Archimede" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Sei sicuro di voler %1% il preset selezionato?" @@ -1296,7 +1294,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "Sei sicuro di voler continuare?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1310,7 +1308,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "Sicuro di voler eliminare la stampante \"%1%\"?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Sei sicuro di voler cancellare tutte le sostituzioni?" @@ -1318,7 +1316,7 @@ msgstr "Sei sicuro di voler cancellare tutte le sostituzioni?" msgid "Are you sure you want to do it?" msgstr "Sei sicuro di voler procedere?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Riempimento area" @@ -1350,7 +1348,7 @@ msgstr "" "regolare la dimensione dello spazio tra gli oggetti e per permettere " "rotazioni automatiche?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1506,7 +1504,7 @@ msgid "Autogeneration will erase all manually edited points." msgstr "" "La generazione automatica cancellerà tutti i punti editati manualmente." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Generazione automatica" @@ -1514,7 +1512,7 @@ msgstr "Generazione automatica" msgid "Automatic updates" msgstr "Aggiornamenti automatici" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Ripara automaticamente un file STL" @@ -1530,11 +1528,11 @@ msgstr "Evita incrocio perimetri" msgid "Avoid crossing perimeters - Max detour length" msgstr "Evita incrocio perimetri - Lunghezza massima della deviazione" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "FRECCIA INDIETRO" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1547,7 +1545,7 @@ msgstr "" "Clicca per reimpostare all'ultimo preset salvato tutte le impostazioni per " "il seguente gruppo di opzioni." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1561,7 +1559,7 @@ msgstr "" msgid "Background processing" msgstr "Elaborazione in background" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Abbandona su valori di configurazione sconosciuti" @@ -1569,7 +1567,7 @@ msgstr "Abbandona su valori di configurazione sconosciuti" msgid "Balanced" msgstr "Bilanciato" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Piano" @@ -1617,7 +1615,7 @@ msgstr "" "Temperatura per i layer dopo il primo. Imposta a zero per disattivare i " "comandi di controllo della temperatura del piano di stampa in output." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-code prima del cambio layer" @@ -1642,7 +1640,7 @@ msgstr "Migliore qualità superfice" msgid "Between objects G-code" msgstr "G-code tra gli oggetti" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-code tra gli oggetti (per stampa sequenziale)" @@ -1664,11 +1662,11 @@ msgstr "Blocca supporti" msgid "Block supports by angle" msgstr "Blocca supporti all'angolo" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Volume bottiglia" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Peso bottiglia" @@ -1685,7 +1683,7 @@ msgstr "Inferiore" msgid "Bottom" msgstr "Inferiore" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Vista inferiore" @@ -1964,8 +1962,8 @@ msgstr "" "Impossibile procedere senza punti di supporto! Aggiungi i punti di supporto " "o disattiva la generazione supporti." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Caratteristiche" @@ -1973,7 +1971,7 @@ msgstr "Caratteristiche" msgid "Capture a configuration snapshot" msgstr "Cattura un'istantanea della configurazione" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Insensibile alle maiuscole e alle minuscole" @@ -1981,11 +1979,11 @@ msgstr "Insensibile alle maiuscole e alle minuscole" msgid "Category" msgstr "Categoria" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centro" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centra la stampa sul centro dato." @@ -2092,7 +2090,7 @@ msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "" "Seleziona un file da cui importare la forma del piano di stampa (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Scegli un file da processare (STL/OBJ/AMF/3MF/PRUSA):" @@ -2138,7 +2136,7 @@ msgstr "Cerchio" msgid "Circular" msgstr "Circolare" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Classico" @@ -2146,12 +2144,13 @@ msgstr "Classico" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" -"Il generatore di perimetri classico produce perimetri con larghezza di " -"estrusione costante e per le aree molto sottili viene utilizzato il " -"riempimento di spazi. Il motore Arachne produce perimetri con larghezza di " -"estrusione variabile." +"Il generatore di perimetri classico realizza perimetri con larghezza di " +"estrusione costante e per aree molto sottili viene utilizzato il riempimento " +"di spazi. Il motore Arachne produce perimetri con larghezza di estrusione " +"variabile. Questa impostazione influisce anche sul riempimento concentrico." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2232,7 +2231,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "Chiusura di PrusaSlicer. Il progetto corrente è modificato." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Distanza di chiusura" @@ -2240,7 +2239,7 @@ msgstr "Distanza di chiusura" msgid "Closing radius" msgstr "Raggio di chiusura" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Riduci barra laterale" @@ -2248,11 +2247,11 @@ msgstr "Riduci barra laterale" msgid "Collapse/Expand the sidebar" msgstr "Riduci/Espandi barra laterale" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Colore" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-code cambio colore" @@ -2316,12 +2315,12 @@ msgstr "Comandi" msgid "Comment:" msgstr "Commento:" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Confronta Preset" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Confronta i preset" @@ -2329,7 +2328,7 @@ msgstr "Confronta i preset" msgid "Compare this preset with some another" msgstr "Confronta questo preset con un altro" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "I preset confrontati hanno diverse tecnologie di stampa" @@ -2497,7 +2496,7 @@ msgstr "" "considerato è limitata a infill_anchor, ma non più lunga di questo " "parametro. Impostare questo parametro a zero per disabilitare l'ancoraggio." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Connessione delle barre di supporto e giunzioni" @@ -2553,7 +2552,7 @@ msgstr "Continuare e installare gli aggiornamenti della configurazione?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "Continuare ad attivare un'istantanea di configurazione %1%?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2571,7 +2570,7 @@ msgstr "" "Contributi di Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik e molti altri." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2589,7 +2588,7 @@ msgstr "Convertire da unità imperiali" msgid "Convert from meters" msgstr "Convertire da metri" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Raffreddamento" @@ -2604,7 +2603,7 @@ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" "I movimenti di raffreddamento accelerano gradualmente verso questa velocità." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Soglie di raffreddamento" @@ -2633,7 +2632,7 @@ msgstr "Copia" msgid "Copy Version Info" msgstr "Copia info versione" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Copia selezione negli appunti" @@ -2697,32 +2696,32 @@ msgstr "" "esportazione con un dispositivo diverso. Il file G-code corrotto è su %1%." "tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Copyright" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Correzione dell'espansione" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Correzione per l'espansione nell'asse X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Correzione per l'espansione nell'asse Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Correzione per l'espansione nell'asse Z" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Correzioni" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Costo" @@ -2798,7 +2797,7 @@ msgstr "" "risoluzione finale di stampa, dunque è preferibile settare il valore " "ragionevolmente basso." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Genera Pad intorno all'oggetto ed ignora l'elevazione del supporto" @@ -2814,7 +2813,7 @@ msgstr "Creare un nuovo progetto mentre alcuni preset vengono modificati." msgid "Creating a new project while the current project is modified." msgstr "Creare un nuovo progetto mentre il progetto corrente viene modificato." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Angolo critico" @@ -2822,7 +2821,7 @@ msgstr "Angolo critico" msgid "Critical error" msgstr "Errore critico" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Croce" @@ -2868,8 +2867,8 @@ msgstr "" "connessioni OctoPrint HTTPS, in formato crt/pem. Se lasciato in bianco, " "verrà utilizzato lo OS CA certificate repository predefinito." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "G-code personalizzato" @@ -2913,7 +2912,7 @@ msgid "Custom template (\"%1%\")" msgstr "Modello personalizzato (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Taglia" @@ -2921,7 +2920,7 @@ msgstr "Taglia" msgid "Cut by Plane" msgstr "Taglia sul Piano" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Taglia il modello al dato Z." @@ -2929,7 +2928,7 @@ msgstr "Taglia il modello al dato Z." msgid "Cylinder" msgstr "Cilindro" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "D&eseleziona tutto" @@ -2937,7 +2936,7 @@ msgstr "D&eseleziona tutto" msgid "Dark mode (experimental)" msgstr "Modalità scura (sperimentale)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Directory dati" @@ -2963,7 +2962,7 @@ msgstr "Diminuisci Istanze" msgid "Default" msgstr "Predefinito" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Profilo materiale SLA predefinito" @@ -3004,8 +3003,8 @@ msgstr "" msgid "Default print profile" msgstr "Profilo di stampa predefinito" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3019,7 +3018,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Inserisci un profilo stampante personalizzato" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3037,11 +3036,11 @@ msgstr "Ritardo dopo lo scarico" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Elimina" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Elimin&a tutto" @@ -3095,7 +3094,7 @@ msgid "Delete Subobject" msgstr "Elimina Sotto-oggetto" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Elimina tutto" @@ -3153,16 +3152,16 @@ msgstr "Elimina il segno di spunta - Clic sinistro o premi il tasto \"-\"" msgid "Delete tool change" msgstr "Elimina cambio strumento" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Elimina tutti gli oggetti" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Elimina la selezione corrente" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Densità" @@ -3174,9 +3173,9 @@ msgstr "Densità del riempimento interno, espresso nell'intervallo 0% - 100%." msgid "Density of the first raft or support layer." msgstr "Densità del primo layer del raft o del supporto." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Dipendenze" @@ -3200,7 +3199,7 @@ msgstr "Deseleziona tutto" msgid "Deselect by rectangle" msgstr "Deseleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Deseleziona tutti gli oggetti" @@ -3236,7 +3235,7 @@ msgstr "Distacco dal preset di sistema" msgid "Detach preset" msgstr "Preset distacco" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Distaccato" @@ -3260,7 +3259,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Rileva pareti sottili" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3284,15 +3283,15 @@ msgstr "Dispositivo:" msgid "Diameter" msgstr "Diametro" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diametro in mm della base del pilastro" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diametro in mm dei pilastri di supporto" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diametro del lato di puntamento della testa" @@ -3357,31 +3356,31 @@ msgstr "Elimina tutte le modifiche personalizzate" msgid "Discard changes" msgstr "Annulla modifiche" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Display" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Altezza display" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Mostra mirroring orizzontale" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientamento display" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Mostra la finestra della fila di caricamento all'host di stampa" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Mostra mirroring verticale" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Larghezza display" @@ -3400,7 +3399,7 @@ msgstr "" "Distanza tra skirt e brim (quando non si usa uno scudo di protezione) o gli " "oggetti." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3442,11 +3441,11 @@ msgstr "Distanza usata per la funzione disposizione automatica del piano." msgid "Divide by zero" msgstr "Dividi per zero" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Non fallire se un file fornito a --load non esiste." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3504,7 +3503,7 @@ msgid "Do you want to select default filaments for these FFF printer models?" msgstr "" "Vuoi selezionare i filamenti predefiniti per questi modelli di stampante FFF?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Non disporre" @@ -3568,11 +3567,11 @@ msgstr "" msgid "Drop to bed" msgstr "Poggia sul piano" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplica" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplica per griglia" @@ -3589,11 +3588,11 @@ msgstr "Durante gli altri layer, la ventola lavorerà sempre a %1%%%" msgid "During the other layers, fan will be turned off." msgstr "Durante gli altri layer, la ventola sarà spenta." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinamico" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "Esporta" @@ -3646,7 +3645,7 @@ msgstr "Modifica G-code personalizzato" msgid "Edit pause print message" msgstr "Modifica messaggio pausa di stampa" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Modifica stampante fisica" @@ -3670,7 +3669,7 @@ msgstr "Modifica" msgid "Eigen vectorization supported:" msgstr "Vettorizzazione Eigen supportata:" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Espelli Scheda SD / Memoria flash (&t)" @@ -3678,7 +3677,7 @@ msgstr "Espelli Scheda SD / Memoria flash (&t)" msgid "Eject SD card / Flash drive" msgstr "Espelli scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Espelli scheda SD / Memoria flash dopo l'esportazione del G-code in essa." @@ -3696,7 +3695,7 @@ msgstr "Espulsione del dispositivo %s(%s) non riuscita." msgid "Elephant foot compensation" msgstr "Compensazione zampa d'elefante" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Larghezza minima zampa d'elefante" @@ -3730,7 +3729,7 @@ msgstr "Invia a G-code" msgid "Empty layer between %1% and %2%." msgstr "Layer vuoto tra %1% e %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Abilita" @@ -3747,11 +3746,11 @@ msgstr "Abilità modalità scura" msgid "Enable fan if layer print time is below" msgstr "Attiva ventola se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Attiva svuotamento" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Attiva il mirroring orizzontale per le immagini di output" @@ -3766,7 +3765,7 @@ msgstr "" "Abilitare la stiratura degli strati superiori con la testina di stampa a " "caldo per una superficie liscia" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3774,7 +3773,7 @@ msgstr "" "Abilita la lettura di valori di configurazione sconosciuti sostituendoli " "silenziosamente con quelli predefiniti." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3824,7 +3823,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Abilita layer ad altezza variabile" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Attiva mirroring verticale per le immagini di output" @@ -3840,7 +3839,7 @@ msgstr "" "Permette di riempire gli spazi tra i perimetri e tra i perimetri più interni " "e il riempimento." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3872,7 +3871,7 @@ msgstr "Esecutore supporti" msgid "Enqueued" msgstr "Messo in coda" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Accerta che sia sul piano" @@ -3986,7 +3985,7 @@ msgstr "" "Errore: \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Errore" @@ -4136,23 +4135,23 @@ msgstr "Modalità Esperto" msgid "Export" msgstr "Esporta" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Esporta &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Esporta &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Esporta percorso strumen&to come OBJ" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Esporta 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Esporta AMF" @@ -4160,11 +4159,11 @@ msgstr "Esporta AMF" msgid "Export AMF file:" msgstr "Esporta file AMF:" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Esporta Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Esportazione Config Bundle con stampanti fisiche" @@ -4173,15 +4172,15 @@ msgid "Export G-Code." msgstr "Esporta G-code." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Esporta G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Esporta G-code su Scheda SD / Memoria flash" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Esporta OBJ" @@ -4189,19 +4188,19 @@ msgstr "Esporta OBJ" msgid "Export OBJ file:" msgstr "Esporta file OBJ:" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Esporta piano come &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Esporta piano come STL &includendo i supporti" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Esporta SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Esporta STL" @@ -4209,11 +4208,11 @@ msgstr "Esporta STL" msgid "Export STL file:" msgstr "Esporta file STL:" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Esportazione di tutti i preset, incluse le stampanti fisiche, su file" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Esporta tutti i preset su file" @@ -4225,23 +4224,23 @@ msgstr "Esporta come STL" msgid "Export config" msgstr "Esporta config" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Esporta la configurazione corrente su file" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Esporta il piano corrente come G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Esporta il piano corrente come G-code su scheda SD / Memoria flash" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Esporta il piano corrente come STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Esporta piano corrente come STL includendo i supporti" @@ -4260,19 +4259,19 @@ msgstr "L'esportazione di un file 3mf non è riuscita" msgid "Export sources full pathnames to 3mf and amf" msgstr "Esporta il percorso completo delle fonti su 3mf e amf" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Esporta modello/i come 3MF." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Esporta il modello(i) come AMF." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Esporta il modello(i) come OBJ." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Esporta il modello(i) come STL." @@ -4280,7 +4279,7 @@ msgstr "Esporta il modello(i) come STL." msgid "Export to SD card / Flash drive" msgstr "Esporta su scheda SD / memoria Flash" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Esporta percorso strumento come OBJ" @@ -4292,7 +4291,7 @@ msgstr "Esporta." msgid "Exporting G-code" msgstr "Esportando il G-code" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Esportazione del bundle di configurazione" @@ -4313,11 +4312,11 @@ msgstr "Esportazione." msgid "Exposition time is out of printer profile bounds." msgstr "Il tempo di esposizione è fuori dai limiti del profilo stampante." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Esposizione" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Tempo di esposizione" @@ -4379,7 +4378,7 @@ msgstr "Colore estrusore" msgid "Extruder changed to" msgstr "Cambia estrusore a" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Margine estrusore" @@ -4388,7 +4387,7 @@ msgid "Extruder offset" msgstr "Offset estrusore" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4396,7 +4395,7 @@ msgid "Extruders" msgstr "Estrusori" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Conteggio estrusori" @@ -4436,7 +4435,7 @@ msgstr "Stampanti con tecnologia FFF" msgid "Facets" msgstr "Facet" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Layer sfumati" @@ -4467,11 +4466,11 @@ msgstr "Mancata esecuzione di alcuni fori nel modello" msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Impostazioni ventola" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Velocità ventola" @@ -4506,11 +4505,11 @@ msgstr "La ventola lavorerà sempre a %1%%%" msgid "Fan will be turned off." msgstr "La ventola verrà spenta." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Veloce" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Tilt veloce" @@ -4534,7 +4533,7 @@ msgstr "Tipi di caratteristica" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filamento" @@ -4546,7 +4545,7 @@ msgstr "Diametro del filamento:" msgid "Filament End G-code" msgstr "G-code Finale Filamento" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Sovrascrittura filamento" @@ -4555,7 +4554,7 @@ msgid "Filament Profiles Selection" msgstr "Selezione Profili Filamento" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Impostazioni Filamento" @@ -4597,7 +4596,7 @@ msgstr "Note filamento" msgid "Filament parking position" msgstr "Posizione di parcheggio del filamento" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Proprietà filamento" @@ -4614,7 +4613,7 @@ msgstr "Durata scaricamento filamento" msgid "Filaments" msgstr "Filamenti" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "file non trovato" @@ -4683,7 +4682,7 @@ msgstr "" msgid "Filling bed" msgstr "Riempimento piano" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Trova" @@ -4695,11 +4694,11 @@ msgstr "Trova / sostituisce pattern nelle linee del G-code e le rimpiazza." msgid "Finished" msgstr "Finito" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Retrazione Firmware" @@ -4909,7 +4908,7 @@ msgstr "" "Per far sì che la torre di pulitura funzioni con i supporti solubili, i " "layer dei supporti devono essere sincronizzati con quelli del modello." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Forza il Pad ovunque intorno all'oggetto" @@ -4943,7 +4942,7 @@ msgstr "" "Formato delle miniature del G-code: PNG per la migliore qualità, JPG per la " "dimensione più piccola, QOI per il firmware con poca memoria" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4951,7 +4950,7 @@ msgstr "" "Regola di compatibilità in avanti quando si caricano configurazioni da file " "di configurazione e file di progetto (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Trovate parole chiave riservate in" @@ -4965,11 +4964,11 @@ msgstr "" "Non è possibile eliminare l'ultima parte solida dall'oggetto nell'elenco " "Oggetti." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Frontale" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vista anteriore" @@ -4977,7 +4976,7 @@ msgstr "Vista anteriore" msgid "Full fan speed at layer" msgstr "Massima velocità della ventola al layer" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Schermo intero" @@ -5026,7 +5025,7 @@ msgstr "Spessore superficie crespa" msgid "Fuzzy skin type." msgstr "Tipo superficie crespa." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" @@ -5064,11 +5063,11 @@ msgstr "Sostituzioni G-code" msgid "G-code thumbnails" msgstr "Miniature G-code" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Visualizzatore G-code" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versione 3" @@ -5085,10 +5084,10 @@ msgstr "Galleria" msgid "Gap fill" msgstr "Riempimento spazi" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Generale" @@ -5118,11 +5117,11 @@ msgstr "" "meno, e indipendentemente dall'angolo limite. Questo è utile per ottenere " "più adesione negli oggetti con un appoggio sul piano molto sottile o fragile." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Genera supporti" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Genera supporti per i modelli" @@ -5315,11 +5314,11 @@ msgstr "" msgid "Head diameter" msgstr "Diametro testa" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Penetrazione testa" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "" "L'inserimento della testa non deve essere più grande della sua larghezza." @@ -5344,7 +5343,7 @@ msgstr "Altezza (mm)" msgid "Height of skirt expressed in layers." msgstr "Altezza dello skirt espressa in layer." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Altezza del display" @@ -5369,15 +5368,15 @@ msgstr "" "Ciao, benvenuto su %s! La %s ti aiuterà con la configurazione iniziale; " "giusto qualche impostazione e sarai pronto a stampare." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Aiuto" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Aiuto (opzioni FFF)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Aiuto (opzioni SLA)" @@ -5412,7 +5411,7 @@ msgstr "Alto" msgid "High extruder current on filament swap" msgstr "Alta corrente estrusore al cambio filamento" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Alta viscosità" @@ -5444,7 +5443,7 @@ msgstr "Diametro foro" msgid "Hollow and drill" msgstr "Svuota e perfora" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Svuota un modello per avere l'interno vuoto" @@ -5452,16 +5451,16 @@ msgstr "Svuota un modello per avere l'interno vuoto" msgid "Hollow this object" msgstr "Svuota questo oggetto" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Svuotamento" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5530,19 +5529,19 @@ msgstr "" "Scorri il cursore sui bottoni per ottenere maggiori informazioni o clicca su " "questo bottone." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Quanto deve estendersi il Pad attorno la geometria contenuta" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto devono penetrare i piccoli connettori nel corpo del modello." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto deve penetrare l'apice nella superficie del modello" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5763,7 +5762,7 @@ msgstr "" "Se abilitato, il pulsante per ridurre la barra di scorrimento laterale " "apparirà nell'angolo in alto a destra della scena 3D" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -6037,7 +6036,7 @@ msgstr "" "distribuzione mancanti o offline. Si potrebbe voler abilitare questa opzione " "per i certificati autofirmati se la connessione non riesce." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignora file di configurazione non esistenti" @@ -6055,15 +6054,15 @@ msgstr "Istruzione illegale" msgid "Import" msgstr "Importa" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importa &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importa Configurazione in &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importa Configurazione da &progetto" @@ -6079,7 +6078,7 @@ msgstr "Importa Oggetto" msgid "Import Objects" msgstr "Importa Oggetti" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importa archivio SL1 / SL1S" @@ -6087,11 +6086,11 @@ msgstr "Importa archivio SL1 / SL1S" msgid "Import SLA archive" msgstr "Importa archivio SLA" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importa STL (unità imperiali)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importa STL/OBJ/AM&F/3MF" @@ -6220,11 +6219,11 @@ msgid "Initial exposition time is out of printer profile bounds." msgstr "" "Il tempo di esposizione iniziale è fuori dai limiti del profilo stampante." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Tempo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Altezza layer iniziale" @@ -6329,7 +6328,7 @@ msgstr "Errore interno: %1%" msgid "Internal infill" msgstr "Riempimento interno" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Penetrazione della testa non valida" @@ -6357,7 +6356,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Input numerico non valido." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Diametro apice non valido" @@ -6393,11 +6392,11 @@ msgstr "Tipo di stiratura" msgid "Is it safe?" msgstr "È sicuro?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Vista isometrica" @@ -6425,7 +6424,7 @@ msgstr "" "ramming e per superare la resistenza durante il caricamento di un filamento " "con una punta deformata." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "È l'ultimo preset per questa stampante fisica." @@ -6437,7 +6436,7 @@ msgstr "Non è possibile stampare oggetti multi-parte con tecnologia SLA." msgid "It's not possible to delete the last related preset for the printer." msgstr "Non è possibile cancellare l'ultimo preset relativo alla stampante." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Limiti Jerk" @@ -6503,7 +6502,7 @@ msgstr "Mantieni le impostazioni selezionate." msgid "Keep upper part" msgstr "Mantieni parte superiore" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Scorciatoie Tastiera" @@ -6511,11 +6510,11 @@ msgstr "Scorciatoie Tastiera" msgid "Keyboard shortcuts" msgstr "Scorciatoie tastiera" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "LUCCHETTO CHIUSO" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6523,7 +6522,7 @@ msgstr "" "L'icona LUCCHETTO CHIUSO indica che le impostazioni corrispondono ai valori " "di sistema (o predefiniti) per il seguente gruppo di opzioni" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6535,7 +6534,7 @@ msgstr "" msgid "Label objects" msgstr "Etichetta oggetti" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Landscape" @@ -6575,7 +6574,7 @@ msgstr "" "\n" "L'altezza del layer sarà resettata a 0,01." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Limiti altezza layer" @@ -6583,8 +6582,8 @@ msgstr "Limiti altezza layer" msgid "Layer range Settings to modify" msgstr "Impostazioni da modificare in Intervallo Layer" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Layer" @@ -6601,7 +6600,7 @@ msgstr "Layer" msgid "Layers and Perimeters" msgstr "Layer e Perimetri" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Layer e perimetri" @@ -6614,15 +6613,15 @@ msgstr "Opzioni di layout" msgid "Leave \"%1%\" enabled" msgstr "Lascia \"%1%\" abilitato" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Sinistra" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Valore di preset sinistro" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Vista sinistra" @@ -6661,7 +6660,7 @@ msgid "Length of the infill anchor" msgstr "Lunghezza dell'ancoraggio del riempimento" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6673,7 +6672,7 @@ msgstr "" msgid "Lift Z" msgstr "Solleva Z" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6733,19 +6732,19 @@ msgstr "Carica Parte" msgid "Load Project" msgstr "Carica Progetto" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Carica modello" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Carica un archivio SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Carica un modello salvato con unità imperiali" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6754,7 +6753,7 @@ msgstr "" "Carica e archivia le impostazione in una data cartella. Questo è utile per " "mantenere diversi profili o aggiungere configurazioni da un archivio di rete." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Carica file di configurazione" @@ -6772,11 +6771,11 @@ msgstr "" "stesso modo, puoi usare File-Importa-Importa archivio SL1 / SL1S, che ti " "permette anche di ricostruire modelli 3D dai dati voxel." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Carica configurazione dal file di progetto" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6784,11 +6783,11 @@ msgstr "" "Carica configurazione dal file specificato. Può essere usato più di una " "volta per caricare opzioni da vari file." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Carica un file di configurazione esportato" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Carica i preset da un gruppo" @@ -6822,11 +6821,11 @@ msgstr "Caricamento configurazione" msgid "Loading file" msgstr "Caricamento file" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Caricamento bundle di configurazione" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Caricamento di un file di configurazione" @@ -6865,7 +6864,7 @@ msgstr "Coordinate locali" msgid "Lock supports under new islands" msgstr "Fissa i supporti sotto le nuove isole" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Livello di logging" @@ -6881,7 +6880,7 @@ msgstr "Basso" msgid "Lowest Z height" msgstr "Minore altezza Z" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6890,7 +6889,7 @@ msgstr "Minore altezza Z" msgid "Machine limits" msgstr "Limiti macchina" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -6898,7 +6897,7 @@ msgstr "" "I limiti della macchina non sono impostati, quindi la stima del tempo di " "stampa potrebbe non essere accurata." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6909,7 +6908,7 @@ msgstr "" "accurato in quanto la stampante potrebbe applicare un diverso set di limiti " "della macchina." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -6935,20 +6934,20 @@ msgstr "Modifica manuale" msgid "Masked SLA file exported to %1%" msgstr "File SLA mascherato esportato su %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Corrisponde a una linea singola" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Scheda Impostazioni Mate&riale" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Materiale" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Impostazioni Materiali" @@ -6957,7 +6956,7 @@ msgstr "Impostazioni Materiali" msgid "Material Settings Tab" msgstr "Scheda Impostazioni Materiali" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Profilo del materiale di stampa" @@ -6965,19 +6964,19 @@ msgstr "Profilo del materiale di stampa" msgid "Max" msgstr "Massimo" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Lunghezza massima Bridge" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Ponteggi massimi su un pilastro" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Massima distanza di unione" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Distanza massima collegamento pilastri" @@ -7073,7 +7072,7 @@ msgstr "Accelerazione massima durante la retrazione" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Accelerazione massima durante la retrazione (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Accelerazioni massime" @@ -7096,7 +7095,7 @@ msgstr "" "su ogni strato in modo indipendente, possono essere prodotti artefatti " "visibili." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Tempo massimo di esposizione" @@ -7132,11 +7131,11 @@ msgstr "Avanzamento massimo dell'asse Y" msgid "Maximum feedrate of the Z axis" msgstr "Avanzamento massimo dell'asse Z" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Avanzamenti massimi" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Tempo massimo di esposizione iniziale" @@ -7176,7 +7175,7 @@ msgstr "Jerk massimo dell'asse Z" msgid "Maximum length of the infill anchor" msgstr "Lunghezza massima dell'ancoraggio del riempimento" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7210,7 +7209,7 @@ msgid "Medium" msgstr "Medio" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Unisci" @@ -7226,7 +7225,7 @@ msgstr "Unisci oggetti in un unico oggetto multiparte" msgid "Merged" msgstr "Unito" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7265,7 +7264,7 @@ msgstr "Minimo" msgid "Min print speed" msgstr "Velocità minima di stampa" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Distanza minima dei punti di supporto" @@ -7307,11 +7306,11 @@ msgstr "" "generare. Impostate a zero per disabilitare la semplificazione e utilizzare " "la risoluzione completa." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Tempo minimo di esposizione" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Dimensione minima della caratteristica" @@ -7323,15 +7322,15 @@ msgstr "Avanzamento minimo durante estrusione" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Avanzamento minimo durante estrusione (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Avanzamento minimo" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Tempo minimo di esposizione iniziale" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Larghezza minima perimetri" @@ -7356,16 +7355,19 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Spessore minimo guscio superiore / inferiore" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -"Spessore minimo delle caratteristiche sottili. Le caratteristiche del " -"modello più sottili di questo valore non verranno stampate, mentre quelle " -"più spesse della dimensione minima della caratteristica verranno allargate " -"alla larghezza minima del perimetro." +"Spessore minimo delle geometrie sottili. Le geometrie del modello più " +"sottili di questo valore non verranno stampate, mentre quelle più spesse " +"della dimensione minima della geometria verranno allargate alla larghezza " +"minima del perimetro. Se espresso in percentuale (ad esempio 25%), verrà " +"calcolato in base al diametro dell'ugello." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7388,11 +7390,11 @@ msgstr "Avanzamento minimo di spostamento" msgid "Minimum travel feedrate (M205 T)" msgstr "Avanzamento minimo di spostamento (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Spessore minimo parete di un modello svuotato." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7418,7 +7420,7 @@ msgstr "" msgid "Mirror Object" msgstr "Specchia Oggetto" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Specchia orizzontalmente" @@ -7438,7 +7440,7 @@ msgstr "Specchia l'oggetto selezionato sull'asse y" msgid "Mirror the selected object along the Z axis" msgstr "Specchia l'oggetto selezionato sull'asse Z" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Specchia verticalmente" @@ -7615,11 +7617,11 @@ msgstr "" "Invece di considerarli come oggetti multipli, devo considerarli come parte " "di un singolo oggetto avente parti multiple?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Moltiplica le copie creando una griglia." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Moltiplica le copie per questo valore." @@ -7709,7 +7711,7 @@ msgstr "Nuovo layout, accesso tramite pulsante impostazioni dal menù superiore" msgid "New prerelease version %1% is available." msgstr "È disponibile la nuova versione prerelease %1%." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Nuovo preset stampante selezionato" @@ -7771,7 +7773,7 @@ msgstr "" "Non può essere generato nessun Pad per questo modello con la configurazione " "corrente" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "File non processato precedentemente." @@ -7779,7 +7781,7 @@ msgstr "File non processato precedentemente." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Nessun layer sparso (SPERIMENTALE)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "" "Non verranno posizionati punti di supporto più vicini di questa soglia." @@ -7796,7 +7798,7 @@ msgid "None" msgstr "Nessuno" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normale" @@ -7812,7 +7814,7 @@ msgstr "Non trovato:" msgid "Note" msgstr "Nota" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7821,7 +7823,7 @@ msgstr[0] "" msgstr[1] "" "Si noti che il preset selezionato sarà cancellato anche da queste stampanti." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7833,7 +7835,7 @@ msgstr[1] "" "Nota, queste stampanti saranno cancellate dopo aver cancellato il preset " "selezionato." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7884,12 +7886,12 @@ msgstr "Nota: Questo preset sarà sostituito dopo il salvataggio" msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Nota: alcune scorciatoie funzionano solo in modalità (non)modifica." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Note" @@ -7903,7 +7905,7 @@ msgstr "Avvertenza" msgid "Notify about new releases" msgstr "Notificare le nuove uscite" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Ugello" @@ -7915,7 +7917,7 @@ msgstr "Diametro ugello:" msgid "Nozzle and Bed Temperatures" msgstr "Temperatura ugello e piano" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Diametro ugello" @@ -7946,7 +7948,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Numero di movimenti di raffreddamento" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Numero estrusori della stampante." @@ -7978,15 +7980,15 @@ msgstr "" "quello configurato qui. Imposta questo valore a zero per disattivare " "completamente lo skirt." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Numero di pixel su" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Numero di pixel su X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Numero di pixel su Y" @@ -8003,7 +8005,7 @@ msgstr "" msgid "Number of solid layers to generate on top surfaces." msgstr "Numero di layer solidi da generare sulle superfici superiori." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -8019,7 +8021,7 @@ msgstr "Numero di cambi strumento" msgid "Object Settings to modify" msgstr "Impostazioni Oggetto da modificare" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Elevazione oggetto" @@ -8138,7 +8140,7 @@ msgstr "On/Off modalità un layer del cursore di scorrimento verticale" msgid "One layer mode" msgstr "Modalità Un Layer" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Uno dei preset non trovato" @@ -8163,7 +8165,7 @@ msgstr "" "Rimuovere tutti gli oggetti tranne l'ultimo, oppure abilitare la modalità " "sequenziale con \"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8175,7 +8177,7 @@ msgstr "" msgid "Only infill where needed" msgstr "Riempimento solo quando necessario" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Solleva Z solamente" @@ -8217,7 +8219,7 @@ msgstr "" "Prevenzione sgocciolamento non è al momento supportata con la torre di " "pulitura attiva." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Apri &PrusaSlicer" @@ -8237,11 +8239,11 @@ msgstr "Apri Cartella." msgid "Open G-code file:" msgstr "Apri un file G-code:" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Apri visualizzatore G-code" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Apri una nuova istanza" @@ -8249,20 +8251,20 @@ msgstr "Apri una nuova istanza" msgid "Open Preferences." msgstr "Apri le preferenze." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Apri PrusaSlicer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Apri un file G-code" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Apri una nuova istanza PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Apri un file progetto" @@ -8304,7 +8306,7 @@ msgstr "Apri il sito web di %s nel browser" msgid "Open the Prusa3D drivers download page in your browser" msgstr "Apri la pagina di download dei driver Prusa3D sul browser" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Aprire la finestra di dialogo per modificare la galleria delle forme" @@ -8320,7 +8322,7 @@ msgstr "Apertura Configurazione Guidata" msgid "Opening new project while some presets are unsaved." msgstr "Apertura di un nuovo progetto mentre alcuni preset non sono salvati." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8397,7 +8399,7 @@ msgstr "Ricerca orientamento annullata." msgid "Origin" msgstr "Origine" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Altro" @@ -8417,15 +8419,15 @@ msgstr "Brim esterno e interno" msgid "Outer brim only" msgstr "Solo brim esterno" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "File di output" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Info Modello di output" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "File di output" @@ -8433,7 +8435,7 @@ msgstr "File di output" msgid "Output filename format" msgstr "Formato del file di output" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Opzioni output" @@ -8458,19 +8460,19 @@ msgstr "Soglia sporgenza" msgid "Overlap" msgstr "Sovrapposizione" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Impos&tazioni Stampa" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Pad" @@ -8478,15 +8480,15 @@ msgstr "Pad" msgid "Pad and Support" msgstr "Pad e Supporto" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Pad Intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Pad ovunque intorno all'oggetto" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Dimensioni brim del Pad" @@ -8496,31 +8498,31 @@ msgstr "" "La dimensione del brim del Pad è troppo piccola per la configurazione " "attuale." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Inserimento connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Passo del connettore del pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Larghezza connettore Pad dell'oggetto" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Spazio Pad oggetto" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Altezza parete Pad" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Inclinazione della parete del pad" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Spessore parete Pad" @@ -8652,7 +8654,7 @@ msgstr "Incolla" msgid "Paste From Clipboard" msgstr "Incolla dagli appunti" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Incolla appunti" @@ -8690,7 +8692,7 @@ msgstr "Trama usata per generare il materiale di supporto." msgid "Pause" msgstr "Pausa" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-code Pausa Stampa" @@ -8727,7 +8729,7 @@ msgstr "" "Esegui l'integrazione desktop (Imposta questo binario per essere ricercabile " "dal sistema)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8771,7 +8773,7 @@ msgstr "" msgid "Perimeter" msgstr "Perimetro" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Conteggio della distribuzione dei perimetri" @@ -8783,15 +8785,15 @@ msgstr "Estrusore perimetro" msgid "Perimeter generator" msgstr "Generatore di perimetri" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Lunghezza transizione perimetro" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Margine del filtro di transizione del perimetro" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Angolo di soglia di transizione del perimetro" @@ -8842,29 +8844,29 @@ msgstr "" "Dimensioni delle immagini da memorizzare in un file .gcode e .sl1 / .sl1s, " "nel seguente formato: \"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Modo di collegamento al pilastro" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Diametro pilastro" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Fattore di espansione pilastro" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "Il diametro dell'apice dovrebbe essere più piccolo rispetto al diametro del " "pilastro." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diametro anteriore apice" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Larghezza apice" @@ -8913,11 +8915,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Seleziona il file da ricaricare" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Porzioni di copyright" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Ritratto" @@ -8926,7 +8928,7 @@ msgstr "Ritratto" msgid "Position" msgstr "Posizione" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Posizione (per stampanti multi-estrusore)" @@ -8942,7 +8944,7 @@ msgstr "Posizione Y" msgid "Position of perimeters starting points." msgstr "Posizione dei punti iniziali dei perimetri." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Gli script di post-elaborazione cambiano il file G-code nella sua posizione." @@ -8967,11 +8969,11 @@ msgstr "" "suo posto e consulta il manuale su come rinominare opzionalmente il file G-" "code post-elaborato.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Script di post-elaborazione" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "&Visualizza anteprima" @@ -9043,7 +9045,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Preset con il nome \"%1%\" già esistente." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9052,7 +9054,7 @@ msgstr "" "Fai clic su questo pulsante per selezionare lo stesso preset per il preset " "di destra e quello di sinistra." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "I preset sono uguali" @@ -9092,7 +9094,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Equalizzatore di pressione (sperimentale)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9114,7 +9116,7 @@ msgstr "" "base al diametro dell'ugello." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Anteprima" @@ -9122,7 +9124,7 @@ msgstr "Anteprima" msgid "Preview hollowed and drilled model" msgstr "Anteprima del modello svuotato e forato" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "File precedentemente processato (" @@ -9134,7 +9136,7 @@ msgstr "Prepara tutti gli estrusori di stampa" msgid "Print" msgstr "Stampa" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Coda di caricamento &Host di stampa" @@ -9142,7 +9144,7 @@ msgstr "Coda di caricamento &Host di stampa" msgid "Print Diameters" msgstr "Diametro di stampa" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Caricamento Host di stampa" @@ -9181,15 +9183,15 @@ msgstr "Pause di stampa" msgid "Print settings" msgstr "Impostazioni di stampa" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Velocità di stampa" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Scavalca velocità di stampa" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Impostazioni Stampant&e" @@ -9224,11 +9226,11 @@ msgstr "Impostazioni stampante" msgid "Printer Settings Tab" msgstr "Scheda Impostazioni Stampante" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Correzione assoluta stampante" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Correzione gamma della stampante" @@ -9240,32 +9242,32 @@ msgstr "Note stampante" msgid "Printer preset names" msgstr "Nomi dei preset della stampante" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Correzione del ridimensionamento della stampante nell'asse X" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Correzione del fattore di scala della stampante sull'asse Y" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Correzione del ridimensionamento della stampante nell'asse Z" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Correzione di scala stampante" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Correzione del ridimensionamento della stampante nell'asse X" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Correzione del ridimensionamento della stampante sull'asse Y" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Correzione del ridimensionamento della stampante sull'asse Z" @@ -9312,7 +9314,7 @@ msgid "Process %1% / 100" msgstr "Processo %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Elaborando %s" @@ -9326,9 +9328,9 @@ msgstr "" "L'elaborazione del modello '%1%' con più di 1M di triangoli potrebbe essere " "lenta. Si consiglia vivamente di ridurre la quantità di triangoli." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Dipendenze profilo" @@ -9423,7 +9425,7 @@ msgstr "" "PrusaSlicer ha riscontrato un errore durante l'acquisizione di un'istantanea " "di configurazione." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9543,15 +9545,15 @@ msgstr "Veloce" msgid "Quick Add Settings (%s)" msgstr "Aggiungere Impostazioni Rapide (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Slice veloce e Salva Come" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Chiudi %s" @@ -9620,7 +9622,7 @@ msgstr "Larghezza della linea di Ramming" msgid "Ramming parameters" msgstr "Parametri del ramming" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Impostazioni del ramming" @@ -9640,8 +9642,8 @@ msgstr "Intervallo" msgid "Rasterizing layers" msgstr "Rasterizzazione dei layer" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "R&icarica da disco" @@ -9653,15 +9655,15 @@ msgstr "Ri-configura" msgid "Ready" msgstr "Pronto" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Posteriore" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Vista posteriore" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Prog&etti recenti" @@ -9706,7 +9708,7 @@ msgid "Rectilinear grid" msgstr "Griglia rettilinea" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Ripeti" @@ -9737,7 +9739,7 @@ msgstr "Aggiorna Stampanti" msgid "Regular" msgstr "Regolare" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Espressione regolare" @@ -9786,9 +9788,9 @@ msgstr "Ricarica da:" msgid "Reload plater from disk" msgstr "Ricarica piano da disco" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Ricarica piano da disco" @@ -9814,7 +9816,7 @@ msgid "Remember output directory" msgstr "Ricorda la directory di output" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Rimuovi" @@ -9944,11 +9946,11 @@ msgstr "" msgid "Render" msgstr "Render" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Eseguire il rendering con un software redender" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -9956,7 +9958,7 @@ msgstr "" "Eseguire il rendering con un software redender. Viene caricato il software " "di rendering MESA integrato al posto del driver OpenGL predefinito ." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Ripara" @@ -9988,11 +9990,11 @@ msgstr "Riparare modello tramite servizio Netfabb" msgid "Repairing was canceled" msgstr "La riparazione è stata annullata" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Ripeti l'ultimo slice veloce" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Ripeti l'ultimo slice veloce" @@ -10004,7 +10006,7 @@ msgstr "Sostituisci da:" msgid "Replace the selected volume with new STL" msgstr "Sostituisci il volume selezionato con un nuovo STL" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Sostituisci con" @@ -10072,7 +10074,7 @@ msgstr "Reimposta scala" msgid "Reset selection" msgstr "Reset selezione" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Ripristina colore Filamento" @@ -10096,8 +10098,8 @@ msgstr "Retrai la quantità prima di pulire" msgid "Retract on layer change" msgstr "Retrai al cambio layer" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retrazione" @@ -10120,7 +10122,7 @@ msgstr "" "La retrazione non è attivata quando i movimenti di spostamento sono più " "brevi di questa lunghezza." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10152,15 +10154,15 @@ msgstr "Annulla la conversione da metri" msgid "Review the substitutions and adjust them if needed." msgstr "Rivedere le sostituzioni e regolarle se necessario." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Destra" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Valore di preset destro" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Vista destra" @@ -10196,15 +10198,15 @@ msgstr "Tasto destro mouse:" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Ruota" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Ruota attorno ad X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Ruota attorno ad Y" @@ -10233,15 +10235,15 @@ msgstr "" msgid "Rotation" msgstr "Rotazione" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Angolo di rotazione attorno all'asse X in gradi." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Angolo di rotazione sull'asse Y in gradi." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Angolo di rotazione attorno all'asse Z in gradi." @@ -10259,11 +10261,11 @@ msgstr "Run %s" msgid "Running post-processing scripts" msgstr "Esecuzione script di post-elaborazione" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "Invia G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Manda in stampa" @@ -10293,7 +10295,7 @@ msgstr "Scorciatoie di tastiera gizmo SLA" msgid "SLA material" msgstr "Materiale SLA" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Tipo materiale SLA" @@ -10305,7 +10307,7 @@ msgstr "Materiali SLA" msgid "SLA print" msgstr "Stampa SLA" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Note sul materiale di stampa SLA" @@ -10317,7 +10319,7 @@ msgstr "Impostazioni di stampa SLA" msgid "SLA supports outside the print area were detected." msgstr "Sono stati rilevati supporti SLA al di fuori dell'area di stampa ." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10336,7 +10338,7 @@ msgstr "Salva" msgid "Save %s as:" msgstr "Salva %s come:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Salva file %s come:" @@ -10345,12 +10347,12 @@ msgstr "Salva file %s come:" msgid "Save G-code file as:" msgstr "Salva il file G-code come:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Salva il file OBJ (meno soggetto a errori di coordinate dell'STL) come:" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "S&alva progetto come" @@ -10358,15 +10360,15 @@ msgstr "S&alva progetto come" msgid "Save SL1 / SL1S file as:" msgstr "Salva file SL1 / SL1S come:" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Salva file config" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Salva configurazione come:" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Salva configurazione nel file specificato." @@ -10376,11 +10378,11 @@ msgstr "Salva configurazione nel file specificato." msgid "Save current %s" msgstr "Salva le %s attuali" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Salva progetto corrente" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Salvare il file del progetto corrente come" @@ -10393,7 +10395,7 @@ msgstr "Salva come:" msgid "Save preset" msgstr "Salva preset" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Salva il gruppo di preset come:" @@ -10422,7 +10424,7 @@ msgstr "Salva le opzioni selezionate nel preset \"%1%\"." msgid "Save the selected options." msgstr "Salvare le opzioni selezionate." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Salva file zip come:" @@ -10436,7 +10438,7 @@ msgstr "Il salvataggio della rete nel contenitore 3MF non è riuscito." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Ridimensiona" @@ -10452,11 +10454,11 @@ msgstr "Fattore di scala" msgid "Scale the selected object to fit the print volume" msgstr "Ridimensiona l'oggetto selezionato per entrare nel volume di stampa" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Ridimensiona per riempire" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Ridimensiona per adattare al volume dato." @@ -10464,7 +10466,7 @@ msgstr "Ridimensiona per adattare al volume dato." msgid "Scale to print volume" msgstr "Ridimensiona a volume di stampa" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Fattore di scala o percentuale." @@ -10495,7 +10497,7 @@ msgstr "Direzione preferita giunzione jitter" msgid "Seams" msgstr "Giunzioni" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Cerca" @@ -10519,7 +10521,7 @@ msgstr "" msgid "Search in English" msgstr "Cerca in inglese" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Cerca nelle impostazioni" @@ -10606,7 +10608,7 @@ msgstr "Seleziona un'azione da applicare al file" msgid "Select by rectangle" msgstr "Seleziona con rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Seleziona configurazione da caricare:" @@ -10615,7 +10617,7 @@ msgid "Select coordinate space, in which the transformation will be performed." msgstr "" "Seleziona le coordinate spaziali in cui verrà eseguita la trasformazione." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Seleziona i preset da confrontare" @@ -10627,7 +10629,7 @@ msgstr "Seleziona la forma dalla galleria" msgid "Select showing settings" msgstr "Seleziona le impostazioni mostrate" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Seleziona il file STL da riparare:" @@ -10713,7 +10715,7 @@ msgstr "Rimozione Selezione dall'elenco" msgid "Selection-Remove from rectangle" msgstr "Rimuovi selezione da rettangolo" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Seleziona tutti gli oggetti" @@ -10730,7 +10732,7 @@ msgstr "Invia G-code" msgid "Send system info" msgstr "Invia informazioni di sistema" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Manda alla stampante il piano corrente come G-Code" @@ -10754,7 +10756,7 @@ msgstr "Invio di informazioni sul sistema..." msgid "Seq." msgstr "Seq." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Stampa sequenziale" @@ -10770,7 +10772,7 @@ msgstr "Porta seriale:" msgid "Service name" msgstr "Nome servizio" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Imposta" @@ -10898,7 +10900,7 @@ msgstr "Imposta gli elementi selezionati come stampabili/non stampabili" msgid "Set settings tabs as menu items (experimental)" msgstr "Imposta le schede delle impostazioni come voci di menu (sperimentale)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -11060,7 +11062,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Imposta cursore superiore come attivo" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -11071,7 +11073,7 @@ msgstr "" "Per esempio. loglevel=2 registra messaggi fatali, di errore e di avviso." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Impostazioni" @@ -11126,7 +11128,7 @@ msgstr "" msgid "Shape" msgstr "Forma" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galleria delle forme" @@ -11177,7 +11179,7 @@ msgstr "Mostra la notifica \"Suggerimento del giorno\" dopo l'avvio" msgid "Show &Configuration Folder" msgstr "Mostra Cartella &Configurazione" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Mostra etichette (&L)" @@ -11193,7 +11195,7 @@ msgstr "Mostra la finestra di informazioni" msgid "Show advanced settings" msgstr "Mostra impostazioni avanzate" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Mostra tutti i preset (incluso quelli non compatibili)" @@ -11233,7 +11235,7 @@ msgstr "Mostra l'altezza dell'oggetto" msgid "Show object height on the ruler" msgstr "Mostra l'altezza dell'oggetto sul righello" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Mostra nella scena 3D le etichette dell'oggetto/istanza" @@ -11261,45 +11263,45 @@ msgstr "Mostra supporti" msgid "Show system information" msgstr "Mostra informazioni di sistema" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Mostra la Vista modifica 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Mostra anteprima slice 3D" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Mostra impostazioni filamento" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "" "Mostra la lista completa delle opzioni di configurazione di stampa SLA." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "" "Mostra l'elenco completo delle opzioni di configurazione stampa/G-code." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Mostra l'elenco delle scorciatoie di tastiera" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Mostra il piano" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Mostra impostazioni di stampa" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Mostra impostazioni della stampante" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Mostra questo aiuto." @@ -11387,7 +11389,7 @@ msgstr "Semplifica modello" msgid "Single Extruder Multi Material" msgstr "Estrusore singolo Multi Material" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11399,15 +11401,15 @@ msgstr "" "Vuoi modificare il diametro di tutti gli estrusori al valore del diametro " "dell'ugello del primo estrusore?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Setup Estrusore singolo MM" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parametri estrusore singolo materiale multiplo" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Modalità a istanza singola" @@ -11420,7 +11422,7 @@ msgctxt "OfFile" msgid "Size" msgstr "Dimensioni" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Dimensione e coordinate" @@ -11489,15 +11491,15 @@ msgstr "" msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r non rallenterà la velocità al di sotto di questa." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Processa" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Processa un file in G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Processa un file in G-code, salva come" @@ -11514,16 +11516,16 @@ msgstr "Processa ora" msgid "Slice resolution" msgstr "Risoluzione slice" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" "Effettua lo slice del modello ed esporta i layer di stampa SLA come PNG." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Effettua slice del modello ed esporta il percorso come G-code." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11540,13 +11542,13 @@ msgstr "Informazioni processo" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "L'oggetto processato \"%1%\" sembra un logo o un segno" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Slicing" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Slicing Completato!" @@ -11582,7 +11584,7 @@ msgstr "Slicing del modello" msgid "Slicing supports" msgstr "Supporti di Slicing" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lento" @@ -11590,7 +11592,7 @@ msgstr "Lento" msgid "Slow down if layer print time is below" msgstr "Rallenta se il tempo di stampa del layer è inferiore a" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Inclinazione lenta" @@ -11598,7 +11600,7 @@ msgstr "Inclinazione lenta" msgid "Small perimeters" msgstr "Perimetri piccoli" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Percentuale di diametro del pilastro piccolo" @@ -11696,7 +11698,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Alcuni materiali SLA sono stati disinstallati." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11722,7 +11724,7 @@ msgstr "" "Alcuni oggetti sono troppo alti e non possono essere stampati senza essere " "colpiti dall'estrusore." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11740,7 +11742,7 @@ msgstr "" "Alcuni preset vengono modificati e le modifiche non salvate non saranno " "catturate dallo snapshot di configurazione." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -11932,7 +11934,7 @@ msgid "Spiral vase" msgstr "Vaso a spirale" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Dividi" @@ -12001,13 +12003,13 @@ msgstr "Standard" msgid "Stars" msgstr "Stelle" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G-code iniziale" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Inizia un nuovo progetto" @@ -12015,7 +12017,7 @@ msgstr "Inizia un nuovo progetto" msgid "Start at height" msgstr "Inizia all'altezza" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Avvia un nuovo processo di slicing" @@ -12068,7 +12070,7 @@ msgid "Status:" msgstr "Stato:" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Silenzioso" @@ -12127,19 +12129,19 @@ msgstr "Esecutore Supporto" msgid "Support Generator" msgstr "Generatore Supporti" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Diametro della base del supporto" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Altezza della base del supporto" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Distanza di sicurezza base supporto" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Testa supporto" @@ -12193,7 +12195,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Estrusore materiale di supporto/raft/skirt" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Supporti solo dal piano di stampa" @@ -12201,12 +12203,12 @@ msgstr "Supporti solo dal piano di stampa" msgid "Support parameter change" msgstr "Modifica parametro del Supporto" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Pilastro di supporto" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Densità punti di supporto" @@ -12215,16 +12217,16 @@ msgid "Support points edit" msgstr "Edita punti di supporto" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Supporti" @@ -12378,7 +12380,7 @@ msgstr "Acquisizione istantanea di configurazione" msgid "Taking a configuration snapshot failed." msgstr "Cattura dell'istantanea di configurazione non riuscita." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatura" @@ -12404,7 +12406,7 @@ msgstr "Variazione di temperatura" msgid "Temperatures" msgstr "Temperature" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Template G-code personalizzato" @@ -12564,7 +12566,7 @@ msgstr "" "La Torre di pulitura è supportata con oggetti multipli solo se questi hanno " "la stessa altezza layer" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12622,7 +12624,7 @@ msgstr "" "solamente su un sistema di coordinate reali, non appena la rotazione è " "inclusa nelle coordinate dell'oggetto." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "" "Angolo predefinito per la connessione delle barre di supporto e le giunzioni." @@ -12727,7 +12729,7 @@ msgstr "Tipo di materiale da usare nei G-code personalizzati." msgid "The file does not exist." msgstr "Il file non esiste." -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12762,7 +12764,7 @@ msgstr "" msgid "The following characters are not allowed by a FAT file system:" msgstr "I seguenti caratteri non sono permessi da un file system FAT:" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12822,7 +12824,7 @@ msgstr "" msgid "The following values were substituted:" msgstr "I seguenti valori sono stati sostituiti:" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -12830,7 +12832,7 @@ msgstr "" "Lo spazio tra la parte inferiore dell'oggetto e il pad generato nella " "modalità ad elevazione zero." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Altezza del cono alla base del pilastro" @@ -12872,7 +12874,7 @@ msgstr "" "I dati dell'ultimo cambio colore sono stati salvati per la stampa ad " "estrusore singolo." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -12880,7 +12882,7 @@ msgstr "" "La distanza massima tra due pilastri per collegarsi gli uni agli altri. Un " "valore di zero impedisce i pilastri a cascata." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "La lunghezza massima di un bridge" @@ -12905,7 +12907,7 @@ msgstr "" "La distanza massima che ogni punto della pelle può essere spostato (in " "entrambi i versi), misurata perpendicolarmente al muro perimetrale." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -12940,7 +12942,7 @@ msgstr "" "bottom_solid_layers se necessario per soddisfare lo spessore minimo del " "guscio inferiore." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -12983,7 +12985,7 @@ msgstr "" "L'oggetto verrà sollevato per questo numero di layer e verrà generato il " "materiale di supporto al di sotto di esso." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -12992,7 +12994,7 @@ msgstr "" "pilastri che vengono utilizzati in aree problematiche in cui un normale " "pilastro non può adattarsi." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13003,7 +13005,7 @@ msgstr "" "verrà utilizzata l'inclinazione lenta, in caso contrario - l'inclinazione " "veloce" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -13014,7 +13016,7 @@ msgstr[1] "" "Le stampanti fisiche qui sotto sono basate sul preset che stai per " "cancellare." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -13075,7 +13077,7 @@ msgstr "Il nome del file fornito non è valido." msgid "The provided name is not valid;" msgstr "Il nome fornito non è valido;" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -13083,7 +13085,7 @@ msgstr "" "Il file 3MF selezionato contiene dei supporti FDM dipinti utilizzando una " "versione più recente di PrusaSlicer e non è compatibile." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -13091,7 +13093,7 @@ msgstr "" "Il 3MF selezionato contiene un oggetto multi-materiale dipinto utilizzando " "una versione più recente di PrusaSlicer e non è compatibile." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13099,7 +13101,7 @@ msgstr "" "Il 3MF selezionato contiene un oggetto con giunzione dipinta che utilizza " "una versione più recente di PrusaSlicer e non è compatibile." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13145,7 +13147,7 @@ msgstr "" "L'oggetto selezionato non può essere diviso perché contiene solo una parte " "solida." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13182,7 +13184,7 @@ msgstr "La dimensione dell'oggetto può essere specificata in pollici" msgid "The size of the object is zero" msgstr "La dimensione dell'oggetto è zero" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13261,7 +13263,7 @@ msgstr "Il nome fornito non è valido;" msgid "The supplied settings will cause an empty print." msgstr "Le configurazioni fornite causeranno una stampa vuota." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Lo spessore del pad e delle intercapedini opzionali." @@ -13661,11 +13663,11 @@ msgstr "" msgid "This is a default preset." msgstr "Questo è un preset predefinito." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Questa è una misura relativa della densità dei punti di supporto." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13678,7 +13680,7 @@ msgid "This is a system preset." msgstr "Questo è un preset di sistema." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Utilizzato solo nell'interfaccia di Slic3r come aiuto visivo." @@ -14006,7 +14008,7 @@ msgstr "" "un'istantanea di backup della configurazione esistente prima di istallare i " "file compatibili con questo %s." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14019,7 +14021,7 @@ msgstr "" "supportati. Si può decidere di abbandonare o di sostituire un valore " "sconosciuto con un valore predefinito in modo silenzioso o verboso." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14042,15 +14044,15 @@ msgstr "" "numero di thread ottimali è leggermente superiore al numero di core / " "processori disponibili." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Inclina" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Inclinazione per resina ad alta viscosità" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Tempo di tilt" @@ -14081,15 +14083,15 @@ msgstr "" "viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo " "totale di stampa del G-code." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Tempo di inclinazione veloce" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Tempo di inclinazione lenta" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Tempo di inclinazione molto lenta" @@ -14152,7 +14154,7 @@ msgstr "Strumento" msgid "Tool #" msgstr "Strumento #" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-code cambio strumento" @@ -14174,7 +14176,7 @@ msgstr "Posizione strumento" msgid "Tool type" msgstr "Tipo di strumento" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametri di cambio strumento per stampanti MM con estrusore singolo" @@ -14197,7 +14199,7 @@ msgstr "" "Suggerimento per lo spessore del guscio Superiore / Inferiore: non " "disponibile a causa di un'altezza dello strato non valida." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Vista superiore" @@ -14291,7 +14293,7 @@ msgstr "Spostamento" msgid "Triangles" msgstr "Triangoli" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14313,11 +14315,11 @@ msgstr "Tipologia stampante." msgid "Type:" msgstr "Tipo:" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "LUCCHETTO APERTO" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14330,7 +14332,7 @@ msgstr "" "Clicca qui per reimpostare tutte le impostazioni del gruppo corrente ai " "valori di sistema (o predefiniti)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14371,11 +14373,11 @@ msgstr "Impossibile sostituire con più di un volume" msgid "Undef" msgstr "Undef" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Categoria indefinita" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Gruppo non definito" @@ -14389,7 +14391,7 @@ msgstr "Underflow" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Annulla" @@ -14587,7 +14589,7 @@ msgstr "Usa l'inquadratura libera" msgid "Use inches" msgstr "Usa pollici" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Utilizza pad" @@ -14679,11 +14681,11 @@ msgstr "" "Il valore è stato modificato e non è uguale al valore di sistema o " "all'ultimo preset salvato" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "I valori in questa colonna sono per la modalità Normale" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "I valori in questa colonna sono per la modalità Silenziosa" @@ -14729,7 +14731,7 @@ msgstr "Fornitore:" msgid "Verbose G-code" msgstr "G-code verboso" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Versione" @@ -14778,7 +14780,7 @@ msgstr "" "Visita le \"Preferenze\" e controlla \"%1%\"\n" "per modificare la tua scelta." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualizza un G-code già processato e salvato" @@ -14803,7 +14805,7 @@ msgstr "Volumi in Oggetto riordinati" msgid "Volumetric" msgstr "Volumetrico" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Suggerimenti sul flusso volumetrico non disponibili" @@ -14826,17 +14828,17 @@ msgstr "Velocità volumetrica" msgid "WARNING:" msgstr "ATTENZIONE:" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "PALLINO BIANCO" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "L'icona a forma di PALLINO BIANCO indica un preset non di sistema (o non " "predefinito)." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14844,7 +14846,7 @@ msgstr "" "L'icona a forma di PALLINO BIANCO indica che le impostazioni corrispondono " "agli ultimi preset salvati per il gruppo di opzioni corrente." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14852,7 +14854,7 @@ msgstr "" "L'icona a forma di PALLINO BIANCO indica che il valore è lo stesso " "dell'ultimo preset salvato." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Spessore parete" @@ -15015,7 +15017,7 @@ msgstr "" "l'estrusore spingerà questa quantità addizionale di filamento. Questa " "impostazione è raramente necessaria." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -15030,17 +15032,19 @@ msgstr "" "perimetri centrali, ma potrebbero rimanere degli spazi vuoti o un'eccessiva " "estrusione." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" -"Quando si passa da un certo numero di perimetri all'altro, man mano che il " -"pezzo si assottiglia, viene assegnata una certa quantità di spazio per " -"dividere o unire i segmenti del perimetro." +"Quando si passa da un numero di perimetri all'altro, man mano che la parte " +"diventa più sottile, viene assegnata una certa quantità di spazio per " +"dividere o unire i segmenti del perimetro. Se espressa in percentuale (ad " +"esempio 100%), viene calcolata in base al diametro dell'ugello." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Parola intera" @@ -15052,7 +15056,7 @@ msgstr "Larghezza" msgid "Width (mm)" msgstr "Larghezza (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Spessore dal centro della sfera posteriore al centro della sfera anteriore" @@ -15061,18 +15065,18 @@ msgstr "" msgid "Width of a wipe tower" msgstr "Larghezza della torre di pulitura" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Larghezza delle barre di connessione che collegano l'oggetto e il pad " "generato." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Larghezza del display" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -15087,7 +15091,7 @@ msgstr "" "percentuale (ad esempio 85%), verrà calcolata in base al diametro " "dell'ugello." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -15131,7 +15135,7 @@ msgstr "Torre di pulitura - Regolazione volume di spurgo" msgid "Wipe tower brim width" msgstr "Larghezza brim torre di pulitura" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Parametri torre di pulitura" @@ -15197,7 +15201,7 @@ msgstr "" "\n" "Gruppo di configurazioni aggiornate:" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Scrivi informazioni sul modello alla console." @@ -15286,7 +15290,7 @@ msgstr "" "È possibile inserire qui le note personali. Questo testo verrà aggiunto nei " "commenti iniziali del G-code." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" "È possibile inserire qui le proprie note riguardo il materiale di stampa SLA." @@ -15449,7 +15453,7 @@ msgstr "" "Le modifiche attuali cancelleranno tutti i cambi estrusore (strumento) " "salvati." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Il file è stato riparato." @@ -15488,7 +15492,7 @@ msgstr "Offset Z" msgid "Z travel" msgstr "Spostamento Z" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" @@ -15610,7 +15614,7 @@ msgstr "profilo di stampa predefinito" msgid "default value" msgstr "valore predefinito" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "elimina" @@ -15688,7 +15692,7 @@ msgid "flow rate is maximized" msgstr "il flusso viene massimizzato" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15712,7 +15716,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15729,7 +15733,7 @@ msgid "in" msgstr "in" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15742,7 +15746,7 @@ msgstr "" "corrente gruppo di opzioni ai valori di sistema (o predefiniti)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15751,7 +15755,7 @@ msgstr "" "per l'attuale gruppo di opzioni" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15788,11 +15792,11 @@ msgid "is based on Slic3r by Alessandro Ranellucci and the RepRap community." msgstr "è basato su Slic3r di Alessandro Ranellucci e la comunità RepRap." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "è concesso in licenza ai sensi" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15816,7 +15820,7 @@ msgstr "versione PrusaSlicer massima" msgid "min PrusaSlicer version" msgstr "versione PrusaSlicer minima" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -15856,19 +15860,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -15882,8 +15885,9 @@ msgstr "mm (imposta a zero per disabilitare)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm o %" @@ -15945,7 +15949,7 @@ msgstr "modello" msgid "modified" msgstr "modificato" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "soldi/bottiglia" @@ -16003,7 +16007,7 @@ msgstr "stampante" msgid "printer model" msgstr "modello stampante" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "rimuovi" @@ -16024,11 +16028,11 @@ msgstr "richiede min. %s e max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -16151,8 +16155,8 @@ msgstr "scrittura richiamo non riuscita" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/ko/PrusaSlicer_ko_KR.po b/resources/localization/ko/PrusaSlicer_ko_KR.po index 2649b6074..7b8e39940 100644 --- a/resources/localization/ko/PrusaSlicer_ko_KR.po +++ b/resources/localization/ko/PrusaSlicer_ko_KR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2020-02-28 09:34+0900\n" "Last-Translator: lee hak-min \n" "Language-Team: ulsanether\n" @@ -21,16 +21,16 @@ msgstr "" "X-Crowdin-Language: ko\n" "X-Crowdin-File: ko_KR.po\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "다른 저작권" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "저작권" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -38,26 +38,26 @@ msgstr "" "다음의 모든 프로그램 (라이브러리)의 라이센스 계약은 응용 프로그램 라이센스 계" "약의 일부입니다" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "%s에 대하여" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "버전" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "라이선스는" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero 일반 공중 사용 허가서, 버전 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -65,7 +65,7 @@ msgstr "" "프루사슬라이서는 알레산드로 라넬루치와 RepRap 커뮤니티 Slic3r를 기반으로합니" "다." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -75,7 +75,7 @@ msgstr "" "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others. 한국어 번역 울산에테르, 밤송이직박구리" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "" @@ -204,7 +204,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "사이즈" @@ -262,19 +262,18 @@ msgstr "사각 전면 왼쪽 모서리에서 원저(0, 0) G-code 좌표 거리 #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -307,7 +306,7 @@ msgid "Load shape from STL..." msgstr "STL파일 로드." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "설정" @@ -320,7 +319,7 @@ msgid "Load..." msgstr "불러오기..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "제거" @@ -528,19 +527,19 @@ msgstr "직선 채우기 패턴으로 전환해야 합니까?" msgid "Infill" msgstr "인필(채움)" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "헤드 관통은 헤드 폭 보다 크지 않아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "잘못된 헤드 관통" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "핀헤드 지름은 기둥 지름 보다 작아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "잘못된 핀 헤드 지름" @@ -649,7 +648,7 @@ msgid "Standard" msgstr "표준" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "모두 선택" @@ -909,7 +908,7 @@ msgstr "%s가 지원하는 다른 공급 업체를 선택하십시오:" msgid "Firmware Type" msgstr "펌웨어 종류" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "펌웨어" @@ -1204,7 +1203,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "되돌리기" @@ -1818,7 +1817,7 @@ msgstr "확인" msgid "Cancelling..." msgstr "취소 중...." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1834,7 +1833,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "추가" @@ -1844,7 +1843,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "지우기 " @@ -2025,8 +2024,8 @@ msgstr "" msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "리트렉션" @@ -2081,7 +2080,7 @@ msgstr "프린트 설정" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "필라멘트" @@ -2303,7 +2302,7 @@ msgid "Add..." msgstr "추가..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "전부 지우기" @@ -2350,7 +2349,7 @@ msgid "Next Undo action: %1%" msgstr "다음 작업 실행 취소 : %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "다시실행" @@ -2390,7 +2389,7 @@ msgid "Selection-Remove from rectangle" msgstr "선택- 사각형에서 제거" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "자르기" @@ -2645,7 +2644,7 @@ msgid "Quality" msgstr "품질" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "닫힘 거리" @@ -2748,7 +2747,7 @@ msgstr "이동" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "회전" @@ -2765,7 +2764,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "크기" @@ -2816,7 +2815,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "에러" @@ -2900,7 +2899,7 @@ msgid "Minimal points distance" msgstr "최소한의 지점 거리" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "서포트 지점 밀도" @@ -3673,7 +3672,7 @@ msgid "Speed" msgstr "속도" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3696,52 +3695,51 @@ msgstr "스커트와 브림" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "고급" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "서포트" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "패드" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "속이 빈 공동(Hollowing)" @@ -3883,7 +3881,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "병합" @@ -3944,7 +3942,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "쪼개기" @@ -4574,11 +4572,11 @@ msgstr "높이" msgid "Width" msgstr "폭" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "팬 속도" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "온도" @@ -4862,7 +4860,7 @@ msgstr "" msgid "Attention!" msgstr "주목!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "키보드 단축기" @@ -4899,7 +4897,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "G-code 내보내기" @@ -5242,13 +5240,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "디스크에서 플래터 다시 로드" @@ -5285,7 +5283,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "미리보기" @@ -5363,7 +5361,7 @@ msgid "Keyboard shortcuts" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -5371,11 +5369,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "" @@ -5401,13 +5399,13 @@ msgid "Print Settings" msgstr "출력 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "재질 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "필라멘트 설정" @@ -5490,621 +5488,621 @@ msgstr "다이얼로그 표시" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "키보드 단축키 목록 표시" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "기본 " -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "표준 보기" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "윗부분 " -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "위에서 보기" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "바닥 " -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "바닥 보기" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "앞 " -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "앞면 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "뒷면 " -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "뒷면 보기" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "왼쪽 " -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "왼쪽 보기" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "오른쪽 " -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "오른쪽 보기" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&새로운 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "새로운 프로젝트 시작" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&프로젝트 열기" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "프로젝트 파일 열기" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "최근 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "프로젝트 저장" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "현재 프로젝트 파일 저장" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "프로젝트 저장" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "현재 프로젝트 파일을 다른 이름으로 저장" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "가져오기 STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "모델 로드" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "&구성 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "내 보낸 구성 파일로드" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "프로젝트 파일에서 구성 로드" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "번들 &설정 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "미리 설정 번들값 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "G-code 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "현재 플레이터를 G 코드로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "S&엔드 G- 코드" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "현재 플레이트를 G 코드로 인쇄하기 위해 보내기" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "서포트를 포함 하여 현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "도구 경로를 OBJ로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "&구성 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "현재 구성을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "번들 & 내보내기 설정" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "모든 이전 설정을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "빠른 슬라이스" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "파일을 G 코드로 분할" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "빠른 슬라이스 및 다른 이름으로 저장" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "파일을 G 코드로 분할하고 다른 이름으로 저장" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "지금(다시)자르기" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "새로운 슬라이싱 작업 시작" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "STL 파일 복구" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "STL 파일을 자동으로 복구합니다" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&종료" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "%s 종료" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "모든 객체(object)를 선택 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "모든 객체(object) 선택 취소" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "현재 선택 영역을 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "모든 객체(object)를 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&되돌리기" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&앞으로" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&복사 " -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "선택영역을 클립보드로 복사합니다" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&붙이기 " -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "클립보드 붙여넣기" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&선택 및 플래이터 탭" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "플레이터를 보기" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "프린트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "인쇄 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&필라멘트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "필라멘트 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "설정 인쇄 탭" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "간단한 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "3D 편집용 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "미리 보기" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "3D 슬라이스 미리 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "프린터 호스트 업로드 대기" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "호스트 업로드 대기열 인쇄 창 표시" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "3D 장면에서 오브젝트/인스턴스 레이블 표시" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&파일" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&수정" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&윈도우" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&시점" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&도움말" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "보내기" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "끝내고 프린트" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "재료(메터리리알) 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "슬라이스 할 파일을 선택하십시오 (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "이전에 분리 된 파일이 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "이전에 분리 된 파일 (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ")을 찾을 수 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "파일을 찾을수 없다" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s 파일을 저장 합니다:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "Svg" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G 코드" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "압축(zip)파일 다른이름 저장:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "슬라이싱" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "처리 %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "슬라이스 완료!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "복구 할 STL 파일을 선택하십시오:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "OBJ 파일을 저장하십시오 (STL보다 오류를 덜 조정할 가능성이 적음):" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "파일이 복구되었습니다." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "수정" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "구성을 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "불러올 구성 선택 :" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "이전 번들 설정을 다음과 같이 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "% d 사전 설정을 가져 왔습니다." @@ -6321,8 +6319,8 @@ msgstr "복제본" msgid "Instance %d" msgstr "복제본 %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "레이어" @@ -6395,7 +6393,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "호스트 업로드 인쇄" @@ -6546,7 +6544,7 @@ msgid "Select what kind of support do you need" msgstr "서포트의 종류를 선택하세요" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "출력물만 서포트를 지지" @@ -6642,7 +6640,7 @@ msgid "(including spool)" msgstr "" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "비용" @@ -7110,10 +7108,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "클립보드에서 붙여넣기" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "일반" @@ -7562,7 +7560,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "" @@ -7574,7 +7572,7 @@ msgstr "" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "" @@ -7877,11 +7875,11 @@ msgstr "전혀 충돌 없음" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -7990,12 +7988,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "스텔스" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "보통" @@ -8246,7 +8244,7 @@ msgstr "전체 프로필 이름" msgid "symbolic profile name" msgstr "기호 프로파일 이름" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "레이어 및 둘레" @@ -8334,7 +8332,7 @@ msgstr "겹침(Overlap)" msgid "Flow" msgstr "유량(Flow)" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "그 외" @@ -8342,52 +8340,52 @@ msgstr "그 외" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "출력 옵션" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "연속 인쇄" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "출력 파일" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "사후 처리 스크립트" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "메모" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "속한 그룹" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "프로파일 속한곳" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8399,82 +8397,82 @@ msgid_plural "" "printing time estimation." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "필라멘트 재정의" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "배드(Bed)" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "냉각(Cooling)" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "사용" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "팬 설정" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "냉각 임계 값" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "필라멘트 특성" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "인쇄 속도 중단" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "타워 매개변수 지우기" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "MMU 프린터의 툴체인지 매개 변수" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "래밍 설정" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "수동 G코드" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "스타트 G코드" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "엔드 G코드" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "체적 흐름 힌트를 사용할 수 없음" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8487,20 +8485,20 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "크기와 좌표" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "기능" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "프린터 익스트루더 갯수." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8511,64 +8509,64 @@ msgstr "" "모든 압출기는 동일한 직경을 가져야 합니다.\n" "모든 압출기의 지름을 첫 번째 압출기 노즐 값으로 변경하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "노즐 직경" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "레이어 변경 전 G 코드" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "레이어 변경 후 G 코드" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "툴 채인지 G 코드" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "객체(object) 간 G 코드 (순차 인쇄용)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "표시" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "기울이기" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "기울이기 시간" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "수정" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "노출" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8577,39 +8575,39 @@ msgstr "노출" msgid "Machine limits" msgstr "머신 한계설정" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "이 열의 값은 일반 모드입니다" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "이 열의 값은 무음 모드 용입니다" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "최대 이송속도" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "최고 가속도" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "저크(Jerk)값 한계" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "최대 이송속도" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "싱글 익스트루더 MM 설정" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "싱글 익스트루더 멀티메터리알 파라미터" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -8617,29 +8615,29 @@ msgstr "" "이것은 단일 압출기 다중 재질 프린터이며 모든 압출기의 지름이 새 값으로 설정됩" "니다. 계속하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "레이어 높이 한계치" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "위치 (다중 익스트루더 프린터 포함)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Z축 올림" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "도구 비활성화시 리트렉션 (다중 익스트루더 고급 설정)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "필라멘트 색상으로 재설정" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8649,51 +8647,51 @@ msgstr "" "\n" "펌웨어 리트렉션 하려면 비활성화해야합니까?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "펌웨어 레트렉션" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "제거(remove)" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "지우기" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" "The physical printers below are based on the preset, you are going to delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8702,92 +8700,92 @@ msgid_plural "" "delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" "Note, that these printers will be deleted after deleting the selected preset." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "선택한 사전 설정의 %1%를 선택 하시겠습니까?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% 기본설정" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "설정" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "찾기" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "전체 단어 일치" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "잠긴 잠금" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" "설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "잠금 해제 잠금" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8799,12 +8797,12 @@ msgstr "" "잠금 해제 잠금 아이콘을 클릭하여 현재 옵션 그룹에 대한 모든 설정을 시스템(또" "는 기본값) 값으로 재설정합니다." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "흰색 글머리 기호" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -8812,12 +8810,12 @@ msgstr "" "왼쪽 단추의 경우: 비시스템(또는 기본이 아닌) 사전 설정을 나타냅니다.\n" "오른쪽 버튼: 설정이 수정되지 않았음을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "돌아가기 화살표" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8829,7 +8827,7 @@ msgstr "" "현재 옵션 그룹의 모든 설정을 시스템 값으로 재설정하려면 자물쇠 잠금 아이콘을 " "클릭하십시오." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -8837,7 +8835,7 @@ msgstr "" "LOCKED LOCK 아이콘은 설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하" "다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8849,11 +8847,11 @@ msgstr "" "현재 옵션 그룹에 대한 모든 설정을 시스템(또는 기본값) 값으로 재설정하려면 클" "릭합니다." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "WHITE BULLET 아이콘은 시스템 사전 설정이 아닌 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -8861,7 +8859,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 설정이 현재 옵션 그룹에 대해 마지막으로 저장 된 사" "전 설정과 동일 하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -8873,7 +8871,7 @@ msgstr "" "마지막 현재 옵션 그룹에 대 한 모든 설정 다시 설정을 클릭 하 여 사전 설정을 저" "장." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -8881,7 +8879,7 @@ msgstr "" "LOCKED LOCK 아이콘은 값이 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니" "다." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -8891,7 +8889,7 @@ msgstr "" "을 나타냅니다.\n" "현재 값을 시스템(또는 기본값) 값으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -8899,7 +8897,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 마지막으로 저장 한 사전 설정과 동일한 값을 나타냅" "니다." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -8909,42 +8907,42 @@ msgstr "" "을 나타냅니다.\n" "현재 값을 마지막으로 저장된 사전 설정으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "재료" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "서포트 헤드" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "서포트 기둥" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "서포트 기둥 및 접합부 연결" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "자동 생성" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "객체(object) 고도" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "개체 주위패드" @@ -9027,7 +9025,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9087,49 +9085,49 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9767,26 +9765,26 @@ msgid "" msgstr "" "%1%에 대한 압출 폭을 계산할 수 없습니다: 변수 \"%2%\"에 액세스할 수 없습니다." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "선택한 3mf 파일은 %1%의 최신 버전으로 저장되었으며 호환되지 않습니다." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10535,8 +10533,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10551,9 +10549,8 @@ msgstr "이 팬 속도는 모든 브릿지 및 오버행 중에 적용됩니다. #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10760,8 +10757,8 @@ msgstr "" msgid "Default print profile" msgstr "기본 인쇄 프로파일" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -10908,8 +10905,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm/s 또는 %" @@ -10991,7 +10989,7 @@ msgid "Extruder Color" msgstr "익스트루더 컬러" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "이것은 시각적 도움말로 Slic3r 접점에서만 사용된다." @@ -11084,7 +11082,7 @@ msgstr "" msgid "approximate seconds" msgstr "근사치 초" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "색상" @@ -11257,8 +11255,8 @@ msgstr "" "여기에 필라멘트 직경을 입력하십시오. 정밀도가 필요하므로 캘리퍼를 사용하여 필" "라멘트를 따라 여러 번 측정 한 다음 평균을 계산하십시오." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "밀도" @@ -11319,7 +11317,7 @@ msgstr "" msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(알 수 없음)" @@ -12975,7 +12973,7 @@ msgid "" "plane." msgstr "이 설정을 사용하여지지 평면 패턴을 수평면으로 회전시킵니다." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13560,33 +13558,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13598,11 +13598,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13611,63 +13611,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13676,63 +13648,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "디스플레이 너비" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "디스플레이의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "표시 높이" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "디스플레이의 높이" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "수평 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "수평으로 미러" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "출력 이미지의 수평 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "수직 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "수직으로 미러" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "출력 이미지의 수직 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "디스플레이 방향" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13742,55 +13714,55 @@ msgstr "" "레이 너비 및 높이 매개 변수의 의미를 반전 하 고 출력 이미지는 90도 회전 합니" "다." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "가로" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "세로모드" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "빠른" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "빠른 기울기" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "기울이기 시간" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "느리게" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "천천히 기울이기" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "천천히 기울이는 속도" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "영역 채우기" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13800,59 +13772,59 @@ msgstr "" "인쇄 영역이 지정 된 값을 초과 하면 \n" "그런 다음 느린 기울기가 사용 됩니다, 그렇지 않으면-빠른 기울기가 됩니다" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "프린터 스케일링 보정" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "프린터 절대 보정" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "교정 기호에 따라 슬라이스된 2D 폴리곤을 팽창 하거나 수축 합니다." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "프린터 감마 보정" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -13862,165 +13834,165 @@ msgstr "" "중간에 임계값이 임계화 의미입니다. 이 동작은 폴리곤의 구멍을 잃지 않고 안티알" "리아싱을 제거 합니다." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA 재질 유형" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "초기 레이어 높이" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "병 볼륨" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "병 무게" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g /ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "가격 /병" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "페이드 레이어" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "노출 시간에 필요한 레이어 수는 초기 노출 시간에서 노출 시간으로 페이드" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "최소 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "최대 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "노출 시간" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "최소 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "최대 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "확장 보정" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA 인쇄 재료 참고 사항" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "여기에서 SLA 인쇄 자료에 대한 메모를 넣을 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "기본 SLA 재질 프로 파일" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "지원 생성" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "모델에 대한 지원 생성" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "헤드 포인팅 측면 지름" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "핀 헤드가 모델 표면에 침투 하는 정도" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "뒤쪽 구 중재봉선에서 앞쪽 구 중재봉선 까지의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "서포트 기둥의 지름 (mm)" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14030,23 +14002,23 @@ msgstr "" "로 처음 두 사이를 전환 하는 지그재그, 크로스 (지그재그 더블 지그재그) 또는 동" "적 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "지그재그" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "크로스" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "동적" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "기둥 확장 계수" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14054,27 +14026,27 @@ msgstr "" "브릿지 또는 기둥을 다른 기둥에 병합 하면 반지름을 늘릴 수 있습니다. 0은 증가 " "없음을 의미 하나는 전체 증가를 의미 합니다." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "서포트 베이스 지름" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "기둥 베이스의 mm 직경" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "서포트 기준 높이" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "서포트 베이스 원추의 높이" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "지지기본 안전 거리" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14083,34 +14055,34 @@ msgstr "" "모델에서 기둥 베이스의 최소 거리(mm.mm.)는 이 매개변수에 따른 간격이 모델과 " "패드 사이에 삽입되는 제로 고도 모드에서 의미가 있습니다." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "임계 각도" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "서포트 스틱과 접합부를 연결 하는 기본 각도입니다." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "최대 브리지 길이" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "브릿지의 최대 길이" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "최대 기둥 연결 거리" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" "서로 연결 되는 두기둥의 최대 거리. 0 값은 기둥을 계단식으로 금지 합니다." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -14118,39 +14090,39 @@ msgstr "" "지원 대상을 들어 올려야 하는 양입니다. \"개체 주위 패드\"를 사용하도록 설정하" "면 이 값은 무시됩니다." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "이는 서포트 점 밀도의 상대적인 척도입니다." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "서포트 지점의 최소 거리" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "서포트 지점은 이 임계값 보다 더 가깝게 배치 되지 않습니다." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "패드 사용" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "서포트 되는 모델 아래에 패드 추가" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "패드 벽 두께" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "패드의 두께와 옵션 캐비티 벽." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "패드 벽 높이" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14161,19 +14133,19 @@ msgstr "" "이 기능을 활성화 할 때 주의 해야할, 일부 수 캐비티 내부 극단적인 흡입 효과를 " "생성 할 수도 있기 때문에, vat 호일 인쇄를 벗겨 어렵게 만든다." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "패드 브럼 사이즈" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "패드가 포함된 형상 주위로 얼마나 확장되어야 하는지" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "최대 병합 거리" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14183,11 +14155,11 @@ msgstr "" "이 매개 변수는 두 개의 작은 패드의 중재봉선이 얼마나 되어야 하는지 정의 합니" "다. 그들은 하나의 패드에 병합을 얻을 것이다." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "패드 벽 경사" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -14195,83 +14167,83 @@ msgstr "" "배드 평면을 기준으로 하는 패드 벽의 기울기입니다. 90도는 직선 벽을 의미 합니" "다." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "오브젝트 주위에 패드를 작성하고 지지 고도를 무시합니다." -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "어디서나 개체 주위에 패드" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "사방 오브젝트 주위의 포스 패드" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "패드 객체(object) 갭" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "0 고도 모드에서 객체(object) 바닥과 생성된 패드 사이의 간격입니다." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "패드 객체(object) 커넥터 보폭" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "오브젝트와 생성된 패드를 연결하는 두 커넥터 스틱 사이의 거리입니다." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "패드 객체(object) 커넥터 너비" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "개체와 생성된 패드를 연결하는 커넥터 스틱의 너비입니다." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "패드 객체(object) 커넥터 침투" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "작은 커넥터가 모델 본체에 얼마나 침투해야 하는가?" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "속빈 공동 사용" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "빈 내부를 가지고 모델을 비우기" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "속이 빈 모델의 최소 벽 두께입니다." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" "성능 계산의 정확성. 값이 낮을수록 원치 않는 아티팩트가 생성될 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14280,185 +14252,185 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "OBJ 내보내기" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "모델을 OBJ로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "STL로 내보내기" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "모델을 분할하고 SLA 인쇄 레이어를 PNG로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "3MF 내보내기" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "모델을 3MF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "AMF 내보내기" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "모델을 AMF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "STL 내보내기" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "모델을 STL로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "모델을 슬라이스하고 공구 경로를 G 코드로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "슬라이스" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" " printer_technology 구성 값을 기반으로 모델을 FFF 또는 SLA로 슬라이스합니다." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "도움말" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "이 도움말을 표시 합니다." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "도움말 (FFF 옵션)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "인쇄/G 코드 구성 옵션의 전체 목록을 표시 합니다." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "도움말 (SLA 옵션)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "SLA 인쇄 구성 옵션의 전체 목록을 표시 합니다." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "출력 모델 정보" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "모델에 대한 정보를 콘솔에 씁니다." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "구성 파일 저장" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "지정 된 파일에 구성을 저장 합니다." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY 정렬" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "모델을 지정된 점에 맞춥니다." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "지정된 Z에서 모델을 잘라냅니다." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "중앙" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "지정된 점을 중재봉선으로 인쇄 합니다." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "준비하지 마십시오" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" "병합하기 전에 지정된 모델을 재정렬하고 원래 XY 좌표를 유지하지 마십시오." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "복사" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "이 계수로 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "모눈에 따라 복제" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "그리드를 만들어 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" "한 번 작업을 수행하기 위해 제공 된 모델을 정렬하고 단일 모델로 병합 합니다." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14466,31 +14438,31 @@ msgstr "" "메쉬를 복구 하십시오 (요청 된 작업을 수행 하기 위해 모델을 슬라이스 해야 할때" "마다 이 옵션이 암시적으로 추가 됨)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Z 축 주위 회전 각도입니다." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "X 주위 회전" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "X 축을 중재봉선 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Y 주위로 회전" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Y 축을 중재봉선 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "배율 인수 또는 백분율입니다." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -14498,29 +14470,29 @@ msgstr "" "지정 된 모델에서 연결 되지 않은 부품(Part)을 감지 하여 별도의 객체(object)로 " "분할 합니다." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "크기에 맞게 조정" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "지정 된 볼륨에 맞게 크기를 조정 합니다." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "존재 하지 않는 구성 파일 무시" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "로드에 제공 된 파일이 없는 경우 실패 하지 않습니다." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14528,27 +14500,27 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "구성 파일 로드" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -14556,33 +14528,33 @@ msgstr "" "지정 된 파일에서 구성을 로드 합니다. 여러 파일에서 옵션을 로드 하는 데 두 번 " "이상 사용할 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "출력파일" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" "출력이 기록 되는 파일 (지정 하지 않은 경우 입력 파일을 기반으로 합니다)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "데이터 디렉터리" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14591,11 +14563,11 @@ msgstr "" "지정 된 디렉터리에 설정을 로드 하 고 저장 합니다. 이 기능은 다른 프로 파일을 " "유지 관리 하거나 네트워크 스토리지의 구성을 포함 하는 데 유용 합니다." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "로깅 수준" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -14605,11 +14577,11 @@ msgstr "" "trace\n" "예를 들어. loglevel=2 치명적인, 오류 및 경고 수준 메시지를 기록합니다." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "소프트웨어 렌더러를 사용 하 여 렌더링" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/ko_KR/PrusaSlicer_ko.po b/resources/localization/ko_KR/PrusaSlicer_ko.po index 24924dab4..75f834f2c 100644 --- a/resources/localization/ko_KR/PrusaSlicer_ko.po +++ b/resources/localization/ko_KR/PrusaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2021-04-05 21:03+0900\n" "Last-Translator: \n" "Language-Team: \n" @@ -18,16 +18,16 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.4.2\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "다른 저작권" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "저작권" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,26 +35,26 @@ msgstr "" "다음의 모든 프로그램 (라이브러리)의 라이센스 계약은 응용 프로그램 라이센스 계" "약의 일부입니다" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "%s 정보" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "버전" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "이 라이센스는" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero 일반 공공 라이센스, 버전 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -62,7 +62,7 @@ msgstr "" "프루사슬라이서는 알레산드로 라넬루치와 RepRap 커뮤니티 Slic3r를 기반으로합니" "다." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -72,7 +72,7 @@ msgstr "" "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others. 한국어 번역 울산에테르, 밤송이직박구리 (2.2.0)" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "버전 정보" @@ -213,7 +213,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "크기" @@ -271,19 +271,18 @@ msgstr "사각 전면 왼쪽 모서리에서 원저(0, 0) G-코드 좌표 거리 #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -316,7 +315,7 @@ msgid "Load shape from STL..." msgstr "STL파일 로드." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "설정" @@ -329,7 +328,7 @@ msgid "Load..." msgstr "불러오기..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "삭제" @@ -543,19 +542,19 @@ msgstr "직선 채우기 패턴으로 전환해야 합니까?" msgid "Infill" msgstr "채움(infill)" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "머리 침투가 머리 너비보다 크지 않아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "잘못된 헤드 관통" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "핀헤드 지름은 기둥 지름 보다 작아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "잘못된 핀 헤드 지름" @@ -664,7 +663,7 @@ msgid "Standard" msgstr "표준" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "모두" @@ -924,7 +923,7 @@ msgstr "%s 지원하는 다른 공급업체 선택" msgid "Firmware Type" msgstr "펌웨어 종류" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "펌웨어 철회" @@ -1227,7 +1226,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "실행 취소" @@ -1866,7 +1865,7 @@ msgstr "확인" msgid "Cancelling..." msgstr "취소 중..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1882,7 +1881,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "추가" @@ -1892,7 +1891,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "삭제" @@ -2073,8 +2072,8 @@ msgstr "운동" msgid "Extrusion" msgstr "압출 없음" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "리트랙션 후 최소 이동 거리" @@ -2129,7 +2128,7 @@ msgstr "출력 설정" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "필라멘트 설정을 선택" @@ -2351,7 +2350,7 @@ msgid "Add..." msgstr "더하기..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "모두 삭제" @@ -2398,7 +2397,7 @@ msgid "Next Undo action: %1%" msgstr "다음 작업 실행 취소 : %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "다시 실행" @@ -2440,7 +2439,7 @@ msgid "Selection-Remove from rectangle" msgstr "선택 영역-사각형에서 제거" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "잘라내기" @@ -2695,7 +2694,7 @@ msgid "Quality" msgstr "품질" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "닫힘 거리" @@ -2798,7 +2797,7 @@ msgstr "이동" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "회전" @@ -2815,7 +2814,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "크기" @@ -2866,7 +2865,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "오류" @@ -2950,7 +2949,7 @@ msgid "Minimal points distance" msgstr "최소한의 지점 거리" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "서포트 지점 밀도" @@ -3754,7 +3753,7 @@ msgid "Speed" msgstr "속도" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3777,52 +3776,51 @@ msgstr "스커트와 브림" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "고급" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "서포트" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "패드" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "물체 속이 빈(Hollowing)" @@ -3964,7 +3962,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "병합" @@ -4025,7 +4023,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "분할" @@ -4661,11 +4659,11 @@ msgstr "높이" msgid "Width" msgstr "넓이" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "팬 속도" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "온도" @@ -4946,7 +4944,7 @@ msgstr "침대에 다중 부품 오브젝트가 있는 SLA 프로젝트를 로 msgid "Attention!" msgstr "주의!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "키보드 단축키" @@ -4983,7 +4981,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "ini/amf/3mf/gcode에서 구성을 로드하고 병합" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "G코드 내보내기" @@ -5332,13 +5330,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "G코드 파일 열기" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "디스크에서 플래터 다시 로드" @@ -5375,7 +5373,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "미리보기" @@ -5458,7 +5456,7 @@ msgid "Keyboard shortcuts" msgstr "키보드 단축키" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "새로운 프라사슬라이스인스턴스 열기" @@ -5466,11 +5464,11 @@ msgstr "새로운 프라사슬라이스인스턴스 열기" msgid "G-code preview" msgstr "G 코드 미리 보기" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "G코드 뷰어 열기" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "프라우슬라이서 오픈" @@ -5496,13 +5494,13 @@ msgid "Print Settings" msgstr "출력 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "재질 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "필라멘트 설정" @@ -5585,100 +5583,100 @@ msgstr "대화상자 표시" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "키보드 단축키 목록 표시" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "ISO" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "표준 보기" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "상단 " -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "위에서 보기 " #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "하단 " -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "바닥 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "앞 " -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "앞면 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "뒷면 " -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "뒷면 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "왼쪽" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "왼쪽 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "오른쪽" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "오른쪽 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "새로운 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "새 프로젝트 시작" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&프로젝트 열기" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "프로젝트 파일 열기" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "최근 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5686,523 +5684,523 @@ msgstr "" "선택한 프로젝트를 더 이상 사용할 수 없습니다.\n" "최근 프로젝트 목록에서 제거하시겠습니까?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "프로젝트 저장" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "현재 프로젝트 파일 저장" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "프로젝트 저장 및" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "현재 프로젝트 파일을 저장." -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "STL/OBJ/AMF/3MF 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "모델 로드" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "제국 단위로 저장된 모델 로드" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "&구성 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "내 보낸 구성 파일로드" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "프로젝트 파일에서 구성 부하" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "가져오기 구성 및 번들 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "미리 설정 번들값 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "내보내기 및 G 코드" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "현재 플레이터를 G 코드로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "S&end G- 코드" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "현재 플레이트를 G 코드로 인쇄하기 위해 보내기" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "현재 플레이트를 G 코드로 SD 카드/플래시 드라이브로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "서포트를 포함 하여 현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "공구 경로를 OBJ로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "&구성 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "현재 구성을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "구성 및 번들 내보내기 " -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "모든 이전 설정을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "프린터 구성 번들 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "실제 프린터를 포함한 모든 사전 설정내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "G 코드가 내보낸 후 SD 카드/플래시 드라이브를 배출합니다." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "빠른 슬라이스" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "파일을 G 코드로 분할" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "빠른 슬라이스와 저장" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "파일을 G 코드로 분할하고 다른 이름으로 저장" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)지금 슬라이스 " -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "새로운 슬라이싱 작업 시작" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "STL 파일 수리" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "STL 파일을 자동으로 복구합니다" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "종료" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "종료 %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "모든 개체를 선택 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "모든 개체의 선택 취소" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "현재 선택 영역을 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "모든 객체를 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "되돌리기(&U)" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&앞으로" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "복사(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "선택영역을 클립보드로 복사합니다" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&붙여넣기" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "붙여 넣기 클립 보드" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "검색" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "설정 검색" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&선택 및 플래이터 탭" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "플레이터를 보기" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "프린트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "인쇄 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&필라멘트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "필라멘트 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "인쇄 및 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "프린터 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "3D 편집 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "사전 보기" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "3D 슬라이스 미리 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "프린터 호스트 업로드 대기" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "인쇄 호스트 업로드 대기열 창 표시" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "3D 씬에서 개체/인스턴스 레이블 표시" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "사이드바 축소" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&파일" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&수정" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&윈도우" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "보기(&V)" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&도움" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "G 코드 열기" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "프라우슬라이서 오픈" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "보내기" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "끝내고 프린트" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "재료(메터리리알) 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "슬라이스 할 파일을 선택하십시오 (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "이전에 분리 된 파일이 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "이전에 분리 된 파일 (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 #, fuzzy msgid ") not found." msgstr ")을 찾을 수 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "파일을 찾을 수 없음" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s 파일을 저장 합니다:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG 업로드 사용" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "%1%로 내보낸 G 코드 파일" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "압축(zip)파일 다른이름 저장:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "새로운 슬라이싱 작업 시작" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "처리 %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% 성공적으로 슬라이스되었습니다." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "슬라이스 완료!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "복구 할 STL 파일을 선택." -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "OBJ 파일을 저장하십시오 (STL보다 오류를 덜 조정할 가능성이 적음)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "파일이 복구되었습니다." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "수정" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "구성을 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "불러올 구성 선택 :" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "이전 번들 설정을 다음과 같이 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d 사전 설정을 가져 왔습니다." @@ -6422,8 +6420,8 @@ msgstr "적용" msgid "Instance %d" msgstr "인스턴스 %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "레이어" @@ -6498,7 +6496,7 @@ msgstr "프린터의 설명 이름" msgid "Add preset for this printer device" msgstr "이 프린터 장치에 대한 사전 설정 추가" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "프린터 호스트 업로드 대기" @@ -6651,7 +6649,7 @@ msgid "Select what kind of support do you need" msgstr "필요한 지원 종류를 선택합니다." #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "출력물만 서포트를 지지" @@ -6747,7 +6745,7 @@ msgid "(including spool)" msgstr "(스풀 포함)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "비용" @@ -7217,10 +7215,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "클립보드에서 붙여넣기" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "일반" @@ -7687,7 +7685,7 @@ msgid "Add/Remove presets" msgstr "사전 설정 추가/제거" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "실제 프린터 추가" @@ -7699,7 +7697,7 @@ msgstr "사전 설정 편집" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "실제 프린터 편집" @@ -8003,11 +8001,11 @@ msgstr "전혀 충돌 없음" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8119,12 +8117,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "\"%1%\" 사전 설정으로 전환하기만 하면 됩니다." #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "스텔스" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "보통" @@ -8376,7 +8374,7 @@ msgstr "전체 프로필 이름" msgid "symbolic profile name" msgstr "기호 프로필 이름" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "레이어 및 둘레" @@ -8467,7 +8465,7 @@ msgstr "오버랩" msgid "Flow" msgstr "흐름도" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "기타" @@ -8475,52 +8473,52 @@ msgstr "기타" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "출력 옵션" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "순차적 인쇄" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "압출기 클리어런스" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "출력 파일" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "포스트 프로세싱 스크립트" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "메모" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "종속성" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "프로파일 속한곳" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8532,82 +8530,82 @@ msgid_plural "" "printing time estimation." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "필라멘트 재정의" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "노즐" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "침대" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "자동 냉각 사용" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "활성화" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "팬 설정" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "냉각 한계 값" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "필라멘트 속성" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "인쇄 속도 재정의" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "타워 파라미터 지우기" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "MMU 프린터의 툴체인지 매개 변수" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "래밍 설정" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "사용자 지정 G 코드" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G 코드 시작" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "끝 G 코드" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "볼륨 흐름 힌트를 사용할 수 없음" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8628,20 +8626,20 @@ msgstr "" "열립니다. 실제 프린터 프로파일은 PrusaSlicer/physical_printer 디렉터리에 저장" "됩니다." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "크기 및 좌표" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "권한" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "프린터 익스트루더 숫자." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8652,64 +8650,64 @@ msgstr "" "모든 압출기는 동일한 직경을 가져야 합니다.\n" "모든 압출기의 직경을 첫 번째 압출기 노즐 직경 값으로 변경하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "노즐 직경" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "레이어가 G 코드를 변경하기 전에" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "레이어 변경 후 G 코드" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "공구 변경 G 코드" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "객체 간 G 코드 (순차 인쇄용)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "색상 변경 G 코드" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G 코드 인쇄 일시 중지" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "템플릿 사용자 지정 G 코드" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "표시" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "기울이기" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "기울이기 시간" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "수정" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "최소 노출 시간" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8718,39 +8716,39 @@ msgstr "최소 노출 시간" msgid "Machine limits" msgstr "기계 제한" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "이 열의 값은 일반 모드입니다" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "이 열의 값은 스텔스 모드용입니다." -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "최대 피드값" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "최대 가속" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "바보 제한" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "최소 공급률" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "단일 압출기 MM 설정" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "싱글 익스트루더 멀티메터리알 파라미터" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -8758,29 +8756,29 @@ msgstr "" "이것은 단일 압출기 다중 재료 프린터이며, 모든 압출기의 직경은 새 값으로 설정" "됩니다. 계속 하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "레이어 높이 제한" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "위치 (멀티 익스트루더 프린터 포함)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Z축 올림" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "도구가 비활성화된 때의 철회(다중 압출기 설정에 대한 고급 설정)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "필라멘트 색상으로 재설정" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8790,51 +8788,51 @@ msgstr "" "\n" "펌웨어 철회를 활성화하기 위해 비활성화해야 합니까?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "펌웨어 철회" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "분리" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "제거" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "삭제" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "이 실제 프린터의 마지막 사전 설정입니다." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "실제 프린터 \"%2%\"에서 \"%1%\" 사전 설정을 삭제하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" "The physical printers below are based on the preset, you are going to delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8843,62 +8841,62 @@ msgid_plural "" "delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" "Note, that these printers will be deleted after deleting the selected preset." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "선택한 사전 설정의 %1%를 선택 하시겠습니까?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% 기본설정" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "설정" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "찾기" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "전체 단어 일치" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "기계 제한은 G 코드로 방출되고 인쇄 시간을 예측하는 데 사용됩니다." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -8908,26 +8906,26 @@ msgstr "" "는 데 사용됩니다, 따라서 프린터가 기계 제한의 다른 세트를 적용 할 수 있으므" "로 정확하지 않을 수 있습니다." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" "기계 제한이 설정되지 않으므로 인쇄 시간 추정치가 정확하지 않을 수 있습니다." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "잠긴 잠금" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" "설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "" "UNLOCKED LOCK 아이콘은 일부 설정이 변경되었으며 현재 옵션 그룹의 시스템(또는 " @@ -8936,7 +8934,7 @@ msgstr "" "릭합니다." #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8948,14 +8946,14 @@ msgstr "" "잠금 해제 된 LOCK 아이콘을 클릭하여 현재 옵션 그룹에 대한 모든 설정을 시스템 " "(또는 기본값) 값으로 재설정합니다." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "" "WHITE BULLET 기호 아이콘은 설정이 현재 옵션 그룹에 대해 마지막으로 저장 된 사" "전 설정과 동일 하다는 것을 나타냅니다." #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -8963,12 +8961,12 @@ msgstr "" "왼쪽 단추의 경우: 비시스템(또는 비기본적) 사전 설정을 나타내고,\n" "오른쪽 단추: 설정이 수정되지 않았음을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "돌아가기 화살표" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8980,7 +8978,7 @@ msgstr "" "뒤로 화살표 아이콘을 클릭하여 현재 옵션 그룹에 대한 모든 설정을 마지막으로 저" "장된 사전 설정으로 재설정합니다." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -8988,7 +8986,7 @@ msgstr "" "잠긴 LOCK 아이콘은 설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하다" "는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9000,11 +8998,11 @@ msgstr "" "현재 옵션 그룹에 대한 모든 설정을 시스템(또는 기본값) 값으로 재설정하려면 클" "릭합니다." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "WHITE BULLET 아이콘은 시스템 사전 설정이 아닌 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9012,7 +9010,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 설정이 현재 옵션 그룹에 대해 마지막으로 저장 된 사" "전 설정과 동일 하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9024,14 +9022,14 @@ msgstr "" "마지막 현재 옵션 그룹에 대 한 모든 설정 다시 설정을 클릭 하 여 사전 설정을 저" "장." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" "LOCK 아이콘잠기는 값이 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9041,7 +9039,7 @@ msgstr "" "을 나타냅니다.\n" "현재 값을 시스템(또는 기본값) 값으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9049,7 +9047,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 마지막으로 저장 한 사전 설정과 동일한 값을 나타냅" "니다." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9059,31 +9057,31 @@ msgstr "" "음을 나타냅니다.\n" "현재 값을 마지막 저장된 사전 설정으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "재료" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "서포트 헤드" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "서포트 기둥" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "서포트 기둥 및 접합부 연결" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "자동 생성" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9092,11 +9090,11 @@ msgstr "" "\"%1%\"는 \"%3%\" 범주에 있기 때문에 \"%2% %1%\"이 비활성화됩니다.\n" "\"%1%\"을 활성화하려면 \"%2%\"을 끄십시오." -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "객체 고도" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "물체 주위의 패드" @@ -9181,7 +9179,7 @@ msgstr "" "저장되지 않은 변경 사항에 대해 다시 묻는 것입니다." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9248,49 +9246,49 @@ msgstr "" "지 않은 변경 사항이 있습니다." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "압출기 수" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9932,26 +9930,26 @@ msgid "" msgstr "" "%1% 대해 압출 폭을 계산할 수 없습니다: 변수 \"%2%\"에 액세스할 수 없습니다." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "선택한 3mf 파일은 최신 버전의 %1% 저장되었으며 호환되지 않습니다." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10707,8 +10705,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10723,9 +10721,8 @@ msgstr "이 팬 속도는 모든 브릿지 및 오버행 중에 적용됩니다. #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10930,8 +10927,8 @@ msgstr "" msgid "Default print profile" msgstr "기본 인쇄 프로파일" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11078,8 +11075,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm 또는 %" @@ -11159,7 +11157,7 @@ msgid "Extruder Color" msgstr "익스트루더 컬러" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "이것은 시각적 도움말로 Slic3r 인터페이스에서만 사용된다." @@ -11252,7 +11250,7 @@ msgstr "" msgid "approximate seconds" msgstr "근사치 초" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "색상" @@ -11425,8 +11423,8 @@ msgstr "" "여기에 필라멘트 직경을 입력하십시오. 정밀도가 필요하므로 캘리퍼를 사용하여 필" "라멘트를 따라 여러 번 측정 한 다음 평균을 계산하십시오." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "밀도" @@ -11491,7 +11489,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(알 수 없음)" @@ -13175,7 +13173,7 @@ msgid "" "plane." msgstr "이 설정을 사용하여지지 평면 패턴을 수평면으로 회전시킵니다." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13763,33 +13761,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13801,11 +13801,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13814,63 +13814,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13879,63 +13851,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "표시 폭" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "디스플레이의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "표시 높이" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "디스플레이 높이" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "수평 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "가로로 대칭" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "출력 이미지의 수평 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "세로 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "세로로 미러" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "출력 이미지의 수직 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "표시 방향" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13944,55 +13916,55 @@ msgstr "" "SLA 프린터 내부에 실제 LCD 디스플레이 방향을 설정합니다. 세로 모드는 디스플레" "이 너비와 높이 매개 변수의 의미를 뒤집고 출력 이미지가 90도 회전합니다." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "가로" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "세로" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "빠른" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "빠른 기울기" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "빠른 기울기의 시간" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "느리게" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "천천히 기울이기" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "천천히 기울이는 속도" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "영역 채우기" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14002,59 +13974,59 @@ msgstr "" "인쇄 영역이 지정 된 값을 초과 하면 \n" "그런 다음 느린 기울기가 사용 됩니다, 그렇지 않으면-빠른 기울기가 됩니다" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "프린터 크기 조정 보정" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "프린터 절대 보정" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "보정 의 표시에 따라 슬라이스 된 2D 다각형을 팽창하거나 수축합니다." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "코끼리 발 최소 폭" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "코끼리 발 보정을 할 때 유지 해야 하는 기능의 최소 폭." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "프린터 감마 보정" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14064,145 +14036,145 @@ msgstr "" "중간에 임계값이 임계화 의미입니다. 이 동작은 폴리곤의 구멍을 잃지 않고 안티알" "리아싱을 제거 합니다." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA 재료 유형" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "초기 레이어 높이" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "병 볼륨" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "병 무게" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "가격 /병" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "페이드 레이어" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "노출 시간에 필요한 레이어 수가 초기 노출 시간에서 노출 시간으로 페이드" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "최소 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "최대 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "노출 시간" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "최소 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "최대 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "최소 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "확장에 대한 수정" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA 프린트 소재 노트" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "여기에서 SLA 인쇄 자료에 대한 메모를 넣을 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "기본 SLA 재질 프로파일" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "지원 생성" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "모델에 대한 지원 생성" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "핀헤드 프론트 직경" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "헤드 포인팅 측면 지름" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "잘못된 헤드 관통" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "핀헤드가 모델 표면에 침투해야 하는 양" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "핀헤드 너비" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "뒤쪽 구 중심에서 앞쪽 구 중심 까지의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "기둥 직경" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "서포트 기둥의 지름 (mm)" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "작은 기둥 직경 퍼센트" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14210,11 +14182,11 @@ msgstr "" "일반 필라가 맞지 않는 문제가 있는 부위에 사용되는 일반 기둥 직경에 비해 작은 " "기둥의 백분율입니다." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "기둥의 최대 교량" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14222,11 +14194,11 @@ msgstr "" "기둥에 배치할 수 있는 최대 브리지 수입니다. 브리지는 지지점 핀헤드를 잡고 작" "은 가지로 기둥에 연결합니다." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "기둥 연결 모드" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14236,23 +14208,23 @@ msgstr "" "로 처음 두 사이를 전환 하는 지그재그, 크로스 (지그재그 더블 지그재그) 또는 동" "적 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "지그재그" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "십자가" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "동적" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "기둥 확대 계수" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14260,27 +14232,27 @@ msgstr "" "브릿지 또는 기둥을 다른 기둥에 병합 하면 반지름을 늘릴 수 있습니다. 0은 증가 " "없음을 의미 하나는 전체 증가를 의미 합니다." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "서포트 베이스 지름" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "기둥 베이스의 mm 직경" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "서포트 기준 높이" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "서포트 베이스 원추의 높이" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "지지 기지 안전 거리" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14289,34 +14261,34 @@ msgstr "" "모델에서 mm의 기둥 베이스의 최소 거리입니다. 이 매개 변수에 따른 간격이 모델" "과 패드 사이에 삽입되는 0 고도 모드에서 의미가 있습니다." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "임계 각도" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "서포트 스틱과 접합부를 연결 하는 기본 각도입니다." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "최대 브리지 길이" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "브릿지의 최대 길이" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "최대 기둥 연결 거리" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" "서로 연결 되는 두기둥의 최대 거리. 0 값은 기둥을 계단식으로 금지 합니다." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -14324,39 +14296,39 @@ msgstr "" "지원되는 개체를 들어 올려야 하는 지원 의 양입니다. \"개체 주위 의 패드\"가 활" "성화되면 이 값은 무시됩니다." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "이는 서포트 점 밀도의 상대적인 척도입니다." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "서포트 지점의 최소 거리" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "서포트 지점은 이 임계값 보다 더 가깝게 배치 되지 않습니다." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "패드 사용" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "서포트 되는 모델 아래에 패드 추가" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "패드 벽 두께" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "패드의 두께와 선택적 캐비티 벽." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "패드 벽 높이" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14367,19 +14339,19 @@ msgstr "" "이 기능을 활성화 할 때 주의 해야할, 일부 수 캐비티 내부 극단적인 흡입 효과를 " "생성 할 수도 있기 때문에, vat 호일 인쇄를 벗겨 어렵게 만든다." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "패드 브럼 사이즈" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "패드가 포함된 형상 주위에 얼마나 멀리 확장되어야 합니까?" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "최대 병합 거리" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14389,94 +14361,94 @@ msgstr "" "변수는 두 개의 작은 패드의 중심이 얼마나 되어야 하는지 정의 합니다. 그들은 하" "나의 패드에 병합을 얻을 것이다." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "패드 벽 경사" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" "침대 평면을 기준으로 패드 벽의 경사입니다. 90도는 직선 벽을 의미합니다." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "오브젝트 주위에 패드를 만들고 지지표 표고를 무시합니다." -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "사방 물체 주위의 패드" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "사방 물체 주위의 힘 패드" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "패드 오브젝트 갭" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "오브젝트 바닥과 생성된 패드 사이의 간격이 0 고도 모드에서 발생합니다." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "패드 오브젝트 커넥터 보폭" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "오브젝트와 생성된 패드를 연결하는 두 커넥터 스틱 사이의 거리입니다." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "패드 오브젝트 커넥터 너비" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "오브젝트와 생성된 패드를 연결하는 커넥터 스틱의 너비입니다." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "패드 오브젝트 커넥터 침투" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "작은 커넥터가 모델 본체에 얼마나 침투해야 하는가." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "중공 활성화" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "빈 인테리어를 가지고 모델을 중공" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "벽 두께" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "비어 있는 모델의 최소 벽 두께입니다." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "명중률" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" "성능 대 계산의 정확도. 값이 낮을수록 원치 않는 아티팩트가 생성될 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14488,185 +14460,185 @@ msgstr "" "플러스 닫는 거리)로 계산된 다음 지정된 오프셋으로 다시 팽창합니다. 닫는 거리" "가 클수록 내부가 더 둥글게 됩니다. 0에서 내부는 외관을 가장 닮은 것입니다." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "OBJ 내보내기" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "모델을 OBJ로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "수출 SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "모델을 분할하고 SLA 인쇄 레이어를 PNG로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "3MF 내보내기" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "모델(들)을 3MF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "AMF로 내보내기" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "모델을 AMF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "STL로 내보내기" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "모델을 STL로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "모델을 슬라이스하고 도구 경로를 G 코드로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G 코드 뷰어" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "이미 슬라이스되고 저장된 G 코드 시각화" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "슬라이스" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" " printer_technology 구성 값을 기반으로 모델을 FFF 또는 SLA로 슬라이스합니다." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "도움말" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "도움말 표시하기" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "도움말(FFF 옵션)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "인쇄/G 코드 구성 옵션의 전체 목록을 표시합니다." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "도움말(SLA 옵션)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "SLA 인쇄 구성 옵션의 전체 목록을 표시합니다." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "출력 모델 정보" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "콘솔에 모델에 대한 정보를 작성합니다." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "구성 파일 저장" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "지정된 파일에 구성을 저장합니다." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY 정렬" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "모델을 지정된 점에 맞춥니다." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "지정된 Z에서 모델을 잘라냅니다." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "중앙" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "지정된 점을 중심으로 인쇄 합니다." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "준비하지 마십시오" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" "병합하기 전에 지정된 모델을 재정렬하고 원래 XY 좌표를 유지하지 마십시오." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "복사" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "이 계수에 따라 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "그리드별 중복" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "그리드를 만들어 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" "한 번 작업을 수행하기 위해 제공 된 모델을 정렬하고 단일 모델로 병합 합니다." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14674,60 +14646,60 @@ msgstr "" "메쉬를 복구 하십시오 (요청 된 작업을 수행 하기 위해 모델을 슬라이스 해야 할때" "마다 이 옵션이 암시적으로 추가 됨)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Z 축 주위 회전 각도입니다." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "X 주위 회전" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "X 축을 중심 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Y 주위 회전" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Y 축을 중심 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "배율 또는 백분율을 조정합니다." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" "지정 된 모델에서 연결 되지 않은 부품을 감지 하여 별도의 객체로 분할 합니다." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "크기 조정" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "지정된 볼륨에 맞게 배율을 조정합니다." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "존재하지 않는 구성 파일 무시" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "--load에 제공된 파일이 존재하지 않는 경우 실패하지 마십시오." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14735,27 +14707,27 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "로드 구성 파일" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -14763,21 +14735,21 @@ msgstr "" "지정된 파일에서 구성을 로드합니다. 여러 파일에서 옵션을 로드하는 데 두 번 이" "상 사용할 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "출력 파일" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "출력이 기록될 파일(지정되지 않은 경우 입력 파일을 기반으로 합니다)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "단일 인스턴스 모드" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -14787,11 +14759,11 @@ msgstr "" "나 기존 PrusaSlicer 창이 활성화됩니다. 응용 프로그램 기본 설정에서 " "\"single_instance\" 구성 값을 재정의합니다." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "데이터 디렉터리" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14800,11 +14772,11 @@ msgstr "" "지정된 디렉터리에서 설정을 로드하고 저장합니다. 이 기능은 서로 다른 프로파일" "을 유지 관리하거나 네트워크 저장소의 구성을 포함하는 데 유용합니다." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "로깅 수준" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -14814,11 +14786,11 @@ msgstr "" "적\n" "예를 들어. loglevel=2는 치명적, 오류 및 경고 수준 메시지를 기록합니다." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "소프트웨어 렌더러로 렌더링" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/ko_KR/PrusaSlicer_ko_KR.po b/resources/localization/ko_KR/PrusaSlicer_ko_KR.po index 93a403ed3..510b303b9 100644 --- a/resources/localization/ko_KR/PrusaSlicer_ko_KR.po +++ b/resources/localization/ko_KR/PrusaSlicer_ko_KR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2021-04-04 22:15+0900\n" "Last-Translator: \n" "Language-Team: \n" @@ -18,16 +18,16 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.4.2\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "다른 저작권" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "저작권" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,26 +35,26 @@ msgstr "" "다음의 모든 프로그램 (라이브러리)의 라이센스 계약은 응용 프로그램 라이센스 계" "약의 일부입니다" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "%s 정보" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "버전" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "이 라이센스는" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero 일반 공공 라이센스, 버전 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -62,7 +62,7 @@ msgstr "" "프루사슬라이서는 알레산드로 라넬루치와 RepRap 커뮤니티 Slic3r를 기반으로합니" "다." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -72,7 +72,7 @@ msgstr "" "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others. 한국어 번역 울산에테르, 밤송이직박구리 (2.2.0)" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "버전 정보" @@ -213,7 +213,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "크기" @@ -271,19 +271,18 @@ msgstr "사각 전면 왼쪽 모서리에서 원저(0, 0) G-코드 좌표 거리 #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -316,7 +315,7 @@ msgid "Load shape from STL..." msgstr "STL파일 로드." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "설정" @@ -329,7 +328,7 @@ msgid "Load..." msgstr "불러오기..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "삭제" @@ -543,19 +542,19 @@ msgstr "직선 채우기 패턴으로 전환해야 합니까?" msgid "Infill" msgstr "채움(infill)" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "머리 침투가 머리 너비보다 크지 않아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "잘못된 헤드 관통" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "핀헤드 지름은 기둥 지름 보다 작아야 합니다." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "잘못된 핀 헤드 지름" @@ -664,7 +663,7 @@ msgid "Standard" msgstr "표준" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "모두" @@ -924,7 +923,7 @@ msgstr "%s 지원하는 다른 공급업체 선택" msgid "Firmware Type" msgstr "펌웨어 종류" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "펌웨어 철회" @@ -1227,7 +1226,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "실행 취소" @@ -1866,7 +1865,7 @@ msgstr "확인" msgid "Cancelling..." msgstr "취소 중..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1882,7 +1881,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "추가" @@ -1892,7 +1891,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "삭제" @@ -2073,8 +2072,8 @@ msgstr "운동" msgid "Extrusion" msgstr "압출 없음" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "리트랙션 후 최소 이동 거리" @@ -2129,7 +2128,7 @@ msgstr "출력 설정" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "필라멘트 설정을 선택" @@ -2351,7 +2350,7 @@ msgid "Add..." msgstr "더하기..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "모두 삭제" @@ -2398,7 +2397,7 @@ msgid "Next Undo action: %1%" msgstr "다음 작업 실행 취소 : %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "다시 실행" @@ -2440,7 +2439,7 @@ msgid "Selection-Remove from rectangle" msgstr "선택 영역-사각형에서 제거" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "잘라내기" @@ -2695,7 +2694,7 @@ msgid "Quality" msgstr "품질" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "닫힘 거리" @@ -2798,7 +2797,7 @@ msgstr "이동" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "회전" @@ -2815,7 +2814,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "크기" @@ -2866,7 +2865,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "오류" @@ -2950,7 +2949,7 @@ msgid "Minimal points distance" msgstr "최소한의 지점 거리" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "서포트 지점 밀도" @@ -3754,7 +3753,7 @@ msgid "Speed" msgstr "속도" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3777,52 +3776,51 @@ msgstr "스커트와 브림" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "고급" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "서포트" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "패드" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "물체 속이 빈(Hollowing)" @@ -3964,7 +3962,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "병합" @@ -4025,7 +4023,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "분할" @@ -4661,11 +4659,11 @@ msgstr "높이" msgid "Width" msgstr "넓이" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "팬 속도" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "온도" @@ -4946,7 +4944,7 @@ msgstr "침대에 다중 부품 오브젝트가 있는 SLA 프로젝트를 로 msgid "Attention!" msgstr "주의!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "키보드 단축키" @@ -4983,7 +4981,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "ini/amf/3mf/gcode에서 구성을 로드하고 병합" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "G코드 내보내기" @@ -5332,13 +5330,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "G코드 파일 열기" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "디스크에서 플래터 다시 로드" @@ -5375,7 +5373,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "미리보기" @@ -5458,7 +5456,7 @@ msgid "Keyboard shortcuts" msgstr "키보드 단축키" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "새로운 프라사슬라이스인스턴스 열기" @@ -5466,11 +5464,11 @@ msgstr "새로운 프라사슬라이스인스턴스 열기" msgid "G-code preview" msgstr "G 코드 미리 보기" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "G코드 뷰어 열기" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "프라우슬라이서 오픈" @@ -5496,13 +5494,13 @@ msgid "Print Settings" msgstr "출력 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "재질 설정" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "필라멘트 설정" @@ -5585,100 +5583,100 @@ msgstr "대화상자 표시" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "키보드 단축키 목록 표시" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "ISO" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "표준 보기" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "상단 " -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "위에서 보기 " #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "하단 " -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "바닥 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "앞 " -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "앞면 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "뒷면 " -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "뒷면 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "왼쪽" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "왼쪽 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "오른쪽" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "오른쪽 보기 " -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "새로운 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "새 프로젝트 시작" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&프로젝트 열기" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "프로젝트 파일 열기" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "최근 프로젝트" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5686,523 +5684,523 @@ msgstr "" "선택한 프로젝트를 더 이상 사용할 수 없습니다.\n" "최근 프로젝트 목록에서 제거하시겠습니까?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "프로젝트 저장" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "현재 프로젝트 파일 저장" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "프로젝트 저장 및" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "현재 프로젝트 파일을 저장." -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "STL/OBJ/AMF/3MF 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "모델 로드" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "제국 단위로 저장된 모델 로드" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "&구성 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "내 보낸 구성 파일로드" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "프로젝트 파일에서 구성 부하" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "가져오기 구성 및 번들 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "미리 설정 번들값 가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&가져오기" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "내보내기 및 G 코드" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "현재 플레이터를 G 코드로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "S&end G- 코드" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "현재 플레이트를 G 코드로 인쇄하기 위해 보내기" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "현재 플레이트를 G 코드로 SD 카드/플래시 드라이브로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "서포트를 포함 하여 현재 플레이터를 STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "공구 경로를 OBJ로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "&구성 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "현재 구성을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "구성 및 번들 내보내기 " -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "모든 이전 설정을 파일로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "프린터 구성 번들 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "실제 프린터를 포함한 모든 사전 설정내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&내보내기" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "G 코드가 내보낸 후 SD 카드/플래시 드라이브를 배출합니다." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "빠른 슬라이스" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "파일을 G 코드로 분할" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "빠른 슬라이스와 저장" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "파일을 G 코드로 분할하고 다른 이름으로 저장" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "마지막으로 빠른 슬라이스 반복" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)지금 슬라이스 " -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "새로운 슬라이싱 작업 시작" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "STL 파일 수리" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "STL 파일을 자동으로 복구합니다" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "종료" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "종료 %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "모든 개체를 선택 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "모든 개체의 선택 취소" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "현재 선택 영역을 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "모든 객체를 삭제 합니다" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "되돌리기(&U)" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&앞으로" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "복사(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "선택영역을 클립보드로 복사합니다" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&붙여넣기" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "붙여 넣기 클립 보드" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "검색" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "설정 검색" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&선택 및 플래이터 탭" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "플레이터를 보기" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "프린트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "인쇄 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&필라멘트 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "필라멘트 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "인쇄 및 어 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "프린터 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "3D 편집 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "사전 보기" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "3D 슬라이스 미리 보기 표시" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "프린터 호스트 업로드 대기" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "인쇄 호스트 업로드 대기열 창 표시" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "3D 씬에서 개체/인스턴스 레이블 표시" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "사이드바 축소" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&파일" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&수정" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&윈도우" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "보기(&V)" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&도움" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "G 코드 열기" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "프라우슬라이서 오픈" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "보내기" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "끝내고 프린트" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "재료(메터리리알) 설정 탭" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "슬라이스 할 파일을 선택하십시오 (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "이전에 분리 된 파일이 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "이전에 분리 된 파일 (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 #, fuzzy msgid ") not found." msgstr ")을 찾을 수 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "파일을 찾을 수 없음" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s 파일을 저장 합니다:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG 업로드 사용" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "%1%로 내보낸 G 코드 파일" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "압축(zip)파일 다른이름 저장:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "새로운 슬라이싱 작업 시작" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "처리 %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% 성공적으로 슬라이스되었습니다." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "슬라이스 완료!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "복구 할 STL 파일을 선택." -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "OBJ 파일을 저장하십시오 (STL보다 오류를 덜 조정할 가능성이 적음)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "파일이 복구되었습니다." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "수정" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "구성을 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "불러올 구성 선택 :" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "이전 번들 설정을 다음과 같이 저장 :" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d 사전 설정을 가져 왔습니다." @@ -6422,8 +6420,8 @@ msgstr "적용" msgid "Instance %d" msgstr "인스턴스 %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "레이어" @@ -6498,7 +6496,7 @@ msgstr "프린터의 설명 이름" msgid "Add preset for this printer device" msgstr "이 프린터 장치에 대한 사전 설정 추가" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "프린터 호스트 업로드 대기" @@ -6651,7 +6649,7 @@ msgid "Select what kind of support do you need" msgstr "필요한 지원 종류를 선택합니다." #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "출력물만 서포트를 지지" @@ -6747,7 +6745,7 @@ msgid "(including spool)" msgstr "(스풀 포함)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "비용" @@ -7217,10 +7215,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "클립보드에서 붙여넣기" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "일반" @@ -7687,7 +7685,7 @@ msgid "Add/Remove presets" msgstr "사전 설정 추가/제거" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "실제 프린터 추가" @@ -7699,7 +7697,7 @@ msgstr "사전 설정 편집" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "실제 프린터 편집" @@ -8003,11 +8001,11 @@ msgstr "전혀 충돌 없음" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8119,12 +8117,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "\"%1%\" 사전 설정으로 전환하기만 하면 됩니다." #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "스텔스" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "보통" @@ -8376,7 +8374,7 @@ msgstr "전체 프로필 이름" msgid "symbolic profile name" msgstr "기호 프로필 이름" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "레이어 및 둘레" @@ -8467,7 +8465,7 @@ msgstr "오버랩" msgid "Flow" msgstr "흐름도" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "기타" @@ -8475,52 +8473,52 @@ msgstr "기타" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "출력 옵션" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "순차적 인쇄" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "압출기 클리어런스" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "출력 파일" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "포스트 프로세싱 스크립트" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "메모" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "종속성" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "프로파일 속한곳" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8532,82 +8530,82 @@ msgid_plural "" "printing time estimation." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "필라멘트 재정의" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "노즐" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "침대" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "자동 냉각 사용" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "활성화" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "팬 설정" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "냉각 한계 값" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "필라멘트 속성" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "인쇄 속도 재정의" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "타워 파라미터 지우기" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "MMU 프린터의 툴체인지 매개 변수" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "래밍 설정" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "사용자 지정 G 코드" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G 코드 시작" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "끝 G 코드" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "볼륨 흐름 힌트를 사용할 수 없음" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8628,20 +8626,20 @@ msgstr "" "열립니다. 실제 프린터 프로파일은 PrusaSlicer/physical_printer 디렉터리에 저장" "됩니다." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "크기 및 좌표" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "권한" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "프린터 익스트루더 숫자." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8652,64 +8650,64 @@ msgstr "" "모든 압출기는 동일한 직경을 가져야 합니다.\n" "모든 압출기의 직경을 첫 번째 압출기 노즐 직경 값으로 변경하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "노즐 직경" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "레이어가 G 코드를 변경하기 전에" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "레이어 변경 후 G 코드" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "공구 변경 G 코드" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "객체 간 G 코드 (순차 인쇄용)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "색상 변경 G 코드" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G 코드 인쇄 일시 중지" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "템플릿 사용자 지정 G 코드" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "표시" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "기울이기" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "기울이기 시간" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "수정" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "최소 노출 시간" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8718,39 +8716,39 @@ msgstr "최소 노출 시간" msgid "Machine limits" msgstr "기계 제한" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "이 열의 값은 일반 모드입니다" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "이 열의 값은 스텔스 모드용입니다." -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "최대 피드값" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "최대 가속" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "바보 제한" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "최소 공급률" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "단일 압출기 MM 설정" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "싱글 익스트루더 멀티메터리알 파라미터" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -8758,29 +8756,29 @@ msgstr "" "이것은 단일 압출기 다중 재료 프린터이며, 모든 압출기의 직경은 새 값으로 설정" "됩니다. 계속 하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "레이어 높이 제한" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "위치 (멀티 익스트루더 프린터 포함)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Z축 올림" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "도구가 비활성화된 때의 철회(다중 압출기 설정에 대한 고급 설정)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "필라멘트 색상으로 재설정" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8790,51 +8788,51 @@ msgstr "" "\n" "펌웨어 철회를 활성화하기 위해 비활성화해야 합니까?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "펌웨어 철회" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "분리" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "제거" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "삭제" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "이 실제 프린터의 마지막 사전 설정입니다." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "실제 프린터 \"%2%\"에서 \"%1%\" 사전 설정을 삭제하시겠습니까?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" "The physical printers below are based on the preset, you are going to delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8843,62 +8841,62 @@ msgid_plural "" "delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" "Note, that these printers will be deleted after deleting the selected preset." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "선택한 사전 설정의 %1%를 선택 하시겠습니까?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% 기본설정" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "설정" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "찾기" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "전체 단어 일치" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "기계 제한은 G 코드로 방출되고 인쇄 시간을 예측하는 데 사용됩니다." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -8908,26 +8906,26 @@ msgstr "" "는 데 사용됩니다, 따라서 프린터가 기계 제한의 다른 세트를 적용 할 수 있으므" "로 정확하지 않을 수 있습니다." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" "기계 제한이 설정되지 않으므로 인쇄 시간 추정치가 정확하지 않을 수 있습니다." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "잠긴 잠금" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" "설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "" "UNLOCKED LOCK 아이콘은 일부 설정이 변경되었으며 현재 옵션 그룹의 시스템(또는 " @@ -8936,7 +8934,7 @@ msgstr "" "릭합니다." #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8948,14 +8946,14 @@ msgstr "" "잠금 해제 된 LOCK 아이콘을 클릭하여 현재 옵션 그룹에 대한 모든 설정을 시스템 " "(또는 기본값) 값으로 재설정합니다." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "" "WHITE BULLET 기호 아이콘은 설정이 현재 옵션 그룹에 대해 마지막으로 저장 된 사" "전 설정과 동일 하다는 것을 나타냅니다." #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -8963,12 +8961,12 @@ msgstr "" "왼쪽 단추의 경우: 비시스템(또는 비기본적) 사전 설정을 나타내고,\n" "오른쪽 단추: 설정이 수정되지 않았음을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "돌아가기 화살표" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8980,7 +8978,7 @@ msgstr "" "뒤로 화살표 아이콘을 클릭하여 현재 옵션 그룹에 대한 모든 설정을 마지막으로 저" "장된 사전 설정으로 재설정합니다." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -8988,7 +8986,7 @@ msgstr "" "잠긴 LOCK 아이콘은 설정이 현재 옵션 그룹의 시스템(또는 기본값) 값과 동일하다" "는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9000,11 +8998,11 @@ msgstr "" "현재 옵션 그룹에 대한 모든 설정을 시스템(또는 기본값) 값으로 재설정하려면 클" "릭합니다." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "WHITE BULLET 아이콘은 시스템 사전 설정이 아닌 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9012,7 +9010,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 설정이 현재 옵션 그룹에 대해 마지막으로 저장 된 사" "전 설정과 동일 하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9024,14 +9022,14 @@ msgstr "" "마지막 현재 옵션 그룹에 대 한 모든 설정 다시 설정을 클릭 하 여 사전 설정을 저" "장." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" "LOCK 아이콘잠기는 값이 시스템(또는 기본값) 값과 동일하다는 것을 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9041,7 +9039,7 @@ msgstr "" "을 나타냅니다.\n" "현재 값을 시스템(또는 기본값) 값으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9049,7 +9047,7 @@ msgstr "" "WHITE BULLET 기호 아이콘은 마지막으로 저장 한 사전 설정과 동일한 값을 나타냅" "니다." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9059,31 +9057,31 @@ msgstr "" "음을 나타냅니다.\n" "현재 값을 마지막 저장된 사전 설정으로 재설정하려면 클릭합니다." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "재료" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "서포트 헤드" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "서포트 기둥" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "서포트 기둥 및 접합부 연결" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "자동 생성" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9092,11 +9090,11 @@ msgstr "" "\"%1%\"는 \"%3%\" 범주에 있기 때문에 \"%2% %1%\"이 비활성화됩니다.\n" "\"%1%\"을 활성화하려면 \"%2%\"을 끄십시오." -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "객체 고도" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "물체 주위의 패드" @@ -9181,7 +9179,7 @@ msgstr "" "저장되지 않은 변경 사항에 대해 다시 묻는 것입니다." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9248,49 +9246,49 @@ msgstr "" "지 않은 변경 사항이 있습니다." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "압출기 수" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9932,26 +9930,26 @@ msgid "" msgstr "" "%1% 대해 압출 폭을 계산할 수 없습니다: 변수 \"%2%\"에 액세스할 수 없습니다." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "선택한 3mf 파일은 최신 버전의 %1% 저장되었으며 호환되지 않습니다." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10707,8 +10705,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10723,9 +10721,8 @@ msgstr "이 팬 속도는 모든 브릿지 및 오버행 중에 적용됩니다. #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10930,8 +10927,8 @@ msgstr "" msgid "Default print profile" msgstr "기본 인쇄 프로파일" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11078,8 +11075,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm 또는 %" @@ -11159,7 +11157,7 @@ msgid "Extruder Color" msgstr "익스트루더 컬러" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "이것은 시각적 도움말로 Slic3r 인터페이스에서만 사용된다." @@ -11252,7 +11250,7 @@ msgstr "" msgid "approximate seconds" msgstr "근사치 초" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "색상" @@ -11425,8 +11423,8 @@ msgstr "" "여기에 필라멘트 직경을 입력하십시오. 정밀도가 필요하므로 캘리퍼를 사용하여 필" "라멘트를 따라 여러 번 측정 한 다음 평균을 계산하십시오." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "밀도" @@ -11491,7 +11489,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(알 수 없음)" @@ -13175,7 +13173,7 @@ msgid "" "plane." msgstr "이 설정을 사용하여지지 평면 패턴을 수평면으로 회전시킵니다." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13763,33 +13761,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13801,11 +13801,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13814,63 +13814,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13879,63 +13851,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "표시 폭" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "디스플레이의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "표시 높이" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "디스플레이 높이" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y의 픽셀 수" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "수평 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "가로로 대칭" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "출력 이미지의 수평 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "세로 미러링 표시" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "세로로 미러" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "출력 이미지의 수직 미러링 사용" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "표시 방향" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13944,55 +13916,55 @@ msgstr "" "SLA 프린터 내부에 실제 LCD 디스플레이 방향을 설정합니다. 세로 모드는 디스플레" "이 너비와 높이 매개 변수의 의미를 뒤집고 출력 이미지가 90도 회전합니다." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "가로" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "세로" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "빠른" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "빠른 기울기" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "빠른 기울기의 시간" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "느리게" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "천천히 기울이기" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "천천히 기울이는 속도" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "영역 채우기" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14002,59 +13974,59 @@ msgstr "" "인쇄 영역이 지정 된 값을 초과 하면 \n" "그런 다음 느린 기울기가 사용 됩니다, 그렇지 않으면-빠른 기울기가 됩니다" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "프린터 크기 조정 보정" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "프린터 절대 보정" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "보정 의 표시에 따라 슬라이스 된 2D 다각형을 팽창하거나 수축합니다." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "코끼리 발 최소 폭" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "코끼리 발 보정을 할 때 유지 해야 하는 기능의 최소 폭." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "프린터 감마 보정" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14064,145 +14036,145 @@ msgstr "" "중간에 임계값이 임계화 의미입니다. 이 동작은 폴리곤의 구멍을 잃지 않고 안티알" "리아싱을 제거 합니다." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA 재료 유형" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "초기 레이어 높이" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "병 볼륨" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "병 무게" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "가격 /병" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "페이드 레이어" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "노출 시간에 필요한 레이어 수가 초기 노출 시간에서 노출 시간으로 페이드" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "최소 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "최대 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "노출 시간" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "최소 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "최대 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "최소 초기 노출 시간" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "확장에 대한 수정" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA 프린트 소재 노트" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "여기에서 SLA 인쇄 자료에 대한 메모를 넣을 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "기본 SLA 재질 프로파일" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "지원 생성" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "모델에 대한 지원 생성" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "핀헤드 프론트 직경" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "헤드 포인팅 측면 지름" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "잘못된 헤드 관통" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "핀헤드가 모델 표면에 침투해야 하는 양" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "핀헤드 너비" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "뒤쪽 구 중심에서 앞쪽 구 중심 까지의 폭입니다" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "기둥 직경" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "서포트 기둥의 지름 (mm)" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "작은 기둥 직경 퍼센트" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14210,11 +14182,11 @@ msgstr "" "일반 필라가 맞지 않는 문제가 있는 부위에 사용되는 일반 기둥 직경에 비해 작은 " "기둥의 백분율입니다." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "기둥의 최대 교량" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14222,11 +14194,11 @@ msgstr "" "기둥에 배치할 수 있는 최대 브리지 수입니다. 브리지는 지지점 핀헤드를 잡고 작" "은 가지로 기둥에 연결합니다." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "기둥 연결 모드" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14236,23 +14208,23 @@ msgstr "" "로 처음 두 사이를 전환 하는 지그재그, 크로스 (지그재그 더블 지그재그) 또는 동" "적 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "지그재그" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "십자가" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "동적" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "기둥 확대 계수" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14260,27 +14232,27 @@ msgstr "" "브릿지 또는 기둥을 다른 기둥에 병합 하면 반지름을 늘릴 수 있습니다. 0은 증가 " "없음을 의미 하나는 전체 증가를 의미 합니다." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "서포트 베이스 지름" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "기둥 베이스의 mm 직경" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "서포트 기준 높이" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "서포트 베이스 원추의 높이" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "지지 기지 안전 거리" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14289,34 +14261,34 @@ msgstr "" "모델에서 mm의 기둥 베이스의 최소 거리입니다. 이 매개 변수에 따른 간격이 모델" "과 패드 사이에 삽입되는 0 고도 모드에서 의미가 있습니다." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "임계 각도" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "서포트 스틱과 접합부를 연결 하는 기본 각도입니다." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "최대 브리지 길이" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "브릿지의 최대 길이" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "최대 기둥 연결 거리" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "" "서로 연결 되는 두기둥의 최대 거리. 0 값은 기둥을 계단식으로 금지 합니다." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -14324,39 +14296,39 @@ msgstr "" "지원되는 개체를 들어 올려야 하는 지원 의 양입니다. \"개체 주위 의 패드\"가 활" "성화되면 이 값은 무시됩니다." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "이는 서포트 점 밀도의 상대적인 척도입니다." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "서포트 지점의 최소 거리" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "서포트 지점은 이 임계값 보다 더 가깝게 배치 되지 않습니다." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "패드 사용" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "서포트 되는 모델 아래에 패드 추가" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "패드 벽 두께" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "패드의 두께와 선택적 캐비티 벽." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "패드 벽 높이" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14367,19 +14339,19 @@ msgstr "" "이 기능을 활성화 할 때 주의 해야할, 일부 수 캐비티 내부 극단적인 흡입 효과를 " "생성 할 수도 있기 때문에, vat 호일 인쇄를 벗겨 어렵게 만든다." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "패드 브럼 사이즈" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "패드가 포함된 형상 주위에 얼마나 멀리 확장되어야 합니까?" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "최대 병합 거리" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14389,94 +14361,94 @@ msgstr "" "변수는 두 개의 작은 패드의 중심이 얼마나 되어야 하는지 정의 합니다. 그들은 하" "나의 패드에 병합을 얻을 것이다." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "패드 벽 경사" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" "침대 평면을 기준으로 패드 벽의 경사입니다. 90도는 직선 벽을 의미합니다." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "오브젝트 주위에 패드를 만들고 지지표 표고를 무시합니다." -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "사방 물체 주위의 패드" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "사방 물체 주위의 힘 패드" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "패드 오브젝트 갭" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "오브젝트 바닥과 생성된 패드 사이의 간격이 0 고도 모드에서 발생합니다." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "패드 오브젝트 커넥터 보폭" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "오브젝트와 생성된 패드를 연결하는 두 커넥터 스틱 사이의 거리입니다." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "패드 오브젝트 커넥터 너비" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "오브젝트와 생성된 패드를 연결하는 커넥터 스틱의 너비입니다." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "패드 오브젝트 커넥터 침투" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "작은 커넥터가 모델 본체에 얼마나 침투해야 하는가." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "중공 활성화" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "빈 인테리어를 가지고 모델을 중공" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "벽 두께" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "비어 있는 모델의 최소 벽 두께입니다." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "명중률" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" "성능 대 계산의 정확도. 값이 낮을수록 원치 않는 아티팩트가 생성될 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14488,185 +14460,185 @@ msgstr "" "플러스 닫는 거리)로 계산된 다음 지정된 오프셋으로 다시 팽창합니다. 닫는 거리" "가 클수록 내부가 더 둥글게 됩니다. 0에서 내부는 외관을 가장 닮은 것입니다." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "수출 OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "모델을 OBJ로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "수출 SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "모델을 분할하고 SLA 인쇄 레이어를 PNG로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "3MF 내보내기" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "모델(들)을 3MF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "AMF로 내보내기" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "모델을 AMF로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "STL로 내보내기" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "모델을 STL로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "모델을 슬라이스하고 도구 경로를 G 코드로 내보냅니다." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G 코드 뷰어" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "이미 슬라이스되고 저장된 G 코드 시각화" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "슬라이스" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "" " printer_technology 구성 값을 기반으로 모델을 FFF 또는 SLA로 슬라이스합니다." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "도움말" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "도움말 표시하기" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "도움말(FFF 옵션)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "인쇄/G 코드 구성 옵션의 전체 목록을 표시합니다." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "도움말(SLA 옵션)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "SLA 인쇄 구성 옵션의 전체 목록을 표시합니다." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "출력 모델 정보" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "콘솔에 모델에 대한 정보를 작성합니다." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "구성 파일 저장" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "지정된 파일에 구성을 저장합니다." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY 정렬" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "모델을 지정된 점에 맞춥니다." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "지정된 Z에서 모델을 잘라냅니다." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "중앙" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "지정된 점을 중심으로 인쇄 합니다." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "준비하지 마십시오" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "" "병합하기 전에 지정된 모델을 재정렬하고 원래 XY 좌표를 유지하지 마십시오." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "복사" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "이 계수에 따라 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "그리드별 중복" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "그리드를 만들어 복사본을 곱합니다." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" "한 번 작업을 수행하기 위해 제공 된 모델을 정렬하고 단일 모델로 병합 합니다." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14674,60 +14646,60 @@ msgstr "" "메쉬를 복구 하십시오 (요청 된 작업을 수행 하기 위해 모델을 슬라이스 해야 할때" "마다 이 옵션이 암시적으로 추가 됨)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Z 축 주위 회전 각도입니다." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "X 주위 회전" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "X 축을 중심 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Y 주위 회전" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Y 축을 중심 회전 각도 입니다." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "배율 또는 백분율을 조정합니다." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" "지정 된 모델에서 연결 되지 않은 부품을 감지 하여 별도의 객체로 분할 합니다." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "크기 조정" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "지정된 볼륨에 맞게 배율을 조정합니다." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "존재하지 않는 구성 파일 무시" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "--load에 제공된 파일이 존재하지 않는 경우 실패하지 마십시오." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14735,27 +14707,27 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "로드 구성 파일" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -14763,21 +14735,21 @@ msgstr "" "지정된 파일에서 구성을 로드합니다. 여러 파일에서 옵션을 로드하는 데 두 번 이" "상 사용할 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "출력 파일" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "출력이 기록될 파일(지정되지 않은 경우 입력 파일을 기반으로 합니다)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "단일 인스턴스 모드" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -14787,11 +14759,11 @@ msgstr "" "나 기존 PrusaSlicer 창이 활성화됩니다. 응용 프로그램 기본 설정에서 " "\"single_instance\" 구성 값을 재정의합니다." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "데이터 디렉터리" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14800,11 +14772,11 @@ msgstr "" "지정된 디렉터리에서 설정을 로드하고 저장합니다. 이 기능은 서로 다른 프로파일" "을 유지 관리하거나 네트워크 저장소의 구성을 포함하는 데 유용합니다." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "로깅 수준" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -14814,11 +14786,11 @@ msgstr "" "적\n" "예를 들어. loglevel=2는 치명적, 오류 및 경고 수준 메시지를 기록합니다." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "소프트웨어 렌더러로 렌더링" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/nl/PrusaSlicer_nl.po b/resources/localization/nl/PrusaSlicer_nl.po index 78ac5d1fc..01d8cf20e 100644 --- a/resources/localization/nl/PrusaSlicer_nl.po +++ b/resources/localization/nl/PrusaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2021-12-14 09:56+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -14,16 +14,16 @@ msgstr "" "X-Poedit-Basepath: .\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Gedeeltelijk auteursrecht" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Copyright" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -31,26 +31,26 @@ msgstr "" "Licentieovereenkomst van alle volgende programma's maken deel uit van de " "software-licentieovereenkomst" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Over %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Versie" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "is gelicenseerd onder de" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero Algemene Publieke Licentie, versie 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -58,7 +58,7 @@ msgstr "" "PrusaSlicer is gebaseerd op Slic3r van Alessandro Ranellucci en de RepRap-" "community." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -68,7 +68,7 @@ msgstr "" "Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik, Simon " "Tillema en vele anderen." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Kopieer versie-info" @@ -210,7 +210,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Grootte" @@ -269,19 +269,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -316,7 +315,7 @@ msgid "Load shape from STL..." msgstr "Laad vorm van STL..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Instellingen" @@ -329,7 +328,7 @@ msgid "Load..." msgstr "Laad..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Verwijder" @@ -558,19 +557,19 @@ msgstr "Moet dit aangepast worden naar het rechtlijnig patroon?" msgid "Infill" msgstr "Vulling" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Koppenetratie mag niet groter zijn dan de kopbreedte." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Ongeldige koppenetratie" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Pinkopdiameter moet kleiner zijn dan de pijlerdiameter." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Ongeldige pinkopdiameter" @@ -679,7 +678,7 @@ msgid "Standard" msgstr "Standaard" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Alles" @@ -950,7 +949,7 @@ msgstr "Kies een andere leverancier die ondersteund wordt door %s" msgid "Firmware Type" msgstr "Firmwaretype" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" @@ -1266,7 +1265,7 @@ msgstr "Uitvoeren" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Maak ongedaan" @@ -1928,7 +1927,7 @@ msgstr "Bevestiging" msgid "Cancelling..." msgstr "Annuleren..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Vormengalerij" @@ -1944,7 +1943,7 @@ msgstr "Voeg toe aan bed" msgid "Add selected shape(s) to the bed" msgstr "Voeg geselecteerd(e) object(en) toe aan bed" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Voeg toe" @@ -1954,7 +1953,7 @@ msgstr "Voeg een of meer aangepaste vormen toe" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Verwijder" @@ -2140,8 +2139,8 @@ msgstr "Beweging" msgid "Extrusion" msgstr "Extrusie" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retractie" @@ -2196,7 +2195,7 @@ msgstr "Printinstellingen" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -2420,7 +2419,7 @@ msgid "Add..." msgstr "Voeg toe..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Verwijder alles" @@ -2467,7 +2466,7 @@ msgid "Next Undo action: %1%" msgstr "Volgende ongedaan maken: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Doe opnieuw" @@ -2509,7 +2508,7 @@ msgid "Selection-Remove from rectangle" msgstr "Selectie - Verwijder van boxselectie" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Snij door" @@ -2771,7 +2770,7 @@ msgid "Quality" msgstr "Kwaliteit" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Sluitafstand" @@ -2878,7 +2877,7 @@ msgstr "Verplaats" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Roteer" @@ -2895,7 +2894,7 @@ msgstr "Toepassen" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Verschaal" @@ -2950,7 +2949,7 @@ msgstr "" "geselecteerd" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Fout" @@ -3034,7 +3033,7 @@ msgid "Minimal points distance" msgstr "Minimale puntafstand" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Dichtheid van supportpunten" @@ -3878,7 +3877,7 @@ msgid "Speed" msgstr "Snelheid" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3901,52 +3900,51 @@ msgstr "Skirt en brim" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Geavanceerd" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Support" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Basisplaat" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Uithollen" @@ -4088,7 +4086,7 @@ msgid "Revert conversion from meters" msgstr "Omrekenen van meters terugdraaien" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Samenvoegen" @@ -4149,7 +4147,7 @@ msgid "Split the selected object into individual parts" msgstr "Splits de geselecteerde objecten in individuele onderdelen" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Splits" @@ -4803,11 +4801,11 @@ msgstr "Hoogte" msgid "Width" msgstr "Breedte" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Ventilatorsnelheid" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatuur" @@ -5094,7 +5092,7 @@ msgstr "U kunt geen SLA-project laden met een meerdelig object op het bed" msgid "Attention!" msgstr "Attentie!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Sneltoetsen" @@ -5136,7 +5134,7 @@ msgstr "" "Laad configuratie van INI-, AMF-, 3MF- of gcode-bestanden en voeg samen" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exporteer gcode-bestand" @@ -5489,13 +5487,13 @@ msgstr "Stel het extrudernummer in voor de geselecteerde items" msgid "Objects List" msgstr "Objectenlijst" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Open een G-code-bestand" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Herlaad modellen van schijf" @@ -5532,7 +5530,7 @@ msgid "Show/Hide G-code window" msgstr "Toon/verberg G-code venster" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Sliceweergave" @@ -5616,7 +5614,7 @@ msgid "Keyboard shortcuts" msgstr "Sneltoetsen" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Open een PrusaSlicer venster" @@ -5624,11 +5622,11 @@ msgstr "Open een PrusaSlicer venster" msgid "G-code preview" msgstr "Sliceweergave" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Open de G-code weergave" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Open PrusaSlicer" @@ -5654,13 +5652,13 @@ msgid "Print Settings" msgstr "Printinstellingen" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Materiaalinstellingen" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Filamentinstellingen" @@ -5743,7 +5741,7 @@ msgstr "Toon Over-dialoogvenster" msgid "Show Tip of the Day" msgstr "Toon tip van de dag" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -5751,94 +5749,94 @@ msgstr "" "Opent tip van de dag melding in de rechteronderhoek, of toont een andere tip " "als die al open staat." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Toon de lijst met sneltoetsen" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Isometrisch" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Isometrisch aanzicht" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Bovenkant" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Bovenaanzicht" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Onderkant" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Onderaanzicht" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Voorkant" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vooraanzicht" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Achterzijde" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Achteraanzicht" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Links" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Linkerzijaanzicht" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Rechts" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Rechterzijaanzicht" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "Nieuw project" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Start nieuw project" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Open project" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Open een projectbestand" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Huidige projecten" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5846,508 +5844,508 @@ msgstr "" "Het geselecteerde project is niet langer beschikbaar.\n" "Wilt u het verwijderen uit de lijst met recente projecten?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "Project opslaan" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Projectbestand opslaan" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Project opslaan als" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Projectbestand opslaan als" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importeer STL-, OBJ-, AMF- of 3MF-bestanden" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Laad een model" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importeer STL (Engelse eenheden)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Laad een model dat is opgeslagen met Engelse eenheden" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importeer SL1 / SL1S archief" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Laad SL1 / SL1S archief" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importeer configuratiebestand" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Laad geëxporteerd configuratiebestand" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importeer configuratie van project" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Laad configuratie van projectbestand" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importeer configuratiebundel" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Laad presets van een bundel" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "Importeer" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exporteer G-code" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exporteer modellen als gcode-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "Stuur G-code" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Stuur huidige weergave als G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exporteer G-code naar SD-kaart / USB-stick" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exporteer modellen als G-code naar SD-kaart/USB-stick" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exporteer modellen als STL" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exporteer modellen als STL-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exporteer modellen inclusief supports als STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exporteer modellen met support als STL-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exporteer toolpaden als OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exporteer toolpaden als OBJ-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exporteer configuratie" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exporteer huidige configuratie naar bestand" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exporteer configuratiebundel" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exporteer alle presets naar bestand" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exporteer configuratiebundel met fysieke printers" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Exporteer alle presets, inclusief fysieke printers naar bestand" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "Exporteer" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "SD-kaart / USB-stick uitwerpen" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "SD-kaart/USB-stick uitwerpen nadat de G-code geëxporteerd is." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Snel slicen" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Slice naar een gcode-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Snel slicen en opslaan als" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Slice naar gcode-bestand, opslaan als" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Herhaal laatste snelle slice" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Herhaal laatste snelle slice" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(&Her)slice nu" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Start nieuw sliceproces" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Repareer STL-bestand" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Automatisch een STL-bestand repareren" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Voorbeeldweergave" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Afsluiten" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "%s afsluiten" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Selecteer alles" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Selecteer alle objecten" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Deselecteer alles" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Deselecteer alle objecten" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Verwijder geselecteerde" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Verwijdert huidige selectie" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Verwijder alles" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Verwijdert alle objecten" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Ongedaan maken" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "Opnieuw doen" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "Kopieer" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Kopieer selectie naar klembord" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Plak" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Plak van klembord" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Herlaad van schijf" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Zoek" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Zoek in instellingen" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Tabblad modelweergave" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Toon de modelweergave" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Tabblad printinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Toon de printinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Tabblad filamentinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Toon de filamentinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Tabblad printerinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Toon de printerinstellingen" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3D-bewerkingsweergave" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Toon de modelweergave" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Sliceweergave" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Toon de weergave van de slice" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Open het venster voor bewerken van de vormengalerij" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Printhost-uploadwachtrij" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Toon het venster van de printhost-uploadwachtrij" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Open nieuwe instantie" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Vergelijk presets" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Vergelijk presets" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Toon labels" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Toon object-/instantielabels in de modelweergave" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Zijbalk inklappen" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Zijbalk inklappen" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "Volledig scherm" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Volledig scherm" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "Bestand" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "Bewerken" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "Venster" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "Toon" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Help" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Open G-code" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Open &PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "Exporteer" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Stuur om te printen" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Materiaalinstellingentab" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Kies een STL-, OBJ-, AMF-, 3MF- of PRUSA-bestand om te slicen:" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Niet eerder gesliced bestand." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Eerder gesliced bestand (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") niet gevonden." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Bestand niet gevonden" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s-bestand opslaan als:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "ZIP-bestand opslaan als:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Slicen" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "%s verwerken" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% is succesvol gesliced." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Slicen klaar!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Selecteer het STL-bestand om te repareren:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "OBJ-bestand opslaan als:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Het bestand is gerepareerd." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Repareer" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Configuratie opslaan als:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Laden van een configuratiebestand" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Selecteer configuratie om te laden:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Exporteren van configuratiebundel" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -6355,15 +6353,15 @@ msgstr "" "Sommige presets zijn aangepast en de niet-opgeslagen wijzigingen zullen niet " "worden geëxporteerd in de configuratiebundel." -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Presetbundel opslaan als:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Laden van een configuratiebundel" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d presets succesvol geïmporteerd." @@ -6590,8 +6588,8 @@ msgstr "Instanties" msgid "Instance %d" msgstr "Instantie %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Lagen" @@ -6668,7 +6666,7 @@ msgstr "Beschrijvende naam voor de printer" msgid "Add preset for this printer device" msgstr "Voeg preset toe voor deze printer" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Printhost-upload" @@ -6830,7 +6828,7 @@ msgid "Select what kind of support do you need" msgstr "Selecteer welk type support nodig is" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Support alleen op het bed" @@ -6928,7 +6926,7 @@ msgid "(including spool)" msgstr "(inclusief spoel)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Kosten" @@ -7447,10 +7445,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Plak van klembord" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Algemeen" @@ -7948,7 +7946,7 @@ msgid "Add/Remove presets" msgstr "Toevoegen/verwijderen van presets" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Voeg fysieke printer toe" @@ -7960,7 +7958,7 @@ msgstr "Bewerk preset" msgid "Change extruder color" msgstr "Verander extruderkleur" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Bewerk fysieke printer" @@ -8272,11 +8270,11 @@ msgstr "Fout: geen ramming" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8389,12 +8387,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Schakel naar de \"%1%\"-preset" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Stille modus" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normaal" @@ -8663,7 +8661,7 @@ msgstr "volledige profielnaam" msgid "symbolic profile name" msgstr "symbolische profielnaam" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Lagen en perimeters" @@ -8751,7 +8749,7 @@ msgstr "Overlapping" msgid "Flow" msgstr "Stroom" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Overige" @@ -8759,52 +8757,52 @@ msgstr "Overige" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Output-opties" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Achtereenvolgens printen" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Extruderruimte" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Outputbestand" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Scripts voor nabewerking" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Opmerkingen" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Afhankelijkheden" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Profielafhankelijkheden" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "Nabewerkscripts zullen de G-code wijzigen." -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8823,82 +8821,82 @@ msgstr[1] "" "Verwijder deze alstublieft; dit kan problemen veroorzaken in de visualisatie " "en printtijdschattingen." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Gereserveerde sleutelwoorden gevonden in" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Overschrijven door filament" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Nozzle" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Bed" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Koeling" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Toestaan" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Ventilatorinstellingen" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Koeldrempels" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Filamenteigenschappen" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Printsnelheid overschrijven" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Afveegblokparameters" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Toolwisselparameter voor multi-materialprinters met één extruder" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Ramming-instellingen" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Custom G-code" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Start G-code" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "Eind G-code" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Volumetrische stroom - opmerkingen niet beschikbaar" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8920,20 +8918,20 @@ msgstr "" "printerinstellingentab. Het fysieke printerprofiel is opgeslagen in de " "locatie PrusaSlicer/physical_printer." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Grootte en coördinaten" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Mogelijkheden" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Aantal extruders van de printer." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8945,64 +8943,64 @@ msgstr "" "Wilt u de diameters voor alle extruders aanpassen gelijk aan die van de " "eerste extruder?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Nozzlediameter" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-code die komt vóór de laagwisseling" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-code die komt na de laagwisseling" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "Toolwisseling G-code" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-code die komt tussen objecten (bij achtereenvolgens printen)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "Kleurwissel G-code" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "Pauzeer print G-code" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Template custom G-code" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Scherm" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Draaiing" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Draaitijd" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Correcties" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Belichtingstijd" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -9011,39 +9009,39 @@ msgstr "Belichtingstijd" msgid "Machine limits" msgstr "Machinelimieten" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Waarden in deze kolom zijn voor de normale modus" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Waarden in deze kolom zijn voor de stille modus" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Maximale snelheden" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Maximale acceleraties" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Ruklimieten" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Minimale snelheden" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Multi-materialsetup met één extruder" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parameter voor multi-material met één extruder" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -9052,19 +9050,19 @@ msgstr "" "extruders worden ingesteld op de nieuwe waarde. Weet u zeker dat u wilt " "doorgaan?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Laagdiktelimieten" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Positie (voor multi-extruderprinters)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Beweeg alleen Z omhoog" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -9072,11 +9070,11 @@ msgstr "" "Retractie als de tool uit staat (geavanceerde instelling voor multi-" "extrudersetups)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Reset naar filamentkleur" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -9086,31 +9084,31 @@ msgstr "" "\n" "Moet deze uitgezet worden om firmwareretractie te gebruiken?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Firmware-retractie" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Nieuwe printerpreset geselecteerd" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Ontkoppeld" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "verwijder" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "verwijderen" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Het is een laatste preset voor deze fysieke printer." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -9118,7 +9116,7 @@ msgid "" msgstr "" "Weet je zeker dat je \"%1%\" wilt verwijderen van de fysieke printer \"%2%\"?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -9130,7 +9128,7 @@ msgstr[1] "" "De onderstaande fysieke printers zijn gebaseerd op de preset die u wilt " "verwijderen." -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -9139,7 +9137,7 @@ msgstr[0] "" msgstr[1] "" "Let op dat de geselecteerde preset ook voor deze printers wordt verwijderd." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -9153,7 +9151,7 @@ msgstr[1] "" "De onderstaande fysieke printers zijn alleen gebaseerd op de preset die u " "wilt verwijderen." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -9165,57 +9163,57 @@ msgstr[1] "" "Let op dat deze printers worden verwijderd na het verwijderen van de " "geselecteerde preset." -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Weet u zeker dat u de geselecteerde preset %1% wilt?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "Preset %1%" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Stel in" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Zoeken" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Alleen hele woorden" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "Machinelimieten worden opgenomen in de G-code en gebruikt voor de geschatte " "printtijd." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9225,7 +9223,7 @@ msgstr "" "gebruikt om de printtijd te schatten, waardoor ze niet nauwkeurig kunnen " "zijn bij een printer met andere machinelimieten." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9233,12 +9231,12 @@ msgstr "" "Machinelimieten zijn niet ingesteld, waardoor de geschatte printtijd niet " "nauwkeurig is." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "Vergrendeld" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9246,12 +9244,12 @@ msgstr "" "geeft aan dat de instellingen gelijk zijn aan de systeemwaarden voor de " "huidige optiegroep" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "Ontgrendeld" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9263,12 +9261,12 @@ msgstr "" "Klik op het ontgrendeld-pictogram om de instelling te resetten naar de " "systeemwaarden voor de huidige optiegroep." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "Wit bolletje" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9276,12 +9274,12 @@ msgstr "" "de linkerknop geeft aan dat het niet een systeempreset is,\n" "de rechterknop geeft aan of de instelling is gewijzigd." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "Pijltje terug" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9293,7 +9291,7 @@ msgstr "" "Klik op het pijltje-terug-pictogram om alle instellingen te resetten naar de " "laatst opgeslagen preset voor de huidige optiegroep." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9301,7 +9299,7 @@ msgstr "" "Vergrendeld-pictogram geeft aan dat de instellingen gelijk zijn aan de " "systeemwaarde van de huidige optiegroep" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9313,11 +9311,11 @@ msgstr "" "Klik om alle instellingen voor de huidige optiegroep te resetten naar " "systeemwaarden." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "Het witte bolletje geeft aan dat het geen systeempreset betreft." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9325,7 +9323,7 @@ msgstr "" "Het witte bolletje geeft aan dat de instelling gelijk is aan de laatst " "opgeslagen preset voor de huidige optiegroep." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9338,14 +9336,14 @@ msgstr "" "Klik om alle instellingen terug te zetten voor de huidige optiegroep naar de " "laatst opgeslagen preset." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" "Vergrendeld-pictogram geeft aan dat de waarde gelijk is aan de systeemwaarde." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9355,7 +9353,7 @@ msgstr "" "aan de systeemwaarde.\n" "Klik om de huidige waarde te resetten naar de systeemwaarde." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9363,7 +9361,7 @@ msgstr "" "Het witte bolletje geeft aan dat de waarde gelijk is aan de laatst " "opgeslagen preset." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9373,31 +9371,31 @@ msgstr "" "gelijk is aan de laatst opgeslagen preset.\n" "Klik om de waarde te resetten naar de laatst opgeslagen preset." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Materiaal" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Materiaal-printprofiel" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Supportkop" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Supportpijler" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Verbindingen van de supporttakken en kruisingen" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Automatisch genereren" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9406,11 +9404,11 @@ msgstr "" "\"%1%\" is uitgeschakeld omdat \"%2%\" aanstaat in \"%3%\"-categorie.\n" "Om \"%1%\" aan te zetten moet \"%2%\" uit staan" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Objectverhoging" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Basisplaat rondom object" @@ -9495,7 +9493,7 @@ msgstr "" "om weer te vragen over niet-opgeslagen wijzigingen." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9563,39 +9561,39 @@ msgstr "" "volgende niet-opgeslagen wijzigingen:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Aantal extruders" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Toon alle presets (inclusief incompatibele)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Linker presetwaarde" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Rechter presetwaarde" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Een van de presets niet gevonden" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Vergeleken presets hebben verschillende soorten printers" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Presets zijn gelijk" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9604,11 +9602,11 @@ msgstr "" "Klik op deze knop om dezelfde preset te selecteren voor de rechter en linker " "preset." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Ongedefinieerde categorie" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Ongedefinieerde groep" @@ -10284,7 +10282,7 @@ msgstr "" "Kan de extrusiebreedte niet berekenen voor %1%: Variabele '%2%' niet " "beschikbaar." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -10293,7 +10291,7 @@ msgstr "" "Het geselecteerde 3MF-bestand is opgeslagen in een nieuwere versie van %1% " "en is niet geschikt." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -10301,7 +10299,7 @@ msgstr "" "De geselecteerde 3MF bevat een FDM-supports geschilderd object van een " "nieuwere versie van PrusaSlicer en is niet compatibel." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -10309,7 +10307,7 @@ msgstr "" "De geselecteerde 3MF bevat een naadschildering object van een nieuwere " "versie van PrusaSlicer en is niet compatibel." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -11104,8 +11102,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -11120,9 +11118,8 @@ msgstr "Deze ventilatorsnelheid wordt aangehouden bij bruggen en overhanging." #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11340,8 +11337,8 @@ msgstr "" msgid "Default print profile" msgstr "Standaard printprofiel" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11490,8 +11487,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm of %" @@ -11576,7 +11574,7 @@ msgid "Extruder Color" msgstr "Extruderkleur" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Dit wordt alleen gebruikt in de PrusaSlicer-interface als een visueel " @@ -11674,7 +11672,7 @@ msgstr "" msgid "approximate seconds" msgstr "geschat aantal seconden" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Kleur" @@ -11855,8 +11853,8 @@ msgstr "" "daarom een schuifmaat en doe meerdere metingen over het hele filament. " "Bereken vervolgens het gemiddelde." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Dichtheid" @@ -11924,7 +11922,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Onbekend)" @@ -13701,7 +13699,7 @@ msgid "" "plane." msgstr "Gebruik deze instelling om het patroon van het support te draaien." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14334,33 +14332,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14372,11 +14372,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14385,63 +14385,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14450,63 +14422,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Schermbreedte" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Breedte van het scherm" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Schermhoogte" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Hoogte van het scherm" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Aantal pixels" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Aantal pixels in de breedte" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Aantal pixels in de hoogte" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Scherm horizontaal spiegelen" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Spiegel horizontaal" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Horizontaal spiegelen" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Scherm verticaal spiegelen" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Verticaal spiegelen" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Verticaal spiegelen" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Schermoriëntatie" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14516,55 +14488,55 @@ msgstr "" "Staande modus zal de breedte- en hoogteparameters omwisselen en de output " "wordt 90 graden gedraaid." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Liggend" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Staand" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Snel" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Snelle draaiing" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Tijd van de snelle draaiing" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Langzaam" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Langzaam draaien" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Tijd van de langzame draaiing" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Vulgebied" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14574,40 +14546,40 @@ msgstr "" "Als het printgebied buiten een specifieke waarde valt \n" "wordt een korte draaiing gebruikt, anders een snelle" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Verschalingscorrectie voor printer" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Verschalingscorrectie over de X-as" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Verschalingscorrectie in X-richting" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Verschalingscorrectie over de Y-as" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Verschalingscorrectie in Y-riching" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Verschalingscorrectie over de Z-as" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Verschalingscorrectie in Z-riching" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Absolute correctie voor printer" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14615,20 +14587,20 @@ msgstr "" "Zal de geslicede veelhoeken uitrekken of laten krimpen, afhankelijk van de " "correctiewaarde." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Squish-compensatiebreedte" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "Minimale breedte van delen waarop squish-compensatie wordt toegepast." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Gammacorrectie voor printer" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14638,43 +14610,43 @@ msgstr "" "betekent een waarde die in het midden ligt. Dit gedrag elimineert anti-" "aliasing zonder dat gaten in de veelhoeken verloren gaan." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA-materiaaltype" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Laagdikte eerste laag" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Flesinhoud (volume)" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Flesinhoud (gewicht)" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "€/fles" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Transitielagen" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14682,103 +14654,103 @@ msgstr "" "Aantal lagen waarin de initiële belichtingstijd stapsgewijs wordt " "teruggebracht naar de standaard belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Minimale belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Maximale belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Minimale initiële belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Maximale initiële belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Initiële belichtingstijd" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Vergrotingscorrectie" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Uitzettingscorrectie over de X-as" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Uitzettingscorrectie over de Y-as" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Uitzettingscorrectie over de Z-as" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA-printmateriaal opmerkingen" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "U kunt hier opmerkingen plaatsen wat betreft het SLA-materiaal." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Standaard SLA-materiaalprofiel" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Genereer support" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Genereer support voor de modellen" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diameter voorzijde pinkop" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diameter van de puntige zijde van de kop" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Koppenetratie" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Hoe ver de supportkop in het model moet steken" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Pinkopbreedte" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Centerafstand van de achterste tot de voorste bol" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Pijlerdiameter" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diameter van de supportpijlers (in mm)" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Percentage van smalle pijlerdiameter" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14786,11 +14758,11 @@ msgstr "" "Het percentage van smallere pijlers vergeleken met normale pijlerdiameters " "die worden gebruikt in moeilijk te bereiken plekken." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Maximaal aantal bruggen op een pijler" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14798,11 +14770,11 @@ msgstr "" "Maximaal aantal bruggen dat op een pijler geplaatst kan worden. Bruggen " "houden supportpuntkop bij elkaar en verbinden pijlers as smalle takken." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Pijlerverbindingsmodus" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14812,23 +14784,23 @@ msgstr "" "kruisend (dubbele zigzag) of dynamisch zijn. Dynamisch houdt in dat wordt " "geschakeld tussen de eerste twee, afhankelijk van de pijlerafstand." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zigzag" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Kruisend" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dynamisch" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Pijlervergrotingsfactor" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14836,27 +14808,27 @@ msgstr "" "Bruggen of pijlers samenvoegen met andere pijlers kan de radius vergroten. 0 " "betekent geen vergroting, 1 betekent volle vergroting." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Supportbasis - diameter" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diameter van de pijlerbasis (in mm)" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Supportbasis - hoogte" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Hoogte van de pijlerbasiskegel" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Supportbasis - veilige afstand" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14866,27 +14838,27 @@ msgstr "" "modus zonder verhoging waar een gat volgens deze parameter wordt ingevoegd " "tussen het model en de basisplaat." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kritische hoek" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "De standaardhoek voor de verbinding van supporttakken en kruisingen." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Maximale bruglengte" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Maximale bruglengte" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Maximale pijler-verbindafstand" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -14894,7 +14866,7 @@ msgstr "" "Maximale verbindingsafstand van twee pijlers. Een waarde van 0 schakelt aan " "elkaar verbonden pijlers uit." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -14902,39 +14874,39 @@ msgstr "" "Hoe veel het support omhoog moet bewegen op het ondersteunde object. Als " "'Basisplaat rondom object' is ingeschakeld wordt deze waarde genegeerd." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Relatieve waarde van de dichtheid van supportpunten." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Minimale supportpuntafstand" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Minimale afstand tussen supportpunten." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Gebruik basisplaat" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Voeg een basisplaat toe onder het model met support" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Basisplaat - wanddikte" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Dikte van de basisplaat en optionele wanden." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Basisplaat - wandhoogte" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14946,19 +14918,19 @@ msgstr "" "sommige resins een sterk zuigeffect in de holte produceren, wat het afpellen " "van de print van het folie lastig kan maken." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Basisplaat - expansie" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Hoe ver de basisplaat moet uitsteken buiten de geometrie" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Maximale combineerafstand" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14968,11 +14940,11 @@ msgstr "" "van één grote. Deze parameter bepaalt hoe ver de tussenafstand van de " "kleinere basisplaten mogen zijn." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Basisplaat - zijhoek" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -14980,23 +14952,23 @@ msgstr "" "Hoek van de basisplaatzijde ten opzichte van het bed. 90 graden betekent een " "rechte zijkant." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Genereer basisplaat rondom object en schakel objectverhoging uit" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Overal basisplaat rondom object" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Forceer basisplaat overal rondom het object" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Basisplaat - gat" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -15004,11 +14976,11 @@ msgstr "" "Het gat tussen de onderkant van het object en de gegenereerde basisplaat in " "de modus zonder verhoging." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Basisplaat - verbindingstakafstand" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -15016,46 +14988,46 @@ msgstr "" "Afstand tussen twee verbindingstakken die het object verbinden aan de " "basisplaat." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Basisplaat - verbindingstakbreedte" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Breedte van de verbindingstakken die het object en de basisplaat met elkaar " "verbinden." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Basisplaat - Verbindingstakinsteek" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Hoe ver de verbindingstakken in het model steken." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Uithollen toestaan" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Hol een model uit voor een leeg binnenste" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Wanddikte" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimale wanddikte van een uitgehold model." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Nauwkeurigheid" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -15063,7 +15035,7 @@ msgstr "" "Prestatie tegenover nauwkeurigheid van berekenen. Lagere waarde kunnen " "ongewenste artefacten produceren." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -15077,11 +15049,11 @@ msgstr "" "binnenste ronder. Bij een waarde van 0 is het binnenste vrijwel gelijk aan " "de buitenzijde." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Printsnelheid" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -15091,63 +15063,63 @@ msgstr "" "vloeibaarheid of met holle delen. Het vertraagt de kantelbeweging en voegt " "een vertraging toe na de belichting." -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exporteer OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exporteer de modellen als OBJ-bestand." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exporteer SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Slice het model en exporteer SLA-printlagen als PNG-bestanden." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exporteer 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exporteer de modellen als 3MF-bestanden." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exporteer AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exporteer de modellen als AMF-bestanden." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exporteer STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exporteer de modellen als STL-bestand." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Slice het model en exporteer de paden als G-code-bestand." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G-code weergave" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualiseer een reeds opgeslagen G-code" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Slice" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -15155,71 +15127,71 @@ msgstr "" "Slice het model als FFF of SLA, gebaseerd op de 'printer_technology'-" "configuratiewaarde." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Help" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Toon deze hulp zien." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Help (FFF-opties)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Toon de volledige lijst van print- of G-code-configuratie-opties." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Help (SLA opties)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Toon de volledige lijst van SLA-printconfiguratie-opties." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Output model-info" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Schrijf informatie over het model naar de console." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Sla configuratiebestand op" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Sla configuratie op in aangegeven bestand." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY uitlijnen" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Lijn de modellen uit op het gegeven punt." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Snijdt model op de ingestelde hoogte." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centreer" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centreer de print op het middelpunt." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Niet schikken" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -15227,11 +15199,11 @@ msgstr "" "Herschik de modellen niet voor het samenvoegen en behoudt de originele X- en " "Y-coördinaten." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Plaats op bed" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -15239,23 +15211,23 @@ msgstr "" "Til het object boven het bed als deze er gedeeltelijk onder valt. Staat " "standaard aan. Gebruik \"no_ensure_on_bed\" om uit te zetten." -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Dupliceer" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Meerdere kopieën van dit aantal." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Dupliceer in raster" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Meerdere kopieën in raster." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -15263,7 +15235,7 @@ msgstr "" "Schik de toegevoegde modellen en combineer ze tot één model om eenmalig " "acties uit te voeren." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -15271,31 +15243,31 @@ msgstr "" "Probeer alle niet-gesloten meshes te repareren (deze optie is impliciet " "toegevoegd om, wanneer dat nodig is, onmogelijke modellen toch te slicen)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Rotatiehoek rond de Z-as in graden." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Draai over de X-as" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Rotatiehoek rond de X-as in graden." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Draai over de Y-as" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Rotatiehoek rond de Y-as in graden." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Schalingsfactor of percentage." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15303,23 +15275,23 @@ msgstr "" "Detecteer niet-verbonden onderdelen in het model en deel ze op in " "verschillende objecten." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Verschaal naar passing" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Verschaal naar passing in het gegeven volume." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Negeer niet-bestaande configuratiebestanden" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Geef geen fout als een bestand om te laden niet bestaat." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -15327,7 +15299,7 @@ msgstr "" "Doorgang-compatibiliteitsregel bij het laden van configuraties van " "configuratie- en projectbestanden (3MF, AMF)." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15340,11 +15312,11 @@ msgstr "" "onbekende waarde zonder melding of woordelijk te vervangen door een " "standaardwaarde." -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Sla onbekende configuratiewaarden over" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -15352,7 +15324,7 @@ msgstr "" "Sta to om onbekende configuratiewaarden te lezen door woordelijk te " "substitueren met standaardwaarden." -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -15360,11 +15332,11 @@ msgstr "" "Sta to om onbekende configuratiewaarden te lezen door zonder melding te " "substitueren met standaardwaarden." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Laad configuratiebestand" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15372,11 +15344,11 @@ msgstr "" "Laad configuratie uit een specifiek bestand. Dit kan meerdere keren gebruikt " "worden om instellingen uit meerdere bestanden te laden." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Outputbestand" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15384,11 +15356,11 @@ msgstr "" "Het bestand waaroverheen wordt geschreven (als dit niet aangegeven is, wort " "dit gebaseerd op het inputbestand)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Enkele instantiemodus" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15399,11 +15371,11 @@ msgstr "" "gestuurd. Dit overschrijft de \"enkele instantie\"-configuratiewaarde van de " "programmavoorkeuren." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Bestandslocatie voor de data" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15413,11 +15385,11 @@ msgstr "" "verschillende profielen of het opnemen van configuraties van een " "netwerkopslag." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Logboekniveau" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15427,11 +15399,11 @@ msgstr "" "debug, 5: traceer\n" "Voorbeeld: loglevel = 2 geeft fataal-, fout- en waarschuwingslevelberichten." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Render met software-renderer" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/pl/PrusaSlicer.mo b/resources/localization/pl/PrusaSlicer.mo index 28a03f071a9a22f00c3d9dc4193cf90ed3bdedcd..32a82f11462a4dabe30d1620230debfbdcb3ed81 100644 GIT binary patch delta 67390 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 diff --git a/resources/localization/pl/PrusaSlicer_pl.po b/resources/localization/pl/PrusaSlicer_pl.po index 03bb6a8aa..03a26b901 100644 --- a/resources/localization/pl/PrusaSlicer_pl.po +++ b/resources/localization/pl/PrusaSlicer_pl.po @@ -9,7 +9,7 @@ msgstr "" "%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n" "X-Generator: Prusalator\n" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -37,9 +37,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -152,7 +151,7 @@ msgstr[2] "%1% (%2$d powłok)" msgstr[3] "%1% (%2$d powłok)" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Zestaw ustawień" @@ -171,7 +170,7 @@ msgstr "" msgid "%1% was substituted with %2%" msgstr "%1% zamieniono na %2%" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% został pomyślnie pocięty." @@ -193,7 +192,7 @@ msgstr "%3.2f mm³/s z prędkością filamentu %3.2f mm/s." msgid "%d lines: %.2f mm" msgstr "%d linii: %.2f mm" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "pomyślnie zaimportowano %d zestawów ustawień." @@ -364,7 +363,7 @@ msgstr "" msgid "&About %s" msgstr "&O %s" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "S&chowaj pasek narzędzi" @@ -376,27 +375,27 @@ msgstr "&Konfiguracja" msgid "&Configuration Snapshots" msgstr "Zrzuty Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Kopiuj" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Usuń &zaznaczone" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Edytuj" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Eksport" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Ustawienia &filamentu" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Plik" @@ -404,19 +403,19 @@ msgstr "&Plik" msgid "&Finish" msgstr "&Zakończ" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Pełny ekran" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Podgląd &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "Pomo&c" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Import" @@ -424,7 +423,7 @@ msgstr "&Import" msgid "&Language" msgstr "Język ap&likacji" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Nowy Projekt" @@ -432,19 +431,19 @@ msgstr "&Nowy Projekt" msgid "&Next >" msgstr "&Dalej>" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Otwórz G-code" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Otwórz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Wkle&j" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Podgląd Stołu" @@ -452,35 +451,35 @@ msgstr "&Podgląd Stołu" msgid "&Preferences" msgstr "&Preferencje" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Wyjś&cie" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "Powtó&rz" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "Nap&rawa pliku STL" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "Zapi&sz Projekt" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Zaznacz w&szystko" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Co&fnij" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Widok" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Okno" @@ -489,7 +488,7 @@ msgstr "&Okno" msgid "(All)" msgstr "(Wszystko)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Pono&wne) Cięcie" @@ -501,7 +500,7 @@ msgstr "(Ponowne) Cięcie" msgid "(Some lines not shown)" msgstr "(Niektórych linii nie pokazano)" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Nieznane)" @@ -513,7 +512,7 @@ msgstr "(wliczając szpulę)" msgid "(minimum)" msgstr "(minimum)" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") nie znaleziono." @@ -569,7 +568,7 @@ msgstr "2 mm" msgid "3 (heavy)" msgstr "3 (ciężki)" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" @@ -666,7 +665,7 @@ msgstr "" "Generalną zasadą jest 60 °C dla PLA i 110 °C dla ABS. Ustaw zero, jeśli nie " "masz podgrzewanego stołu." -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -693,7 +692,7 @@ msgstr "Klucz API" msgid "Abort" msgstr "Przerwij" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "O %s" @@ -710,7 +709,7 @@ msgstr "Ustawienia przyspieszeń (zaawansowane)" msgid "Access violation" msgstr "Naruszenie dostępu" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Dokładność" @@ -750,7 +749,7 @@ msgstr "" "Adaptacyjnego podpierającego, aby skrócić czas drukowania i zmniejszyć " "zużycie filamentu? Przeczytaj więcej w dokumentacji." -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Dodaj" @@ -814,7 +813,7 @@ msgstr "Dodaj Kształt z Galerii" msgid "Add Shapes from Gallery" msgstr "Dodaj Kształty z Galerii" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Dodaj podkładkę pod podporami modelu" @@ -931,7 +930,7 @@ msgid "Add pause print" msgstr "Dodaj pauzę" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Dodaj fizyczną drukarkę" @@ -1031,17 +1030,16 @@ msgstr "Adres" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Zaawansowane" @@ -1077,16 +1075,16 @@ msgstr "" "filamentu na wieży czyszczącej, aby wydrukować dobre wypełnienie lub zbędny " "model." -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-code wykonywany po zmianie warstwy" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Wyrównaj XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Wyrównaj model z danym punktem." @@ -1099,7 +1097,7 @@ msgid "Aligned Rectilinear" msgstr "Jednokierunkowe linie równoległe" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Wszystkie" @@ -1299,7 +1297,7 @@ msgstr "Automatycznie stosuj zmianę koloru" msgid "Apply to all the remaining small objects being loaded." msgstr "Zastosuj do wszystkich pozostałych małych obiektów, które są ładowane." -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" @@ -1311,7 +1309,7 @@ msgstr "Generator obrysów Arachne" msgid "Archimedean Chords" msgstr "Spirala Archimedesa" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Czy na pewno chcesz %1% ten zestaw ustawień?" @@ -1328,7 +1326,7 @@ msgstr "" msgid "Are you sure you want to continue?" msgstr "Czy na pewno chcesz kontynuować?" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -1342,7 +1340,7 @@ msgstr "" msgid "Are you sure you want to delete \"%1%\" printer?" msgstr "Czy na pewno chcesz usunąć drukarkę \"%1%\"?" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Czy na pewno chcesz usunąć wszystkie zamienniki?" @@ -1350,7 +1348,7 @@ msgstr "Czy na pewno chcesz usunąć wszystkie zamienniki?" msgid "Are you sure you want to do it?" msgstr "Czy na pewno chcesz to zrobić?" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Wypełnienie obszaru" @@ -1381,7 +1379,7 @@ msgstr "" "Czy wiesz, że możesz kliknąć prawym przyciskiem myszy ikonę Rozmieść, " "aby dostosować odstęp między modelami i umożliwić ich automatyczne obracanie?" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -1535,7 +1533,7 @@ msgstr "Automatycznie generuj punkty podpór" msgid "Autogeneration will erase all manually edited points." msgstr "Generowanie automatyczne usunie wszystkie ręcznie ustawione punkty." -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Generowanie automatyczne" @@ -1543,7 +1541,7 @@ msgstr "Generowanie automatyczne" msgid "Automatic updates" msgstr "Automatyczne aktualizacje" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Automatyczna naprawa pliku STL" @@ -1559,11 +1557,11 @@ msgstr "Unikaj ruchów nad obrysami" msgid "Avoid crossing perimeters - Max detour length" msgstr "Unikaj ruchów nad obrysami - maksymalna długość objazdu" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "STRZAŁKA W TYŁ" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -1576,7 +1574,7 @@ msgstr "" "Kliknij, aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych " "z ostatnio zapisanego zestawu ustawień." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -1591,7 +1589,7 @@ msgstr "" msgid "Background processing" msgstr "Przetwarzanie w tle" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Wycofaj przy nieznanej konfiguracji" @@ -1599,7 +1597,7 @@ msgstr "Wycofaj przy nieznanej konfiguracji" msgid "Balanced" msgstr "Zbalansowana" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Stół" @@ -1647,7 +1645,7 @@ msgstr "" "Temperatura stołu dla warstw powyżej pierwszej. Ustaw 0, aby wyłączyć " "kontrolowanie temperatury w pliku wyjściowym." -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-code wykonywany przed zmianą warstwy" @@ -1672,7 +1670,7 @@ msgstr "Najlepsza jakość powierzchni" msgid "Between objects G-code" msgstr "G-code wykonywany przy przejściach pomiędzy modelami" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "" "G-code wykonywany przy przejściach pomiędzy modelami (druk sekwencyjny)" @@ -1695,11 +1693,11 @@ msgstr "Blokuj podpory" msgid "Block supports by angle" msgstr "Blokuj podpory wg kąta" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Pojemność butelki" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Waga butelki" @@ -1716,7 +1714,7 @@ msgstr "Spód" msgid "Bottom" msgstr "Dolne" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Widok od dołu" @@ -1991,8 +1989,8 @@ msgstr "" "Nie można kontynuować bez punktów podpór! Dodaj punkty podpór lub wyłącz ich " "generowanie." -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Możliwości" @@ -2000,7 +1998,7 @@ msgstr "Możliwości" msgid "Capture a configuration snapshot" msgstr "Zapisz zrzut konfiguracji" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Niewrażliwe na wielkość liter" @@ -2008,11 +2006,11 @@ msgstr "Niewrażliwe na wielkość liter" msgid "Category" msgstr "Kategoria" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Punkt centralny" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Wyśrodkuj model wokół podanego punktu centralnego." @@ -2118,7 +2116,7 @@ msgstr "Wybierz archiwum SLA:" msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Wybierz plik, z którego ma być zaimportowana tekstura stołu (PNG/SVG):" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Wybierz plik do pocięcia (STL/OBJ/AMF/3MF/PRUSA):" @@ -2164,7 +2162,7 @@ msgstr "Koło" msgid "Circular" msgstr "Okrągły" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Klasyczny" @@ -2172,11 +2170,13 @@ msgstr "Klasyczny" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" -"Klasyczny generator obrysów tworzy ścieżki o stałej szerokości wytłaczania, " -"a dla bardzo cienkich obszarów stosuje wypełnienie szczelin. Silnik Arachne " -"wytwarza obrysy o zmiennej szerokości wytłaczania." +"Klasyczny generator obrysów tworzy obrysy o stałej szerokości wytłaczania, a " +"dla bardzo cienkich obszarów stosuje wypełnienie szczelin. Silnik Arachne " +"wytwarza obrysy o zmiennej szerokości wytłaczania. Ustawienie to ma wpływ " +"również na wypełnienie koncentryczne." #: src/slic3r/GUI/Preferences.cpp:295 msgid "Clear Undo / Redo stack on new project" @@ -2255,7 +2255,7 @@ msgid "Closing PrusaSlicer. Current project is modified." msgstr "Zamykanie PrusaSlicer. Bieżący projekt został zmodyfikowany." #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Dystans domykania" @@ -2263,7 +2263,7 @@ msgstr "Dystans domykania" msgid "Closing radius" msgstr "Promień zamykania" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Zwiń pasek narzędzi" @@ -2271,11 +2271,11 @@ msgstr "Zwiń pasek narzędzi" msgid "Collapse/Expand the sidebar" msgstr "Zwiń/rozwiń pasek narzędzi" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Kolor" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-code dla zmiany koloru" @@ -2339,12 +2339,12 @@ msgstr "Komendy" msgid "Comment:" msgstr "Komentarz:" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Porównaj zestawy ustawień" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Porównaj zestawy ustawień" @@ -2352,7 +2352,7 @@ msgstr "Porównaj zestawy ustawień" msgid "Compare this preset with some another" msgstr "Porównaj ten zestaw ustawień z innym" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Porównane zestawy ustawień mają różne technologie druku" @@ -2516,7 +2516,7 @@ msgstr "" "będzie ograniczona do wartości parametru infill_anchor, ale nie dłuższa niż " "ten parametr. Ustaw zero, aby wyłączyć kotwiczenie." -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Łączenia słupków i skrzyżowań podpór" @@ -2570,7 +2570,7 @@ msgstr "Kontynuować i zainstalować aktualizacje konfiguracji?" msgid "Continue to activate a configuration snapshot %1%?" msgstr "Kontynuować przywracanie zrzutu konfiguracji %1%?" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -2587,7 +2587,7 @@ msgstr "" "Swój wkład mają: Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas " "Meszaros, Lukas Matena, Vojtech Kral, David Kocik oraz wielu innych." -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -2606,7 +2606,7 @@ msgstr "Konwertuj z jednostek imperialnych" msgid "Convert from meters" msgstr "Konwertuj z metrów" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Chłodzenie" @@ -2618,7 +2618,7 @@ msgstr "Ruchy chłodzące przyspieszają zaczynając od tej prędkości." msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Ruchy chłodzące przyspieszają kończąc z tą prędkością." -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Progi chłodzenia" @@ -2643,11 +2643,11 @@ msgstr "Kopia" msgid "Copy" msgstr "Kopiuj" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Skopiuj informacje o wersji" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Skopiuj zaznaczenie do schowka" @@ -2711,32 +2711,32 @@ msgstr "" "G-code ponownie lub użyj innego urządzenia. Uszkodzony plik wynikowy G-code " "znajduje się w lokalizacji %1%.tmp." -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Korekcja rozciągnięcia" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Korekcja rozszerzania w osi X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Korekcja rozszerzania w osi Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Korekcja rozszerzania w osi Z" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Korekcje" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Koszt" @@ -2808,7 +2808,7 @@ msgstr "" "finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na " "rozsądnie niskim poziomie." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Dodaj podkładkę wokół modelu i zignoruj podniesienie na podporach" @@ -2827,7 +2827,7 @@ msgid "Creating a new project while the current project is modified." msgstr "" "Tworzenie nowego projektu podczas gdy bieżący projekt jest modyfikowany." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kąt krytyczny" @@ -2835,7 +2835,7 @@ msgstr "Kąt krytyczny" msgid "Critical error" msgstr "Błąd krytyczny" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Krzyżowy" @@ -2881,8 +2881,8 @@ msgstr "" "w formacie crt/pem. Jeśli pole zostanie puste, to zostanie użyty plik z " "systemowego repozytorium CA." -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Własny G-code" @@ -2926,7 +2926,7 @@ msgid "Custom template (\"%1%\")" msgstr "Własny szablon (\"%1%\")" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Przetnij" @@ -2934,7 +2934,7 @@ msgstr "Przetnij" msgid "Cut by Plane" msgstr "Tnij Płaszczyzną" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Przetnij model na wysokości Z." @@ -2942,7 +2942,7 @@ msgstr "Przetnij model na wysokości Z." msgid "Cylinder" msgstr "Cylinder" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "&Odznacz wszystko" @@ -2950,7 +2950,7 @@ msgstr "&Odznacz wszystko" msgid "Dark mode (experimental)" msgstr "Interfejs w trybie ciemnym (eksperymentalny)" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Katalog danych" @@ -2976,7 +2976,7 @@ msgstr "Zmniejsz ilość instancji" msgid "Default" msgstr "Domyślnie" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Domyślny profil materiału SLA" @@ -3015,8 +3015,8 @@ msgstr "" msgid "Default print profile" msgstr "Domyślny profil druku" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -3030,7 +3030,7 @@ msgstr "" msgid "Define a custom printer profile" msgstr "Zdefiniuj własny profil drukarki" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -3048,11 +3048,11 @@ msgstr "Opóźnienie po rozładowaniu" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Usuń" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Usuń &wszystko" @@ -3106,7 +3106,7 @@ msgid "Delete Subobject" msgstr "Usuń Model Podrzędny" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Usuń wszystko" @@ -3164,16 +3164,16 @@ msgstr "Usuń zaznaczenie - kliknij lewym przyciskiem lub wciśnij klawisz \"-\" msgid "Delete tool change" msgstr "Usuń zmianę narzędzia" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Usuwa wszystkie modele" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Usuwa zaznaczenie" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Gęstość" @@ -3185,9 +3185,9 @@ msgstr "Gęstość wypełnienia wewnętrznego, wyrażana w zakresie 0% - 100%." msgid "Density of the first raft or support layer." msgstr "Gęstość pierwszej warstwy raftu lub podpór." -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Zależności" @@ -3211,7 +3211,7 @@ msgstr "Odznacz wszystko" msgid "Deselect by rectangle" msgstr "Odznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Odznacza wszystkie modele" @@ -3247,7 +3247,7 @@ msgstr "Odłącz od ustawień systemowych" msgid "Detach preset" msgstr "Odłącz zestaw ustawień" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Odłączono" @@ -3271,7 +3271,7 @@ msgstr "" msgid "Detect thin walls" msgstr "Wykrywanie cienkich ścian" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -3295,15 +3295,15 @@ msgstr "Urządzenie:" msgid "Diameter" msgstr "Średnica" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Średnica podstawy słupka w mm" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Średnica słupków podpór w mm" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Średnica spiczastej części łącznika" @@ -3367,31 +3367,31 @@ msgstr "Odrzuć wszystkie własne zmiany" msgid "Discard changes" msgstr "Odrzuć zmiany" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Wyświetlacz" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Wysokość wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Pokaż odbicie poziome" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Pokaż orientację" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Wyświetl okno kolejki serwera druku" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Pokaż odbicie pionowe" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Orientacja wyświetlacza" @@ -3410,7 +3410,7 @@ msgstr "" "Odległość między skirtem i brimem (gdy draft shield jest wyłączony) a " "modelami." -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -3449,11 +3449,11 @@ msgstr "Odstęp używany przy automatycznym rozmieszczaniu modeli na stole." msgid "Divide by zero" msgstr "Dzielenie przez zero" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Nie przerywaj jeśli plik dołączony do --load nie istnieje." -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -3509,7 +3509,7 @@ msgstr "Czy chcesz ustawić domyślne materiały SLA dla tych modeli drukarek?" msgid "Do you want to select default filaments for these FFF printer models?" msgstr "Czy chcesz ustawić domyślne filamenty dla tych modeli drukarek FFF?" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Nie układaj" @@ -3573,11 +3573,11 @@ msgstr "" msgid "Drop to bed" msgstr "Upuść na stół" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplikuj" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplikuj wg siatki" @@ -3594,11 +3594,11 @@ msgstr "Podczas drukowania innych warstw wentylator będzie pracować na %1%%%" msgid "During the other layers, fan will be turned off." msgstr "Podczas drukowania innych warstw wentylator będzie wyłączony." -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dynamicznie" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "&Eksport" @@ -3649,7 +3649,7 @@ msgstr "Edytuj własny G-code" msgid "Edit pause print message" msgstr "Edytuj komunikat wstrzymania wydruku" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Edytuj fizyczną drukarkę" @@ -3673,7 +3673,7 @@ msgstr "Edytowanie" msgid "Eigen vectorization supported:" msgstr "Obsługiwana wektoryzacja własna:" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Wysuń kar&tę SD / pamięć flash" @@ -3681,7 +3681,7 @@ msgstr "Wysuń kar&tę SD / pamięć flash" msgid "Eject SD card / Flash drive" msgstr "Wysuń kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Wysuń kartę SD / pamięć flash po wyeksportowaniu na nią G-code." @@ -3698,7 +3698,7 @@ msgstr "Wysuwanie urządzenia %s(%s) nie powiodło się." msgid "Elephant foot compensation" msgstr "Kompensacja \"stopy słonia\"" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Minimalna szerokość stopy słonia" @@ -3731,7 +3731,7 @@ msgstr "Przekaż do G-code" msgid "Empty layer between %1% and %2%." msgstr "Pusta warstwa między %1% i %2%." -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Włącz" @@ -3748,11 +3748,11 @@ msgstr "Włącz tryb ciemny" msgid "Enable fan if layer print time is below" msgstr "Włącz chłodzenie jeśli czas druku warstwy wynosi poniżej" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Włącz drążenie" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Włącz odbicie poziome dla obrazów wyjściowych" @@ -3767,7 +3767,7 @@ msgstr "" "Włącz prasowanie górnych warstw gorącą dyszą dla uzyskania gładkiej " "powierzchni" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -3775,7 +3775,7 @@ msgstr "" "Umożliwia odczytanie nieznanych wartości konfiguracyjnych przez ciche " "zastąpienie ich wartościami domyślnymi." -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -3826,7 +3826,7 @@ msgstr "" msgid "Enable variable layer height feature" msgstr "Zmienna wysokość warstwy" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Włącz odbicie pionowe dla obrazów wyjściowych" @@ -3842,7 +3842,7 @@ msgstr "" "Umożliwia wypełnianie szczelin między pojedynczymi obrysami oraz między " "najbardziej wewnętrznym obrysem i wypełnieniem." -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" @@ -3874,7 +3874,7 @@ msgstr "Wymuś podpory" msgid "Enqueued" msgstr "Zakolejkowano" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Zawsze upuszczaj na stół" @@ -3982,7 +3982,7 @@ msgstr "" "Błąd: \"%2%\"" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Błąd" @@ -4132,23 +4132,23 @@ msgstr "Tryb Eksperta" msgid "Export" msgstr "Eksport" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Eksport Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Eksport &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Ekspor&t ścieżek narzędzi do OBJ" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Eksport 3MF" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Eksport AMF" @@ -4156,11 +4156,11 @@ msgstr "Eksport AMF" msgid "Export AMF file:" msgstr "Eksport pliku AMF:" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Eks&port Paczki Konfiguracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Eksport paczki konfiguracyjnej z drukarkami fizycznymi" @@ -4169,15 +4169,15 @@ msgid "Export G-Code." msgstr "Eksport G-code." #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Eksport G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Eksport G-gode na kartę SD / pamięć flash" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Eksport OBJ" @@ -4185,19 +4185,19 @@ msgstr "Eksport OBJ" msgid "Export OBJ file:" msgstr "Eksport pliku OBJ:" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Eksport stołu jako &STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Eksport stołu z podporam&i do STL" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Eksport SLA" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Eksport STL" @@ -4205,12 +4205,12 @@ msgstr "Eksport STL" msgid "Export STL file:" msgstr "Eksport pliku STL:" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Eksport do pliku wszystkich zestawów ustawień wraz z fizycznymi drukarkami" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Eksport wszystkich zestawów ustawień do pliku" @@ -4222,23 +4222,23 @@ msgstr "Eksport jako STL" msgid "Export config" msgstr "Eksport konfiguracji" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Eksport obecnej konfiguracji do pliku" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Eksport zawartości stołu jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Eksport zawartości stołu jako G-gode na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Eksport zawartości stołu jako STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Eksport zawartości stołu jako STL wraz z podporami" @@ -4255,19 +4255,19 @@ msgstr "Niepowodzenie eksportu tymczasowego pliku 3MF" msgid "Export sources full pathnames to 3mf and amf" msgstr "Eksport pełnych ścieżek do 3MF i AMF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Eksport model(i) jako 3MF." -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Eksport model(i) jako AMF." -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Eksport model(i) jako OBJ." -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Eksport modeli jako STL." @@ -4275,7 +4275,7 @@ msgstr "Eksport modeli jako STL." msgid "Export to SD card / Flash drive" msgstr "Eksport na kartę SD / pamięć flash" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Eksport ścieżek narzędzi jako OBJ" @@ -4287,7 +4287,7 @@ msgstr "Eksport" msgid "Exporting G-code" msgstr "Eksportowanie G-code" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Eksportowanie paczki konfiguracji" @@ -4308,11 +4308,11 @@ msgstr "Eksportowanie" msgid "Exposition time is out of printer profile bounds." msgstr "Czas naświetlania jest poza zakresem profilu drukarki." -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Naświetlanie" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Czas naświetlania" @@ -4374,7 +4374,7 @@ msgstr "Kolor ekstrudera" msgid "Extruder changed to" msgstr "Ekstruder zmieniony na" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Odstęp od ekstrudera" @@ -4383,7 +4383,7 @@ msgid "Extruder offset" msgstr "Margines ekstrudera" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -4391,7 +4391,7 @@ msgid "Extruders" msgstr "Ekstrudery" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Liczba ekstruderów" @@ -4431,7 +4431,7 @@ msgstr "Drukarki FFF" msgid "Facets" msgstr "Powierzchnie" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Warstwy przejściowe" @@ -4463,11 +4463,11 @@ msgstr "Nie udało się wywiercić niektórych otworów w modelu" msgid "Fan Speed (%)" msgstr "Prędkość wentylatora (%)" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Ustawienia wentylatora" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Prędkość wentylatora" @@ -4501,11 +4501,11 @@ msgstr "Wentylator będzie zawsze pracować na %1%%%" msgid "Fan will be turned off." msgstr "Wentylator będzie wyłączony." -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Szybkie" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Szybkie przechylanie" @@ -4529,7 +4529,7 @@ msgstr "Rodzaje funkcji" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -4541,7 +4541,7 @@ msgstr "Średnica Filamentu:" msgid "Filament End G-code" msgstr "G-code dla zakończenia filamentu" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Nadpisywane Ustawienia" @@ -4550,7 +4550,7 @@ msgid "Filament Profiles Selection" msgstr "Wybór profili filamentu" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Ustawienia Filamentu" @@ -4592,7 +4592,7 @@ msgstr "Notatki do filamentu" msgid "Filament parking position" msgstr "Pozycja zatrzymania filamentu" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Właściwości filamentu" @@ -4609,7 +4609,7 @@ msgstr "Czas rozładowania filamentu" msgid "Filaments" msgstr "Filamenty" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Nie znaleziono pliku" @@ -4677,7 +4677,7 @@ msgstr "Wypełnij pozostałą przestrzeń stołu instancjami wybranego modelu" msgid "Filling bed" msgstr "Wypełnianie stołu" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Znajdź" @@ -4689,11 +4689,11 @@ msgstr "Znajdź podany wzorzec w linijkach pliku G-code i zamień je." msgid "Finished" msgstr "Zakończono" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Retrakcja z firmware" @@ -4909,7 +4909,7 @@ msgstr "" "Do działania wieży czyszczącej z podporami rozpuszczalnymi konieczna jest " "synchronizacja wysokości warstw modelu i podpór." -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Wymuś podkładkę wokół wszystkich modeli, wszędzie" @@ -4941,7 +4941,7 @@ msgstr "" "Format miniaturek G-kodu: PNG dla najlepszej jakości, JPG dla najmniejszego " "rozmiaru, QOI dla firmware z małą ilością pamięci" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -4949,7 +4949,7 @@ msgstr "" "Reguła kompatybilności w przód przy wczytywaniu konfiguracji z plików " "konfiguracyjnych i plików projektu (3MF, AMF)." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Znaleziono zarezerwowane słowa kluczowe w" @@ -4961,11 +4961,11 @@ msgstr "Od" msgid "From Object List You can't delete the last solid part from object." msgstr "Nie możesz usunąć ostatniej bryły modelu z Listy Modeli." -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Przód" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Widok przodu" @@ -4973,7 +4973,7 @@ msgstr "Widok przodu" msgid "Full fan speed at layer" msgstr "Pełna prędkość wentylatora na warstwie " -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Pełny ekran" @@ -5021,7 +5021,7 @@ msgstr "Grubość Fuzzy Skin" msgid "Fuzzy skin type." msgstr "Rodzaj Fuzzy Skin." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" @@ -5059,11 +5059,11 @@ msgstr "Zamiana G-code" msgid "G-code thumbnails" msgstr "Miniaturki G-code" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Przeglądarka G-code" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "Ogólna Licencja Publiczna (GPL) GNU Affero, wersja 3" @@ -5080,10 +5080,10 @@ msgstr "Galeria" msgid "Gap fill" msgstr "Wypełnienie szpar" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Ogólne" @@ -5113,11 +5113,11 @@ msgstr "" "niezależnie od progu kąta. Przydaje się, aby uzyskać lepszą przyczepność " "modelu, które mają bardzo małą powierzchnię kontaktu z powierzchnią druku." -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Generowanie podpór" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Generowanie podpór dla modeli" @@ -5309,11 +5309,11 @@ msgstr "" msgid "Head diameter" msgstr "Średnica łącznika" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Przenikanie łączników" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Przenikanie łączników nie powinno być większe niż ich średnica." @@ -5337,7 +5337,7 @@ msgstr "Wysokość (mm)" msgid "Height of skirt expressed in layers." msgstr "Wysokość skirtu wyrażona w warstwach." -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Wysokość wyświetlacza" @@ -5362,15 +5362,15 @@ msgstr "" "Witaj w %s! Ten %s pomoże Ci z konfiguracją początkową - wszystko będzie " "gotowe do drukowania po zaledwie kilku kliknięciach." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Pomoc" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Pomoc (opcje FFF)" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Pomoc (opcje SLA)" @@ -5404,7 +5404,7 @@ msgstr "Wysoko" msgid "High extruder current on filament swap" msgstr "Zwiększenie prądu ekstrudera przy zmianie filamentu" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Wysoka lepkość" @@ -5436,7 +5436,7 @@ msgstr "Średnica otworu" msgid "Hollow and drill" msgstr "Drążenie i wiercenie" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Wydrąż model, aby uzyskać puste wnętrze" @@ -5444,16 +5444,16 @@ msgstr "Wydrąż model, aby uzyskać puste wnętrze" msgid "Hollow this object" msgstr "Wydrąż ten model" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Drążenie" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -5521,20 +5521,20 @@ msgstr "" "Umieść kursor nad przyciskiem, aby uzyskać więcej informacji\n" "lub kliknij ten przycisk." -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Jak daleko poza kształt powinna sięgać podkładka" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" "Głębokość, na którą malutkie łączniki podpór powinny wnikać w powłokę modelu." -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Głębokość, na którą łącznik podpory powinien wnikać w powłokę modelu" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -5753,7 +5753,7 @@ msgstr "" "Jeśli włączone, na górze podglądu 3D będzie wyświetlany przycisk zwijania " "bocznego panelu" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -6025,7 +6025,7 @@ msgstr "" "lub niedziałających punktów dystrybucji. Można włączyć tę opcję dla " "samodzielnie podpisanych certyfikatów, jeśli połączenie nie powiedzie się." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignoruj nieistniejące pliki konfiguracyjne" @@ -6043,15 +6043,15 @@ msgstr "Niedozwolona instrukcja" msgid "Import" msgstr "Import" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Import Konfigura&cji" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Import Paczki Konfi&guracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Import konfiguracji z &projektu" @@ -6067,7 +6067,7 @@ msgstr "Import Modelu" msgid "Import Objects" msgstr "Importuj Modele" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Import archiwum SL1 / SL1S" @@ -6075,11 +6075,11 @@ msgstr "Import archiwum SL1 / SL1S" msgid "Import SLA archive" msgstr "Import archiwum SLA" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Import STL (jednostki imperialne)" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Import STL/OBJ/AM&F/3MF" @@ -6207,11 +6207,11 @@ msgstr "Dziedziczy profil" msgid "Initial exposition time is out of printer profile bounds." msgstr "Początkowy czas naświetlania jest poza zakresem profilu drukarki." -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Wysokość pierwszej warstwy" @@ -6316,7 +6316,7 @@ msgstr "Błąd wewnętrzny: %1%." msgid "Internal infill" msgstr "Wypełnienie wewnętrzne" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Nieprawidłowe przenikanie łączników podpór" @@ -6344,7 +6344,7 @@ msgstr "" msgid "Invalid numeric input." msgstr "Nieprawidłowa wartość numeryczna." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Błędna średnica łącznika" @@ -6380,11 +6380,11 @@ msgstr "Rodzaj prasowania" msgid "Is it safe?" msgstr "Czy jest to bezpieczne?" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Izometryczny" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Widok izometryczny" @@ -6411,7 +6411,7 @@ msgstr "" "podczas zmiany filamentu, pomagając kształtować końcówkę przez wyciskanie " "oraz przepychać filament z nieprawidłowo ukształtowaną końcówką." -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Jest to ostatni zestaw ustawień dla fizycznej drukarki." @@ -6425,7 +6425,7 @@ msgstr "" msgid "It's not possible to delete the last related preset for the printer." msgstr "Nie ma możliwości usunięcia ostatniego zestawu ustawień dla drukarki." -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Limity jerku" @@ -6491,7 +6491,7 @@ msgstr "Zachowaj wybrane ustawienia." msgid "Keep upper part" msgstr "Zachowaj górną część" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" @@ -6499,11 +6499,11 @@ msgstr "Skróty klawiszowe" msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "ZAMKNIĘTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -6511,7 +6511,7 @@ msgstr "" "ZAMKNIĘTA KŁÓDKA oznacza, że ustawienia są takie same jak wartości systemowe " "(lub domyślne) w obecnej grupie ustawień" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -6523,7 +6523,7 @@ msgstr "" msgid "Label objects" msgstr "Oznacz modele" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Tryb krajobrazu" @@ -6563,7 +6563,7 @@ msgstr "" "\n" "Wysokość warstwy zostanie zresetowana do 0,01." -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Limit wysokości warstw" @@ -6571,8 +6571,8 @@ msgstr "Limit wysokości warstw" msgid "Layer range Settings to modify" msgstr "Zakres warstw dla modyfikacji ustawień" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Warstwy" @@ -6589,7 +6589,7 @@ msgstr "Warstwy" msgid "Layers and Perimeters" msgstr "Warstwy i Obrysy" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Warstwy i obrysy" @@ -6602,15 +6602,15 @@ msgstr "Opcje układu" msgid "Leave \"%1%\" enabled" msgstr "Zostaw opcję \"%1%\" włączoną" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Lewo" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Wartość z zestawu ustawień po lewej" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Widok lewy" @@ -6647,7 +6647,7 @@ msgid "Length of the infill anchor" msgstr "Długość kotwiczenia wypełnienia" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -6659,7 +6659,7 @@ msgstr "" msgid "Lift Z" msgstr "Z-hop" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -6719,19 +6719,19 @@ msgstr "Wczytaj Element" msgid "Load Project" msgstr "Wczytaj Projekt" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Wczytaj model" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Wczytaj archiwum SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Wczytaj model zapisany w jednostkach imperialnych" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -6740,7 +6740,7 @@ msgstr "" "Załaduj i przechowuj ustawienia w podanej lokalizacji. Jest to przydatne " "przy używaniu wielu profili lub konfiguracji z lokalizacji sieciowej." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Wczytaj plik konfiguracyjny" @@ -6758,11 +6758,11 @@ msgstr "" "W podobny sposób możesz użyć menu \"Plik -> Import -> Import archiwum SL1/" "SL1S\", co pozwala również na odtworzenie modeli 3D z danych wokselowych." -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Wczytaj konfigurację z pliku projektu" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -6770,11 +6770,11 @@ msgstr "" "Wczytaj konfigurację z określonego pliku. Może być użyte więcej niż raz, aby " "wczytać opcje z wielu plików." -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Wczytaj wyeksportowany plik konfiguracyjny" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Wczytaj zestaw ustawień" @@ -6806,11 +6806,11 @@ msgstr "Wczytywanie konfiguracji" msgid "Loading file" msgstr "Wczytywanie pliku" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Wczytywanie paczki konfiguracyjnej" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Wczytywanie pliku konfiguracyjnego" @@ -6849,7 +6849,7 @@ msgstr "Lokalny układ współrzędnych" msgid "Lock supports under new islands" msgstr "Zablokuj podpory pod nowymi wyspami" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Poziom logowania" @@ -6865,7 +6865,7 @@ msgstr "Niski" msgid "Lowest Z height" msgstr "Najniższa wysokość Z" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -6874,7 +6874,7 @@ msgstr "Najniższa wysokość Z" msgid "Machine limits" msgstr "Limity maszynowe" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -6882,7 +6882,7 @@ msgstr "" "Limity maszynowe nie zostały ustawione, dlatego szacowany czas druku może " "odbiegać od rzeczywistości." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -6892,7 +6892,7 @@ msgstr "" "obliczenia czasu drukowania, który może okazać się niedokładny, ponieważ " "drukarka może zastosować inne." -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" @@ -6918,20 +6918,20 @@ msgstr "Edycja ręczna" msgid "Masked SLA file exported to %1%" msgstr "Maskowany plik SLA wyeksportowany do %1%" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Dopasuj pojedynczy wiersz" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Ustawienia mate&riału" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Materiał" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Ustawienia materiału" @@ -6940,7 +6940,7 @@ msgstr "Ustawienia materiału" msgid "Material Settings Tab" msgstr "Ustawienia materiału" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Profil materiału używanego do drukowania" @@ -6948,19 +6948,19 @@ msgstr "Profil materiału używanego do drukowania" msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Maksymalna długość mostu" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Maks. liczba mostków na słupku" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Maksymalny dystans łączenia" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Maksymalny dystans łączenia słupków" @@ -7056,7 +7056,7 @@ msgstr "Maksymalne przyspieszenie podczas retrakcji" msgid "Maximum acceleration when retracting (M204 R)" msgstr "Maksymalne przyspieszenie przy retrakcji (M204 R)" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Maksymalne przyspieszenia" @@ -7078,7 +7078,7 @@ msgstr "" "powstanie efektu low-poly, a ponieważ redukcja kodu odbywa się na każdej " "warstwie oddzielnie, może to przełożyć się również na artefakty na wydruku." -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Maksymalny czas naświetlania" @@ -7114,11 +7114,11 @@ msgstr "Maksymalny posuw (prędkość ruchu) osi Y" msgid "Maximum feedrate of the Z axis" msgstr "Maksymalny posuw (prędkość ruchu) osi Z" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Maksymalne prędkości posuwu" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Maksymalny początkowy czas naświetlania" @@ -7158,7 +7158,7 @@ msgstr "Maksymalny jerk dla osi Z" msgid "Maximum length of the infill anchor" msgstr "Maksymalna długość kotwiczenia wypełnienia" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -7189,7 +7189,7 @@ msgid "Medium" msgstr "Średni" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Łączenie" @@ -7205,7 +7205,7 @@ msgstr "Scal modele w jeden model wieloczęściowy" msgid "Merged" msgstr "Scalono" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -7245,7 +7245,7 @@ msgstr "Min" msgid "Min print speed" msgstr "Minimalna prędkość druku" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Minimalne rozmieszczenie punktów podpór" @@ -7287,11 +7287,11 @@ msgstr "" "Ustaw zero, aby wyłączyć upraszczanie i użyć pełnej rozdzielczości pliku " "wejściowego." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Minimalny czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:3156 +#: src/libslic3r/PrintConfig.cpp:3128 msgid "Minimum feature size" msgstr "Minimalny rozmiar detalu" @@ -7303,15 +7303,15 @@ msgstr "Minimalna prędkość posuwu z ekstruzją" msgid "Minimum feedrate when extruding (M205 S)" msgstr "Minimalna prędkość posuwu z ekstruzją (M205 S)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Minimalna prędkość posuwu" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Minimalny początkowy czas naświetlania" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Minimalna szerokość obrysu" @@ -7335,15 +7335,19 @@ msgstr "" msgid "Minimum thickness of a top / bottom shell" msgstr "Minimalna grubość górnej/dolnej powłoki" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" "Minimalna grubość cienkich detali. Elementy modelu, które są cieńsze niż ta " "wartość, nie będą drukowane, natomiast elementy grubsze niż minimalny " -"rozmiar detalu zostaną poszerzone do minimalnej szerokości obrysu." +"rozmiar detalu zostaną poszerzone do minimalnej szerokości obrysu. Jeśli " +"wyrażona w procentach (na przykład 25%), zostanie obliczona na podstawie " +"średnicy dyszy." #: src/libslic3r/PrintConfig.cpp:2899 msgid "Minimum top shell thickness" @@ -7366,11 +7370,11 @@ msgstr "Minimalna prędkość posuwu ruchu jałowego" msgid "Minimum travel feedrate (M205 T)" msgstr "Minimalna prędkość posuwu ruchu jałowego (M205 T)" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Minimalna grubość ścianki drążonego modelu." -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" @@ -7395,7 +7399,7 @@ msgstr "" msgid "Mirror Object" msgstr "Odbicie Lustrzane" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Odbij w poziomie" @@ -7415,7 +7419,7 @@ msgstr "Odbicie lustrzane wybranego modelu w osi Y" msgid "Mirror the selected object along the Z axis" msgstr "Odbicie lustrzane wybranego modelu w osi Z" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Odbij w pionie" @@ -7591,11 +7595,11 @@ msgstr "" "Kilka obiektów zostało załadowanych dla drukarki typu multi-material.\n" "Traktować je jako jeden model zawierający kilka części?" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Pomnóż ilość kopii przez stworzenie siatki." -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Pomnóż ilość kopii przez tę wartość." @@ -7683,7 +7687,7 @@ msgstr "Nowy układ z dostępem przez przycisk ustawień w górnym menu" msgid "New prerelease version %1% is available." msgstr "Dostępna jest nowa wersja przedpremierowa %1% ." -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Wybrano nowy zestaw ustawień drukarki" @@ -7743,7 +7747,7 @@ msgstr "" "Nie ma możliwości wygenerowania podkładki dla tego modelu przy obecnych " "ustawieniach" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Brak poprzednio pociętych plików." @@ -7751,7 +7755,7 @@ msgstr "Brak poprzednio pociętych plików." msgid "No sparse layers (EXPERIMENTAL)" msgstr "Brak warstw bez czyszczenia (EKSPERYMENTALNE)" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Punkty nie zostaną umieszczone bliżej siebie niż ustawiona wartość." @@ -7767,7 +7771,7 @@ msgid "None" msgstr "Brak" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normalny" @@ -7783,7 +7787,7 @@ msgstr "Nie znaleziono:" msgid "Note" msgstr "Uwaga" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -7800,7 +7804,7 @@ msgstr[3] "" "Pamiętaj, że wybrany zestaw ustawień zostanie usunięty również z tych " "drukarek." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -7818,7 +7822,7 @@ msgstr[3] "" "Weź pod uwagę, że te drukarki zostaną usunięte przy usuwaniu wybranego " "zestawu ustawień." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -7868,12 +7872,12 @@ msgstr "Uwaga: ten zestaw ustawień zostanie zastąpiony po zapisaniu" msgid "Note: some shortcuts work in (non)editing mode only." msgstr "Uwaga: niektóre skróty działają tylko poza trybem edycji." -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notatki" @@ -7887,7 +7891,7 @@ msgstr "Uwaga" msgid "Notify about new releases" msgstr "Powiadamiaj o nowych wydaniach" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Dysza" @@ -7899,7 +7903,7 @@ msgstr "Średnica dyszy:" msgid "Nozzle and Bed Temperatures" msgstr "Temperatury dyszy oraz stołu" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Średnica dyszy" @@ -7930,7 +7934,7 @@ msgstr "" msgid "Number of cooling moves" msgstr "Ilość ruchów chłodzących" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Liczba ekstruderów drukarki." @@ -7958,15 +7962,15 @@ msgstr "" "\", to może ona nadpisać wartość wprowadzoną w tym polu. Ustaw zero, aby " "całkowicie wyłączyć skirt." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Liczba pikseli" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Liczba pikseli w osi X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Liczba pikseli w osi Y" @@ -7982,7 +7986,7 @@ msgstr "Liczba zwartych warstw górnych i dolnych." msgid "Number of solid layers to generate on top surfaces." msgstr "Liczba zwartych warstw górnych." -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -7998,7 +8002,7 @@ msgstr "Ilość zmian narzędzi" msgid "Object Settings to modify" msgstr "Ustawienia modelu do modyfikacji" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Podniesienie modelu" @@ -8123,7 +8127,7 @@ msgstr "Włącz/wyłącz wyświetlanie jednej warstwy suwaka pionowego" msgid "One layer mode" msgstr "Tryb jednej warstwy" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Jeden z zestawów ustawień nie został znaleziony" @@ -8148,7 +8152,7 @@ msgstr "" "stole tylko jeden model lub włącz druk sekwencyjny parametrem " "\"complete_objects\"." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -8158,7 +8162,7 @@ msgstr "Tworzenie podpór tylko na stole. Nie będą tworzone na wydruku." msgid "Only infill where needed" msgstr "Tylko potrzebne wypełnienie" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Z-hop tylko" @@ -8200,7 +8204,7 @@ msgstr "" "Zapobieganie wyciekom jest obecnie niedostępne przy włączonej wieży " "czyszczącej." -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Otwórz &PrusaSlicer" @@ -8220,11 +8224,11 @@ msgstr "Otwórz folder." msgid "Open G-code file:" msgstr "Otwórz plik G-code:" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Otwórz przeglądarkę G-code" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Otwórz nową instancję" @@ -8232,20 +8236,20 @@ msgstr "Otwórz nową instancję" msgid "Open Preferences." msgstr "Otwórz Preferencje." -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Otwórz PrusaSlicer " -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Otwórz plik G-code" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Otwórz nową instancję PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Otwórz plik projektu" @@ -8287,7 +8291,7 @@ msgstr "Otwórz stronę %s w przeglądarce" msgid "Open the Prusa3D drivers download page in your browser" msgstr "Otwórz stronę Prusa3D ze sterownikami w przeglądarce" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Otwórz okno dialogowe, aby zmodyfikować galerię kształtów" @@ -8304,7 +8308,7 @@ msgid "Opening new project while some presets are unsaved." msgstr "" "Otwieranie nowego projektu, gdy niektóre zestawy ustawień nie są zapisane." -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -8380,7 +8384,7 @@ msgstr "Anulowano ustawianie orientacji." msgid "Origin" msgstr "Punkt zerowy" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Inne" @@ -8400,15 +8404,15 @@ msgstr "Zewnętrzny i wewnętrzny brim" msgid "Outer brim only" msgstr "Tylko zewnętrzny brim" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Plik Wyjściowy" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Informacje o Modelu wyjściowym" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Plik wyjściowy" @@ -8416,7 +8420,7 @@ msgstr "Plik wyjściowy" msgid "Output filename format" msgstr "Format pliku wyjściowego" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Opcje wyjściowe" @@ -8441,19 +8445,19 @@ msgstr "Próg zwisu" msgid "Overlap" msgstr "Nakładanie" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Ustawienia d&ruku" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Podkładka" @@ -8461,15 +8465,15 @@ msgstr "Podkładka" msgid "Pad and Support" msgstr "Podkładka i Podpory" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Podkładka wokół modelu" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Podkładka wokół wszystkich modeli" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Rozmiar brimu dla podkładki" @@ -8477,31 +8481,31 @@ msgstr "Rozmiar brimu dla podkładki" msgid "Pad brim size is too small for the current configuration." msgstr "Rozmiar brimu podkładki jest zbyt mały dla obecnej konfiguracji." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Przenikanie łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Rozmieszczenie łączników podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Szerokość łącznika podkładki z modelem" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Odstęp modelu od podkładki" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Wysokość ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Kąt pochylenia ścianki podkładki" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Grubość ścianki podkładki" @@ -8633,7 +8637,7 @@ msgstr "Wklej" msgid "Paste From Clipboard" msgstr "Wklej Ze Schowka" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Wklej zawartość schowka" @@ -8672,7 +8676,7 @@ msgstr "Wzór podpór." msgid "Pause" msgstr "Pauza" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-code dla pauzy drukowania" @@ -8708,7 +8712,7 @@ msgstr "" "Wykonaj integrację z pulpitem (ustawia ten plik binarny tak, aby był możliwy " "do wyszukania przez system)." -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -8751,7 +8755,7 @@ msgstr "" msgid "Perimeter" msgstr "Obrys" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Liczba rozmieszania obrysów" @@ -8763,15 +8767,15 @@ msgstr "Ekstruder dla obrysów" msgid "Perimeter generator" msgstr "Generator obrysów" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Długość zmiany obrysu" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Margines filtra zmiany obrysu" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Kąt graniczny zmiany obrysu" @@ -8822,27 +8826,27 @@ msgstr "" "Rozmiary grafik przechowywanych w plikach .gcode i .sl1 / .sl1s, w formacie: " "\"XxY, XxY, ...\"" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Tryb łączenia słupków" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Średnica słupka" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Współczynnik rozszerzania słupka" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Średnica łączników podpór powinna być mniejsza niż średnica słupków." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Przednia średnica łącznika" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Szerokość łącznika" @@ -8890,11 +8894,11 @@ msgstr "" msgid "Please select the file to reload" msgstr "Wybierz plik do przeładowania" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Częściowe prawa autorskie" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Tryb Portretowy" @@ -8903,7 +8907,7 @@ msgstr "Tryb Portretowy" msgid "Position" msgstr "Pozycja" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Pozycja (dla drukarek z kilkoma ekstruderami)" @@ -8919,7 +8923,7 @@ msgstr "Pozycja Y" msgid "Position of perimeters starting points." msgstr "Pozycja startowa druku obrysów." -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "Skrypty do post-processingu powinny modyfikować G-code na miejscu." @@ -8941,11 +8945,11 @@ msgstr "" "Ustaw skrypt, aby zmieniał G-code na miejscu i zajrzyj do instrukcji, aby " "dowiedzieć się, jak opcjonalnie zmienić nazwę przetwarzanego G-code.\n" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Skrypty do przetwarzania końcowego" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Pod&gląd" @@ -9017,7 +9021,7 @@ msgstr "" msgid "Preset with name \"%1%\" already exists." msgstr "Zestaw ustawień o nazwie \"%1%\" już istnieje." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9026,7 +9030,7 @@ msgstr "" "Kliknij ten przycisk, aby wybrać ten sam zestaw ustawień dla prawego i " "lewego zestawu." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Zestawy ustawień są takie same" @@ -9066,7 +9070,7 @@ msgstr "" msgid "Pressure equalizer (experimental)" msgstr "Korektor ciśnienia (eksperymentalny)" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -9087,7 +9091,7 @@ msgstr "" "procentach (np. 25%), to zostanie obliczony na podstawie średnicy dyszy." #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Podgląd cięcia" @@ -9095,7 +9099,7 @@ msgstr "Podgląd cięcia" msgid "Preview hollowed and drilled model" msgstr "Podgląd drążenia/wiercenia" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Poprzednio pocięty plik (" @@ -9107,7 +9111,7 @@ msgstr "Wyczyść wszystkie używane ekstrudery" msgid "Print" msgstr "Druk" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Kolej&ka zadań serwera druku" @@ -9115,7 +9119,7 @@ msgstr "Kolej&ka zadań serwera druku" msgid "Print Diameters" msgstr "Średnice" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Przesyłanie do serwera druku" @@ -9154,15 +9158,15 @@ msgstr "Pauzuje wydruk" msgid "Print settings" msgstr "Ustawienia druku" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Prędkość druku" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Nadpisanie prędkości druku" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Ustawi&enia drukarki" @@ -9197,11 +9201,11 @@ msgstr "Ustawienia Drukarki" msgid "Printer Settings Tab" msgstr "Ustawienia drukarki" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Korekcje bezwzględne drukarki" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Korekcja gamma drukarki" @@ -9213,32 +9217,32 @@ msgstr "Notatki o drukarce" msgid "Printer preset names" msgstr "Nazwy zestawów ustawień drukarek" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Korekcja skalowania przez drukarkę w osi X" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Korekcja skalowania przez drukarkę w osi Y" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Korekcja skalowania przez drukarkę w osi Z" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Korekcja skalowania drukarki" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Korekcja skalowania przez drukarkę w osi X" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Korekcja skalowania przez drukarkę w osi Y " -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Korekcja skalowania przez drukarkę w osi Z" @@ -9285,7 +9289,7 @@ msgid "Process %1% / 100" msgstr "Przetwarzanie %1% / 100" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Przetwarzanie %s" @@ -9299,9 +9303,9 @@ msgstr "" "Przetwarzanie modelu '%1%' z więcej niż 1 milionem trójkątów może być " "powolne. Wysoce zalecamy zmniejszenie ilości trójkątów." -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Zależności profilowe" @@ -9393,7 +9397,7 @@ msgid "" "PrusaSlicer has encountered an error while taking a configuration snapshot." msgstr "PrusaSlicer napotkał błąd przy wykonywaniu zrzutu konfiguracji." -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -9514,15 +9518,15 @@ msgstr "Szybka" msgid "Quick Add Settings (%s)" msgstr "Szybkie dodanie ustawień (%s)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Szybkie Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Szybkie cięcie i Zapis jako" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Wyjście z %s" @@ -9590,7 +9594,7 @@ msgstr "Szerokość linii wyciskania" msgid "Ramming parameters" msgstr "Parametry wyciskania" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Ustawienia wyciskania" @@ -9610,8 +9614,8 @@ msgstr "Zakres" msgid "Rasterizing layers" msgstr "Rasteryzowanie warstw" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Wczytaj ponownie z d&ysku" @@ -9623,15 +9627,15 @@ msgstr "Ponowna konfiguracja" msgid "Ready" msgstr "Gotowe" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Tył" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Widok z tyłu" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Ostatni&e projekty" @@ -9674,7 +9678,7 @@ msgid "Rectilinear grid" msgstr "Linie równoległe - kratka" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Powtórz" @@ -9707,7 +9711,7 @@ msgstr "Odśwież drukarki" msgid "Regular" msgstr "Zwykły" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Wyrażenie regularne" @@ -9757,9 +9761,9 @@ msgstr "Wczytaj z:" msgid "Reload plater from disk" msgstr "Przeładuj wirtualny stół z dysku" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Przeładuj wirtualny stół z dysku" @@ -9785,7 +9789,7 @@ msgid "Remember output directory" msgstr "Zapamiętaj katalog wyjściowy" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Usuń" @@ -9912,11 +9916,11 @@ msgstr "" msgid "Render" msgstr "Render" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Renderuj programowo" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." @@ -9924,7 +9928,7 @@ msgstr "" "Renderowanie software'owe. Dołączony silnik MESA zostanie użyty zamiast " "domyślnego OpenGL." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Naprawa" @@ -9956,11 +9960,11 @@ msgstr "Naprawianie modelu przez usługę Netfabb" msgid "Repairing was canceled" msgstr "Naprawianie zostało anulowane" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Powtórz Ostatnie Szybkie Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Powtórz ostatnie szybkie cięcie" @@ -9972,7 +9976,7 @@ msgstr "Zamiana z:" msgid "Replace the selected volume with new STL" msgstr "Zamień wybrany kształt na nowy STL" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Zamień na" @@ -10040,7 +10044,7 @@ msgstr "Resetuj skalę" msgid "Reset selection" msgstr "Reset zaznaczenia" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Zresetuj do koloru filamentu" @@ -10064,8 +10068,8 @@ msgstr "Długość retrakcji przed ruchem czyszczącym" msgid "Retract on layer change" msgstr "Retrakcja przy zmianie warstwy" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retrakcja" @@ -10087,7 +10091,7 @@ msgid "" msgstr "" "Retrakcja nie zostanie wykonana przy ruchu jałowym krótszym niż ta wartość." -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -10119,15 +10123,15 @@ msgstr "Odwróć przeliczanie z metrów" msgid "Review the substitutions and adjust them if needed." msgstr "Przejrzyj zamienniki i dostosuj je w razie potrzeby." -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Prawo" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Wartość z zestawu ustawień po prawej" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Widok prawy" @@ -10164,15 +10168,15 @@ msgstr "Prawy przycisk myszy:" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Obróć" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Obróć wokół osi X" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Obróć wokół osi Y" @@ -10201,15 +10205,15 @@ msgstr "" msgid "Rotation" msgstr "Obrót" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi X." -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Y." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Kąt obrotu w stopniach wokół osi Z." @@ -10227,11 +10231,11 @@ msgstr "Uruchom %s" msgid "Running post-processing scripts" msgstr "Wykonywanie skryptów przetwarzania końcowego (post-processing)" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "Wyślij G-cod&e" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "W&yślij do druku" @@ -10261,7 +10265,7 @@ msgstr "Skróty klawiszowe \"uchwytów\" SLA" msgid "SLA material" msgstr "Materiał SLA" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Rodzaj materiału SLA" @@ -10273,7 +10277,7 @@ msgstr "Materiały SLA" msgid "SLA print" msgstr "Druk SLA" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Notatki dla materiału SLA" @@ -10285,7 +10289,7 @@ msgstr "Ustawienia druku SLA" msgid "SLA supports outside the print area were detected." msgstr "Wykryto podpory SLA poza obszarem roboczym." -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" @@ -10304,7 +10308,7 @@ msgstr "Zapisz" msgid "Save %s as:" msgstr "Zapisz %s jako:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Zapisz plik %s jako:" @@ -10313,11 +10317,11 @@ msgstr "Zapisz plik %s jako:" msgid "Save G-code file as:" msgstr "Zapisz plik G-code jako:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Zapisz plik OBJ (mniej podatny na błędy współrzędnych niż STL) jako:" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Z&apisz projekt jako" @@ -10325,15 +10329,15 @@ msgstr "Z&apisz projekt jako" msgid "Save SL1 / SL1S file as:" msgstr "Zapisz plik SL1 / SL1S jako:" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Zapisz plik konfiguracyjny" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Zapisz konfigurację jako:" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Zapisz konfigurację jako wskazany plik." @@ -10343,11 +10347,11 @@ msgstr "Zapisz konfigurację jako wskazany plik." msgid "Save current %s" msgstr "Zapisz bieżące %s" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Zapisz obecny projekt" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Zapisz obecny projekt jako" @@ -10360,7 +10364,7 @@ msgstr "Zapisz plik jako:" msgid "Save preset" msgstr "Zapisz zestaw ustawień" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Zapisz paczkę ustawień jako:" @@ -10389,7 +10393,7 @@ msgstr "Zapisz wybrane opcje w zestawie ustawień \"%1%\"." msgid "Save the selected options." msgstr "Zapisz wybrane opcje." -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Zapisz plik .zip jako:" @@ -10403,7 +10407,7 @@ msgstr "Niepowodzenie zapisywania siatki jako 3MF." #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Skaluj" @@ -10419,11 +10423,11 @@ msgstr "Współczynnik skalowania" msgid "Scale the selected object to fit the print volume" msgstr "Skaluj wybrany model, aby zmieścił się w przestrzeni roboczej" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Skaluj, aby dopasować" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Skaluj, aby wypełnić zadaną objętość." @@ -10431,7 +10435,7 @@ msgstr "Skaluj, aby wypełnić zadaną objętość." msgid "Scale to print volume" msgstr "Skaluj do obszaru roboczego" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Współczynnik lub procent skalowania." @@ -10462,7 +10466,7 @@ msgstr "Kierunek jitter wyznaczany przez szew" msgid "Seams" msgstr "Szwy" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Szu&kaj" @@ -10485,7 +10489,7 @@ msgstr "" msgid "Search in English" msgstr "Szukaj po angielsku" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Szukaj w ustawieniach" @@ -10572,7 +10576,7 @@ msgstr "Wybierz akcję, która ma zostać zastosowana do pliku" msgid "Select by rectangle" msgstr "Zaznaczenie prostokątem" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Wybierz konfigurację do wczytania:" @@ -10580,7 +10584,7 @@ msgstr "Wybierz konfigurację do wczytania:" msgid "Select coordinate space, in which the transformation will be performed." msgstr "Wybierz płaszczyznę, w której ma nastąpić przekształcenie." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Wybierz zestawy ustawień do porównania" @@ -10592,7 +10596,7 @@ msgstr "Wybierz kształt z galerii" msgid "Select showing settings" msgstr "Wybierz widok ustawień" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Wybierz plik STL do naprawy:" @@ -10676,7 +10680,7 @@ msgstr "Zaznaczenie-Usunięcie z listy" msgid "Selection-Remove from rectangle" msgstr "Zaznaczenie-Usuń z prostokąta" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Zaznacza wszystkie modele" @@ -10693,7 +10697,7 @@ msgstr "Wyślij G-code" msgid "Send system info" msgstr "Wyślij informacje systemowe" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Wyślij zawartość stołu do druku jako G-code" @@ -10717,7 +10721,7 @@ msgstr "Wysyłanie informacji systemowych..." msgid "Seq." msgstr "Sekw." -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Drukowanie sekwencyjne (model po modelu)" @@ -10733,7 +10737,7 @@ msgstr "Port szeregowy:" msgid "Service name" msgstr "Nazwa usługi" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Ustaw" @@ -10860,7 +10864,7 @@ msgstr "Ustaw wybrane elementy jako do druku lub nie" msgid "Set settings tabs as menu items (experimental)" msgstr "Ustawianie zakładek ustawień jako elementów menu (eksperymentalne)" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -11021,7 +11025,7 @@ msgstr "" msgid "Set upper thumb as active" msgstr "Ustaw górny punkt jako aktywny" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -11032,7 +11036,7 @@ msgstr "" "Np: loglevel=2 loguje krytyczne, błędy i ostrzeżenia." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Ustawienia" @@ -11083,7 +11087,7 @@ msgstr "" msgid "Shape" msgstr "Kształt" -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galeria kształtów" @@ -11134,7 +11138,7 @@ msgstr "Pokaż powiadomienie \"Porada dnia\" po uruchomieniu" msgid "Show &Configuration Folder" msgstr "Pokaż folder Konfigura&cyjny" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Pokaż &etykiety" @@ -11150,7 +11154,7 @@ msgstr "Pokaż okienko" msgid "Show advanced settings" msgstr "Pokaż ustawienia zaawansowane" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Pokaż wszystkie ustawienia (w tym niekompatybilne)" @@ -11190,7 +11194,7 @@ msgstr "Pokaż wysokość modelu" msgid "Show object height on the ruler" msgstr "Pokaż wysokość modelu na linijce" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Pokaż etykiety modelu/instancji w widoku edycji 3D" @@ -11218,43 +11222,43 @@ msgstr "Pokaż podpory" msgid "Show system information" msgstr "Pokaż informacje o systemie" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Pokaż widok edycji 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Pokaż podgląd cięcia 3D" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Pokaż ustawienia filamentu" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku SLA." -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Pokaż pełną listę opcji konfiguracji druku/G-code." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Pokaż listę skrótów klawiszowych" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Pokaż zawartość stołu" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Pokaż ustawienia druku" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Pokaż ustawienia drukarki" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Pokaż tą wskazówkę pomocy." @@ -11338,7 +11342,7 @@ msgstr "Uprość model" msgid "Single Extruder Multi Material" msgstr "Multi Material z jednym ekstruderem" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -11350,15 +11354,15 @@ msgstr "" "Czy chcesz zmienić średnicę dyszy dla wszystkich ekstruderów na wartość z " "pierwszego?" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Ustawienia MM dla jednego ekstrudera" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parametry multimaterial przy jednym ekstruderze" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Tryb jednej instancji" @@ -11371,7 +11375,7 @@ msgctxt "OfFile" msgid "Size" msgstr "Rozmiar" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Rozmiar i koordynaty" @@ -11440,15 +11444,15 @@ msgstr "" msgid "Slic3r will not scale speed down below this speed." msgstr "PrusaSlicer nie będzie skalował prędkości poniżej tej wartości." -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Cięcie jako G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Cięcie jako G-code, zapisz jako" @@ -11465,15 +11469,15 @@ msgstr "Cięcie" msgid "Slice resolution" msgstr "Rozdzielczość cięcia" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Cięcie modelu i eksport warstw SLA jako PNG." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Cięcie modelu i eksport ścieżek narzędzi jako G-code." -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -11490,13 +11494,13 @@ msgstr "Informacje o cięciu" msgid "Sliced object \"%1%\" looks like a logo or a sign" msgstr "Pocięty model \"%1%\" wygląda jak logo lub znak" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Cięcie" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Cięcie zakończone!" @@ -11532,7 +11536,7 @@ msgstr "Cięcie modelu" msgid "Slicing supports" msgstr "Cięcie podpór" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Wolne" @@ -11540,7 +11544,7 @@ msgstr "Wolne" msgid "Slow down if layer print time is below" msgstr "Zwolnij jeśli czas warstwy wynosi mniej niż" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Wolne przechylanie" @@ -11548,7 +11552,7 @@ msgstr "Wolne przechylanie" msgid "Small perimeters" msgstr "Małe obrysy" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Procent średnicy małego słupka" @@ -11646,7 +11650,7 @@ msgid "Some SLA materials were uninstalled." msgstr "Niektóre materiały SLA zostały odinstalowane." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -11671,7 +11675,7 @@ msgid "" msgstr "" "Niektóre modele są zbyt wysokie, aby można było wydrukować je bez kolizji." -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -11690,7 +11694,7 @@ msgstr "" "Niektóre zestawy ustawień są modyfikowane i niezapisane zmiany nie zostaną " "przechwycone przez zrzut konfiguracji." -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -11877,7 +11881,7 @@ msgid "Spiral vase" msgstr "Tryb wazy" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Podziel" @@ -11942,13 +11946,13 @@ msgstr "Standard" msgid "Stars" msgstr "Gwiazdki" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G-code startowy" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Rozpocznij nowy projekt" @@ -11956,7 +11960,7 @@ msgstr "Rozpocznij nowy projekt" msgid "Start at height" msgstr "Zakres od" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Uruchom nowy proces cięcia" @@ -12008,7 +12012,7 @@ msgid "Status:" msgstr "Stan:" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Stealth" @@ -12067,19 +12071,19 @@ msgstr "Wymuszenie podpór" msgid "Support Generator" msgstr "Generator podpór" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Średnica stopy podpory" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Wysokość stopy podpory" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Bezpieczna odległość stopy podpory" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Łącznik podpory" @@ -12131,7 +12135,7 @@ msgid "Support material/raft/skirt extruder" msgstr "Ekstruder dla podpór/tratwy (raft)/skirtu" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Podpory tylko na stole" @@ -12139,12 +12143,12 @@ msgstr "Podpory tylko na stole" msgid "Support parameter change" msgstr "Zmiana parametrów podpór" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Słupek podpory" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Gęstość punktów podpór" @@ -12153,16 +12157,16 @@ msgid "Support points edit" msgstr "Edycja punktów podpór" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Podpory" @@ -12314,7 +12318,7 @@ msgstr "Wykonywanie zrzutu konfiguracji" msgid "Taking a configuration snapshot failed." msgstr "Niepowodzenie wykonywania zrzutu konfiguracji." -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatura" @@ -12340,7 +12344,7 @@ msgstr "Zmiana temperatury" msgid "Temperatures" msgstr "Temperatury" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Szablon niestandardowego G-code" @@ -12497,7 +12501,7 @@ msgstr "" "Wieża czyszcząca jest dostępna dla wielu modeli pod warunkiem, że mają one " "równą wysokość warstwy" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -12556,7 +12560,7 @@ msgstr "" "globalnym systemie koordynat, po osadzeniu kątów obrotu w koordynatach " "modelu." -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "Domyślny kąt łączenia słupków i \"skrzyżowań\" podpór." @@ -12673,7 +12677,7 @@ msgstr "Rodzaj filamentu używanego przy własnym G-code." msgid "The file does not exist." msgstr "Plik nie istnieje" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -12706,7 +12710,7 @@ msgstr "Następujące modele drukarek SLA nie mają przypisanych materiałów:" msgid "The following characters are not allowed by a FAT file system:" msgstr "Następujące znaki są niedozwolone w systemie plików FAT:" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -12774,7 +12778,7 @@ msgstr "Następujące skróty mają zastosowanie, gdy aktywy jest określony uch msgid "The following values were substituted:" msgstr "Następujące wartości zostały zamienione:" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -12782,7 +12786,7 @@ msgstr "" "Odstęp między najniższą częścią modelu a wygenerowaną podkładką w trybie " "zerowego podniesienia." -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Wysokość stożka bazowego podpory" @@ -12822,7 +12826,7 @@ msgid "The last color change data was saved for a single extruder printing." msgstr "" "Dane ostatniej zmiany koloru zostały zapisane dla druku z jednym ekstruderem." -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -12830,7 +12834,7 @@ msgstr "" "Maksymalny dystans pomiędzy słupkami podpór, które powinny zostać połączone. " "Wartość 0 zapobiegnie łączeniu słupków podpór." -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Maksymalna długość mostu" @@ -12855,7 +12859,7 @@ msgstr "" "Maksymalny dystans, na jaki może zostać odsunięty każdy punkt (w dwóch " "kierunkach), mierzony prostopadle do zewnętrznej ściany." -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -12889,7 +12893,7 @@ msgstr "" "Liczba dolnych warstw jest zwiększona ponad bottom_solid_layers, jeśli to " "konieczne, aby spełnić warunek minimalnej grubości powłoki." -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -12930,7 +12934,7 @@ msgid "" msgstr "" "Model zostanie podniesiony o zadaną ilość warstw i umieszczony na podporach." -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -12938,7 +12942,7 @@ msgstr "" "Udział procentowy mniejszych słupków w stosunku do normalnych w " "problematycznych obszarach, gdzie normalne słupki nie mieszczą się." -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -12948,7 +12952,7 @@ msgstr "" "Jeśli gabaryty wydruku przekraczają zadaną wartość,\n" "to zostanie użyte wolne przechylanie, w innym przypadku - szybkie" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -12966,7 +12970,7 @@ msgstr[3] "" "Poniższe drukarki fizyczne bazują na zestawie ustawień, który masz zamiar " "usunąć." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -13042,7 +13046,7 @@ msgstr "Wpisana nazwa pliku jest nieprawidłowa;" msgid "The provided name is not valid;" msgstr "Wpisana nazwa jest nieprawidłowa." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -13050,7 +13054,7 @@ msgstr "" "Wybrany plik 3MF zawiera podpory FDM namalowane przy pomocy nowszej wersji " "PrusaSlicer i nie jest kompatybilny." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -13058,7 +13062,7 @@ msgstr "" "Wybrany plik 3MF zawiera model pomalowany do Multi Material przy pomocy " "nowszej wersji PrusaSlicer i nie jest kompatybilny." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -13066,7 +13070,7 @@ msgstr "" "Wybrany plik 3MF zawiera szew namalowany przy pomocy nowszej wersji " "PrusaSlicer i nie jest kompatybilny." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -13113,7 +13117,7 @@ msgstr "" "Wybrany obiekt nie może zostać podzielony, ponieważ składa się z tylko " "jednej bryły." -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -13149,7 +13153,7 @@ msgstr "Rozmiar modelu może być wyrażony w calach" msgid "The size of the object is zero" msgstr "Rozmiar obiektu wynosi zero" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -13225,7 +13229,7 @@ msgstr "Podana nazwa nie jest prawidłowa;" msgid "The supplied settings will cause an empty print." msgstr "Wprowadzone ustawienia spowodują pusty wydruk." -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Grubość podkładki i opcjonalnie wydrążenie ścianek." @@ -13618,11 +13622,11 @@ msgstr "" msgid "This is a default preset." msgstr "To jest domyślny zestaw ustawień." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "To jest względna miara gęstości punktów podpór." -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -13635,7 +13639,7 @@ msgid "This is a system preset." msgstr "To jest systemowy zestaw ustawień." #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Ta funkcja jest używana jedynie w interfejsie PrusaSlicer jako pomoc " @@ -13953,7 +13957,7 @@ msgstr "" "uruchomić ponownie konfigurację początkową. Spowoduje to stworzenie kopii " "istniejącej konfiguracji przed zainstalowaniem plików kompatybilnych z %s ." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -13966,7 +13970,7 @@ msgstr "" "rezygnację lub zastąpienie nieznanej wartości wartością domyślną po cichu " "lub z powiadomieniem." -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -13989,15 +13993,15 @@ msgstr "" "wielu zasobów. Optymalna liczba wątków powinna być odrobinę większa od " "dostępnej liczby rdzeni lub procesorów." -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Przechylanie" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Przechylanie dla żywicy o wysokiej lepkości" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Czas przechylania" @@ -14026,15 +14030,15 @@ msgstr "" "rozładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu " "kodu T). Ten czas jest dodawany do szacowanego czasu druku." -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Czas szybkiego przechylania" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Czas wolnego przechylania" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Czas super wolnego przechylania" @@ -14096,7 +14100,7 @@ msgstr "Narzędzie" msgid "Tool #" msgstr "Narzędzie #" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-code wykonywany przy zmianie narzędzia" @@ -14118,7 +14122,7 @@ msgstr "Pozycja narzędzia" msgid "Tool type" msgstr "Rodzaj narzędzia" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Parametry zmiany narzędzia dla drukarek MM z jednym ekstruderem" @@ -14141,7 +14145,7 @@ msgstr "" "Porada dot. grubości dolnej / górnej powłoki: niedostępne z powodu " "nieprawidłowej wysokości warstwy." -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Widok z góry" @@ -14234,7 +14238,7 @@ msgstr "Jałowy" msgid "Triangles" msgstr "Trójkąty" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14256,11 +14260,11 @@ msgstr "Rodzaj drukarki." msgid "Type:" msgstr "Typ:" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "OTWARTA KŁÓDKA" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -14272,7 +14276,7 @@ msgstr "" "Kliknij, aby zresetować wszystkie ustawienia obecnej grupy ustawień do " "wartości systemowych (lub domyślnych)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -14313,11 +14317,11 @@ msgstr "Nie można zamienić na więcej niż jeden kształt" msgid "Undef" msgstr "Undef" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Niezdefiniowana kategoria" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Niezdefiniowana grupa" @@ -14331,7 +14335,7 @@ msgstr "Niedomiar" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Cofnij" @@ -14531,7 +14535,7 @@ msgstr "Użyj wolnego widoku" msgid "Use inches" msgstr "Użyj cali" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Użyj podkładki" @@ -14622,11 +14626,11 @@ msgstr "" "Wartość została zmieniona i nie równa się wartości systemowej lub tej z " "ostatnio zapisanego zestawu ustawień" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Wartości w tej kolumnie dotyczą trybu Normal" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Wartości w tej kolumnie dotyczą trybu Stealth" @@ -14671,7 +14675,7 @@ msgstr "Producent:" msgid "Verbose G-code" msgstr "G-code rozszerzony" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Wersja" @@ -14720,7 +14724,7 @@ msgstr "" "Wejdź w \"Preferencje\" i zaznacz \"%1%\",\n" "aby zmienić wybór." -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Wizualizacja pociętego i zapisanego G-code" @@ -14745,7 +14749,7 @@ msgstr "Części modelu przeorganizowane" msgid "Volumetric" msgstr "Objętościowy" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Podpowiedzi dot. objętości przepływu są niedostępne" @@ -14768,16 +14772,16 @@ msgstr "Natężenie przepływu" msgid "WARNING:" msgstr "OSTRZEŻENIE:" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "BIAŁA KROPKA" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "BIAŁA KROPKA oznacza niesystemowy (lub inny niż domyślny) zestaw ustawień." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -14785,7 +14789,7 @@ msgstr "" "BIAŁA KROPKA oznacza, że ustawienia są takie same jak w ostatnio zapisanym " "zestawie ustawień dla obecnej grupy opcji." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -14793,7 +14797,7 @@ msgstr "" "BIAŁA KROPKA oznacza, że wartość jest taka sama jak w ostatnio zapisanym " "zestawie ustawień." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Grubość ścianki" @@ -14953,7 +14957,7 @@ msgstr "" "Jeśli retrakcja jest korygowana po ruchu jałowym, ekstruder przepchnie taką " "dodatkową ilość filamentu. Ta opcja jest rzadko potrzebna." -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14968,17 +14972,19 @@ msgstr "" "centralnych, ale może powodować powstawanie szczelin lub nadmierne " "wytłaczanie." -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" "Podczas przechodzenia między różnymi liczbami obrysów, gdy część staje się " "cieńsza, przydzielana jest pewna ilość miejsca na rozdzielenie lub " -"połączenie segmentów obrysu." +"połączenie segmentów obrysu. Jeśli jest wyrażona w procentach (na przykład " +"100%), zostanie obliczona na podstawie średnicy dyszy." -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Całe słowo" @@ -14990,7 +14996,7 @@ msgstr "Szerokość" msgid "Width (mm)" msgstr "Szerokość (mm)" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Odstęp pomiędzy środkami przedniej i tylnej części łącznika podpory" @@ -14998,16 +15004,16 @@ msgstr "Odstęp pomiędzy środkami przedniej i tylnej części łącznika podpo msgid "Width of a wipe tower" msgstr "Szerokość wieży czyszczącej" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Średnica słupków łączących model z wygenerowaną podkładką." -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Szerokość wyświetlacza" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -15021,7 +15027,7 @@ msgstr "" "jest wyrażona w procentach (na przykład 85%), zostanie obliczona na " "podstawie średnicy dyszy." -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -15064,7 +15070,7 @@ msgstr "Wieża czyszcząca - dostosowanie objętości czyszczenia" msgid "Wipe tower brim width" msgstr "Szerokość brimu wieży czyszczącej" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Parametry wieży czyszczącej" @@ -15130,7 +15136,7 @@ msgstr "" "\n" "Zaktualizowane paczki konfiguracyjne:" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Zapis informacji o modelu do konsoli." @@ -15220,7 +15226,7 @@ msgid "" msgstr "" "Tutaj możesz umieścić notatki, które zostaną dodane do nagłówka pliku G-code." -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Tutaj możesz umieścić notatki dotyczące materiału druku SLA." @@ -15380,7 +15386,7 @@ msgstr "" "Obecne zmiany spowodują usunięcie wszystkich zapisanych zmian ekstruderów " "(narzędzi)." -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Twój plik został naprawiony." @@ -15419,7 +15425,7 @@ msgstr "Z offset" msgid "Z travel" msgstr "Prędkość jałowa osi Z" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" @@ -15541,7 +15547,7 @@ msgstr "domyślny profil druku" msgid "default value" msgstr "wartość domyślna" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "usuń" @@ -15619,7 +15625,7 @@ msgid "flow rate is maximized" msgstr "przepływ osiąga wartości szczytowe" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -15644,7 +15650,7 @@ msgstr "g" msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" @@ -15661,7 +15667,7 @@ msgid "in" msgstr "cale" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -15674,7 +15680,7 @@ msgstr "" "grupy ustawień do wartości systemowych (lub domyślnych)." #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -15683,7 +15689,7 @@ msgstr "" "wartości dla danej grupy opcji" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -15722,11 +15728,11 @@ msgstr "" "RepRap." #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "ma licencję na warunkach" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" @@ -15750,7 +15756,7 @@ msgstr "max wersja PrusaSlicer" msgid "min PrusaSlicer version" msgstr "min wersja PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" @@ -15790,19 +15796,18 @@ msgstr "ml" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -15816,8 +15821,9 @@ msgstr "mm (zero, aby wyłączyć)" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm lub %" @@ -15879,7 +15885,7 @@ msgstr "model" msgid "modified" msgstr "zmodyfikowano" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "pieniędzy/butelkę" @@ -15939,7 +15945,7 @@ msgstr "drukarka" msgid "printer model" msgstr "model drukarki" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "usuń" @@ -15960,11 +15966,11 @@ msgstr "wymaga min. %s i max. %s" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -16087,8 +16093,8 @@ msgstr "błąd write calledback" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" diff --git a/resources/localization/pt_BR/PrusaSlicer.mo b/resources/localization/pt_BR/PrusaSlicer.mo index 06c73e16e7a10cfdeec6c9b5395deb9b3c0e47ed..5d518e1be387d92464dcac75b10c885a382b6244 100644 GIT binary patch delta 102451 zcmXWkcfgKSAHebZ86sqhLLS*WJ2NXIvS&z$M4^;~x|8fmnVE$Wk!a|(NqZq}G^9d8 zpCdpNG7=J}bF-YsutS1v2L)_}{_;i9~TcIyaHnUo??e zS24}Yi8BwUC9c6=&?_|_3H4f-kNW87LztiXJS>aPVg`PIIdDH_!!I#AeuEb!63N6d z3VFD28VBHiI1q1oG%e8w_uv&+a#mWRBsRffcw=-NmY_Z#9pKAY4mV*HJd9bG^RaNf zGFG781-sIJVmt*q+Kabh<;O#P9^OLz7jyuI3g=>O+=MykKe2}b(NDaOcJMVi!xNYbFPfW{xC9HJpJ!nqtc;gpQ#8aq z(T;9HBRVX4FWTWW^!a(1g->D95bdU52v4C6<(?PTws5o@I-q*E6T9M3EI2>R^bd3b zr5A*?t&0wz36@AF5@^T67p5i7;uy4_VT;m|CP8BKqA>Dt=tv*Jg7`T4;4|ob8{+4$ zq8+>*KRqh1tXA*H#~wiI3Eq+Ds;pz z#?Lp$>#w05eTZ()gXnX=$Lraj3v# z@p?Tp2O6UtwnsbY7VQ@ug3fp(+U_KDiD#hw&BD}4_*62C^r`s4dh~&p(Y4%)uHhSK zPP~Ke@2}8?&Y%PMEqVbRSdQhvd}zl-F$+szRcwML^=(NCwJFTNGPpB(6tARy@rv-$ zsDeePcfd+G1gqoY*Z_B97XE_{xWvjZz*6Xh%15iAOH&7pWU>VXXW9il82ZNgXmqXa z!_bb(n^mk)uAbHP&~aIkYR*_oD+lfG*8v;qzqTCklq_AGE{Fr^AE! zqNUIQ)LWiBvk=~5X_+H$C z<8cSpeKsvI2+w0J?7ccIQ3oH1?m?6DPppfz*Q6yL#^GrFk2UQ7Rurl~mzL;@V{j85 zK(l?u+AyFMX#FEJGAGcJE^S>nNb+MA_44R_ZSZou3B7+j`r4h1PG~K9->!A+e{cLe z-gp-MPM7of&~SP5#>VJ<-O&a|p#zv2KVN`m^$X}y?LkBQDH{5(qDP}A&~xKVG8Xmg2GI~9_bUk9dU#t&7bK-V%pN~UxV;b7wTr?+^;ucJ%}q4{a=lO$(1= z6Y?K)?RxJ_OZ4|TdgLBM2YAJHa@q0nei$OS~PHpddQ4%IG$0j7F#nx^|P%P|rqlU_E-@QS`Y#F$;6O6RuZ5 z2i6STo?S3mmBMWl%+f{ZiMAo$@F5!dV`xVg;^)QQ4Gq^v8@d5KqVGc6nS-{oCVu`F zI>B%8V?2rTarb-de;@4ie%N;Rpdnm{HoOfT;HOvvGd~E~To+Bg{%FHDqiZ`7o%tkm zAoI|rT8r+2SI{N>3XRl{AF%)J=pQb4;9UA)c;Iq$DaxQBs~2q(ulGhfxDD;_LA0Z} zXmTyX@wgrxSf#z;`$H47z20a}4NFpRE$>7}WZjU@#j9{Fy1fpe+wnWBi^pR! zIrJ#6fo|WXXoPy9&-IJ-L1=qJ(E%h!QgB<{6P+Ayn1k+uMQDUpp)=WqcJMJe)06S~ zKUjx)zWw38R%k?TKnHds&cfT#CHof{NHUS*qY%Qp=s-%LBdZ>-*FzgbRfA8 zgc)X`^|I&^)JHpLfzG@GI^%A!-Upr70L zUxOy`7IX>rAO~JDaUgzh3|*sN(1H9BuV49Hn0aON^S0;!I-vvThkk(>j4t6*=s~m= z?dV%{K);|zb^6he%!M$Y`@ce}z`=pua2?t~U#y0=qM?5RZEzF1mTyK6p`rg3?f8=K zLx(NU$aKRjya}7*M0A3$V`=yQDGE1XfgeILjz&j(AG+NhMF+4x*55~$<|LZkg?w^K)S7xcsG_&7R{-O*F%eZ@|M$W%PR{`aj{hYN=AI&=Vo(E-dt_xa1wAJ7~q z`cp`zl4yq&(CdBCr5S|T@LqHRNxU9c;l+3kears$Q!=b^;gjJBx_PI6pheq?TYS# z{#YCDK$l<@nv|cT`}#P#pZ|#0(|!pvEr51V4GUszwB0u7uIh#kd;k)WWMT{jZ(M@T zU;{dU9q5|wLzC$kdQ7?|n5`U4eU-!PtD{6 zx)i^nOOz))T)z^VQLluJ@HX@STZ7)WEj^i@3due$xF$cKYkL6=QHhN7)Ys^;Xi`=} zv%eAAVY_(!mgv3ccAkmT@kM;h`!my1k@x`bq<(R>^u*gZAxXjHx%Q&;RJM0SUot(= z0S!UdE*V`BeFKfmG4y->IW$6lVpF^*dzeUTG>HetdJ;X#mqwG@V&P!C;V<;)Et(^Y zv@vE;-+(r>AFJR`=#mw^I5gM}jmR)`?Wdpz(|Yu|eX)K5UAo*kQ_m$6btstq-O!od zhQ9S?p|9T;&<4Lk&w-0_rKggxF1Db4L#!`D2k;u&-dAWxzhQkWnL9+ZH#(p@vAz5M zVG3Vx;S2P}mo7<9ope8=+vq>^dci!Qf$Px|a|qVM`_SF+3Yr^dqv?6mQzv15H0g@O zdL?wpuCng_uM=-*80~;rTpxh7@j>+HeHA?s-^QnKFM48*$`@vOKRSSCqnpqPyn(*d zzKr$!`9toM!(=Z$s7b+)%|x?&C1&6&Xi{xPL-r=x;WwBAPoW3O@91{Aq(Jz*6xv>O zG*?=qC+b~z6|O>0+RqB4hwuOYa={Kt7Yre8jLx(NI-`E*KyE{K%f0A8C!t9;4?UP( zMYrui^ttcQ?}WdiOYm>}JYS*o)HkD|h1mbw`JfILoY`44)Mf_tEWpAQ=l^V-^>FLPwgrXc$mQG_+OG zbD>$h-WeTee>Bvi(3ws{@0)|J{mS_H|Kjz1=mfq&pHKcw!IAujHjwkO&|zV8?JA-T z^@t8f?|%TV!H3ZSzmE>&Yjgm=qa9?wJXjQMry_cP6Rhm}zcYnuT(~cOuns+fccL>t z9P7VeMe2Erg*C2^Zo6hkLy06hv$a?i|A%(;1G=<-q7%$sJVd$xrvCiD76sR`X|xBL zM7N;>xC;m1H1vQufhOBU{M8ndwi4PwOLSLsK?l+Y{Zcy=@5D)H(*B0sFvk^~Bkuox z6l~xw^!xgQ=t!SL2l5==k1wJf)F>IUz5%+8`l69}5N&uJx&&!iw3EhfK+%C0FBNvr z)#ws7$D~JY2MT%zn(cF=&!Yo-6P@YDnA-O^nfmYO0Pnjp%ycr^@l#k6H=v(?hn?{! zbXztq9VXhoH2dG9^j0ny>IbkA&P7AF6CJ>pXoJVlBr8@XymV?|JL+AqJ1#>9dJel_ zp0eqQ);IuX;u@@vb;^ZpII>(ajA#rOuI7Wu=!v)k&DJ92(-V(i6|99@uqvKH2U5I3 z=&&}XB8e`=9cX)t@ml;idU?gL1UI3%Ff2*Io4^AT$RF0r4(kPUJgBIszhs{18;yvdMNr5N=~3~F@=d}hcn{`PoSY(iY~>g=q~sO zO`h77!*fm1nOukFMqjLhgYha{jOM`mXvZJN`Y|L@$;257j`;E_VZ>Q@9rf~91Mfsf z`ZU_n8Z-i1u_3;R1u(s87*Js}iA$o9xf&gC2Xu*UKzG@FnBDjPA_{&bS`k0kjc%8( zuqpn9HqfwI*lw-SCAuAr%y{(v`8XV3#N2GVE2@Xws(e*Aa2lXX(g%&iK+Na>_kvCD4gA zh}XNs>$jqzpMqJqs2=;@{koM4hWdMKf#GViEp=PT=82;apghq~M6Z!S?tsI-~0vhZ{Sg$$4Y+J~Tp0 z(68xR&^7)Vo!KAg!Iis77+5KE7c`D`#RsV0ice$m1O*$Mbxp|b=g|%ipdtPhJ)#RV z4OT?6xGCCEYjg?wqUXrX=o*he@4FLy{$6xR9zzGb8hKYF6T2z6w)@eUe~Bi?H`pA1 zLI+Zrnf~K>WjXNMxhPNKnE}nZTNXK`CdmO^C7xBj-&18X&aWd2-<#WbZI)Z zO@bX_7(%3fH5dorWGHtI?%6f|c+;tcexdg)bs~(HTC5-uDW6-+pwB|B2Ttw+~Cw zIywZi_6g(a^K*E^vD8jW`NJo@=ZXvY~H!hI#t>~0?Gx1#qy zj924EboZPbbigv?VTpx=@XdU|CUaWvWq0bfS z8fMx6v#9sSZukJ2w4b0$a~gf_@@~NvO8<%5C>W}F(Jkmwe2vZ|d-rfemqZ8B7;W&T zczq@s!8PbtulLaQ(t3nQl|v(SZFDeZQJ;)SPpVZEOoorpP$hbX2TP#uhDK<|H=qsO zhyDb#G+y70F3C}}y^LOA0@X2#dQY_dvGMvUw7m~|vHuS-Ui*zBhegKf)#Nu`rMyrJLUTXJD?M~8y)DJKJ0%-zLN{C%~xpXv-b@R zR7XSG4;x|R4eawpKG$$4XFuX>V#4Gu>enum7y zHu^R^fgTuV@DltTJvg%U4+lyCY(>2|)=T40KF}pxd{fAs|6wNeedq!73FgAD(Irg& zM8O904hS6-M~}=(SO9BbL2MQ4H=w)VcJ#a7bWFYVq8rf=zlHAi@9}p04{h(Zf#JkV zBD*7*c$9)2tVUuSGk0Fgg>B&|EY^tI^l(CiG?X7CP|H(1s63 zkE2U<9(_LlEn%t3qD#>blb+2TD0IZB=x+E7o%wI*+b+k@uzgCRk!giC*cpw)U~~ZY zp#zwNZqr%l^E=V|K1GxH6#D%6q3nNWaPh5i8=>2*J$l15G!jeD2cJPBwGIvWMl@Hp zVi(*OEj=u}RmY(BZ$u-v37x>}=+f;SmJB05#D&^iID&Uzk>TMjHyvwG--2`TB>Dwo z;%(`PvA85!`1X)|kD>$Fh^sMkM2N`q=u&LP!T1Sg$A-y~;b3TiL%1*qUE6ojjt-(T z_zj!m-)N|tj0(0yXLKFfV0Sds{o?hzaX9q{V*Ml@p#D4ha!S5;M<{%chVlX$>Oyy> zr~WcYF?8g!&=9Ugx7TJgN8U!C`!d!~qxYqa4ku||^yI6D4y-4-D@Gy%OD2|3a0WT< z3O_g$L}yY2UHg);UIDjLzX~1sDJ;i{m*eg*km_T?%cdDRuz~3QzY87kBj`c31bzNR zEav`yKVCS7jxhb6Fr&-S2CAb2YJ+Z@PUz7&2tBH&#`+qpN&N$KS0%=V_UfY%?2H~% zx5w)lAH0B-sBgk7{1!cs(kFyuDus@`EtbLVXtIsNemD*7 z=m&H_KgG|_p#x68FPtw0(UZ61ee8b^n!Q|bq~D<(oIpGH4NaP2_XlgB9kxbKxb8R} zC!-yw(Vi2!D0&$h!76BEo1xFQNBg-UNx`HUg3fdynw|ecXYdhvG#^BlsPY5h!CGj8 z*Pz?$I$VXr(1GNi7>?{q(d=)G4!AvC^|1Nm^u%2_4xRaF^tqB#Ld0re>gWHi@xl%07l?6~ zg-fG5(Czs(rsE%29{)x|UwUfT=Pl4&>4UEA9q5Ga!wt9^vk{@*)6x@PQ|~{W0h@)_ z%m_d6JczxizmDJI6*I%{{W2d8GwXySxjqMnV8$cqiT7|AF2}l$rYD}q&(V`|%B=9q ztd@_3p9`j;k=lVh@h?oarqJc_@N4o#_!#vgH~~k`PEXv7XYep~pOc=r0c*`oPaMNX zu_fL!FZ}Xq8=A})&nGg>v=RElZQljyi8pWocEWy7gg-x6{{;L03og`Nn4UO~c@~A= zN@XriPfVe{20P;yCID&`5Mxnx2@7J8&VkT9%&p3co=Qs+~`!CpKffr$U5& ziOyM0L>OS56>O_dxncN9PB<!x~`?;&7Qh^9!u`e20n|eW))D>uK{QE|^C);iEk_5i34ML;#d7#9I^rD9g@F`D>ow7R z-U^3d5A>a}8;#75v0iX(*naiV0o;l;a0xPS_CEz1I*c~_Ga7-kb)mx?=m4)kXIKks z;q~Z=IT4-FQ)q-1>G*mao z>!Ywf^@-@xY(*R1k5%ypw7o*>!+^@*K5LCkaK^u5YOP-k zHx@_NstTGLH=_67gAVv{tbohV2)u>9I}V{8CSD5PhD)MJcqiJ<4D|cN%9q&xbt!D& zg8mY3sPJ-Vs2N_(^}*;2mnjihg$`i-D`Cc4(a^qyz9ZhlEc_UI;CVcN?Kg!b%6c`N zs2yHq|F`6W$GPB|e2V_~d>EbiU+CBHD*p@F-5QO+?N|z@#`>CA-xKTK$NGg>FSR+` z-w=&JKg_~0NeYH)0hYr}=o%hI2Xq{r`5APd|A8Ga`<4))9%v-Sq1itbUGtUbM4m_6 zc{jQrjnwC{o;*askbQ?a@g&;7@6oiaVF0<%h6s?~~ z2K2rmNIS{Is8C4Ui_YZ1Sf7P9@C4fN(`eSOMYrWfbl-16v-%x$U|*n-I1;b_hu)WG zTd))w$=aC9{ojJZST1zLp7=Jp{j#=)kyb++z8Y<)89IP&=zi~w&S)wQ#mCWs{)J8` zu_K&(mtYI3P0?NU5MJT?{|O4t@Kv<-_UilY;2w442Jc6Z@|N8}A?2itKJzK({n&TC-?4RHtcYtb2J z?g`0xFmbp5{+#AH#iA7z^=nG)CVTtOizrUFcq`#H?)BwZ-pbW zCK{o((az{hdSe#ejE!(I8q(L$0ez08@OvzY+20QBl}Foef-Y^ccl=-kIu z5p=|*(Fd!>>kZHWwn8J-8GU{bdjD< zOe87PR4?KMQ7>w{VJpBPP{GR{RqvkML7C10l}mSQ0^0xzOp9Co2={W1F7>1eTULcKLQ z(9vilCZhv>7JZw(fiC5Hn6%-2@q@3>Y(5(O3mr(lZ^MsVMbQ1;F4_%UqJC&cx1hUd zI<~-d=;vq94*$Yi@dCPpw;o~tdoI`oUE6fSD704h`9EbPc~iBXJ7tApN_r z-EyP3P!g+PrD)ISL(z@sx%1U`$#CNR!UbpcCz}1~N5jEV49iomgNC{v-jCDKCCKr8 z7-(s{j(P+1`N?Pp%WykxM0eT9A3_eyL6iBVBn8*%Rdj9MK|{3{o#Dqg43D8%-1W!s z4QC|!&1MyP|7YmC;ShRq9>t4D>T~h>-^arFk#Rh9TmbDic_{@$TLB$$(^&6{F2!&( z#P>ueqLG@3e$|?b?vD4+0iHvTQCkV!Zk^Dj9*GWg0+MUV#6zKwScG=80n>2{ z+R=8bgm0qT=ohqsqCbVVTo%@#J{q0TGw4KKMLT>KE8=JPGNzpjC*LM4B*^qoK(GIUe*RXS}4@Y0iccN=N2~Dym(NMpD6Y(|NfGy93_RdHD zj;5Ut*Rw}2InVw#>kGyUm!UaO5}j#9G}N`xHE$e0zcya)h~C#L)(4@Hx($usIJCVf z(Z|qs7NHYeai0Be2Wz;XFQU6)E4p6~U?=`g%b`nfHF{$gtcQcpju)ddd?9|m6n-%C{uo`t4n2f2v|G%1o9q&YwXFnS19OVRf8|X7N^RfP1hw{)e@&SVl(TChUl|w*j5`k7z%M%#74Gt^%0cPyJd7zE+E5 z%Se2PRnP|iM!z@|y(lB~vZ;%9d<(i1Bhe7gLvv;sdjB)%67E4~z87up2zuWIG>0zA zo{>!L*WB5|5?qc~^FeuZKsTYGyc_L!GTQJX=u8&I`dV~by^4nTL$ssA=y`AyE8wr_ zfQsb^R?CqL4L9S0+o~-(gMQKR@y3Pd4A!9?y@Q^F-=J@|f6yf>c5z1P?7s$`zzygG zMxyN}V|@;~BrCn(joZ);_G1}5g$|@(&JgMv=;uAr&+m%$g|WUV)(^(|AF*B{SGd0c z`h5RbpAhTGnrNd4Q9)e@EN9vQUU{1vD8OV(QQTJ5p%Mg&yck7NAS80^M%UVF%oV z-7s6>j6`$10SDqzd=wLxW~6@IJ_~*R2Xx6!p*ivgy2OQxgaK42!u~hZjkr)2dtrIJ zA05al+=Uy_f!tX%BlQ}-9}Q{xWx?!d=yRi?ErD*w>S%{u@m3syF4;abQa@hC{`bP~ zTxf)OE)Vr~Xh;X5OE3y6q~|RBnMNl!Mo8A-;eIk8R!faVg=lcuH_Ll)F;t~{>7PCI4iuImg6Am`*ASV zDMiP)7#-+IH1q|p%<#V_;_v@bFvOG5?X?IU`G;su{Dv*DchnUw;aYXe^pM)6lhFg#I+V8jZ{jG&1j^ zOYud#eiDaK{{xN4pz@);@#vDwM899mN84YCzB69I)ZhR4n1T&|k9KqpjYy(GxLz0? zU>S5^wb6k!M`zj#U77*74~L@>X;d*RRZFzJ?r3rji`S=M($FlRV8a{Gj&{TwK13h< z8V&im=%tlH{c7|log2`1#NE+F(Vb|dj-nCx9c@3ea+p}5%ItsFx-=IIRXcP>J)-^5 znGHoFbSIj86VYuu8$HR^;2GSGMsR(V(9RY#(@0`@Q&8;r3U57;sC?@;io)t6|)Uq!z|UmnNM0p)5GW>gd%SVc5P znxP@>6+gcT&5=9M6Lk(w#J8{}wrw1)Pr#&ExPgMN%Wu(!vNZ{zyabI*7B0bx=s?~? zBXs}`{r707|H6Zq>zZ)ikLW}KgDcRPS4U^k2u;FX=n{-T2QnEw5$B_?-Hqr==Oj9ji(7;NhBI68p6b4Xi+)+koD`8LQ*2=ozd^J?q+F2Xy8W&?JIN?;rzDCQeas zTb)N6_#4fMi(7{VilQU0ie7JwZlm_`dM|VWL(%6SKxh6a`fk{US-1~fnqScSbGLC@ zvj59aaAwufq-uuF=q7B3cVGwHj&_{8Z3uZ$GA*A`y?7RYf>D0g$*a&@zJb-m^3;NtI=>7jj^R){zFO5#D9@=qR zG*>#J1M7iF3qvTl-Nv9v_ZS+94QR)E(KRjDJ|p$Jo#N59(J^SlE71Wz7wfN}?QKJI zT0e~*!7rlQb{qQqCs-4Y zp~+mVLpWheqY*2Qp0u?(u>ZYqH5crlCA#*VRM!G$^3;JSpyfaC`(62yex(%J#7xDU!=m66?g@{~&4zw&f)0$|5 z*P;XLgC^xDG}{-W5!)26zm4UopG9*bS*&wtuoT*HHLQV+;`I?|E{sPzT7+iz25g2O zqHCY8OBiU8XlZn5s-x}JkG4i5)*V^;WMTvbNAf5d!ntUJORyuZL_>WRjYMYGjKq_e z51rWtbf3S5M&whpgX8Fc)4PSYVNo=44Wg|vhx@-91t07e9fgj35}JgMplkjNI zd>ozWtLPHEhpq8A+F^~JVZiN>&?W|<_f3k|m!nI$8ExltOj2C_YxKU;==XtKeZs)1p-X&iANGGm z3LUxNfp9O{(fwE%XQN58Bl;eC5`K;u_$_*(eUIkCIke*o=yQ4dhR760BT@-%zZp7! z?nw$h&>zj(k!aRVLnE>bjl}=Z1`ePDJAtn4rTs#LYNPwU8~S`Q*5{!S*oC%#2yOQ~ zx+KZGH-_vikKVWqz2S3oX1}5xruENA{gsKTxPy9M^gUkeCa$OP0}1*!s7DSU)Hr1z z1IIOkG7`7r>o@beBCI)tZ^bz879zmEKbJT*G$Zww%YVH!BlX{S?i&^wDlAK@QI=mNMg1onf&x@i-RTKSht~;WicN&qAxCVQp5nhOH-!-wm0V})zcTs4}2Pd&9 zRvH;*JRGm3z5uh~VKmFX!_V;-w83{rg@Noxm+B`pk{8_(vj0l-zItemHNk4w0xx&} z-$}t_c?4afMd&&35;~JN(WKdnZm;jqTsR*;&wXcD%fe_fS4G?DiMBHeUD8Qd4wqsT zd>xa9?iUJfpFE?(10~S|q$ax0yP*4i9NO?QwBc9L0lkYx<`9}xC(!%S?+Otq7OjhQ zx!xJ;i7hIzgXaj$tBQ9`vxLyS-P;Z1L-C#61XJA!ah&K2Z`h41$FvH6* zi+U?`X>LJ3e-Q0=(HQo>2gYk$FcQbmZItbvaN||z+O>&xL?hJ$J$Pi-v6RyOoLgUiu|)}s$>MjzOL{qc2t2+NGm zNVHD4|KMbq~dVL@o ziP>nfEkXyn8eNiCV*O1tDG%WF_&s`mEtcB*{E^QIb-{A(|DF^a(fw!=PD5{e0zG2a zppkehUjGOU^>^rVC(t!Nhj#QY+Ci=d!Y;{&My@nE;EM5jT}=J^pKU34VD!fWI3B&R zOO_Wu|PH%<%t{S$0Q{WSU(YdAebrZaA*emnXOs5~Rgd^Z}IAJCW3l{3Q; z-udB>Gqcf1y@n3x2%4m6kA$47{RnF{mJ7qVV8=(%wY}=mkbL#fdW%@UF4_Z~(LijD zL(v0kEgG>m(4_qx&870Q!tS~nt+$T#UP%fj-7RS7?ml6&larA`Bwjj*- z3cQqhRkVYa=nQ(H_YFV?Fb;d-W0-}BhC3j6yxbP4h;4jmUkm%1!If>kkT z$6G151Ye>Z{fO@GztFWWvm|VzT4*S{Mn|AoKRwo0qG$aM%)le)68wNh_;)mt1($~0 zD!-Kd@0wNNg8Q^BdSKidZ+ILH`F!*x^&}dRwYV6!qmk&nEKFb|8leg3(L4uD;-%>G zE6@n6M<=>z8T-E}g?G4M$2p(ONc~5nHL(iyXYnfh81KVuPi3V3+Uz9kK)v4baI{Xr zpQ#^+?p_f-e_>_#gNFZb1fP$2ns3ASJ>H95lh1_T_kVzFheXL$8L59-aSV2){tsT_ z{(UxN_l>K=jK`xheLT7v{UWjxP0r8I?+<6t2xVInLSGEWQLm2fg5+})e0dze<5=Rk zjMU#;%Dy(_Kr0-^07jvaIJhn&^-nYBem;D&c@m%G`oQ(!{`42ZNm>Ox0mtIwxEde8 z1{=bkly1e5?*CsXq_)$>)E@{Y#-Uk#2xs60bfz<23}^jvY()JqHo?nZ3fbQ~`YQI} zdf}JD#O}bWsc%Jh*EuvPi@l=kzbX`5`^IR<2BQNShdwX|J&3lT559}e>>zf;T${px z`=A58A6MZ#ycrw48n)wd^oY;?zwoQvc9{D8|6>$fqvdD=ucF!cA)4*q#?Q~9+wJ1b z8L5BMp)|T3XW?Zm(Q|kw_1CwAB(1kK-2W5S;(E4iVTtNvW$J@4ImrentiXcXGg5!2 zYZE$vDLX<^Ekrxohz{WWSpOl`({_e|7Q>Z%UKO4BezcvsyTXCf7N=7G3_D@}-R%E5 z6gKS6NZf=!pxdhTYvCZ7kFMPoEQ4p!bE4>;(D2o`lzKa?hR4x}6@5KKvJ$#0nxO|z zZ@dF<$I&fsJ1G>Hu&hYKg!f%F#Zbx$?iSCkTu?_x$4z$5rVW!jZR_dqlDeU!j zh}55G1PZ4Ka%=jR5 zP#Yho-VLwEA8;Mk{xBo;7Z1Nh+gr6aoP=A^WURF>!+$d}nYe|5N8#%@9h>aWNc}&b zy^Zy$*ZC+kJQ6RVz8zi5_s{`(z7WsRaQSaI zH>el?HXKlOj)chEiT?Kmncrn3dSm{hA=id~pTR%#z=L}z{Dc#J$Vhz~9{OW=7krHk zxL)^II2rFix8DJD*ZhnVvGnn9U_FB_)edZk`|w4~eIjK2PJESmjh{lqk7IHq7Y3aS zYjXgvqu%c4jMP6sFdwTh;t8k18NcRq=&0?P@RAycuK6)^DeC@`k@yQo;10a?*YFn- zDxA$o{ks8wqW5(>7qb81bL{^CT-d>d&oJwJM&bzmf&byb-!c+&@XO!BnvVD*{7&Z? zoSsfHVkVCKI~*u?{YwNG@EiCv&wchEe`@XoE|9F4k(QbGgzKf#GgC+RpXtfWRFbsK z$V~my3p3E|a}={%0P)HkAXIE#99?14Km124Te zGxhSiJX#Cws69I1q3CzQ+cCBO@1o#$zp3a~q`BxedkUS=dUQMe4~@ua^uFKG4l{CQ zrg9)V`c6*|yP=s^0$`t4{0?#0yK|9yahp_zdX<1Dnn;+KSh+=zZY z8r@!F(HYLbintujf%nkw`Nz=-L4>%duxc_g;0X;JBM$hmyn1vss=fQb2Y4hgKOuZ#*q4i!^3MXI|E{oT9qPg}RCjFpX zfzUx~^h@D*^c&FAXouUe3?9QQyrf`e>YGtDG$P&6j&4CCF&!)8v*=6c0A7h_(MVic zC?t9DLj3<9yGE6{V6xRi*R)xzUx#LWH*^X5qYd4R&U`AGRLe07*P|2Ii>~<}xCAdQ zoSFJMzY6_6aR7Zj_oeLrt0{XjId_n|rQB-+qcbV)u(8~iuc zOI;S~tZ!#y)n?)0hXhp%Z-%lZ`2SOTiG9EETp} zb#!J8&^2w2hQ2o%`a99&nT>bgE7%FkUm0dP7G1jO=tLHyC*t~eeNU`^awYrU8&1Rv z|Ds1^fzn~WXQBJMEIN~#=mF9SU4r&#GTwQT(X)z}f=L67Lm%7lZg1v>K)cnlvZ zlMD~sUN&r-N6}n(5uM>aG!kdg(ET0jIm?B$E`Ua^7&^epv3?C!pxzN(qOs@!_9WW= z)98R-OH%OUJA}^c2W*cgu_4wkA5N~j(Gadc-(Ig`4cvi7;0$_F=B^MXQUtxfA=+Ul zGzmwbNt#3>o18|W8HIUx7k-9av3L;Satrq0`3|*15H|)+c>QN=#PvVWi&O{g30zj^yE8;RWWD%aPnP^?%%HHgTv7fJ`}I7jqX7Qco0plU(gdVSA)=g1@!rL zSPE~()c^n26bdH89CZ6Vg=Xt|bi^;A4evl-Rv)AHpN*d<8ioPoLhq{?ZG#TvMl@N+ z#_P}FQ0luHvj49qbQK$ghVN+{4vzV_pBq-ABOcczG%yEEzBjNAevC#g=QSZxRna7E zgJ%8RXvcHVx8)n?xp4wrx_nKOnW^99lx-T4q&wR1adhoUHVfZ!%i#^wD`6H+#!?J? z6<$mI?dF-O-}&Te5eD!I_T~B!Y>d~m3`hKZSd;ojoPbA@6fRI0aBaA8K&#Bu|Hs3V zXfFJLSy;Yx7-$>3hWc1+kN-oHGh3U?)Q{cGu^si(*cKbM4Qo9ajl{F)!SqEmnSNbn z>gV^$XhYla7W@nQXk>LuHUZF(46P%mAxuY=>~*yc<1$ zo*Rdd97`sS#t)982g$GThJWJq%#PuKOYk#3FN~gGKch+b8~QfP=oHM0&8QbcPtbli z3m0Motk^l6m^b59?*9iUxJDb%2To%XtlTBkhoL#K3g_b?G|NYK4JY1oG*@O}ew>dP zxEiwOh!ImG}I6Z+D*4efXW zx?Lxs2iP<;k_)jou0#jC3*Ek-qV1l?r0@44J;T{t4V`%}^h@Oetd3jpD*Op;pm?t^ zz=r5HyA|C|Q?U{*L6ht)w4F0p9t-sjHbS@U&Ar+G4qz%5vT#{+XY?C%q-i&V{aYGM zo;K(?&=D=E_ENAY0H#eHH!g2KK-2?PFZ<;P?mapkkj8x*F&S z)&V^khoT447&N4_;`L|HrFaRA&=xc@U&QObqci>wJyA>b4fj_`QgDQ|&`>u*LwOrI zgNf+K=b{b&554a*%);#bLQYgbC(;tV-U}VTz36Ls0h$v_WBpmQ-{kZ0gH33b??OlV z8=AG3-59n_SG40t(Gc%I2e=Piito_m`!$-;Khz6F%cA$yMW4SG8CWvWGZYg2&|DaV zj&vM8j1Qq9%YRb{S#fj?OQQ`{z%*=tE0X+Moj+f=1$AG*^;%h5P?O3YEFA z9G&?GcmmJhEqHK1X6oUaUKMn`&0tY3@%=+z$m9&ih$)-Kkkq0c`RU5Vzma=x(i03Ycw@pe;f_@0`%SRG z^z(brncjy+c3QkX6V0K=ktIqd7E!RHHRzgdK|4B(CdnCeVCT_@{2R?aEX*)J+EFQV zhE>o3)kl}$Ml_=1(ROB|6JCU=KmS`DFKosvK6ndl@EAJMv*?5WpaaMp9tN5xS_AE% z8=4ct(Fr8c186oHkqzjCHpS~(F~9r&3kr7h6PhIF&<_7bN1Ab47*Kw+qvGgV*Fux1 zUA*2CYf&G8m2d^x;RoozKSJ9(geK()Ou9BFDVPkWy@5~8VteXoBf^axur>8g=**r# zlWuLSZ^bIqKSbO48(q>1=*04k3 zs1;b2>&5R1Gj5K3sCP#@-WdH5+fn}sYh%5;!~M6RAy1+mPe%`=m(Ym3hN<1;4JO-H z=$ajmHxwEZ)~W>hd1Z9J*G0bvbd1+WprO1MZE!N0gioMn{<`@2o9K7PkFYMDiuGjK zdqT1`LmzC5u5CZ`C2~7{f)C;A8$b)cnclSKD2{x(1y>V9bZ82&whW1P$BgGs^|n7 zqwRD-cUK?uxq+!V`)?QpJH8`+Fcn?9S!hQK(FUGDmtZ~Gz+2J1=yv=J&F<4^N9WOj z{DVd|H@W6gW}(kl#$4|IS`^$a*I;?<6mJ-d4(tK6f%)i6pF;=uD%#*~w88h$qx<9d z`47=E=(+J1I+6SjgaKZTsrP>=3N}~)9Z1bsZ-LI_dUOEY(3uWJJA43*&@}X*nH%d1 z(WQC@&HDdgYAMn7_QlUXdw~6K$WCy<4$hzh$($IrSst{3%4h=((ED4U_q9a_&=rkL ze>5Vuq4(c|-uFPfJ_C)=JaoX%P9!9bXdM>}^-E|6??m^a$@vM|(06EuKcmU@Cpy49 z4~B+IpwCxFBUA@{t}%Ktwnp1)hd$Rk8E+VhHh3o*x~b^E7NHF;M`!eG{CoqND|^t$ z{e(7n0qro)q|jbbG%{7ujvJuuwL#lUcA($`J<)~+paZ!Zo#_lT>*u4PeF1%N3;Nt1 zbfzDm+5QRI;rD2VzoI#ncqkl5`O)VqBhM!jwJA8$CRhruMUU89;`N8nfy_i7T!41` zRIERT4(ug#;5*O(9YAM#5N-ck^uA;00MBCT&;JsW!v{Ih85Bl4D2r~J>S)rmLL2IZ zhPr>Ok3jFg8|^rWCf8Ifi4WsdxDK=MFgC*fu)6!d;gs-_7>?zr&x`eKXy|{4^$Tc2 z6{m(D({Df{wh&FOt>^%DM&Cjswig}n=jcR!L?iJhCLLksv~WWiG}N`wP+o)1tQ*?U zjc9V-f*k3Iap?Dl39+6;chSUHUw{s5Av%$zXfA9*bK|XP?0?td6D~NiBhhnchZju` zq0EamR47_BT0EK+EfcK}trEQ|S{u!YtI-HFna=*V(3T61tXuqGaCB63JUZhkXoRL= z>coqmFGL6UG&-TxXzsj%M(lm`wf!~v+<%yb8Oa$T#AVPBRl~B_8r=oA$IoY=p`D91 z_#7Is?a{sQ`nTvdK8H>$$ILL}f@p4Bh9+?-tc=MD6lzoGh7Mpl`o&=dI^%740Cz-Z zKb)ERn~Xyq3CZ{g`g?+l9u2?QY>Ixt7>y?Db2t|dqFFy`R%W6lK94uL|9_?MAs0G7 z7P2|(@i4OH=*wmV8pHgmoFYLxL)Zax%d>U;qb8cuT54v`jMoUD?ple+jO}@I(7V&zgXdir=&xfGxR-ecI z??|CO1+#xT8i_^dPcECW5`KmzTl)N9Av9;oVR`I>-Zu$-etq-<^hdgrXyo!P2oWub zMzFyG_J1`BJ-Dz4C*%Lgx(nzkj(CsbH+pe*4FtCYC&7Y4aCdiiDYiJpi@R%aDemr2 zq-c@i?ym3q+nK)8^WHrt{p`%n&W`+Nc9RCkjX^Wa52I?Jf^jtJMoUoTPvJ=XirI1K zOmlt%ssUF~tLGD{;R$D%tvDm9;bl;<(|;E0Uqd~Q49)c>RB)ZaBX|$hfK{_i!w#dC z&1Y1P($6s?l^1ox>ZtrKHa!T{z`53wsFD7R6ET`I*R*U7YRGq?8gkA09@V2b^UQ@I zsFp{d=DHc`#+^|^I@X?FfvWEW=EX-?1XIm7!Q2oPv`!BW)Web378jy|Bl-ekLJT6E z8ubu~KrO4vsF7=fM}7D{9~Hc%7MY6Mp@x0{DmW*grfwE$2R)8l?|A;Q8Bb8l<^!rh z-%#s6(PGoH99WHXBx)m>i|WxeR1cFbF+*J$3zHsz1#u^8WIm!EI`Nm9kxYZ`|Nqa$ zL4HnDL=_m03c|^#$MI3rj`jjIWa*a~3s}pe=Cl#2p3bNdT8@gPeW*SE5-K*XqdM{w z9j*T&%l+Md1!oTqB0Xb;zx&JPNq_hE^dvnU6}2%}nr~8zqk6s;6)Vp%2&1er--c&K zov($u;Z$sdOHnc7zuNq$CN4Ufo0=Rbh?<~wtO2OG8;)9b)3E~XMfD`c8nY3_MeTq| zP{EcBHA0c7DQbxQaTcnc#B0s}TP})vHcVd2`qvyCA|nVr>r8Z}LB&7;RE5=0TW3pD z!#dggL8u*VGIqlT>&^f7KZ^?D)Emt8nNh)82-Sh|sFA6%!7+2*gbWQ$CtI)|>V~6n zDNaU>RMiPw!25dnE?RnJJ`x&)NQ*1FKoD(BRS3_Or zOy)p0{2evqCsB{v`=|=P+4D)ZnsVW&at%=Lj=fM7O|$1$+w*5oJ$!`k@eQt1dYkFM zjP34nbvy?+2;syl491`xX5E&=qNE3*&hJA#{a&Fe{)h@bpPhD(M~z@c)cMkw3#*`} zZYZi_<5A_7BJoe~aiCy0j@odpqK51>YIz0jG9!@&73GCdBTyf8T~Aa)hT~+MiK-|2 zZZid?P(j-Uwe$5w?H403wbuW14s^qp42AXOXB1YM?4^iCVtB zQPDjGb=^$#;(VK4j;ePJDwh60_y7MN{1Ww= z?R&sHYywe3nibWf{HS_Lqn2+)o34c#sfO0hs8|?$z%ebIL5AjVEvg3xP!$}*gLn?L zKTJJn8ny^^!%e6WJAj$+Puzx|QT1&+WTxN}e z7dFFiY>SHKC8!}>hokW%s)4nRm>V|7X{6huM$-4Fc__t4ZOz%RB|2?6$j-r8)MN8I zX2XKVOi;DK%%q2-_K9_v&_d$x&elf9*cSLh)sXP0;KbuFm^^ZFvqik z1KseIHRVb3n+uVs8%{ypa0`~ko2ZJ@pEB3g$MmFsMQz1vQ4PC`n!@;}?GA`qt~pU7 zTMXU5|D!wyn!_5{0Gpw1xEFP!ho~N=JYz5p~1s))*Je4p|sAa=)O;EkiZ* zENTRNFPe_z!gi$Vp{DXMs=+VO(U8Xb%UnKUkIz6e!*2WrI6Tw?vJ;=jpIbU#8xaqwjme4(i5uZUXzHBjeU zV-4(K)5lTQUqa1s+$$#P)1Ypg3-wACiK?eLCd6J>SpUixONM$hA2sxAQ9ZhYsxanN zGnXmRU7o0*tAqJ)AgafkQ4Ktb8o`TL6+ffuD}T*Ao_k>@(sLaSG(<73n;j_;s$h21 zT-CAZA*kqHgPQX@sD{S=+e}>v)bj0)S#blZ+zp$KcEdC%A1apWqslpB?ZGzG4e!}> zteYlC!cjeLh}tsySSO%HZW$KA?U)}wp++S1mPxlpZ9wx;BeWhhB?pkFspGlEfm-?r zwd~U0Ha)F~s&EKu9q+InM9uXn^rH74Q(Vwgj^#yN-^@B5 zwLEtyt@Z!JW+b|AE+~zvxI1cHFTz}S67`1k!{(=bV0O0hsF-PjT3%yN4VaG_`aP(T zIg1*JOQ_Xw2i<@F>njJE%a{-S-9P^mgc_pusDg`8=Xaro{46RKE~9$>0`*vq^T^~U zKs6*Q>St6-7+l&jS7m?SfE%XBhV8~;$O7h};(nV2kJn5g9 zs4k9bSZi#Eol!A!8nqlRp;pUXREH8jHHJQQ%#fEOqZB84p?b6nHAgpX!C24Cy3L5X zaV3m~?XeN|LQTdo2@qq^3OtfoD3XH;Nb0Bb7JTR zGe;9qt6?WpPzg60Eix%@=kAn?11{tT#?2t(})ZLJefBeWTp;2m6vBY&7J zIoD6~XUMwXUGhJocEam~w)^-0J?B7k`4+Vr{Coo3b)M2%%-RyQen+8J#Z=V#o{e>I zHEJIS@C|Uk2Mk4}YolUkh)u6W?JHN&(U$A$X9{G&iKJ_xhUgJ$BZ=l8;J$igMomE% z)JC)p^_07Sih)n4xy=#~;09e&)W{4$Ex&cBk-LlPXw*RZuL^<#1KcgOEb8sFJ*vek zP!(Q8-5|O*z|#Z^qbi<SYk-=9IjEprgWAA$Vj|p!nySmF4eEyVJ}L&D zI~-_h{fT<0#ETK&KHc)7UP!v2=G?&}I0jX|TFe0V8PO7zo`SmJa@5rA!7#jy>UpwQ zrepcBCFzQ&$GWqL1MNg-P*Hyu)v_n3A^nEBL9*BZ?&`>nx=}vVva5(1fu^XK=!O+= z8fpaZqNXHmoB;RNa+{$Vwgia*$8(bdwd50Oqlh2ZRGboZqnxM_D2tkk8mPJNh>Gr6 zsG&V<&!5Ix3C#JV zIE!>X)X1De1?N4~zwMYPVSxKI%#p~fo?NH~Rz=lQ7h_;+%)tFUJvdO$W~26jKWzFC z>IOGZvGB^Kf1*Y#USc!!*-=wg1XWKJR7cvPt{Z`>cPgsBr8a*Xy8r&yQ4Un$U#MmG z3ROXhBqj#JP%W>GT0SjNBeWge>rf4Ng}Q-nQZt1KQ4PwBDpwq}-!#OEI6NuqU(tGj z3VgWW*yw@9a3E?!*@tS_JJiFA;P~`_Y90YOj8>(d+P{FYuC*m1Y&zqz+<=SBe(qpU}u@330sJYG+#Om)3{vKJ6o>*y3%QB&sSvb1UiocWYfof2y-~jgp zBNJ*LsD)bB?NG~a3985IP(6*A&a8&i)*{G`>UbJ*kcR?2QFF2q6+}m|5MDzyFmZab z-b1l2>H4T3+Kf8ymm$FYLue^bTXaWUfZMPP*3D>^;X+h{e#hck|2sKoM8*%)6g13a z)^|tL2t>(jw`9~@c0pAz5)}(GQA4^H6_gKA9ZH@hzYz4`#;Bh4#pXC1wE;awjZ8p@Sru_nL0ka! zxUPmdu^lRw=Ab%o6;t7z5XUSNpHQYOV&O=5`yl#8cQFbL9zee}*#; z)$^!%O^~I>tfcFqVr2v>NY|kncm#Fh$2J{3pBb4PSda!gr8)SU0z>kfo;EIEqH`E3 ziWj1W{t{|v|3NkQD|Wz`VWvTSQA0ir72RuX{z>#B{m`C&iW(8WaJL@*{U;98^3)iD zWl=-e2Q{~2P|I>UYMCuZ#mre$&;CN~h#yfsPF2theKAyiW7LR^K#kNQ)G|GT?%)6K zTPVQ&IbK54#?k>5rAII`K11yTi3*zrmO%BeJL(PRH_XXUp2hm4eTuSUl5U7=Nwg!aJ^{=3t$bp9DnDrfM!w4#6UZKKJLtY7W!y2d!r#)&p zbwkZ@KdXZ(Hx$*NS*Yc<6*ZNYP%-tO6zg9Vy(U9D-zThtfu(IQqHZt@gK-?H!VRb( zI%CgYLEZ2lY>J<-0M;uL;QmN=GA<_l3iU9XQr6VBuq^9e(R`Q;-RLrE3T|6pqi*P1 z&Rm$j0a;$hT{KcKGji!@W1)Zrip8F^3znp?Y|3J$<3 zI2pA%?x7l-puD+322_;iLj`R^ERI7l2#=r|_7E#!stP9hJEH1y7IL5-p0mENMz3h{ zGoga66lxiDLJj?BRFF+UP0b2a%$&mNcpo(~VU^4>u8pNhH@E4P$g{`sY~et2brQAi z{VSWGON^=@8!A{LQ9)D_gRlo`f0&ACa3N|W4x$?P1T~`XP!A=aDrRcJP#aYwy6e9g z2U<=&Q5F7%3Z^-ziZ-EkzTGzeGHME5psw>&HRY3|56N7p5y^vUKpoWTX^HA!dn}6s z(S83v%7I4Ug)%T>HM8MVLgn|vLih(}#@85x$*Y_5g)oeCPt-DAhbnj7rUPo2^_~+I z3pG&X#-NjngRLCs73m4;!dx}Y)2RU}y#Upa6R4i~)iP#81#fu_!oH{u%*F^jfEqc! z+GdJUqIzD`rhl!?`d80Z+7k~koOEa%bHnzis9u8E@q|r(LPdG1x~2h5QB(07YOYtI z-hS_*>i4T>>WRRDq+6k$0gLLf{`F9~M24dL2S#AV`ljb?P(e2db$$b?hu2U&_i13R z55;z*>!5=6AnN=-);JAKx+rQt=!B|ozQaK_4vyIZ?@<+`Yh>oEIBJSoqULM{D%uZW z7JPu3nz)V4n@%L^g{42L+(Mf^h?=@bs0PGnVjk~KVGh!g(GAtJsi=x~p&ItkrV}(Z z4JnF>iEgMH%|Vslj~dBms177(W`Z&oY9uVN5c2jgPpwp_9)_SEyJb-2 z>SGLSfof1!)W{6R6u82A7&YW~uo8Yl#gJ3Jr@3GQs)tul7k)r3oA|v<10qquSl`+k z_0l>SqvH(J>R5t`iJPeUzM~qLytf&tOsI|(LspyPsl$Qx@~NmEUO@%pD^w4^poYq? zk1;AL2xDUlOoy#;6qd!;sPf^zm=TFU#aI<1*I!-*8gjav7IQPKYpHTNG->ptF46HJ*O!Obd`d80J4KqC%hq}R3)EutD^SA*Oy~BnFc*?Qk%|qSr(FhY{A5rOq zBTcz!2Fc3$;o{I~-^zen+)<3##G+s0O{oX6QfKlxvMz zEj_R)Zbc1w(lG&^l2{T|&nQ$6r=sdvhq})`R1BTAIu|+6GP{m?THQlk7;mguui0=Q z=~Ad=bO<#ymr%j>H)?1f+War58+gW*Iyov`1T{5PP|J2OY9xFnnj3npDNu8p6E*ZzP|Le1s-8Z`&gU78 z=~dBD4z%u{qk=BcB(t*xp&B+EwcaOM7oy5Tr<V+8n6oZBTPR7S-Zqs0QrD9C+O3e?rZD?5X_ZgyonFH6>lAnIRvJYS402 z!&jp^whI+2M^NRjPGkM&;ovzLxiRf@)6!a~Xl-omfV$uptcT+;0w1APL*^M~`E|g- zq&K2sC(leXHH}dn?12i-88$tCChK2Ad60|@_zV?<@n@O2FNnUR8=-=4FR5=WDMJAenu0q$y9I;`;%Yfj{x@{ zm)?nkNJnlC@GQrZI03tF3GjSCzpVl8zo7U9kC7g_Ex`SkRVr)`aQ`yez#Z%tH0UsX z;(U%>#D@F#|LzWO|AbPZJ!Ypmhv5{sisv!GUi1F`5EUcw_nDW~aEu_`1XX?^hT`9t z3}fy$F_Z}v_2p4P*$5S5qcDZm{{{}UKF^?DCNHC2onE1WE!F`Oq`6SbsXl7iwnqhF zf7FgQ1JmFdR8XEpt*XbUEjQ&sb6sB4eM+PI{BO*G9=m-|&w%l$3wBvATA!hoq5mP? zTrdf${Cw0hK8@;`?_u-qm<6=~HARikGSssE2lcpqahUb58-FK58$|pgwxy^IC@-of z6|f+-!XR9P>hVELk5^Dz@ekB>{zuJJCP&pDjN0+SP$OCfHAU@@vi`GjFoFyX$wpKQ zPg<{_T6!NV;X6!+C61Z$ZBXldFluBrp&E1)+u(Eb!&=A9##0Xm5`;}r4Z7`|utQ<} zj@2m;^*bo(@lTk6S0af8Gtckv7&2@FGeK9rpb1(vT z86D4e4z#R_{Aq@+B^D<=1~nCDuqY#P9o2*6=glezMfEfS)qx7=E-%#3kHTm81{FKE zE|}j5Nq&)yigasqfB$zo2kPkoEQj}OI>%q8!YZgB?1!4$sW!dSrvI|(uQr|Vk||#h zRlX)Fw)&xleu{NFhHCxaftifoSs9)!hO_8#Jpn8 zC&fV0C9UOAL0AnnqP0-vo1^>Ze>!uZ<<}Q=<6)?R6Hpb+K?U1l>uOXmZbn_V8&%;^ z)M~k4(|4>dQ02bZwEtCepEy@p|GH6fGPFfzLRC}{b>lKNUCE~Fp@OU_Dp-f1uAhaO zakCjiq=i2DY=5J z@g6GZD%>&^^gu=Vc+__~f1uX+Ih%fM)3I)wdUK!}UIKgT{l9|EIE0#$)2I=t`i}{c zT6m6hQ&fKLJEnpH7(luhmc%lso{hykxD>T7TtkiEGgQNWqBgFKcU2GTuM`LBaV5-+ z%~8v4I;w&ds2JFR8q#z2{B2aluTk&&{`bt!5rc6$>FTHveTt3Pzyj}^jjrVb^GY`s z-S>a*Loj!bdt&mVqHd4^wNZtk zmT5(tjrC9+`|yPIuZ_Xysp)ZaRKdj7bf{p-iHiPk)KpYMt&+B=>mAf}qfjF?4K;#G zP&Zm{&+oMP$87qdex#xs{9{i%v3@{R?EB1A90OHhQdEWMQ6mtFZZzBc3aE0mQP(%O zc0`ryZPSCSqa6;^@+qhb7upkRtXok%+HcRFMOAd&=HEjN@f+-dfzQp`aBpl&y3-4@ zYObJy{08n&dDMR4ta)j6qTQ&94`U`gg9@ULsP&xsmDwkXqRQ1r-M9rRCi-01+l=}cM1el28_%@vM>XIvY9yk*F%3zKdL_$^S_MO_ zbF5pef1-l;2^PlGZ_RRT=*s%0Fcc7yEDh@->JM(ZEjvASDs35$8uUOYFQ9Zr= z!7R7$)}W6jUBcQ5)v;054U+qNuG$QrPv-43Go~ZIB5H`cSw~oBS=XYr?gQ4F)-TpX zpUsAp3$-CN!#nr|GvkdftpCy+c)ywDu)v8buqj@lWIVmW+(Dj)jYypn}|XZ>qA^&}%02cgnSP+RRf)SJs5RPY?YAUun@ z!7J31{J`v(@rQ|(ny3w}Co1Y^qv~IeiiL})f7&JLPu9QYt`$#jMe$Hn&*ot+Jcimr zzoMojl~17i@F;;A`lk312VhR@>1)a@N8RWYY6N`z0^J4%VLsB8Ya~J1W>7pr$ldV4ypd2{0<@q^K7b zCzu2EJd3pyYOb50hO`Z8N~WQ^L7|3z4Ql9jqDJT*Mxxhi%2h+fP9yA%%~2h?j%w&r zq+yQd8wZ+O-za9NVq+T8IWP#TpnBdFwd^LKDq3dqx1bt!5!K+^)>u(Zx{$RU>KQTv z6AC+Q%`i$kYKD!G8`2fQ&113?Wh-)v#5P! zVT?dG_>Q51`5EfH;uRAA^gN~+swk+3N=zJpL8y_Khq-Yd7Q}a`DGH5cVx|CUM2aE* zq_U?fYUu07HbdP6mF|j)rCz9@pMdW7|EoFB5FbWO#a+~pzCz9YH&oDg;{>`d9&s^@ zbPd#yk4HuMF4U^IjvA3zaZRk`Mg?~<)JR8S5VngO$lw3Y!5A{s!a1m(EW`r10oC&- zs0O5p7ifOwi-kx}MD^qhYMnnt1*a!|pu2&^!jmM!@G=G@Fb%wcIY`Gz$lrga8x&1w z?2cMK%TYVyMbw-pPh^I?2x=oKjU})hhTvLM&u*fo><4N;2uf_0Sv6Gf*0t#_s1fSz zaG(~?K@Isz)ZA`Cjm#eFS=7kfMvc@f)U)9|mh)vNOJb&^da^+Gui+kt8o}pS7&9a{ z=UZR|>3OJq!MSA*?xW`LDJlq~r7)&M^*9t2wKY&TZiREPFDlxTq%;*ivA(i?uzs`p zrZVNC7#&Y64it0=P{Ec4H6qziBN2|8`{Jk|s(>n2)25rC%C|+0U~lVCR7^}j)w2Y3 zpVijw=)V6S;Xv#DENV{PV@*t!I?(++|1Nlwbo3xo;SHP4Ben zvv`;Md#D&Xmd;G!Rn!!IM_m^?J?mdXla2#-$guv2HedM z=>9DDBWgKDW;8J~60?$?g_ZFL>V}Cj1-d^2&WhDZ|Cx#PuPriNW)t1zQCnzz)QEIN zJ!F2x#<&6NW85sJTt{p`dMIk{Z=+)487hcBqJlSCRb;;Hs=g66e*p%O-h`^>BC7tk4hPyw zqh>cjQUZ&UZiU+Ge@6}NeN^HGg%9BBQ2u%^gs3KmD*uny`CsV^#+rlN*^JL(~F z8#Q9F^O@KQLG`etwT`s|>R~m=I#+Uk&khb0<(E;9VNZUu>{6jFD2qDZ(x%5_M$)Tn z`hq?G%BGVRFy-^1u5WD9{cU=wO&>r<1)kcBC}HM;oTwXCLd{uk)Wc^0Drm-`=6nfi zXpdt#yo(y4?BQm_s-i})18P-_M@{icR7Velv;H--x5?1D{b~&?Xy!03YVS{rx=}XN z9GAA~N~joVgPPN>_zL^j{I-Qm!@HqkWC%XOsWv^ZFzf#b850Ye7WFS;mftMQPW}yR z^rC_84~@f6BQORPWQ$NiwF%vkKrOSosF4eaFtL#rbzM!=`$7j){c{`+RPcoLPYfb` z2{l9?Z8~8wvkLN|MxZRJM^#Wm+8i%nKUBq)i<=P{fSSr-s0OaF`A4xjY3B?F+B(yg zFhiLGHP`vE4VJ-XxE@LV2?lPe-kW%cy1f4Yi-7 zs}Sh^pOQ#yO?nVU;3HJI%oVv#>%S@o3Z`DDp&x0}(^1QF1?q-}QLEuJX2Z*<5%aHP zjDs4<6j%w%VrL(Ikco;VZxu5I=}{wB5ZyojSBV2PpaE)VI-+_o7PTxlqDEvlYCT`U zCHMsu&GV}Uy8n~cj?G4GK)W#r zFQS6ld2dfdZD?*Bgep(~6=Zd-BQP)NO{gGyY|{xFnf&tB!Ke;xMUBLts2kt4`Cm{Y z9KW&qD&}~?I8cwupn6cK=vK?wf`k_W(GAbB1px1{Vv0zNn7n_(3><;S2Pf;=Q z18ZZ;X%yoV(%@ilbz2q0iGFtz>tpeRY^%9Bd*Ic%sD@4y4%%^$2D_t{$yA%3 zkD9yvs35$8D*qf+;Rg&rZwK@88WT12p%{cE&>vf%Hn6s+5$uY(-|!Bse-&763#`T< z(tn^T`pfzV^#bt~e`WnA?r6#_=xp-$qZ)bxb=^DERC>FZ)esNWu}r9rm6x55w4%7wvQRPmcV&E!P#HZLB!@8QMQoe>2H&EJfAtxRv5L9IguLGphBpjE{U12I%-P#qoQ|_bq8wh&)f5l z(T(AKA8HEDp&I@j)xe|!S^qjH#DQAW7}OYSL83vZh15bcUlES_5^T;i%yK&0+m(2xpO@8?8o7#X+0?$NC91 zbg>7Sa>1x_;i&vN7=|5C4OoU*a2ICAhp6b%_jpxdy)RGfdS@;G#|cK#fd_q2}lOA*cm~>^-REtOHRSCv2nV6cEks?v#-2Zd3cl;88wHLw z=M$lVGz2x`Z853V|0oVr@nY1_Z9|R7ZB!3GpoTK#7*j4ADprbF>tkNhJy9dL3bnT% zM>XUHYR5}D){H=D)M~4U?%)5_f`bxd^s*;*pe{Ivnu;H&76*+Bbbr+%0yUJwQ6n(c zIs>(TEJ3Y;&8UtYLpA6IW=G%gW{N_`v;GxCVPq)SN}`rsB~%4lP;+-2_uysJdY?AI z1k+0E5mZC(*tGv|W+Z}8*B3!Gv;rzN>YzH*lpV;OP1PXlay(1=3cMMyPTfP#e-%R6V;fGhV`6=$UDPFE^^;bx`#+L-+6h z9m9c^+i#c$m!WQO9o6E;s0+WM7XxOQhQ&n9WoBy;RQc+thO|WObOTW%G#9mux7zbZ zFxVmE76&TmH{0|mEh=3c_0HE6)v)2HmhV9I@Ggd7%sJ+|GMJBaYgFvaLruv^>vIeu z9eZw|XDf!HqZ>TpKqq3%Gjp09i;ymc#c>cG$AhRK8#h1DGt7tejWsZQAwQnS35$4o z;>*SS?>4NvG|;mPb1o0`EXEfrc=^OhD+AqM%{;w|_1}yNcdVwToJhIGw7A$>6LigS z1?MNAHk<SSX zSVxA2__;licBA>urUj~^b{LBr^+(0Pm`$c3lQ9kHKWzFED(XL?8l2z{Q$9IrYJyR* zQ4dvbcZUOAFdP*mi!cW6LM^Z3sJ;3IYBjvG=i_WPH%^HK$uEjpp8ZhE>vz-$?Z+JW z03$Hr7L#8KRln1Z1GQ)Z>iNF{wVY0(hUyz?N6fL+M0*9)4Vt2c^cU0!j7A0RYSax+ zqL$|u)C)|qZRV$CO;8P6fQ*3SIm|&28JDe}P%TTk-Bgqv^%QG>+8;(@XU_FQ$;isrzjG}UF2gNwC0ku`W#Q;pU%gkL6s%M!{ zQ&R>t6*aIXc0oN{j-Z|m=kXriL3QNlZW9aFQ6q8(PowW1yZ-;=AcTx}sEsJyUUTDc zYjIS5B)UF_{F|r_y+MEcgxZL{qx<{6G4`2^#Hflhpe_ip z>AcvPbP=3^Yf-<&US_`;(jx~<52GG5BNYer%m_hEL4DN74Mhd{Z>SMpd64xV!ND^! zs$lj*CfWz0cDAXg$M0FxR(lQg6nly4vF~BCj1r;pGht&ah$=tZo?nmZ&;g9VW2o{` zk2t1fDUO(o%&2HDglcI$)R6Z;jm%8zB2>dxp{8I9s)t8V*IhvE6VFjo@*Wk0(T|!{ zmI*VFF7I#I_K}AE_iv|?CnWTm?;Z*dMj?hg%`}a zu5;0Rn>_;c)9s6>29&&HIxrWtf!#r^s`!`9k6uflUUK{67~F?7wf-wyG3$2`YL3=o zAf80^@VxaFYEGYF1inL+&wJJUkH%`Kks5&tuI;Ej{*+DMwCUHV;PtykJ>1`um;=py z9gK->ZMwHj|B6w_pN6V%J|@8ps2iO?4gC$&v%>c}JEku?C~D&>dBeQGG)Hx;BdQ}k z&|UxiIZzajL@kr)Ha!>9l3s(l@K021T(;@BH_Z)`;5G6?P!&hJW#5`n4Nqy!fX!46 zHL{a#vHrE(=93|Jqn68c)QG%Bw@0^4Pm`jSS2k3BX;iQ^wC5+FhISDK;TF^j$z@b* z6}w|%s2wWkXWVhj(`zpoy5T>lJ^Br*LGkXI9)zOiItGY^4%nXb zJJgUjd1xBa7Ne4Oa1oBeG??v?i6N(wJ!p*uI57zInB9&U@gfG{H`G%v7>-it+iJ6l;sHajhR1dnM9;PRy+JANVZL{p+zpQBSQ+s27M^I1FPx zH~&+45>_QW^o9A}@GtZwxYE32ZD6`rCc4wV=IKbeUvU6>-o6MZow(fezl`;SR1#mkf{^v(PaiUi*S z-M{PgZ>&sy<{u{g3;s^}2u{Z?Kh2IAg$e3Hx*RG-c6hvw``6~2BSXumkdN2>CsdlE zg77_RD&qJWi(m!P9k4!b$F`Wz&+Go&z`^RIA7W7~=Cf*! zDR`cfp=ga3;C1)#OsK83KI+0ws1b6o25v^}jL`y3h1qc}>EhTOU*kAz>Git5p!61- zlCBcP>n`JssQVppIMCePL(Nr`sKzv?ISxn7aV_kFy-+uPiDj6gc+tF`L8R+N_j=aj zbyUS;V|d-4^RGnB`F(4Om|piEp{R~K$akJ|@Q#BOu}sV6#`e0)YXhnQCs8Bx(5C(4 zm~;?oC<~*4s~WaOPh79N-rL|(k^^xAri{{Bx6%9C*w*$_PG z6L{S>pYoWE^hDHL?Lpn}Hm<<;sK@QRgl4MFp?1!Ds1fo@WP&UMYLykX?nW)k!il~7 zsXET=bPsp~N@8063o7U)U^(245$H|ob>H{PqIxvjKs|KF$)Z5ix!m-}QKL;6QB>wgIcqtkiatuZ9M*L`QB|r%Ix(#;QY2MUXQ;o z?;BaY?)M2xvO8YSa0>Y6@S28%cs&zIhlH|zaeq#)`x}v!b9>!q!7iLhez81W_g_lC zp4aPXN&0aMs^}ignPhjMuY_f(^==81O6Sb$=T+6E-6MAS!m!MzU2? zzCNBO-K)IU^AyWfFjJVfqSt+AT!0G7Yp5MEP9?AYFpA?D#=$o-T30p|wW#9t%qQ(s zH9byU%?xcLOzFq#Id)|ZPt|1TDOaQpI~@&Jf`>@os_XTvQo5ekQyi-_@VdWGG`XQ! zwjCOI-Jcs=#Lim(85^6HO~*hgIE~uNFQQh(&?e?#v;g&DvJyCQ8ud>2+@Ak}b4Ula zWCUc$CMnVl~=s=?u?4W>5gTd?k^dIqA_{TS=-=>GoyQ4X{*+(xb2PuK*bw>Iex zsPhi`<8)MT&cT@IX=C<{Sk@3sO?DMjeO*u^H53)3GcgEnwqgD2srQo%wKz#z)1y2% zlyo@i#(Pj(=_OQ;o?|uqgnIEP-_GREwk|_`L$krA_oGJO6h_CZHvfJ*$2_H8kx_{g z)7qOB-$(WI6RLsVQA3-kgIRXDF$?K>m>Gwow%B!87Z0MQCS^ynfd!+!jn9SJ+KY5D zQ}*8BKtYwDv)BExSxVGaSpf@SUo41QQ8#*vL71|ONf*Jaq}!mbn}T{q96-IkKehSs zyPBtJF-%MTNGy-eN)AFe_<)+T4Bbq0m&Tl=yQ4OmrPfoZAbN|sE^c?zfMS@7bVtmA z3sC3JqDJB;>X{PI!@N-?L#ER4WaS_#C-PY%P;(TC8kt%cij7et@EdBVcc31pXHd_C zfS%^zR1(jTZiH$;XfNKBunFp&as`ItLCmi8|APZB8QFT9xz2;>NmoP-Wp|rD$L4Rg z`PWfF>EFkg9QCluh1wsAp@zB>sv#3mBe@?{|07JL^&jgOb3t|tB3%!4K|j<5tE}fy zBk&m&e8GK9x)Lhg2h-qU)Qu0LV&jp`PteayO+HiuTB4(aF&wDk4X7Bnj_Scz48~0T zO@$Ru&;QP-bB9B6&N zLscAekO{twsNl##0J4B6Uzf*%N!=0MwAbLsj52)U1Lms5hS?SQLAqdcFlU1*cG3@FUbt z`W00!{xH)(r#c7fQA^Yfd!UB4KWgr0p@MJ^Dwyu$2#h=2y!*{SEypLQ8~i|xSfUZ8 z0ime;3aD6VfhzAH9d$gDZN_@kNE|}7{50yq#~6SBG%XSE=zKy7c|AV^WLu=A8Ci=@`Z0_%A#z710hK2DmD%ul{H8&`XfuyUWg0LQ@ z!ilJuSdZ%IZqyJzMa59yI5UF5sOt-&$`{9mSQ(wZ9IWA>Hf9=cdN>GUlOBcY(M;5w z9Y^)(25Lm^qDJH?K4ECzp`Mzzels_^huU9WTN6(-4KIue;sz60|D`z?PR2Ssh5NAo zB(M8Z>%x<%fQpk(F|W zI2u)cvCZF$>gi?F@_mOYmt>*Y!gHcFq#CGLa9VPpq3DJRk|DOhDAb(KLRGZZrqA2+ z4=@|~A2A)KTVzJ69BO&C#RwdU>hUq`hj+0LBiDGbUH?~>m=}Zhc$EUtmYSB{!#t$D z%S;0cp`H;HP!E$asD^DuEw`(vV2iTctdbn4{FbPVYYJ-B?6di|aIV&WtQGck8x_^h z(GTBaTl|dbVe{Ylc>pc{6|0gyztZdek&ASz%){gp_8~v(YV%UM1PhXWhlMb74c}{G zM^v!B#Zp@Tf$Pk7G8Hh4^hQ)HJVRZWY`u9ot&OcoFT=7JYlHcAyEZl!Yvqq1@I%L!O(qXL#u{*3l80HmT@VE zgS=!k#N0R;6}3lE%kl#%+5-=m8-=1qqBv@V%A+c*j@rQ5pl;X=Q{xoWyWt1MGa{$o4*cq zqf4l{e~%e4+DUU=E>r{RqHf$6b>mK`k?DyVQ3st89E|251D-)Gm-p82Q)Z|gR0B7n z_V!b#hCV@!i0^4LLa9;Z3Zh1&CaQs5Pz@fA3f?8wHK$qss&ES#8j_2+0Pmw(KH`jN z`BcmS+kA5qKm2Wm=u&zfM)bk;G^+?EXObkndM z1!n%~<)33DYR{Ru{)90|2c9=uYkX8sOQ3?Rq0JwU>hT`bd&LE;fR9lzl<$HWfoiA@ z)ps~h@HIm9pcQJ4+M`<96E$?RQFFG#rVpbkxMzKcNk~6I)#rE7OjUGLy_r$<=0L?l z0h{j>wFf0p7nVcas4A*p1DkG+iuz8dx8we(5&0E$gQ@7gFWB>IQ5)J0)SSPteni#l z`OB@x@pw7Vh4E1jjf|+d3P;Uh5mdt}A{&OMCaT;JRF9{k8nV{r??g5545}m7toKn< z^9r@R11@OfmOm=Q{a zx?xT%jKxqR>!7A!C=&mye-1P>lTZ~eM=i5$)(fa|FEBfPz;u}Is(DJ5L(TD6)b&$Q zF|o|L3U&Q@RD-smmi@7-tbZ+^2V`hY6JIlPmIYNXFDhzF*>q)VW7OPsM%}P4YPF2P zAl!f&sq?7Vc!sL~GivXTaos#kgRj&7%w*&xLlrefUC;&9qXDR38i5MFN!Gon;CqIu zFyL=v3RKT>qeh@AYAS1C5H>)K^Z-=HCOI6aCv#9kv>bKAb*KjIMD^qpD)=6tdh!F+ zfVelzQ!)!`BwL`n98ou(g&N5PsGwYr+BY_$8w;E53GzG*xU>F_-=(yqHFtSOP1RY0 z`#E=)tNv0Ae5TR#-xR5QnlN1TI37>ggnV7+_@;)A&mOhFepa}Po);3%m*YN9O}?Ig z>{kE#AKq;2Me1z>ZpurrXFfNM!?8aG@>Q83i-Kp=RX*P}RD9Bsr_WRx;LCMwsQ5Nt zFF9YD>-*5~e<+iY>s~P|5kB0%3z=u=Wfg8biryrmb>nEIL*9-5^q?sh?WFPrxQYt% zYFz*GDPS8DNqv=VgIeNt8neOeA*0AOdF|*-)4ZGh^VY(NyHqfNVfvk$>obHYh)09o zkS<0=a}*$ad?>e_uOQw$`MU)@Np1Oxq~B8MY0^bGu5OBZZmQ>8zxY3$X-nN@=%`bH z8;04|s(d6BEaOBMd$Yzg>>VQ!l?#$lkv{zLif0Qq*hH`P@fFuLpefh#p!D3wvW!Ap zzB*I)JJKN>>k|trkp4`)|M2?LV%5(CSh_Atv{r9t(Mx3Ma8PvnSQSE-Z(xI;0B%EuHg7KHf8z!hX+UhsKeUYuw|3>+e?R|FPQO21EH>kxpP^jvpI$_#vO5&Gpw{wL zg5x!|L0|0Bc}H#kw$V#PwYjOgZ$mW7>yzA$rj9jR7x)i<(XMBhj(msqrmj4q-nK*yZp3h2U&$&?;*QFwV4y}o9N74DuXr`eK{eR?z)c1R8BeYNofOLnT$HEHOQZPN8jf$mUV$PQLU>OPLh5=SruiOijMdE5Rq6a?{PBCnk01 z)1I%B%=NqfjKatN)G?ZPT1~x9d3(dG6f8zB5>nYYdhmlrJ>gs^t^b9uJACEf>kJLu z&J>lfBk`5%22=5L%Iov&-+3`f&qM0l%yj|Ob%kq^GTNs(cbIFk#$Lut@{qMw0=TJc$+mn9W;0`_b!?sf2nEd-0XnWR!bK9wK z5|!2CYa7?zWGXIkoS&QTv^OY1nOj`bn>x~vmxFWLxL+^<&exQMCZR3=ej5_}PB&Dt)|Mrf|%AC882`Qi2b}%81re1z@ zVt)Ta7guKZ^$F$V09v_;uglEwKq`2_O_z}N(M9$X$hj3Xq`1wy%W;ryPH(?aM`p_Z z`$)r=ebN@dx|o3C^B zhRZ3xoAW&hR4;j5s3#+h7-^>{K6%HvO->w7z4z=WC7=QSe!4rHC~I4@njWR3f~{0g zh9T_B4W4lEa!Q~4Pj7Vb1bSMJystE<3+ZbAIjV_bYI{14POTt63o(?EI?~w2=JR9zA5o|g7sR2EK4%P`w~RtxMr0xvrR8`djnThW za+|U{xp`}bli#rPY_r$pqMj6_i!vR)bYKaM?rG0`wL|Z|VpIP_I#Gr)hhs4RBW%wH zQ1}Zcr&CD?H#|%MeRA5~ETod|^g^FwH0ltI37}E6?D@ax)n@9rMx&o`Z7dpem-G2Z zZ|68Q$1ymr#ko?pVea}LW^bg5^HHcNUjt}_AB9&i#GUMrk0E~!Hz~lEeo5&C4fyvH zLa#^DkPo&o%1=u`>eHJ#^n+`Cs?o7Os88RT>&J7>bS~7NY+6cXySeF7d$SN)+@Bst zP)T`vqZ@V)SWNz7+vra;GB(%uMtuS)Ka27uIG>2d{G`77)O8KNQ>G~SJ~W~w_j(Z1 z?LYHrhhs1mL}5C*P~il68K%ZjxH*-^w>L~iMH4xv&p_L-zNAlcoe%YFATKTrJ;hB2 z<6&;3PZ;O=Q|>k8^h2vD_>k{E-A_V#bc)t);6_8as3?_OXV~=dCGU(qRyrCDsY3ac zG^{#}slbi?{d^){pNW`*>+~7PwYI&U1$KHu>}dUT|NJe5F4)387)g*dr-GOq595Nt zRB#n*bE6ZqdZE4HPkXa5G$<=0l}JmEMkS%~{OrLKK#x1xdb`*g``c^g(#b*OIpJiy zpwKZcDoMq4N!Q@w8n&Q%z~3+K$-+%y*r8NjHru7Q+$0M(tv~~QFd9Fp=PYH@;%my4 z=3IH|D!~o)iD|EkMc#bPKYuUu|NErTT-hOt%1zG^59P5WmDJ?I6pTn!+cRA}n472I zTs=EYBe{M*_3o#Rp>(Dm9s8BW-NGuA?M)p^`T9%om(%v@GzIjhn$j{XnJH9;0{Xlp zZ!wj0vz04v=KpE*-;~kkGS?2}rgtgZn4ar%gY*pKpNH_Y<@i2jwlYGmbYAh-i_9xj z@CNnyg^RCnJP7l0<6bl*n8y9UNepXmE=)}vRG^}NKmAEh;sX@E#8+Xyx-qnu$=hj1;4T*qpn)0q>dr6+lb-gU z5#ZOqJ^2{&`g}dH*L1fd5{2?rIscXVUU2S^ZS-#L@h%4UPeqILc|)ZqIC;ZfsJs?j ze4m1!srWFx^22zP?@RtxDr`a7EadMZ-H3CqxIueHEf!z2i<%Tf$tEuk+H^@Vo891K&HmnzYW|O{2J@@%q z#Me0fhH+0nGJmC#o?IA}QD4c41GLP~&it>WJJ9;F+a&Vo{E3IDEIrfp zP3OqFL&dGB;}8zw{2Izfvm>_JUQ4z&1T%PL*9^%{X$+0rdyv8T<=Vx(kTpOPcnA#Ro@2RB}Rfj_~SWXhgm-* zdCONc^7N_4@f8}io^l6DiNbASbFQYO4 zEoj{lF8DzKebU+1-BeFG-i-RRq@w)XB-p0cb8Zef@=|p0DvCj2eRgn@YoxpK^@a-7p3d$WHW-F%82S8JN>4J| z(4v$-O@0o_2HK%cL7gFXr1H|+yEHnDEx&{7t8-00%GA)`u-Jf%Z?tj@88ay4<-*+L z`EhQL?QLyZ9cp``wj85^|LN*Z;Jlu`|A9}7R+MColoC<2QQFWZOG#R#B<+i6kroE2 zva=!ks1X4YFSZ8zD^J2K1Yb z_hr~(KMHBF=!cBPs%)9>)>aXuG>{*NQqLUp=~mT&{2Ymwi^|0(kG2su2)+6<;v*U$%i>DQkeJBWB;jCGan>jH03^f17U{Fg*$W%-_W?uulQ z%*XAw!6!QbZh-6{t!ohDg-dJ&TyuILRx@RUv(y7w0QTd{5SOWgP4@YmY29wzim*pgAGplSSwW24TW zGR)A6lLDBydJt{C$B!iw_eK&?hGGr13tcSab1v zC5@zdh;x&8=Es=K7}%~vZbw*wfG-tU1^YIxWas1Q41aP6NxlVqo77obEZ)Ci(NR^w zx=7Ya_y~DvNw*?C9r#qF87mutONk$Cwa{&wDEJbt8hnG~XKa<&FT_93cMoi`^r=59 zeHg`g8|NB@k}cQK3p(n~*E&dUhpUulyd{mcuOi7#LEOl_QN*vyb^q_tf4EnNdq3g{ zvs&)S))AUG1@9G#H&ghaTFHv}4uh;;IalZ2vnELHk7%ZSUUYMd!WkRyTp&6~zHu?~ zbiP}GUMBY{@_8QD$~<|W6Hq&WSXuG*_T|KGNdNu+F$z6{pa*s1kmR$U$$z~4( z_`8a~YzkL~h%23wb+Xd8A}8yhfn?`I-YjBn4lxhn@K@WjM)D>5BIhS8JN&8W5Q;*1|JNqPod=3k!{fdC)id7<@sF%@S@Xoq3x+!k=vo^8{OZHD%WnHeoeL=U>YQ5p9wrt-eRKS`i7>tzLB zM7E7T+3}pu5c`U${4BPM=(#u!S&jJ`*(ZC1pX0j=$F2~Ta_1AeApHs7u;?&3U(0h& z_oua^$LOx4|=>!2MW$ID6f8o~j5 zcj>ZzycS2}zJdSe5HKh9*X6A+nVkNM1cC2h&H9Xx(MWzm_=n_20Iwn<*$?)wbidnq zlJj=Nehx@h6Jpcf%h;%yS>lW2C!0a^76qs4`gfupu&3`zN_MVXmOKCZUG7t;O^i83 zz5^Z+&oteCK-Af4&!4fr&b1Y6j=ZXMkNEF|BrA(A*$9)E#hqciOIb(GRctElDG;yPx*~Yqnu#R{i(MNoz5R-e$_rV6kZ!|>$^rbozlSwDk#uCx=BgNjwLi>R|oMLxMbg^cZRQsi6onX zyAxq&#miay-Z-_lI=YHkUK2g8~=0U#3Vq-9GC6 zl=EllQNnBw!3`8yE5AOTtyad))4)UN&*i=cXbXG_MPnj*LUfb???P~c$-EWM{%VDu zAnqlEHwN|$;;+Kh$YZ)e;sOO)_3VPgd3v3P4OuA#sp5o@vfY=aMyq<;+(Pk>Ca`3 z;%F?8>>6Z`A-dbWp<>r~93N1djl_>t$*QL7CgRD;@ZBu;VYsiYvo&!Gz7pbZ^PdcV zB@u7o*iG0zQ@B6GeJu8ld-ig{nus#?u)?n)`z9uGn)pTW{LezV$vB@BFN-kQm15iN zCq)ChVUlf^f3#+LS>wbSz!$V0~nf&0T0K-d9Kdj&6mUluRz2PQKj#=lSQo^+1) zFUt57LioI3of!E8lDAm0v^+OvIztakTZ_B zw_tAf-0Q_Oa_Z*~;X=d)=eog>64Q4()e?J_z?X5I7`Vf6Tq*u$Jl7*Ke=a+gvV%!!bXU(r`WV%{#`HJ; zSBR>^Bs)2tXF6Ykc#gd>VTZ*O`zZJ&K@Zuh@V~8SvPn_&9Nk}p`&IkSY~5^9!ON{+29gdWIJ)&g8Vo&En zCR9`-okPqBdFPnmWU*$>_YqUop0R>*@8D~je%H1n0tX35HbaqqG5)G~Mww!@B~>Qm zPl9i>mxn7t;86QO>xn#~Ho~5Wvy-)%zk4EJkIJ1#Y>m`d`uw{QpsxLG#m)!3NuX!E zEI*4qh4^;G?(=+Kh-VC*)r2qE;|gW$RZ}Z2_e{R`BK~bmrG7N}L!PFx(~me=6~z+C z3W--C>7mdG{9X7)z$7b8+(4h6rQE2vh{MlwYJE=mG}$ng*0@WRS)J0 z{1pi~Dwi`m>r;+m6kg%Q+a_>(yj+Rw@=%`68=NO2xI_G$LTkSx?L9)Sw+6w@R43WT?mrea|3#9<5m8nrFA21u_}u@GU<&dHIcd2cYQT?n{1)K` z-S$NGc!)VfKq2vDt8`seJXsUixth2;xW|d@$aWbfVWXEKS!H9n)rg-3ZklHjDYh^Q z`~=&=y@Pm9`KQV0XClXG#CO?eZL}W~d@1ig_sVLN#CyA<-H81ZZj6=PJD%iG|&zShAY{o<{JdqB}jq{?0q%S*G~&3LYnx>@ZDC zG`TBuwaJ=e0#y~6=@H$J_cBFKRHK}|1>TN?-zoNUs=o)xE(y~Gr%JkA!feF`hT;z; zp5-wO6;E~q|DAIB*iVJqCO2aZLg1fbCB!<&P4-GW-gI6|cq3dhI;!%NmZF}8^a zs>X{~A(BqlT^U3d!d(t`KH{YWe9d1O;T?)SZEpZ`0$;LAOd;9VvFF}QEhcuky=MBV zU00*HR>6NEmf2rav^Irj2QVdm7TEq>T>TAX{DwtW zC$<&-2h(Y4GRfW{D6f5~;8_IBhHV=>Z{R&I{r`V+$f=T#423E2U;ekPMnQDCc*ZI# zT!+wsA-1o;6^IwcsH^IJMZ`*&V&`}y6$mc{^FHxkDxNI+PRf4_Mal6h(0W}RqiZ__;{0^FDOS(@;H_u5#wZ z6n+fe0sLPS^!(cxXR-^B7eRIgwIc{gwg6FE$&({_g#w#lu83|nAj_{{%OI^3kDy`f z&){sTQ1^J@>fz37|MWqa>_dSU)7W%!HnQ)-UzE5#?uQd}c0AMR?k(l?CgP2F3?1d& zLF_d+-Vy7m;39>`!mP56DfPc^5;{qG|5TIJRJOPhzr;}2(VMJY=v^qjM=$?`?v{E_ zcCxZJ>iaXf)k)oH9i`k35*x(q60QP&V_X+Fp97oSF#1Y=dF@Am{}gUZUoF9Nt@Esk ze0A*STOC4JEya4n-=fIt_V@Mrl0vV$C!0;=Ccd7|ZHZgP|6;_(*)OpkOuyVzk0-MP za9Sumj)07nj3@md-%9Ii)2bc53?}VI%KcTL*47uMGs6Q&mQ6$ru?g-gtT!}pgPMyI zM|$0MxYPiuDe*hNEk=5iPN(WB+542Xk=R7xda-df^3L#;L004uHQ6nohI36j|olWmuHV~lK4blj5Ix5akr@a*s{f}0q) zBVteaAA7Wy#WE@oI~NO6LOz-CfPNndy&Pmvu-txXCyu)=}i-OLts(7 z-JiQBD!@!V6l}S?t^_ z{ULF(XMHkCs_A(?7a5UHP0AiLnCtECOUYygtt2HgAk?!q@`&Pk@_GDe6XztCg_|fTq z5l{Yh&ey1OJMIVUkEY*lUL2#{8~Z(qYzF=%5(^Wx4f)X$?l9K>oQK7D&-I*dGr7?* zg)gJ%CS4}G9`?^@q6*AltCV|x>kJdvnV$bl1^T7uWL0*4I-b|J@e<7du18DM@em z#OUruRv4(I;3L+92tGu3aS)c%#d*4HNyPf_rTSNzzy)IG65dRKdEysGq36Vp7h8=l zSxML#xw+=gs&d>7+?0sr0)-^cF~XDF_qneVYaw}*4jv4lDQ`Z~+lb#y&=lt{G_wTu zM6uF1FT`_`2|htog&28RzGPLbUFn+y8m8h1?vq>~$Y&|`T73F^5RV`w9ceNdyT*As z;#&iE7$LvoN_Hpz@q|w$=3#4Z_*1Nobrb$?V6tYm8Jw?V8p5U8Jy}K@ZS+_1fULY$ z*ZpZMjiZfis-8gcnfB4vpPtb$T_o$2N99xUhKQHJ`8rIpJ<;WL6fYOgc?dlS_#63C z9{6CODH5)6A4lqCkx-v+5)o~QOx6oQ#tsp`C2*5s&&1Mxk9LnH>x3_1MrbVKWipyD_=FfA+($FX_OIlePsGjPYYOwb2fr0= zL-NO@ekJ;^oS(%2xC!ZY-5+60*G2K!l4=8A9|?)CkD^myc1!*h@#pcV#+ybv6T8{H zkMm~xK=%%K$EWV$+u0u{;%4y@a&s)r|8U?-1&RXArErWr*~bWywa@cRyAjzyd5HoUvQrE);tT`53W(O!YYXpE1R9M*fog z<74#yt-IzW%jQXKG!soJ;t|~ z;8sy+ntLVq|8V}OiFqNqZ)!GEe?5|9ZHP!#3NTsSn8fk%c(#c54eaYNwZ9N91QnZEfRn@^j`^89BMt8%5ux4~I z7PgB*#l??7T$#UtPM0Y3bL9MiBUw+mvv9s6wwCXc^s@l!>*9?dOQ7q$AjK(bVmwQu z(+l}BRz~6)1)jC;GuolvpW&KlguJVQA8O=b{$#Hz_8@T^<YvbzA2tp<1|&gni#M~|liD+RldkcUjCc0Bu8itmE?1bIcp zpVq)?V!koC$MN*neLm}fnB?2?Gw<9jYGr@JF-g+3$X|E9m-B&m#tRYEi)UC+q0I`k z;oBHpJZE1Y@tJZy&}p*c!k5lPVcwH_GVZ+gx%(OEJH?Yd6a~|{n}iMoHB_j84hrk6 zJ8{Rk|EQDMM09gri1cQ8MPQ1-Y!$2QK0mnrv!7w?gTy=P{#AL&iiMCz;U7+a=2%0q zWM3NVtCC)fQN1Ezy5#$<{_z5SB!07E4Ru(Cs2Z^Q+jFMyGGhxx(1`2;Qx$&YtTq$?f>}B53VgT%qd~oGM|nVm~Q1(4MSQjQU^sUps$9 zY*l${ohyjH6~73*iaUQip0NZiz;VAl^Dbm91bjuIcP0L&P*VcFCgw|o3;7zx_`33+ zuE6y$Q^dAe$?lUo+&abi6QZX&`-xszw<Isf{I_oKU9>v@F{^ctPyjIfu_;g!I+*I*pL0&xkhlS`sDFWHmCBwMfE2kH6mG0NWo1}NSX!BU+y;V(kOX#Pc%o+kO0AU~Oa?_u6h;KT5} z?w;&zlR6SU*(`{H;@PtF5AfVe`uwJA9tA<3!{@d@?6JFkqw zorzBNe2n)r=ko~sOOYYOCwswaXMMqUxq8z~wlAJP($4~E2YeZ_R`z$Pw`KLSAK~zb z!Vl*WHaUn^PO9n!b9#y z;jamsvAJ>!XB%m0fjN?gSe+$htfj>7-2dVDAV!&DdyqV60&@vDMOT|V$0b2r7T1Gv z8tSkD%zOOLi)U;^(>BACX{SsyeAEFIdgygc^6T#4M48}YNOmhw1xc0d+YtQ|T~s9SFt}UfO|)mMth~)8QAyYDD0GFqU-+(czLKamnphMQ zxJy#S^hKZ@NKOLitecP0TOY;OM6tCBRCnI2gWC}Qi{NFVPP0ytGa+yViTVfMPr6Q4 zS+Uy`o#?(m?7P6_M*SxrHhU|=yjE55oxnReS5g0p^PoI{o03>XdlAt+I=L6o0Yy$z zU|Bq-DSSl;yxsnZoNhR_ia#DX^PRhw^!dL)cX#Q2h+@lhKVFwz6u1@Pt%`4SzmGrJ zb?(Cnegr;QK?Q2a``Jo1*WM_|SMf`EX2w8Erod|7Un}o`3qX{{V?oBpl`Z zoV~I82*r|>lQ3FWgWd0sX&n}Vy1_Tr-Ji%l)!C=vZyti~lCvcQT?3Q8=KHACoNt-j zW3yu%<0ws59%wLiGpuBj6#PQX<-Lad#b~HI&SRsAZbT<*>s~+j>*V|_cFx6|+X9$Cr4g@^ z+(@C_ivJpfi;)*}-WOt<5Lk}*c5o;0WfQ+E$j>CUFZ>$56C=M8%$0nzJ+5wvBmMe! zJc6OdQUkD)yTK+c1tWm=uq7puE6*xRwX9Vlkls=&Vo5v(YoTto6OfS zx!Rh!2lp*%?hw!U^>&0|;%BctYHjbj1p9S@zq|2#!HqRsY2WbPsexZIP;v12b zKw6!D3n7<9!JMi-TmXAEf3i2@g}n~v4uu-aJyYSk@=Wy%*eBDUIp?)|6eumJLJ-Vw zzR0>wa(m()<^LVYA4DX(gz%1p959{Ud@m{VeLRvBFC^X{=lt;f1ea_Q-!{T>=D!{3 z#YiduT^gT86?N0ddLM8a|KH9%BDPp!35C8zo~*PH7lErtWIz6l{U&EUOac20{Po4Q zXyO?{SHqXWlYIu#xjIbtTM&)}oB}l7i0a2khvXUEA&FgKiy?bX{9D-4@#yL*Ryc`J zV0s=g%XPk3tOb7;4Of%zm^=THQFxZTCcNKA(c*cZv7$G*kBt!~!Bq*L5W?OSagFTBe$e5d5P5_AQDS@er^>&;TVFk%`+Z_Z6H^Dr3dQe=2FInpbCB$n0Jc~B zL4s;2-UY#6iA5DDMfE`4C3`N#Qhjk_!8+fD`P`UqnCmw!j&Rsf|v4} zz;9PDS?~YDXJ?H`&y=EF3Y|dhCDt+oJxrht@SW}-{$D~?pBVkIM!ZG5n|QJV_GZNY z%Aag*OsS*&Z8_;$0H(DjGE>jIe>n*+nLw5F?5!3tvh}i_)d_Q$p+u3MFey&=DpvT=AB07s@>v&rH5!vwfJMz$&9@W|aUq#r;X7%dOc6 z?s6|-)kgRh-w6tIu^vafB#I5>KOMG@CMNU0rpTtuV-qWzl(3pHyqp~TqQ%$ z4g4)Vs=_%xi#a!*brphS{gE_J4~v~4d9DJd^1UK{83a^#yNn08SD>wKE2fbn@2^Oc+`RvNJOG<) zk}lqY?H z=+990J(5LyEsd}UF@qFd9t0Dk;Q6|Lh{%WKos0AiA`ggFliM24KXTg#Urv$uuq5(x zuj;pt=k*UoGmsvRaFP8YBkYK*qS$hPi;IRj>gDKxb&c5jXRH>AnlCH5_oXbszp zkayg_6;C$O$}gvy++^2yw_0fIhlpp-k8$jY=iQBvIdR@9X|?y_U8;YVuurUE#1dH# z=O4so5q%#qO^IFrzf5ZjqTm6z9oDt5-4woC>=rq1S_RYBe|t;38Np0|mx<}2i_2mf zsmOco$rk4+{E0%h8siF`o{scvv7>akP|m}~t?20%xW1ljvaYbn&JJnC@Z2kY zLd+yL>dk=v$T})o>z;Y#`qNv-Drz{{K~g~Rm3d}xiJ`BFUM`P*%V6FFGnfDBAY12t zzC(Cv9(-z!wC!H_?T#O_LC-kNaAD7ZNuFCa3>0085bFCgCce zh4x={^NcAx>R!qe<^aFo-bKNck{`-Ecb#qE+nA^L`EuvOK4JgMdL&P*yz@VDl1)=H z`+MYNbT*W#Z(=OJD3Fiu9)M^0GdA8~82oesx4}G+UR3AT6iN1^{VV$cVt2w#!FQg0 z4NS77ayGbU?1l6t=P|mUWGrnY|7%aS2Eh!)N9q24_jSbltIKtW9y96(5Z@twr&R`a zySxLDn?vBklO|9HcQd@7>-cu-TDi%N6zhiL`t;Wv*1G&HxLlxVbn=eiUHr)^D%wJ! zC;2wRo$VcHfoQ(-P6d(;AYy}QbhUTn+aElOaP%Z>LcAw$%1L$vu8y$r{u{FnS6Nph zzXZ6Rr18d;>{Iu_5(XhH5zjsO&xh}Vq_dp+Vd_MY6iZgqsJlnU>HfXq=W6Cp&15Y1 z^Uv)V1%H>&SQ2F{B3o(J|0CPDhIQe?^tB(_^To+E4M5E zvvRJp-xy;a6ffSBFcqVC#ZXh!G#978<~%O~$-e;bcg3#|{E>gCPI|c~>twtS@P8Hf z#)|J&tRqZ0BOM~P+CGK9mUDU2sR{d+iHyOqJRaSn!8Zn9-}FZg^ac(%Xf1V; z^^$(Nly~%&>}0eb(pcI(ztZi}Ysa_CIb+@Rp0U$IQhidcRsIZ8lT9*%v-z^$Q0V6X zT_n)Ts+AC|1;F%(J?}ojeThO7y(*&=S&HoA7*JFFpXq!h|38tFe#@GEf3VgAC}4jB zM|NtgSgZa$t{dE=+~6K7Mo-Q+rP7M(%ku57y<*4Sd}DuEQEg}brAue#Z(N}Ciev68 zP^;dGOE(o*(r?A1^$WJIv*OT@g4?RB_~WsHS2P<}eow&_<@X$RfB6+Nix(R8(aigH c6*_6fHMz!UHb)e`s~VDgXcg delta 105826 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 P(D1&6(GBM&bkz7S 1);\n" "X-Generator: Poedit 3.1\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Direitos autorais das partes" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Direitos autorais" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -30,26 +30,26 @@ msgstr "" "Os contratos de licença de todos os seguintes programas (bibliotecas) são " "parte do contrato de licença de aplicativo" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "Sobre %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Versão" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "está licenciado sobre o(a)" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "Licensa GNU Affero General Public, versão 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -57,7 +57,7 @@ msgstr "" "PrusaSlicer é baseado no Slic3r criado por Alessandro Ranellucci e a " "comunidade RepRap." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -67,7 +67,7 @@ msgstr "" "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik e " "outros." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Copiar Informações da Versão" @@ -209,7 +209,7 @@ msgstr "Agendando upload para ` %1%` . Veja a aba -> Print Host Upload Queue" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Tamanho" @@ -269,19 +269,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -316,7 +315,7 @@ msgid "Load shape from STL..." msgstr "Carregar forma do STL..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Config" @@ -329,7 +328,7 @@ msgid "Load..." msgstr "Carregar..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Remover" @@ -553,20 +552,20 @@ msgstr "Devo mudar para padrão de preenchimento retilíneo?" msgid "Infill" msgstr "Preenchimento" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "A penetração da cabeça não deve ser maior do que a largura da cabeça." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Penetração inválida da cabeça" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "" "O diâmetro da cabeça de pino deve ser menor do que o diâmetro do pilar." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Diâmetro inválido da cabeça de pino" @@ -675,7 +674,7 @@ msgid "Standard" msgstr "Todos padrão" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Todos" @@ -949,7 +948,7 @@ msgstr "Escolha outro fornecedor suportado por %s" msgid "Firmware Type" msgstr "Tipo de Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Firmware" @@ -1266,7 +1265,7 @@ msgstr "Executar" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Desfazer" @@ -1932,7 +1931,7 @@ msgstr "Confirmação" msgid "Cancelling..." msgstr "Cancelando..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Galeria de Formas" @@ -1948,7 +1947,7 @@ msgstr "Adicionar a mesa" msgid "Add selected shape(s) to the bed" msgstr "Adicione a(s) forma(s) selecionada(s) à mesa" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Adicionar" @@ -1958,7 +1957,7 @@ msgstr "Adicionar uma ou mais formas personalizadas" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Deletar" @@ -2143,8 +2142,8 @@ msgstr "Movimento" msgid "Extrusion" msgstr "Extrusão" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Retração" @@ -2199,7 +2198,7 @@ msgstr "Config. de impressão" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filamento" @@ -2423,7 +2422,7 @@ msgid "Add..." msgstr "Adicionar..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Deletar todos" @@ -2470,7 +2469,7 @@ msgid "Next Undo action: %1%" msgstr "Próxima ação de desfazer: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Refazer" @@ -2512,7 +2511,7 @@ msgid "Selection-Remove from rectangle" msgstr "Seleção-remover do retângulo" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Cortar" @@ -2772,7 +2771,7 @@ msgid "Quality" msgstr "Qualidade" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Distância de fechamento" @@ -2878,7 +2877,7 @@ msgstr "Mover" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Rotacionar" @@ -2895,7 +2894,7 @@ msgstr "Aplicar" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Escala" @@ -2950,7 +2949,7 @@ msgstr "" "selecionada" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Erro" @@ -3034,7 +3033,7 @@ msgid "Minimal points distance" msgstr "Distância mínima entre pontos" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Densidade dos pontos de suporte" @@ -3888,7 +3887,7 @@ msgid "Speed" msgstr "Velocidade" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3911,52 +3910,51 @@ msgstr "Saia e aba" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Avançado" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Suportes" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Bloco" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Deixar oco" @@ -4098,7 +4096,7 @@ msgid "Revert conversion from meters" msgstr "Reverter conversão de metros" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Mesclar" @@ -4159,7 +4157,7 @@ msgid "Split the selected object into individual parts" msgstr "Dividir o objeto selecionado em partes individuais" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Dividir" @@ -4816,11 +4814,11 @@ msgstr "Altura" msgid "Width" msgstr "Espessura" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Velocidade do ventoinha" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Temperatura" @@ -5117,7 +5115,7 @@ msgstr "" msgid "Attention!" msgstr "Atenção!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Atalhos do teclado" @@ -5154,7 +5152,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Carregar config. de um. ini/AMF/3mf/gcode e mesclar" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Exportar G-code" @@ -5511,13 +5509,13 @@ msgstr "Definir o número da extrusora para os itens selecionados" msgid "Objects List" msgstr "Lista de objetos" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Abrir um arquivo G-code" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Recarregar a bandeja do disco" @@ -5554,7 +5552,7 @@ msgid "Show/Hide G-code window" msgstr "Mostrar/ocultar janela de G-code" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Visualização" @@ -5638,7 +5636,7 @@ msgid "Keyboard shortcuts" msgstr "Atalhos do teclado" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Abrir uma nova instância do PrusaSlicer" @@ -5646,11 +5644,11 @@ msgstr "Abrir uma nova instância do PrusaSlicer" msgid "G-code preview" msgstr "Previsualização do G-code" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Abrir visualizador G-code" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Versão mínima do PrusaSlicer" @@ -5677,13 +5675,13 @@ msgid "Print Settings" msgstr "Config. de impressão" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Config. de material" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Config. de filamento" @@ -5766,7 +5764,7 @@ msgstr "Mostrar diálogo sobre" msgid "Show Tip of the Day" msgstr "Mostrar dica do dia" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -5774,94 +5772,94 @@ msgstr "" "Abre a notificação da Dica do dia no canto inferior direito ou mostra outra " "dica se já estiver aberta." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar lista dos atalhos no teclado" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Isométrico" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Vista isométrica" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Topo" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Vista do topo" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Base" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Vista da base" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Frente" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Vista da frente" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Traseira" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Vista traseira" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Esquerda" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Vista esquerda" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Direita" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Vista direita" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Começar um novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Abrir projeto" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Abrir novo projeto" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Projetos recentes" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5869,510 +5867,510 @@ msgstr "" "O projeto selecionado não está mais disponível.\n" "Você quer removê-lo da lista de projetos recentes?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Salvar projeto" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Salvar arquivo do projeto atual" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Salvar projeto &como" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Salvar arquivo atual como" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Importar STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Carregar um modelo" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Importar STL (Unidades Imperiais)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Carregar um modelo salvo com unidades imperiais" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Importar Arquivo SL1 / SL1S" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Carregar um arquivo SL1 / Sl1S" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Importar &configuração" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Carregar config. de arquivo exportado" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Importar Configuração de &Projeto" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Carregar config. de arquivo de projeto" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Importar coleção &de config" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Carregar predefinições de um pacote" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Importar" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Exportar &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Exporte a bandeja atual como o G-code" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "E&nviar G-code" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Enviar para imprimir a bandeja atual como G-code" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Exporte o G-code para o cartão SD / Flash Drive" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Exportar bandeja atual como G-code para cartão SD / unidade Flash" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Exportar bandeja como &STL" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Exporte a bandeja atual como STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Exportar Bandeja como STL & Incluindo Suportes" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Exporte a bandeja atual como o STL que inclui suportes" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Exportar &Percursos como OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Exportar percursos como OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Exportar &config" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Exporte a config. atual para o arquivo" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Exportar coleção &de config" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Exporte todas as predefinições para o arquivo" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Exportar coleção &de config com Impressoras Físicas" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" "Exporte todas as predefinições, incluindo impressoras físicas, para o arquivo" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Exportar" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Ejetar cartão SD / Flash Drive" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "Ejetar cartão SD / unidade Flash após G-code for exportado para ele." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Fatiamento rápido" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Fatiar um arquivo em um G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Salvamento rápido e salvar como" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Fatiar um arquivo em um G-code, salvar como" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Repetir Último Fatiamento Rápido" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Repetir último fatiamento rápido" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Re)Fatiar ago&ra" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Começar novo processo de fatiamento" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&Reparar arquivo STL" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Reparar automaticamente um arquivo STL" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Visualizar &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&Sair" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Sair %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "&Selecionar tudo" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Selecionar todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "D&esmarcar todos" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Deselecionar todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "&Excluir selecionados" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Excluir a seleção atual" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Deletar &Tudo" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Excluir todos os objetos" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Desfazer" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Refazer" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Copiar" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Copiar seleção para a área de transferência" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&Colar" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Colar área de transferência" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Re&carregar do disco" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Pesquisa&r" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Procurar em configurações" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Bandeja" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Mostrar a bandeja" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "C&onfig. de impressão" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Mostrar as config. de impressão" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&Config. de filamentos" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Mostrar as config. de filamento" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "A&ba de config. da impressora" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Mostrar as config. da impressora" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Mostrar a vista de edição 3D" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Pre&visualização" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Mostrar a pré-visualização do fatiamento 3D" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Abra a caixa de diálogo para modificar a galeria de formas" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Imprimir &Fila de upload do Host" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Exibir a janela fila de upload do host de impressão" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Abrir Nova Instância" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Comparar predefinições" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Comparar predefinições" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Mostrar &rótulos" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Mostrar rótulos de objeto/instância em cena 3D" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "&Recolher barra lateral" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Recolher barra lateral" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "&Tela cheia" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Tela cheia" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Arquivo" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Editar" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Janela" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Vista" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Ajuda" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Abrir G-code" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Abrir &PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "E&xportar" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "E&nviar para impressora" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "A&ba de config. de material" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Escolha um arquivo para fatiar (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Sem arquivo fatiado anteriormente." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Arquivo fatiado anteriormente (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") não encontrado." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Arquivo não encontrado" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Salve o arquivo %s como:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Salvar arquivo compactado(zip) como:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Fatiamento" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Processando %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% foi fatiado com sucesso." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Fatiamento completo!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Selecione o arquivo STL para corrigir:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "Salvar arquivo OBJ (menos propenso a erros de coordenada que STL) como:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Seu arquivo foi corrigido." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Corrigir" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Salvar config. como:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Carregando um arquivo de configuração" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Selecionar config. para carregar:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Exportando pacote de configuração" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -6380,15 +6378,15 @@ msgstr "" "Algumas predefinições forma modificadas e as alterações não salvas não serão " "exportadas para pacote de configuração." -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Salvar pacote de predefinições como:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Carregando um pacote de configuração" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d predefinições importadas com êxito." @@ -6616,8 +6614,8 @@ msgstr "Instâncias" msgid "Instance %d" msgstr "Instância %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Camadas" @@ -6694,7 +6692,7 @@ msgstr "Nome descritivo para a impressora" msgid "Add preset for this printer device" msgstr "Adicionar predefinição para esta impressora" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Upload do host de impressão" @@ -6853,7 +6851,7 @@ msgid "Select what kind of support do you need" msgstr "Selecione o tipo de suporte que você precisa" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Suportes somente na mesa de impressão" @@ -6953,7 +6951,7 @@ msgid "(including spool)" msgstr "(incluindo carretel)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Custo" @@ -7462,10 +7460,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Colar da área de transferência" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Geral" @@ -7978,7 +7976,7 @@ msgid "Add/Remove presets" msgstr "Adicionar/Remover predefinições" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Adicionar impressora física" @@ -7990,7 +7988,7 @@ msgstr "Editar a predefinição" msgid "Change extruder color" msgstr "Alterar a cor da extrusora" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Editar impressora física" @@ -8306,11 +8304,11 @@ msgstr "NÃO USAR RAMMING" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8425,12 +8423,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Basta mudar para a predefinição \"%1%\"" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Silencioso" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -8703,7 +8701,7 @@ msgstr "nome customizado da config" msgid "symbolic profile name" msgstr "nome customizado da config" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Camadas e perímetros" @@ -8791,7 +8789,7 @@ msgstr "Cobrir" msgid "Flow" msgstr "Fluxo" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Outro" @@ -8799,53 +8797,53 @@ msgstr "Outro" msgid "Arachne perimeter generator" msgstr "Gerador de perímetro Arachne" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Opções de saída" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Impressão sequencial" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Folga da extrusora" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Arquivo de saída" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Scripts de pós-processamento" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notas" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Dependências" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Dependências de perfil" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" "Os scripts de pós-processamento devem modificar o arquivo de G-code no local." -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8858,84 +8856,84 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Palavras-chave reservadas encontradas em" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Sobrescrever config. de filamento" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Bico de impressão" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Mesa" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Resfriamento" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Habilitar" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Config. da ventoinha" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Limiares de resfriamento" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Propriedades de filamento" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Substituição da velocidade de impressão" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Parâmetros da torre de limpeza" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Parâmetros de mudança de ferramenta com impressoras de multi material com " "apenas uma extrusora" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Config. de Ramming" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "G-code customizado" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "G-code de início" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "G-code de finalização" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Dicas de fluxo volumétrico não disponíveis" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8957,20 +8955,20 @@ msgstr "" "\"engrenagem\" na guia Configurações da impressora. Os perfis de impressora " "física estão sendo armazenados no diretório PrusaSlicer /physical_printer." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Tamanho e coordenadas" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Capacidades" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Número de extrusoras da impressora." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8982,64 +8980,64 @@ msgstr "" "Você quer mudar o diâmetro para todas as extrusoras ao primeiro valor do " "diâmetro da ponteira da extrusora?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Diâmetro do bico" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "Antes da mudança de camada G-code" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "Após a mudança da camada do G-code" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-code de troca de ferramenta" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-code entre objetos (para impressão sequencial)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-code de troca de cor" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "Pausa impressão ou G-code personalizado" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Modelo de G-code customizado" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Exibição" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Inclinar" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Tempo de inclinação" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Correções" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Exposição" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -9048,39 +9046,39 @@ msgstr "Exposição" msgid "Machine limits" msgstr "Limites da máquina" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Valores nesta coluna são para o modo normal" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Valores nesta coluna são para o modo furtivo" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Velocidade máxima de alimentação" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Acelerações máximas" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Limites de empurrão" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Velocidades alimentação mínimos" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Config. de extrusora multi material" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Parâmetros para extrusora única multimaterial" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -9088,19 +9086,19 @@ msgstr "" "Esta é uma única impressora multimaterial extrusora, diâmetros de todas as " "extrusoras será definido para o novo valor. Você quer prosseguir?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Limites de altura da camada" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Posição (para impressoras multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Apenas elevar Z" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -9108,11 +9106,11 @@ msgstr "" "Retração quando a ferramenta está desativada (config. avançadas para " "instalações multiextrusoras)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Restabelecer cor do filamento" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -9122,31 +9120,31 @@ msgstr "" "\n" "Devo desativá-lo, a fim de permitir a retração de firmware?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Retração do firmware" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Nova predefinição de impressora selecionada" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Separado" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "remover" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "excluir" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "É uma última predefinição para esta impressora física." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -9155,7 +9153,7 @@ msgstr "" "Tem certeza de que deseja excluir predefinição \"%1%\" da impressora física " "\"%2%\"?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -9163,14 +9161,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -9180,7 +9178,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -9188,57 +9186,57 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Tem certeza de que deseja %1% da predefinição selecionada?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Predefinição" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Definir" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Achar" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Substituir por" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Expressão regular" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Não diferencia maiúsculas de minúsculas" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Palavra inteira" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Corresponder a uma única linha" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Tem certeza de que deseja excluir todas as substituições?" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "Os limites da máquina serão emitidos para o G-code e usados ​​o para estimar o " "tempo de impressão." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9249,7 +9247,7 @@ msgstr "" "preciso, pois a impressora pode aplicar um conjunto diferente de limites da " "máquina." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9257,12 +9255,12 @@ msgstr "" "Os limites da máquina não são definidos, portanto, a estimativa do tempo de " "impressão pode não ser precisa." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "CADEADO FECHADO" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9270,12 +9268,12 @@ msgstr "" "indica que as config. são as mesmas que os valores do sistema (ou padrão) " "para o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "CADEADO ABERTO" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9287,12 +9285,12 @@ msgstr "" "Clique no ícone DESBLOQUEAR para redefinir todas as config. do grupo de " "opções atual para os valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "PONTO BRANCO" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9301,12 +9299,12 @@ msgstr "" "padrão),\n" "para o botão direito: indica que as config. não foram modificadas." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "REDEFINIR" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9318,7 +9316,7 @@ msgstr "" "Clique no ícone REDEFINIR para redefinir todas as config. do grupo de opções " "atual para a última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9326,7 +9324,7 @@ msgstr "" "O ícone CADEADO FECHADO indica que as config. são as mesmas que os valores " "do sistema (ou padrão) para o grupo de opções atual" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9338,13 +9336,13 @@ msgstr "" "Clique para redefinir todas as config. para o grupo de opções atual para os " "valores do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "O ícone PONTO BRANCO indica uma predefinição que não é do sistema (ou não " "predefinida)." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9352,7 +9350,7 @@ msgstr "" "O ícone PONTO BRANCO indica que as config. são as mesmas da última " "predefinição salva para o grupo de opções atual." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9364,7 +9362,7 @@ msgstr "" "Clique para redefinir todas as config. do grupo de opções atual para a " "última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -9372,7 +9370,7 @@ msgstr "" "O ícone CADEADO FECHADO indica que o valor é o mesmo que o valor do sistema " "(ou padrão)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9382,7 +9380,7 @@ msgstr "" "valor do sistema (ou padrão).\n" "Clique para redefinir o valor atual para o valor do sistema (ou padrão)." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9390,7 +9388,7 @@ msgstr "" "O ícone PONTO BRANCO indica que o valor é o mesmo da última predefinição " "guardada." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9400,31 +9398,31 @@ msgstr "" "predefinição salva.\n" "Clique para redefinir o valor atual para a última predefinição salva." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Perfil de impressão de materiais" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Cabeça de suporte" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Pilar de suporte" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Conexão das varas de suporte e junções" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Geração Automática" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9433,11 +9431,11 @@ msgstr "" "\"%1%\" está desabilitado porque \"%2%\" está ativado na categoria \"%3%\".\n" "Para habilitar \"%1%\", desligue \"%2%\"" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Elevação do objeto" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Pad em torno do objeto" @@ -9530,7 +9528,7 @@ msgstr "" "para ser questionado sobre alterações não salvas novamente." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9600,39 +9598,39 @@ msgstr "" "possui as seguintes alterações não salvas:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Contagem de extrusoras" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Selecione predefinições para comparar" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Mostrar todas as predefinições (incluindo incompatíveis)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Valor predefinido esquerdo" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Valor predefinido direito" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Uma das predefinições não foi encontrada" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "As predefinições comparadas têm tecnologia de impressora diferente" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "As predefinições são as mesmas" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9641,11 +9639,11 @@ msgstr "" "Clique neste botão para selecionar a mesma predefinição para a predefinição " "direita e esquerda." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Categoria indefinida" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Grupo indefinido" @@ -10325,7 +10323,7 @@ msgstr "" "Não é possível calcular a largura de extrusão para %1%: Variável \"%2%\" não " "acessível." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -10334,7 +10332,7 @@ msgstr "" "O arquivo 3mf selecionado foi salvo com uma versão mais recente de %1% e não " "é compatível." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -10342,7 +10340,7 @@ msgstr "" "O 3MF selecionado contém FDM objetos pintados de suporte usando uma versão " "mais recente do PrusaSlicer e não é compatível." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -10350,7 +10348,7 @@ msgstr "" "O 3MF selecionado contém um objeto pintado com costura usando uma versão " "mais recente do PrusaSlicer e não é compatível." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -11160,8 +11158,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -11177,9 +11175,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11400,8 +11397,8 @@ msgstr "" msgid "Default print profile" msgstr "Perfil de impressão padrão" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11553,8 +11550,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm ou %" @@ -11639,7 +11637,7 @@ msgid "Extruder Color" msgstr "Cor da extrusora" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Isso é usado apenas na interface PrusaSlicer como uma ajuda visual." @@ -11738,7 +11736,7 @@ msgstr "" msgid "approximate seconds" msgstr "segundos aproximados" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Cor" @@ -11925,8 +11923,8 @@ msgstr "" "paquímetro e fazer várias medições ao longo do filamento, em seguida, " "calcular a média." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Densidade" @@ -11994,7 +11992,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Desconhecido)" @@ -13814,7 +13812,7 @@ msgstr "" "Use essa config. para girar o padrão de material de suporte no plano " "horizontal." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14465,39 +14463,35 @@ msgstr "Gerador de perímetro" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" -"Gerador de perímetro clássico produz perímetros com largura de extrusão " -"constante e para áreas muito finas é usado preenchimento de lacunas. O motor " -"Arachne produz perímetros com largura de extrusão variável." - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Comprimento de transição do perímetro" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" -"Ao fazer a transição entre diferentes números de perímetros à medida que a " -"peça se torna mais fina, uma certa quantidade de espaço é alocado para " -"dividir ou unir os segmentos do perímetro." -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Margem do filtro de transição de perímetro" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14517,11 +14511,11 @@ msgstr "" "superextrusão. Se expresso em porcentagem (por exemplo 25%), será calculado " "com base no diâmetro do bocal." -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Ângulo limite de transição de perímetro" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14535,11 +14529,11 @@ msgstr "" "Reduzir essa configuração reduz o número e o comprimento desses perímetros " "centrais, mas pode deixar lacunas ou overextrude." -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Contagem de distribuição de perímetro" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -14549,69 +14543,24 @@ msgstr "" "variação precisa ser espalhada. Valores mais baixos significa que os " "perímetros externos não mudam de largura." -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "Limite de perímetro intermediário dividido" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"A menor largura de extrusão, como fator da largura normal de extrusão, acima " -"da qual o perímetro médio (se há um) será dividido em dois. Reduza esta " -"configuração para usar perímetros mais finos. Aumente para usar menos " -"perímetros mais amplos. Observe que isso se aplica -como se- a forma inteira " -"devesse ser preenchida com perímetro, então o meio aqui se refere ao meio do " -"objeto entre duas bordas externas da forma, mesmo que hajana verdade é " -"preenchimento ou outros tipos de extrusão na impressão em vez do perímetro." - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "Adicionar limite de perímetro médio" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"A menor largura de extrusão, como fator da largura normal de extrusão, acima " -"da qual um perímetro médio (se não havia um já) será adicionado. Reduza esta " -"configuração para usar perímetros mais finos. Aumente para usar menos " -"perímetros mais amplos. Observe que isso se aplica -como se- a forma inteira " -"devesse ser preenchida com perímetro, então o meio aqui se refere ao meio do " -"objeto entre duas bordas externas da forma, mesmo que hajana verdade é " -"preenchimento ou outros tipos de extrusão na impressão em vez do perímetro." - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "Tamanho mínimo do recurso" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -"Espessura mínima de recursos finos. Recursos de modelo mais finos que esse " -"valor não serão impressos, enquanto os recursos mais espessos que o tamanho " -"mínimo do recurso serão ampliados para a largura mínima do perímetro." -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Largura mínima do perímetro" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14625,63 +14574,63 @@ msgstr "" "próprio recurso. Se expresso em porcentagem (por exemplo, 85%), será " "calculado com base no diâmetro do bocal." -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Largura do display" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Altura do display" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Número de pixels em" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Número de pixels em X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Número de pixels em Y" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Exibir espelhamento horizontal" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Espelhar horizontalmente" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Habilitar espelhamento horizontal de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Exibir espelhamento vertical" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Espelharvertical" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Habilitar espelhamento vertical de imagens de saída" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Orientação do display" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14691,55 +14640,55 @@ msgstr "" "retrato inverterá o significado dos parâmetros de largura e altura da tela e " "as imagens de saída serão giradas por 90 graus." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Paisagem" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Retrato" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Rápido" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Tempo da inclinação rápida" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Lento" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Tempo da inclinação lenta" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Alta viscosidade" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Inclinação para resina de alta viscosidade" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Tempo da inclinação super lenta" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Preenchimento de área" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14750,40 +14699,40 @@ msgstr "" "em seguida, uma inclinação lenta será usada, caso contrário-uma inclinação " "rápida" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Correção de dimensionamento da impressora" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Correção de dimensionamento da impressora no eixo X" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Correção do eixo X da escala da impressora" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Correção de dimensionamento da impressora no eixo Y" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Correção do eixo Y da escala da impressora" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Correção de dimensionamento da impressora no eixo Z" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Correção do eixo Z de dimensionamento da impressora" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Correção absoluta da impressora" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14791,22 +14740,22 @@ msgstr "" "Irá inflar ou esvaziar os polígonos 2D cortados de acordo com o sinal da " "correção." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Largura mínima do pé de elefante" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Largura mínima de características para manter ao fazer compensação do pé de " "elefante." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Correção de gama de impressora" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14816,43 +14765,43 @@ msgstr "" "valor gama de zero significa limiarização com o limiar no meio. Este " "comportamento elimina suavização sem perder buracos em polígonos." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Tipo de Material de SLA" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Altura da camada inicial" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Volume do pote" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "ml" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Peso do pote" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "kg" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "g/ml" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "dinheiro/pote" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Camadas desbotadas" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14860,104 +14809,104 @@ msgstr "" "Número de camadas necessárias para o tempo de exposição desvanecer-se do " "tempo de exposição inicial ao tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Tempo mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Tempo máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Tempo de exposição" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Tempo inicial máximo de exposição" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Tempo inicial mínimo de exposição" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Correção para expansão" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Correção para expansão no eixo X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Correção para expansão no eixo Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Correção para expansão no eixo Z" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Notas de material de impressão de SLA" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Você pode colocar suas anotações sobre o material de impressão de SLA aqui." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Perfil de material de SLA padrão" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Gerar suportes" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Gere suportes para os modelos" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Diâmetro dianteiro principal da sustentação" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Diâmetro do lado apontando da cabeça" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Penetração inválida da cabeça" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Quanto a cabeça de alfinete tem de penetrar na superfície do modelo" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Largura da cabeça de suporte" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Largura do centro da esfera traseira ao centro da esfera dianteira" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Diâmetro do pilar do suporte" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Diâmetro em mm dos pilares de suporte" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Diâmetro do pilar do suporte" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14966,11 +14915,11 @@ msgstr "" "normal que são usados ​​em áreas problemáticas onde um pilar normal não pode " "caber." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Distância máxima de conexão entre pilares" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14978,11 +14927,11 @@ msgstr "" "Número máximo de pontes que podem ser colocadas em um pilar. As pontes " "seguram pinças de ponto de apoio e se conectam a pilares como pequenos ramos." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Modalidade da conexão da coluna da sustentação" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14992,23 +14941,23 @@ msgstr "" "(zig-zag dobro) ou dinâmico que comutará automaticamente entre os primeiros " "dois dependendo da distância dos dois pilares." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Cruz" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinâmico" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Fator de alargamento da coluna" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -15016,27 +14965,27 @@ msgstr "" "Mesclar pontes ou pilares em outros pilares pode aumentar o raio. Zero " "significa que não há aumento, um significa aumento total." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Diâmetro base do suporte" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Diâmetro em mm da base do pilar" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Altura base do suporte" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "A altura do cone da base da coluna" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Distância da segurança da base da sustentação" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -15046,27 +14995,27 @@ msgstr "" "elevação zero, onde uma lacuna de acordo com este parâmetro é inserida entre " "o modelo e o pad." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Ângulo crítico" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "O ângulo padrão para conectar suportes e junções." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Comprimento máximo da ponte" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "O comprimento máximo de uma ponte" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Distância máxima de conexão entre pilares" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -15074,7 +15023,7 @@ msgstr "" "A distância máxima de dois pilares para ficar ligado uns com os outros. Um " "valor zero irá proibir o pilar em cascata." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -15082,39 +15031,39 @@ msgstr "" "Quanto os suportes devem levantar o objecto suportado. Se \"pad em torno do " "objeto\" estiver habilitado, esse valor será ignorado." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Esta é uma medida relativa de densidade de pontos de suporte." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Distância mínima dos pontos de suporte" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Nenhum ponto de apoio será colocado mais perto do que este limiar." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Use pad" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Adicionar um pad por baixo do modelo suportado" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Espessura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "A espessura da pad e suas paredes de cavidade opcionais." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Altura da parede do pad" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -15126,19 +15075,19 @@ msgstr "" "produzir um efeito de sucção extrema dentro da cavidade, o que torna a " "descascar a impressão fora da folha de IVA difícil." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Tamanho da borda do bloco" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Até onde o bloco deve se estender em torno da geometria contida" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Distância máxima da fusão" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -15148,11 +15097,11 @@ msgstr "" "grande. Este parâmetro define até que ponto o centro de duas pads menores " "deve ser. Se eles estão mais perto, eles vão se fundir em uma pad." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Inclinação da parede da pad" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -15160,23 +15109,23 @@ msgstr "" "A inclinação da parede da pad em relação ao plano da mesa. 90 graus " "significa paredes retas." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Criar pad ao redor do objeto e ignorar a elevação de suporte" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Pad em torno do objeto em todo lugar" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Forçar Pad em torno do objeto em todo lugar" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Vão entre o pad e o objeto" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -15184,55 +15133,55 @@ msgstr "" "A lacuna entre a parte inferior do objeto e o pad gerado no modo de elevação " "zero." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Inserir pad entre o objeto" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" "Distância entre duas varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Largura do conector do objeto pad" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "Largura das varas do conector que conectam o objeto e a pad gerada." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Pad objeto conector de penetração" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "Quanto deve os conectores minúsculos penetrar no corpo do modelo." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Ativar o modo oco" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Deixar o modelo oco para ter um interior vazio" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Espessura da parede" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Espessura mínima da parede de um modelo oco." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Precisão" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -15240,7 +15189,7 @@ msgstr "" "Desempenho versus precisão do cálculo. Valores mais baixos podem produzir " "artefatos indesejados." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -15254,11 +15203,11 @@ msgstr "" "distância de fechamento torna o interior mais arredondado. Ao zero, o " "interior será o mais parecido com o exterior." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Velocidade de impressão" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -15268,63 +15217,63 @@ msgstr "" "maior viscosidade ou com algumas peças ocas. Ele diminui o movimento de " "inclinação e adiciona um atraso antes da exposição." -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Exportar OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Exportar modelo(s) como OBJ." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Exportar SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Fatiar o modelo e exportar as camadas de impressão SLA como PNG." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Exportar 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Exportar modelo(s) como 3MF." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Exportar AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Exportar modelo(s) como AMF." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Exportar STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Exportar modelo(s) como STL." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Fatiar o modelo e exportar o percurso da ferramenta como G-code." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Tipo de G-code" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Visualize um G-code já fatiado e salvo" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Fatiar" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -15332,71 +15281,71 @@ msgstr "" "Divida o modelo como FFF ou SLA com base no valor de config. " "printer_technology." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Ajuda" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Mostrar esta ajuda." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Ajuda (opções FDM)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Mostre a lista completa de opções de config. do Print/G-code." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Ajuda (opções SLA)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Mostrar a lista completa de opções de config. de impressão de SLA." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Informações do modelo de saída" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Escreva informações sobre o modelo para o console." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Salvar arquivo de config" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Salvar config. para o arquivo específico." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Alinhar XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Alinhar modelo de acordo com o ponto inserido." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Cortar modelo ao Z fornecido." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Centralizar" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Centralizar a impressão de acordo com o centro informado." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Não organizar" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -15404,11 +15353,11 @@ msgstr "" "Não reorganize os modelos fornecidos antes de Mesclar e manter suas " "coordenadas XY originais." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Garanta na mesa" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -15416,23 +15365,23 @@ msgstr "" "Levante o objeto acima da mesa quando estiver parcialmente abaixo. " "Habilitado por padrão, use --no-ensure-on-bed para desabilitar." -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Duplicar" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Multiplicar cópias por esse fator." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Duplicar por grade" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Multiplique cópias criando uma grade." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -15440,7 +15389,7 @@ msgstr "" "Organize os modelos fornecidos em uma placa e junte-os em um único modelo, a " "fim de executar ações uma só vez." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -15449,31 +15398,31 @@ msgstr "" "adicionada sempre que precisamos cortar o modelo para executar a ação " "solicitada)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Zem graus." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Rotacionar no X" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Ângulo de rotação ao redor do eixo X em graus." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Rotacionar no Y" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Ângulo de rotação ao redor do eixo Y em graus." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Escalando fator ou porcentagem." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15481,23 +15430,23 @@ msgstr "" "Detecte peças não conectadas em um determinado modelo (s) e divida-as em " "objetos separados." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Dimensionar para caber" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Escalar para se adequar ao volume informado." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ignorar arquivos de config. não existentes" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Não falhe se um arquivo fornecido para--carregamento não existe." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -15505,7 +15454,7 @@ msgstr "" "Regra de compatibilidade de encaminhamento ao carregar configurações de " "arquivos de configuração e arquivos de projeto (3MF, AMF)." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15518,11 +15467,11 @@ msgstr "" "decidir sair ou substitua um valor desconhecido por um padrão de forma " "silenciosa ou detalhada." -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Resgate em valores de configuração desconhecidos" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -15530,7 +15479,7 @@ msgstr "" "Habilite a leitura de valores de configuração desconhecidos substituindo-os " "detalhadamente por padrões." -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -15538,11 +15487,11 @@ msgstr "" "Habilite a leitura de valores de configuração desconhecidos substituindo-os " "silenciosamente por padrões." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Carregar arquivo de config" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15550,11 +15499,11 @@ msgstr "" "Carregar a config. do arquivo especificado. Ele pode ser usado mais de uma " "vez para carregar opções de vários arquivos." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Arquivo de saída" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15562,11 +15511,11 @@ msgstr "" "O arquivo onde a saída será gravada (se não for especificado, ele será " "baseado no arquivo de entrada)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Modo instancia única" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15577,11 +15526,11 @@ msgstr "" "existente é ativada. Substitui o valor de configuração \"single_instance\" " "das preferências do aplicativo." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Diretório de dados" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15590,11 +15539,11 @@ msgstr "" "Carregar e armazenar as config. no diretório especificado. Isso é útil para " "manter perfis diferentes ou incluir config. de um armazenamento de rede." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Nível de registro" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15605,11 +15554,11 @@ msgstr "" "Por exemplo. loglevel=2 logs de mensagens fatais, de nível de erro e de " "aviso." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Renderizar com um software renderizador" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/ru/PrusaSlicer.mo b/resources/localization/ru/PrusaSlicer.mo index e14e0d29546c3fc35e67040ed70945a7cd1bccbe..6615b18cc5fdfa25b0856cdc2ad13fb57127a352 100644 GIT binary patch delta 102643 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 axZDxB#Vd`?eg2FRJGbTTu2b^EtN$NYMs3po delta 106502 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 q<>hf^d_(=;Keh81;sI>ilFc\n" "Language-Team: \n" @@ -19,16 +19,16 @@ msgstr "" "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.0.1\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "С использованием разработок" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Copyright" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -36,26 +36,26 @@ msgstr "" "Лицензионные соглашения всех следующих программ (библиотек) являются частью " "лицензионного соглашения" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "О %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Версия" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "лицензирован в соответствии с" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, version 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -63,7 +63,7 @@ msgstr "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -74,7 +74,7 @@ msgstr "" "numerous others. Если вы нашли ошибки в русском переводе пишите на " "andylg@yandex.ru." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Скопировать информацию о версии" @@ -221,7 +221,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Размер" @@ -281,19 +281,18 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "мм" @@ -327,7 +326,7 @@ msgid "Load shape from STL..." msgstr "Загрузка формы стола из STL файла..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Настройки" @@ -340,7 +339,7 @@ msgid "Load..." msgstr "Загрузить..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Удалить" @@ -567,19 +566,19 @@ msgstr "Заменить его на прямолинейный (Rectilinear)?" msgid "Infill" msgstr "Заполнение" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Глубина проникновения носика поддержки не должна превышать его длину." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Недопустимая глубина проникновения носика поддержки" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Диаметр носика поддержки должен быть меньше диаметра тела поддержки." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Недопустимый диаметр носика поддержки" @@ -688,7 +687,7 @@ msgid "Standard" msgstr "Стандартные" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Все" @@ -958,7 +957,7 @@ msgstr "Выберите другого производителя, поддер msgid "Firmware Type" msgstr "Тип прошивки" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Прошивка" @@ -1280,7 +1279,7 @@ msgstr "Выполнить" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Отмена действия" @@ -1941,7 +1940,7 @@ msgstr "Подтверждение" msgid "Cancelling..." msgstr "Отмена..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "Библиотека фигур" @@ -1957,7 +1956,7 @@ msgstr "Добавить на стол" msgid "Add selected shape(s) to the bed" msgstr "Добавьте выбранную фигуру(-ы) на стол" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Добавить в библиотеку" @@ -1967,7 +1966,7 @@ msgstr "Добавьте одну или несколько пользовате #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Удалить" @@ -2152,8 +2151,8 @@ msgstr "Перемещение" msgid "Extrusion" msgstr "Экструзия" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Ретракт (втягивание)" @@ -2208,7 +2207,7 @@ msgstr "Профиль печати" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Профиль прутка" @@ -2434,7 +2433,7 @@ msgid "Add..." msgstr "Добавить..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Удалить всё" @@ -2481,7 +2480,7 @@ msgid "Next Undo action: %1%" msgstr "Следующее действие отмены: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Повтор действия" @@ -2523,7 +2522,7 @@ msgid "Selection-Remove from rectangle" msgstr "Выбор\\Удаление из прямоугольника" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Разрезать" @@ -2783,7 +2782,7 @@ msgid "Quality" msgstr "Качество" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Расстояние смыкания полости" @@ -2889,7 +2888,7 @@ msgstr "Перемещение" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Поворот" @@ -2906,7 +2905,7 @@ msgstr "Применить" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Масштаб" @@ -2959,7 +2958,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "В настоящее время упрощение работает только при выборе одной модели" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Ошибка" @@ -3043,7 +3042,7 @@ msgid "Minimal points distance" msgstr "Мин. расстояние м/у точками" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Плотность точек поддержки" @@ -3894,7 +3893,7 @@ msgid "Speed" msgstr "Скорость" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3917,52 +3916,51 @@ msgstr "Юбка и кайма" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Дополнительно" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Поддержка" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Подложка" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Полость" @@ -4104,7 +4102,7 @@ msgid "Revert conversion from meters" msgstr "Отменить преобразование размера из метрической системы мер" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Объединить" @@ -4165,7 +4163,7 @@ msgid "Split the selected object into individual parts" msgstr "Разделить выбранную модель на отдельные части" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Разделить" @@ -4835,11 +4833,11 @@ msgstr "Высота" msgid "Width" msgstr "Ширина" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Скорость вентилятора" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Температура" @@ -5136,7 +5134,7 @@ msgstr "Вы не можете загрузить SLA проект с соста msgid "Attention!" msgstr "Внимание!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Горячие клавиши" @@ -5173,7 +5171,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Загрузить конфигурацию из ini/amf/3mf/g-кода и объединить" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Экспорт в G-код" @@ -5526,13 +5524,13 @@ msgstr "Задать номер экструдера для выбранных msgid "Objects List" msgstr "Список моделей" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Выберите G-код файл" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Перезагрузить стол с диска" @@ -5570,7 +5568,7 @@ msgid "Show/Hide G-code window" msgstr "Показать/скрыть окно отображения G-кода" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Предпросмотр нарезки" @@ -5654,7 +5652,7 @@ msgid "Keyboard shortcuts" msgstr "Горячие клавиши" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Запустить новый экземпляр PrusaSlicer" @@ -5662,11 +5660,11 @@ msgstr "Запустить новый экземпляр PrusaSlicer" msgid "G-code preview" msgstr "Предпросмотр G-кода" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Открыть просмотрщик G-кода" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Открыть PrusaSlicer" @@ -5692,13 +5690,13 @@ msgid "Print Settings" msgstr "Настройки печати" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Настройка материала" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Настройки прутка" @@ -5781,7 +5779,7 @@ msgstr "Показать окно с информацией о программ msgid "Show Tip of the Day" msgstr "Показать полезный совет" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." @@ -5789,94 +5787,94 @@ msgstr "" "Открывает уведомление о полезном совете в правом нижнем углу или показывает " "другой совет, если уведомление уже открыто." -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Показать список сочетаний клавиш" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Изометрия" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Изометрическая проекция" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Сверху" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Вид сверху" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Снизу" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Вид снизу" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Спереди" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Вид спереди" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Сзади" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Вид сзади" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Слева" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Вид слева" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Справа" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Вид справа" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Новый проект" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Начать новый проект" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&Открыть проект" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Открыть файл проекта" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Недавние проекты" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5884,510 +5882,510 @@ msgstr "" "Выбранный проект больше недоступен.\n" "Удалить его из списка последних проектов?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&Сохранить проект" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Сохранить текущий файл проекта" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Сохранить проект &как" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Сохранить текущий файл проекта как" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Загру&зить STL/OBJ/AMF/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Загрузить модель" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "За&грузить STL (английская система мер)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Загрузить модель, сохраненную с размерами в английской системе мер" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "Загрузить SL1 / SL1S &архив" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "Загрузить SL1 / Sl1S архив" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Импортировать &конфигурацию" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Загрузить сохранённый файл конфигурации" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Импортировать конфигурацию из &проекта" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Загрузить конфигурацию из файла проекта" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Импортировать &пакет конфигураций" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Импортировать пакет конфигураций из файла" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&Импорт" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Экспорт в G-&код" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Экспортировать текущие модели со стола в G-код" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "&Отправить G-код" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Отправить на печать текущий стол как G-код" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Экспорт G-кода на SD-карту / USB-накопитель" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" "Экспортировать текущие модели со стола в G-код на SD-карту / USB-накопитель" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Экспорт &стола в STL" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Экспортировать текущие модели со стола в STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Экспорт стола в STL вместе с &поддержками" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Экспортировать текущий стол в STL, включая поддержки" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Экспорт траектории &инструмента в OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Экспортировать траекторию инструмента в OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Экспорт &текущей конфигурации" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Экспортировать текущую конфигурацию в файл" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Экспорт &всех конфигураций" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Экспортировать все конфигурации в единый файл" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Экспорт всех конфигураций с физическими принтерами" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Экспорт всех профилей в файл, включая физические принтеры" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Экспорт" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Из&влечь SD-карту / USB-накопитель" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Извлечение SD-карты / USB-накопителя (после экспорта G-кода на носитель)" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Быстро нарезать" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Нарезать файл" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Быстро нарезать и сохранить как" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Нарезать файл и сохранить как" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Повторить последнюю быструю нарезку" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Повтор последней быстрой нарезки" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(&Пере)Нарезать" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Начать новый процесс нарезки" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "По&чинить STL файл" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Автоматическая починка STL файла" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Пр&едпросмотр G-кода" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "В&ыход" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Выйти из %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Выбрать &всё" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Выбрать все модели" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Снять в&ыбор со всего" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Выбрать все модели" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "&Удалить выбранные" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Удалить текущие выбранные модели" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Уд&алить всё" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Удалить все модели" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Отмена" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Повтор" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "С&копировать" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Скопировать выделенное в буфер обмена" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Вс&тавить" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Вставить из буфера обмена" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Пере&загрузить с диска" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Пои&ск" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Поиск в настройках" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Вкладка &стола" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Показать вкладку стола" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Вкладка настройки &печати" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Показать настройки печати" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Вкладка настройки п&рутка" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Показать настройки прутка" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Вкладка настройки прин&тера" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Показать настройки принтера" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "&3D-вид" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Показать вкладку 3D-вид" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Предпр&осмотр нарезки" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Показать предпросмотр нарезки" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "Открытие диалогового окна для редактирования библиотеки фигур." -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Очередь загрузки на &хост печати" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Показать очередь загрузки на хост печати" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "Запустить новый экземпляр программы" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "Сравнение профилей" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "Сравнение профилей" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Показать &имена файлов" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Отображать имена файлов моделей\\копий в окне 3D-вида" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "&Свернуть боковую панель" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Свернуть боковую панель" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "Полно&экранный режим" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "Полноэкранный режим" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Файл" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Правка" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Окна" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Вид" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Помощь" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "&Открыть G-код файл" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Открыть &PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "&Экспорт" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "&Отправить на печать" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Вкладка настройки материала" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Выберите файл для нарезки (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Нет ранее нарезанного файла." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Ранее нарезанный файл" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") не найден." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Файл не найден" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Сохранить %s файл как:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-код" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Сохранить .zip файл как:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Нарезка" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Обработка %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% успешно нарезан." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Нарезка завершена!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Выберите STL файл для починки:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Сохранить в OBJ как (меньше подвержен ошибкам в координатах, чем STL):" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Ваш файл был починен." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Ремонт" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Сохранить конфигурацию в файл как:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "Загрузка файла конфигурации" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Выберите файл конфигурации для загрузки:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "Экспорт пакета конфигураций" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." @@ -6395,15 +6393,15 @@ msgstr "" "Некоторые профили изменены, и несохранённые изменения не будут " "экспортированы в пакет конфигурации." -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Сохранить все конфигурации в файл как:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "Загрузка пакета конфигураций" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "Успешно импортировано профилей: %d шт." @@ -6635,8 +6633,8 @@ msgstr "Копии" msgid "Instance %d" msgstr "Копия %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Слои" @@ -6714,7 +6712,7 @@ msgstr "Имя принтера" msgid "Add preset for this printer device" msgstr "Добавить профиль для этого принтера" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Загрузка на хост печати" @@ -6879,7 +6877,7 @@ msgid "Select what kind of support do you need" msgstr "Выбор варианта поддержки" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Только от стола" @@ -6983,7 +6981,7 @@ msgid "(including spool)" msgstr "(включая катушку)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Стоимость" @@ -7515,10 +7513,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Вставка из буфера обмена" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Общие" @@ -8034,7 +8032,7 @@ msgid "Add/Remove presets" msgstr "Добавить/удалить профиль" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Добавить физический профиль" @@ -8046,7 +8044,7 @@ msgstr "Изменить профиль" msgid "Change extruder color" msgstr "Изменить цвет экструдера" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Изменить физический профиль" @@ -8362,11 +8360,11 @@ msgstr "НЕ ДОПУСКАТЬ РЭММИНГ" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "с" @@ -8480,12 +8478,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Просто переключиться на профиль \"%1%\"" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Тихий режим" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Нормальный режим" @@ -8756,7 +8754,7 @@ msgstr "полное имя профиля" msgid "symbolic profile name" msgstr "символическое имя профиля" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Слои и периметры" @@ -8844,7 +8842,7 @@ msgstr "Перекрытие" msgid "Flow" msgstr "Поток" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Прочее" @@ -8852,52 +8850,52 @@ msgstr "Прочее" msgid "Arachne perimeter generator" msgstr "Генератор периметра на движке Arachne" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Выходные параметры" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Последовательная печать" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Радиус безопасной зоны экструдера" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Выходной файл" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Скрипты постобработки" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Заметки" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Зависимости" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Зависимости профиля" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "Скрипты постобработки модифицируют файл G-кода так как вам нужно." -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8920,83 +8918,83 @@ msgstr[2] "" "Удалите их, так как это может вызвать проблемы при визуализации G-кода и " "оценке времени печати." -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "Найдены зарезервированные ключевые слова в" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Переопределение парам. прутка" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Сопло" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Стол" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Охлаждение" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Вкл." -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Настройки вентилятора" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Пороги включения обдува" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Настройки прутка" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Ограничение скорости печати" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Параметры черновой башни" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Параметры смены инструмента в одноэкструдерных мультиматериальных принтерах" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Настройки рэмминга" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Пользовательский G-код" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Стартовый G-код" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "Завершающий G-код" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Подсказки об объёмном расходе недоступны." -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -9017,20 +9015,20 @@ msgstr "" "нажатии на значок шестеренки на вкладке настройки принтера. Профили " "физического принтера сохраняются в папке PrusaSlicer/physical_printer." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Размер и координаты" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Характеристики принтера" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Количество экструдеров у принтера." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -9042,64 +9040,64 @@ msgstr "" "Изменить диаметр всех экструдеров на значение диаметра сопла первого " "экструдера?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Диаметр сопла" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-код, выполняемый перед сменой слоя" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-код выполняемый после смены слоя" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-код выполняемый при смене инструмента" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-код выполняемый между моделями (для последовательной печати)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-код смены цвета" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-код паузы печати" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Пользовательский шаблон G-кода" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Дисплей" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Наклон ванночки" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Время наклона ванночки" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Корректировка" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Экспозиция" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -9108,44 +9106,44 @@ msgstr "Экспозиция" msgid "Machine limits" msgstr "Ограничения принтера" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Значения в этой колонке для нормального режима" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Значения в этой колонке для тихого режима" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Максимальная скорость (#define DEFAULT_MAX_FEEDRATE {X, Y, Z, E})" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "" "Максимальное ускорение (#define DEFAULT_MAX_ACCELERATION {X,Y,Z,E}, #define " "DEFAULT_RETRACT_ACCELERATION, )" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Ограничение рывка (#define DEFAULT_{X,Y,Z,E}JERK)" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "" "Минимальная скорость (#define DEFAULT_MINIMUMFEEDRATE и #define " "DEFAULT_MINTRAVELFEEDRATE)" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Экструдер в ММ принтере" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "" "Параметры экструдера в одноэкструдерном мультиматериальном (ММ) принтере" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -9153,19 +9151,19 @@ msgstr "" "Это одноэкструдерный мультиматериальный принтер, диаметры всех экструдеров " "будут установлены на новое значение. Вы хотите продолжить?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Ограничение высоты слоя" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Позиция экструдера (для многоэкструдерных принтеров)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Приподнимать сопло только" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -9173,11 +9171,11 @@ msgstr "" "Ретракт, при отключении сопла (дополнительные настройки для " "многоэкструдерных принтеров)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Сброс в цвет прутка" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -9187,31 +9185,31 @@ msgstr "" "\n" "Отключить его для включения ретракта из прошивки?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Ретракт из прошивки" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "Выбран новый профиль принтера" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Отсоединён" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "убрать" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "удалить" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Это последний профиль для этого физического принтера." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -9220,7 +9218,7 @@ msgstr "" "Вы действительно хотите удалить профиль \"%1%\" из физического принтера \"%2%" "\"?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -9235,7 +9233,7 @@ msgstr[2] "" "Физические принтеры расположенные ниже, основаны на профиле, который вы " "собираетесь удалить." -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -9246,7 +9244,7 @@ msgstr[1] "" msgstr[2] "" "Обратите внимание, что выбранный профиль будет удалён и из этих принтеров." -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -9263,7 +9261,7 @@ msgstr[2] "" "Приведенные ниже физические принтеры основаны только на профиле, который вы " "собираетесь удалить." -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -9278,57 +9276,57 @@ msgstr[2] "" "Обратите внимание, что эти принтеры будут удалены после удаления выбранного " "профиля." -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Вы уверены, что хотите %1% выбранный профиль?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "Профиль %1%" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Выбор" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Найти" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "Заменить на" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "Регулярное выражение" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "Не учитывать регистр" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Слово целиком" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "Совпадение в одной строке" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "Вы действительно хотите удалить все замены?" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "Ограничения принтера будут передаваться в G-код и использоваться для оценки " "времени печати." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9338,7 +9336,7 @@ msgstr "" "используются для оценки времени печати, которое может быть неточным, " "поскольку принтер может применять другой набор ограничений для принтера." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9346,12 +9344,12 @@ msgstr "" "Ограничения принтера не заданы, поэтому оценка времени печати может быть " "неточной." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "ЗАКРЫТЫЙ ЗАМОЧЕК" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9359,12 +9357,12 @@ msgstr "" "указывает, что настройки совпадают с системными значениями (или значениями " "по умолчанию) для текущей группы." -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "ОТКРЫТЫЙ ЗАМОЧЕК" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9376,12 +9374,12 @@ msgstr "" "Нажмите, чтобы сбросить все настройки текущей группы до системных значений " "(или значений по умолчанию)." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "БЕЛЫЙ МАРКЕР" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9389,12 +9387,12 @@ msgstr "" "слева: указывает на не системный профиль (или профиль не по умолчанию),\n" "справа: указывает, что параметры не были изменены." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "ЗНАЧОК СО СТРЕЛКОЙ" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9407,7 +9405,7 @@ msgstr "" "настройки для текущей группы до последнего\n" "сохранённого значения профиля." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9415,7 +9413,7 @@ msgstr "" "ЗАКРЫТЫЙ ЗАМОЧЕК указывает, что настройки совпадают с системными значениями " "(или значениями по умолчанию) для текущей группы." -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9427,12 +9425,12 @@ msgstr "" "Нажмите, чтобы сбросить все настройки текущей группы до системных значений " "(или значений по умолчанию)." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "БЕЛЫЙ МАРКЕР указывает на не системный профиль (или профиль не по умолчанию)." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9440,7 +9438,7 @@ msgstr "" "БЕЛЫЙ МАРКЕР означает, что настройки совпадают с настройками в последнем " "сохранённом профиле для текущей группы." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9452,7 +9450,7 @@ msgstr "" "Нажмите, чтобы сбросить все настройки для текущей группы до последнего " "сохранённого значения профиля." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -9460,7 +9458,7 @@ msgstr "" "ЗАКРЫТЫЙ ЗАМОЧЕК указывает, что значение совпадает с системным значением " "(или значение по умолчанию)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9471,7 +9469,7 @@ msgstr "" "Нажмите, чтобы сбросить текущее значение к системному значению (или значению " "по умолчанию)." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9479,7 +9477,7 @@ msgstr "" "БЕЛЫЙ МАРКЕР указывает, что значение совпадает со значением в последнем " "сохранённом профиле." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9489,31 +9487,31 @@ msgstr "" "значением в последнем сохранённом профиле для текущей группы.\n" "Нажмите, чтобы сбросить значение до последнего сохранённого значения профиля." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Материал" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "Профиль печати материалами" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Носик поддержки" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Тело поддержки" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Соединения опор поддержки со связующим узлом" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Автоматическая генерация" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9522,11 +9520,11 @@ msgstr "" "\"%1%\" отключена, так как \"%2%\" находится в категории \"%3%\".\n" "Чтобы включить \"%1%\", отключите \"%2%\"" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Высота подъёма модели" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Подложка вокруг модели" @@ -9619,7 +9617,7 @@ msgstr "" "чтобы вернуть запрос о несохранённых изменениях." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9687,39 +9685,39 @@ msgstr "" "несохранённые изменения:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Количество экструдеров" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "Выберите профили для сравнения" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "Показать все профили (включая несовместимые)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "Значение в левом профиле" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "Значение в правом профиле" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "Не найден один из профилей" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "Сравниваемые профили имеют различную технологию печати" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "Отличия в профилях отсутствуют" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9727,11 +9725,11 @@ msgstr "" "Профили отличаются.\n" "Нажмите эту кнопку, чтобы выставить в правый профиль тоже что и в левом." -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "Неопределённая категория" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "Неопределённая группа" @@ -10404,7 +10402,7 @@ msgstr "" "Не удаётся рассчитать ширину экструзии для %1%: Переменная \"%2%\" " "недоступна." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " @@ -10413,7 +10411,7 @@ msgstr "" "Выбранный 3mf файл не совместим, так как был сохранён в более новой версии " "%1%." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." @@ -10421,7 +10419,7 @@ msgstr "" "Выбранный 3MF файл содержит модель с нарисованными поддержками созданными с " "использованием более новой версии PrusaSlicer и несовместим." -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." @@ -10429,7 +10427,7 @@ msgstr "" "Выбранный 3MF файл содержит модель с нарисованным швом созданным с " "использованием более новой версии PrusaSlicer и несовместим." -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -11246,8 +11244,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -11263,9 +11261,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11487,8 +11484,8 @@ msgstr "" msgid "Default print profile" msgstr "Профиль печати по умолчанию" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11640,8 +11637,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "мм или %" @@ -11728,7 +11726,7 @@ msgid "Extruder Color" msgstr "Цвет экструдера" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Этот параметр используется только в интерфейсе PrusaSlicer в качестве " @@ -11827,7 +11825,7 @@ msgstr "" msgid "approximate seconds" msgstr "приблизительно секунд" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Цвет" @@ -12008,8 +12006,8 @@ msgstr "" "используйте штангенциркуль, чтобы сделать несколько измерений вдоль прутка и " "вычислить среднее значение." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Плотность" @@ -12078,7 +12076,7 @@ msgstr "" msgid "g" msgstr "г" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Неизвестно)" @@ -13918,7 +13916,7 @@ msgstr "" "Используйте этот параметр для поворота рисунка поддержки в горизонтальной " "плоскости." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14556,40 +14554,35 @@ msgstr "Генератор периметров" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" -"Движок классического генератора периметров создает их с постоянной шириной " -"экструзии, а для очень тонких участков используется параметр «Заполнение " -"пробелов». Движок Arachne же создает периметры с переменной шириной " -"экструзии." -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "Классический движок" -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Движок Arachne" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "Длина перехода к периметру" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" -"При переходе между разным количеством периметров по мере того, как деталь " -"становится тоньше, выделяется определенное пространство для разделения или " -"соединения линий периметров." -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "Поле фильтра при переходе между периметрами" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14610,11 +14603,11 @@ msgstr "" "переэкструзии материала. Если задано в процентах, то расчёт производится " "относительно диаметра сопла." -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "Пороговый угол перехода между периметрами" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14629,11 +14622,11 @@ msgstr "" "сократить количество и длину этих центральных периметров, но при этом могут " "остаться зазоры или произойти чрезмерное экструдирование." -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "Счетчик распределений по периметрам" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -14643,70 +14636,24 @@ msgstr "" "распространить изменения. Более низкое значение означает, что ширина внешних " "периметров не изменяется." -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "Порог разделения среднего периметра" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"Минимальное значение ширины экструзии в процентах от нормальной, при " -"превышении которой средний периметр (если он есть) будет разделён на два. " -"Уменьшение этого параметра, сделает периметры более тонкими, увеличение - " -"более широкими. Примечание: это применимо, когда вся фигура заполняется " -"периметром, поэтому серединой в данном случае является середина объекта " -"между двумя внешними краями фигуры, даже если на самом деле в печати вместо " -"периметра присутствует заполнение или другие виды экструзии." - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "Добавление порога среднего периметра" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"Минимальное значение ширины экструзии в процентах от нормальной, при " -"превышении которой будет добавлен средний периметр (если его еще не было). " -"Уменьшение этого параметра, сделает периметры более тонкими, увеличение - " -"более широкими. Примечание: это применимо, когда вся фигура заполняется " -"периметром, поэтому серединой в данном случае является середина объекта " -"между двумя внешними краями фигуры, даже если на самом деле в печати вместо " -"периметра присутствует заполнение или другие виды экструзии." - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "Минимальный размер элемента" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -"Минимальная толщина тонких элементов. Элементы модели, которые тоньше этого " -"значения, не будут напечатаны, в то время как элементы, толщина которых " -"превышает Минимальный размер элемента, будут расширены до минимальной ширины " -"периметра." -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "Минимальная ширина периметра" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14720,63 +14667,63 @@ msgstr "" "элемента. Если задано в процентах, то расчёт производится относительно " "диаметра сопла." -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Ширина дисплея" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Высота дисплея." -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Высота дисплея" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Высота дисплея." -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Количество пикселей" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Количество пикселей по X." -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Количество пикселей по Y." -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Горизонтальное зеркалирование дисплея" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Зеркалировать по горизонтали" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Включение горизонтального зеркалирования выходных изображений." -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Вертикальное зеркалирование дисплея" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Зеркалировать по вертикали" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Включение вертикального зеркалирования выходных изображений." -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Ориентация дисплея" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14786,55 +14733,55 @@ msgstr "" "режим перевернёт значения параметров ширины и высоты дисплея, а выходные " "изображения будут повёрнуты на 90 градусов." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Альбомная" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Портретная" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Быстро" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Быстрый наклон" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Время быстрого наклона." -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Медленно" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Медленный наклон" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Время медленного наклона." -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "Высокая вязкость" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "Наклон ванночки для смолы с высокой вязкостью" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "Время очень медленного наклона ванночки." -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Площадь заполнения" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14844,40 +14791,40 @@ msgstr "" "то будет использоваться медленный наклон, в противном случае - быстрый " "наклон." -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Корректировка масштабирования" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "Корректировка масштабирования принтера по оси X" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "Корректировка масштабирования принтера по оси X" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Корректировка масштабирования принтера по оси Y" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "Корректировка масштабирования принтера по оси Y" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Корректировка масштабирования принтера по оси Z" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "Корректировка масштабирования принтера по оси Z" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Абсолютная корректировка принтера" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -14885,22 +14832,22 @@ msgstr "" "Будет надувать или сдувать нарезанные 2D-полигоны в соответствии со знаком " "коррекции." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Минимальная ширина «слоновьей ноги»" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Минимальная ширина, которую нужно поддерживать для компенсации «слоновьей " "ноги»." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Корректировка гаммы-коррекции" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14910,43 +14857,43 @@ msgstr "" "значение гаммы означает пороговое значение с порогом посередине. Такое " "поведение убирает сглаживание без потери отверстий в полигонах." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Тип SLA материала" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Начальная высота слоя" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Объём бутылки" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "мл" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Вес бутылки" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "кг" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "г/мл" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "цена/бутылка" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Начальных слоёв" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14954,107 +14901,107 @@ msgstr "" "Количество начальных слоёв, необходимых для изменения времени засветки от " "«Время засветки начальных слоёв» до «Время засветки основных слоёв»." -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Мин. время засветки основных слоёв" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Макс. время засветки основных слоёв" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Время засветки обычных слоёв" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Мин. время засветки начальных слоёв" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Макс. время засветки начальных слоёв" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Время засветки начальных слоёв" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Коррекция расширения" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "Корректировка расширения по оси X" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Корректировка расширения по оси Y" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Корректировка расширения по оси Z" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Примечание к SLA материалу" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "" "Здесь вы можете разместить свои заметки относительно SLA материала для " "печати." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Профиль SLA материала по умолчанию" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Генерировать поддержку" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Генерация поддержки для моделей." -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Диаметр носика поддержки" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Диаметр носика поддержки." -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Глубина проникновения носика поддержки" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Задаёт, как глубоко носик поддержки будет проникать в модель." -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Длина носика поддержки" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "" "Длина носика поддержки (ширина от центра задней сферы до центра передней " "сферы)." -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Диаметр тела поддержки" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Диаметр тела поддержки в мм." -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Диаметр маленьких тел поддержки в процентах" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -15063,11 +15010,11 @@ msgstr "" "диаметром тел поддержки, которые используются в проблемных областях, где " "нормальный столбик поддержки не может поместиться." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Макс. количество мостов на теле поддержки" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -15076,11 +15023,11 @@ msgstr "" "Мосты удерживают носики поддержки и соединяются с телами поддержки в виде " "небольших ветвей." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Тип соединения тела поддержки" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -15091,23 +15038,23 @@ msgstr "" "который автоматически переключается между первыми двумя, в зависимости от " "расстояния между телами поддержки." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Зигзагообразный" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Перекрёстный" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Динамический" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Коэффициент расширения тела поддержки" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -15115,27 +15062,27 @@ msgstr "" "Слияние мостов или тел поддержки в другие тела поддержки может увеличить их " "радиус. 0 - отсутствие увеличения, 1 - полное увеличение." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Диаметр основания поддержки" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Диаметр основания поддержки в мм." -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Высота основания поддержки" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Высота конусообразного основания поддержки." -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Безопасное расстояние основания поддержки" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -15145,27 +15092,27 @@ msgstr "" "смысл в режиме нулевой высоты подъёма, когда между моделью и подложкой " "вставляется зазор заданный этим параметром." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Критический угол" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "Угол соединения опор поддержки со связующим узлом." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Максимальная длина моста" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Максимальная длина моста." -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Максимальное расстояние между телом поддержки" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -15173,7 +15120,7 @@ msgstr "" "Максимальное расстояние между двумя телами поддержки для связи друг с " "другом. Нулевое значение - запрет на соединение тел поддержки каскадом." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -15181,39 +15128,39 @@ msgstr "" "Определяет насколько опоры должны поднимать поддерживаемую модель. Если " "включёно «Подложка вокруг модели», это значение игнорируется." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Относительный показатель плотности точек поддержки." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Минимальное расстояние между точками поддержки" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Точки поддержки не будут размещены ближе этого порогового значения." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Использовать подложку" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Добавляет подложку под поддерживаемую модель." -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Толщина стенки подложки" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Толщина подложки и её дополнительных стенок полости." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Высота стенки подложки" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -15225,19 +15172,19 @@ msgstr "" "некоторые смолы могут создавать чрезмерный эффект всасывания внутри полости, " "что затрудняет снятие модели." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Размер каймы подложки" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Как далеко должна простираться подложка вокруг существующей геометрии." -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Максимальное расстояние слияния" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -15248,11 +15195,11 @@ msgstr "" "двух меньших подложек. Если они находятся слишком близко, то будут " "объединены в одну подложку." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Наклон стенки подложки" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -15260,23 +15207,23 @@ msgstr "" "Наклон стенки подложки относительно плоскости стола. 90 градусов означает " "прямые стены." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Создаёт подложку вокруг модели, игнорируя высоту подъёма поддержкой." -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Подложка вокруг модели везде" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Принудительное создание подложки вокруг модели везде." -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Зазор между дном модели и подложкой" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." @@ -15284,11 +15231,11 @@ msgstr "" "Зазор между дном модели и сгенерированной подложкой в режиме нулевой высоты " "подъёма." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Шаг соединительного элемента подложки модели" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -15296,47 +15243,47 @@ msgstr "" "Расстояние между двумя соединительными опорами, которые соединяют модель и " "сгенерированную подложку." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Ширина соединительного элемента подложки модели" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Ширина соединительных опор, которые соединяют модель со сгенерированной " "подложкой." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Глубина проникновения соединительного элемента в модель" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" "Задаёт как глубоко соединительные элементы должны проникают в тело модели." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Создавать полость" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Создание пустотелой модели." -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Толщина стенки" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Минимальная толщина стенки полой модели." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Точность" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -15344,7 +15291,7 @@ msgstr "" "Быстродействие расчёта против точности расчёта. \n" "Низкие значения этого параметра могут привести к нежелательным артефактам." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -15359,11 +15306,11 @@ msgstr "" "При нулевом значении внутреннее пространство будет больше всего напоминать " "наружную сторону модели." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "Скорость печати" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -15373,65 +15320,65 @@ msgstr "" "материалов с повышенной вязкостью или для некоторых полых деталей. Это " "замедляет наклон ванночки и добавляет задержку перед засветкой." -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Экспорт в OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Экспортировать модель(и) в формат OBJ." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Экспорт для SLA печати" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Нарезать модель и экспортировать слои печати для SLA в формат PNG." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Экспорт в 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Экспортировать модель(и) в формат 3MF." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Экспорт в AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Экспортировать модель(и) в формат AMF." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Экспорт в STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Экспортировать модель(и) в формат STL." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "" "Нарезать модель и экспортировать траекторию движения инструмента в G-код " "файл." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Просмотрщик G-кода" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Визуализация уже нарезанного и сохраненного G-кода" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Нарезать" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -15439,71 +15386,71 @@ msgstr "" "Нарезает модель в зависимости от типа печати (FFF или SLA) на основе " "значения конфигурации printer_technology." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Помощь" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Показать помощь." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Помощь (FFF настройки)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Показать полный список параметров конфигурации печати/G-кода." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Помощь (SLA настройки)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Показать полный список параметров конфигурации SLA печати." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Информация о выходной модели" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Записать информацию о модели в консоль." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Сохранить конфигурацию" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Сохраните конфигурацию в указанный файл." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Выровнять по XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Выровнять модель по заданной точке." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Разрезать модель по Z." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "По центру" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Центрировать печать вокруг данного центра." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Не расставлять" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -15511,11 +15458,11 @@ msgstr "" "Не переставлять данные модели перед объединением и сохранять их исходные XY " "координаты." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "Обеспечивать размещение на столе" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -15523,23 +15470,23 @@ msgstr "" "Поднимает модель над столом, когда она частично находится внизу. Включено по " "умолчанию. Для отключения используйте --no-ensure-on-bed to disable." -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Дубликат" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Увеличить количество копий на этот коэффициент." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Дублировать по сетке" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Увеличить количество копий путём создания сетки." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -15547,7 +15494,7 @@ msgstr "" "Расставьте представленные модели на столе и объединить их в одну модель, " "чтобы выполнить действия один раз." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -15556,31 +15503,31 @@ msgstr "" "всякий раз, когда нужно нарезать модель для выполнения запрошенного " "действия)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Угол поворота вокруг оси Z в градусах." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Поворот вокруг оси X" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Угол поворота вокруг оси X в градусах." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Поворот вокруг оси Y" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Угол поворота вокруг оси Y в градусах." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Коэффициент масштабирования или процент." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15588,24 +15535,24 @@ msgstr "" "Обнаружение несвязанных частей в выбранных моделях и разделение их на " "отдельные объекты." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Отмасштабировать под область печати" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Масштабировать в соответствии с заданным объёмом." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Игнорировать несуществующие конфигурационные файлы" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "" "Не терпеть неудачу, если файла, предоставленного для --load, не существует." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." @@ -15613,7 +15560,7 @@ msgstr "" "Правило прямой совместимости при загрузке конфигураций из файлов " "конфигурации и файлов проекта (3MF, AMF)." -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15626,11 +15573,11 @@ msgstr "" "неизвестное значение значением по умолчанию автоматически или путем их " "полной замены." -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "Отмена неизвестных значений конфигурации" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." @@ -15638,7 +15585,7 @@ msgstr "" "Позволяет считывать неизвестные значения конфигурации путем их полной замены " "значениями по умолчанию." -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." @@ -15646,11 +15593,11 @@ msgstr "" "Позволяет считывать неизвестные значения конфигурации, автоматически заменяя " "их значениями по умолчанию." -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Загрузить конфигурацию" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15658,11 +15605,11 @@ msgstr "" "Загрузить конфигурацию из указанного файла. Его можно использовать более " "одного раза для загрузки параметров из нескольких файлов." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Выходной файл" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15670,11 +15617,11 @@ msgstr "" "Файл, в который будут записываться выходные данные (если он не указан, то " "будет основан на входном файле)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Одни экземпляр программы" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15685,11 +15632,11 @@ msgstr "" "Переопределяет значение конфигурации \"single_instance\" из настроек " "приложения." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Папка конфигурации пользователя" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15698,11 +15645,11 @@ msgstr "" "Загрузите и сохраните настройки в данном каталоге. Это полезно для " "сохранения различных профилей или конфигураций из сетевого хранилища." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Уровень ведения журнала" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15714,11 +15661,11 @@ msgstr "" "Например, loglevel=2 регистрирует неустранимые ошибки, ошибки и " "предупреждения." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Визуализация с помощью программного рендеринга" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/tr/PrusaSlicer_tr.po b/resources/localization/tr/PrusaSlicer_tr.po index ec06e2e00..6c7bee6ed 100644 --- a/resources/localization/tr/PrusaSlicer_tr.po +++ b/resources/localization/tr/PrusaSlicer_tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2019-05-23 00:37+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -18,16 +18,16 @@ msgstr "" "X-Generator: Poedit 2.2.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Bölümler telif hakkı" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Telif Hakkı" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -35,26 +35,26 @@ msgstr "" "İlgili tüm programların (kütüphanelerin) lisans sözleşmeleri, ana uygulama " "lisans sözleşmesinin bir parçasıdır" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "%s Hakkında" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Sürüm" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "lisans türü" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero Genel Kamu Lisansı, sürüm 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -62,7 +62,7 @@ msgstr "" "PrusaSlicer, Alessandro Ranellucci ve RepRap topluluğuna ait olan Slic3r alt " "yapısına sahiptir." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -72,7 +72,7 @@ msgstr "" "Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik ve diğerlerinin katkıları " "ile." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "" @@ -200,7 +200,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Boyut" @@ -258,19 +258,18 @@ msgstr "0,0 G-code koordinatının dikdörtgenin sol ön köşesine olan mesafes #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -305,7 +304,7 @@ msgid "Load shape from STL..." msgstr "STL dosyadan şekil yükle..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Ayarlar" @@ -318,7 +317,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Kaldır" @@ -519,19 +518,19 @@ msgstr "" msgid "Infill" msgstr "Dolgu" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Kafa penetrasyonu kafa genişliğinden daha büyük olmamalıdır." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Geçersiz kafa penetrasyonu" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Pinhead çapı, sütun çapından daha küçük olmalıdır." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Geçersiz iğne başı çapı" @@ -640,7 +639,7 @@ msgid "Standard" msgstr "Standart" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Tümü" @@ -895,7 +894,7 @@ msgstr "" msgid "Firmware Type" msgstr "Yazılım Türü" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Yazılım" @@ -1193,7 +1192,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Geri Al" @@ -1804,7 +1803,7 @@ msgstr "Onaylama" msgid "Cancelling..." msgstr "İptal ediliyor..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1820,7 +1819,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Ekle" @@ -1830,7 +1829,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Sil" @@ -2011,8 +2010,8 @@ msgstr "" msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Geri çekme" @@ -2067,7 +2066,7 @@ msgstr "Baskı ayarları" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Filament" @@ -2291,7 +2290,7 @@ msgid "Add..." msgstr "Ekle..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Tümünü sil" @@ -2338,7 +2337,7 @@ msgid "Next Undo action: %1%" msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Yinele" @@ -2378,7 +2377,7 @@ msgid "Selection-Remove from rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Kes" @@ -2633,7 +2632,7 @@ msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "" @@ -2736,7 +2735,7 @@ msgstr "Taşı" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Çevir" @@ -2753,7 +2752,7 @@ msgstr "Uygula" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Ölçek" @@ -2804,7 +2803,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Hata" @@ -2888,7 +2887,7 @@ msgid "Minimal points distance" msgstr "En düşük nokta mesafesi" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Destek noktaları yoğunluğu" @@ -3657,7 +3656,7 @@ msgid "Speed" msgstr "Hız" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3680,52 +3679,51 @@ msgstr "Etek ve kenar" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Gelişmiş" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Destekler" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Altlık" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "" @@ -3867,7 +3865,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Birleştir" @@ -3928,7 +3926,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Bölünmüş" @@ -4566,11 +4564,11 @@ msgstr "Yükseklik" msgid "Width" msgstr "Genişlik" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Fan hızı" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Sıcaklık" @@ -4851,7 +4849,7 @@ msgstr "" msgid "Attention!" msgstr "Dikkat!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Klavye kısayolları" @@ -4888,7 +4886,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "G-code Dışa Aktar" @@ -5237,13 +5235,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "" @@ -5280,7 +5278,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Ön izleme" @@ -5358,7 +5356,7 @@ msgid "Keyboard shortcuts" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -5366,11 +5364,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "" @@ -5396,13 +5394,13 @@ msgid "Print Settings" msgstr "Baskı Ayarları" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Malzeme Ayarları" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Filament Ayarları" @@ -5485,622 +5483,622 @@ msgstr "Hakkında" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Klavye kısayollarının listesini göster" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Perspektif" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Perspektif görünümü" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Üst" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Üst Görünüm" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Alt" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Alt Görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Ön" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Ön görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Arka" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Arka görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "Sol" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Sol görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "Sağ" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Sağ görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "&Yeni Proje" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Yeni bir proje başlat" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "& Proje Aç" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Bir proje dosyası açın" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "& Projeyi Kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Mevcut proje dosyasını kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Projeyi farklı kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Mevcut proje dosyasını farklı kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Bir model yükle" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "&Ayarları İçe Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Dışa aktarılan yapılandırma dosyasını yükle" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Proje dosyasından yapılandırmayı yükle" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Ha&zır Ayarları İçe Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Paketten hazır ayarları yükleme" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&İçe Aktarma" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "&G-code Dışa Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Geçerli tablayı G-code olarak dışa aktar" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Geçerli tablayı STL olarak dışa aktar" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Geçerli tablayı destekler ile STL olarak dışa aktar" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Ayarları &Dışa Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Geçerli yapılandırmayı dışa aktar" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "&Hazır Ayarları Dışa Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Tüm hazır ayarları dışa aktar" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "&Dışa Aktar" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Hızlı Dilim" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Bir dosyayı G koduna dilimleme" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Hızlı Dilim ve Farklı Kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Bir dosyayı dilimle ve farklı kaydet" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Son Hızlı Dilimi Tekrarla" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Son hızlı dilimi tekrarla" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Tekrar)Dilimle" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Yeni dilimleme işlemine başla" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "& STL dosyasını onar" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Bir STL dosyasını otomatik olarak onar" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&Çıkış" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "%s uygulamasını kapat" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Tüm nesneleri seçer" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Tüm nesnelerin seçimini kaldırır" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Mevcut seçimi siler" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Tüm nesneleri sil" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "&Geri Al" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "&Yinele" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "&Kopyala" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Seçimi panoya kopyala" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "&Yapıştır" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Panodan yapıştır" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&Tabla Sekmesi" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Tablayı göster" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "B&askı Ayarları Sekmesi" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Baskı ayarlarını göster" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "& Filament Ayarları Sekmesi" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Filament ayarlarını göster" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Yazıcı Ayarları S&ekmesi" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Yazıcı ayarlarını göster" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&B" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "3B düzenleme görünümünü göster" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Ön izleme" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "3B dilimleme ön izlemesini göster" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Yazdırma ve Ana Bilgisayar Yükleme Kuyruğu" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Ana Bilgisayar Yükleme Sırasını Yazdır penceresini görüntüle" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&Dosya" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Düzenle" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&Pencere" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&Görünüm" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&Yardım" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Mate&ryal Ayarları Sekmesi" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Dilimlemek için bir dosya seçin (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Daha önce dilimlenmiş dosya yok." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Önceden dilimlenmiş dosya (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") bulunamadı." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Dosya bulunamadı" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "%s dosyasını farklı kaydet:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-kod" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Zip dosyasını farklı kaydet:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Dilimleme" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "%s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Dilimleme Yapıldı!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Onarılacak STL dosyasını seçin:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" "OBJ dosyasını kaydet (hataları STL'den koordine etmeye daha az eğilimli):" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Dosyanız onarıldı." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Onar" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Yapılandırmayı farklı kaydet:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Yüklenecek yapılandırmayı seçin:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Ön ayar paketini farklı kaydet:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d ön ayar başarıyla içe aktarıldı." @@ -6322,8 +6320,8 @@ msgstr "Örnekleri" msgid "Instance %d" msgstr "Kopya %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Katmanlar" @@ -6393,7 +6391,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Ana Bilgisayar yüklemesini yazdır" @@ -6547,7 +6545,7 @@ msgid "Select what kind of support do you need" msgstr "Ne tür bir desteğe ihtiyacınız olduğunu seçin" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Yalnızca tablada destek" @@ -6649,7 +6647,7 @@ msgid "(including spool)" msgstr "" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Maliyet" @@ -7119,10 +7117,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Genel" @@ -7568,7 +7566,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "" @@ -7580,7 +7578,7 @@ msgstr "" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "" @@ -7882,11 +7880,11 @@ msgstr "TÜMÜNDE SIKIŞTIRMA YOK" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -7995,12 +7993,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Gizli" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Normal" @@ -8253,7 +8251,7 @@ msgstr "" msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Katmanlar ve duvarlar" @@ -8341,7 +8339,7 @@ msgstr "Üzerine bindirme" msgid "Flow" msgstr "Akış" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Diğer" @@ -8349,52 +8347,52 @@ msgstr "Diğer" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Çıktı seçenekleri" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Sıralı baskı" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Çıktı dosyası" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "İşlem sonrası komut dosyaları" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Notlar" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Bağımlılıklar" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Profil bağımlılıkları" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8407,83 +8405,83 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Tabla" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Soğutma" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Etkin" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Fan ayarları" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Soğutma eşikleri" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Filament özellikleri" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Baskı hızı geçersiz kılma" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "" "Tek ekstrüder Çoklu Filament (MM) yazıcılarla takım değiştirme parametreleri" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Sıkıştırma ayarları" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Özel G-code" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Başlangıç G-code" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "Bitiş G-code" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8496,20 +8494,20 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Boyut ve koordinatlar" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Kabiliyetler" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Yazıcının ekstrüder sayısı." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8517,64 +8515,64 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Nozül çapı" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "Katman değiştirmeden önce G-code" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "Katman değişiminden sonra G-code" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "Takım değiştirme G kodu" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "Nesneler arasında Gcode (sıralı baskı için)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Ekran" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Eğim" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Yatırma zamanı" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Düzeltmeler" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Poz" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8583,57 +8581,57 @@ msgstr "Poz" msgid "Machine limits" msgstr "Makine sınırları" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Bu sütundaki değerler Normal mod içindir" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Bu sütundaki değerler Gizli mod içindir" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "En yüksek hızlar" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "En yüksek ivme (Acceleration)" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Ani Hareket (Jerk) sınırları" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "En düşük besleme hızı" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Tek ekstrüder çoklu filament kurulumu" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Tek ekstrüder çok yönlü parametreler" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Katman yüksekliği sınırları" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Konum (çoklu ekstrüder yazıcıları için)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Koşullu Z kaldırma" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -8641,11 +8639,11 @@ msgstr "" "Takım devre dışı bırakıldığında geri çekme (çoklu ekstrüder ayarları için " "gelişmiş ayarlar)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8656,38 +8654,38 @@ msgstr "" "Donanımsal Geri Çekmeyi etkinleştirmek için Temizleme seçeneğini kapatmamı " "iste misiniz?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Firmware Retraction" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "kaldır" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "sil" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -8695,14 +8693,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8712,7 +8710,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -8720,84 +8718,84 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "%1% ayarını seçili ön ayar yapmak istediğinizden emin misiniz?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% Ön Ayar" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Ayarla" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Bul" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Tam kelime" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "KAPALI KİLİT" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "AÇIK KİLİT" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8805,23 +8803,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "BEYAZ NOKTA" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "GERİ OK" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8833,13 +8831,13 @@ msgstr "" "Geçerli seçenek grubunun tüm ayarlarını en son kaydedilen ön ayara " "sıfırlamak için GERİ OK tuşuna basın." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8847,11 +8845,11 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -8859,7 +8857,7 @@ msgstr "" "BEYAZ NOKTA simgesi ayarların geçerli seçenek grubu için en son kaydedilen " "ön ayardakiyle aynı olduğunu gösterir." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -8871,20 +8869,20 @@ msgstr "" "Geçerli seçenek grubunun tüm ayarlarını en son kaydedilen ön ayara " "sıfırlamak için tıklayın." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -8892,7 +8890,7 @@ msgstr "" "BEYAZ NOKTA simgesi, değerin son kaydedilen ön ayardakiyle aynı olduğunu " "gösterir." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -8902,42 +8900,42 @@ msgstr "" "olmadığını gösterir.\n" "Geçerli değeri son kaydedilen ön ayara sıfırlamak için tıklayın." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Malzeme" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Destek kafa" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Destek ayağı" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "Destek çubuklarının ve birleşimlerinin bağlantısı" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Otomatik oluşturma" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Nesne yüksekliği" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "" @@ -9020,7 +9018,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9081,49 +9079,49 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9752,26 +9750,26 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10511,8 +10509,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10527,9 +10525,8 @@ msgstr "Bu fan hızı tüm köprüler ve çıkıntılar sırasında uygulanır." #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10742,8 +10739,8 @@ msgstr "" msgid "Default print profile" msgstr "Varsayılan yazdırma profili" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -10887,8 +10884,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm veya %" @@ -10970,7 +10968,7 @@ msgid "Extruder Color" msgstr "Ekstrüder Rengi" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "Bu sadece Slic3r arayüzünde görsel bir yardım olarak kullanılır." @@ -11066,7 +11064,7 @@ msgstr "" msgid "approximate seconds" msgstr "yaklaşık saniye" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Renk" @@ -11246,8 +11244,8 @@ msgstr "" "bir kumpas kullanın ve filament boyunca birçok ölçüm yapın, ardından " "ortalamayı hesaplayın." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Yoğunluk" @@ -11311,7 +11309,7 @@ msgstr "" msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "" @@ -12980,7 +12978,7 @@ msgid "" "plane." msgstr "Destek desenini yatay düzlemde döndürmek için bu ayarı kullanın." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13581,33 +13579,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13619,11 +13619,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13632,63 +13632,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13697,63 +13669,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Ekran genişliği" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Ekranın genişliği" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Ekran yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Ekran yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Piksel sayısı" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X'teki piksel sayısı" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y cinsinden piksel sayısı" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Ekran yönü" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13763,55 +13735,55 @@ msgstr "" "genişliği ve yükseklik parametrelerinin anlamını değiştirecek ve çıkış " "görüntüleri 90 derece döndürülecektir." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Peyzaj" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Portre" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Hızlı" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Hızlı eğim" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Hızlı yatırma zamanı" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Yavaş" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Yavaş eğim" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Yavaş yatırma zamanı" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Alan dolgusu" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13821,40 +13793,40 @@ msgstr "" "Baskı alanı belirtilen değeri aşarsa,\n" "yavaş eğim kullanılır, aksi takdirde - hızlı eğim kullanılır" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Yazıcı ölçeklendirme düzeltmesi" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Yazıcı mutlak düzeltme" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." @@ -13862,20 +13834,20 @@ msgstr "" "Dilimlenen 2D poligonları düzeltme işaretine göre şişirecek veya " "söndürecektir." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Yazıcı gama düzeltmesi" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -13885,43 +13857,43 @@ msgstr "" "gamma değeri, ortadaki eşik ile eşik anlamına gelir. Bu davranış, " "çokgenlerde delik kaybetmeden kenar bozulmalarını ortadan kaldırır." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "İlk katman yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Soluk katmanlar" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -13929,123 +13901,123 @@ msgstr "" "Maruz kalma süresi için gereken katman sayısı, ilk maruz kalma süresinden " "maruz kalma süresine kadar kaybolur" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Pozlama süresi" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "İlk maruz kalma süresi" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Genişleme için düzeltme" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA baskı malzemesi notları" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "SLA baskı malzemesi ile ilgili notlarınızı buraya yazabilirsiniz." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Varsayılan SLA malzeme profili" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Destek üret" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Modeller için destek oluşturun" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Başın gösterdiği tarafın çapı" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "Pinheadin model yüzeyine ne kadar nüfuz etmesi gerektiği" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Arka küre merkezinden ön küre merkezine genişlik" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Destek direklerinin mm cinsinden çapı" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14055,23 +14027,23 @@ msgstr "" "bağlı olarak otomatik olarak ilk ikisi arasında geçiş yapacak zig-zag, " "çapraz (çift zig-zag) veya dinamik olabilir." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Zikzaklı" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Çapraz" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Dinamik" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Ayağı genişletme faktörü" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14079,54 +14051,54 @@ msgstr "" "Köprüler veya sütunların başka bir sütunla birleştirilmesi yarıçapı " "artırabilir. Sıfır, artış yok demektir, biri tam artış demektir." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Destek taban çapı" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Sütun tabanının mm cinsinden çapı" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Destek taban yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Sütun tabanı konisinin yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Kritik açı" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "Destek çubuklarını ve bağlantılarını bağlamak için varsayılan açı." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "En fazla köprü uzunluğu" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Bir köprünün en fazla uzunluğu" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Max sütun bağlama mesafesi" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -14134,45 +14106,45 @@ msgstr "" "Birbiriyle bağlantı kurması için iki sütunun en fazla mesafesi. Sıfır " "değeri, direk basamaklandırmasını yasaklar." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Bu, destek noktalarının yoğunluğunun göreceli bir ölçüsüdür." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Destek noktalarının en düşük mesafesi" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Bu eşikten daha yakın hiçbir destek noktası yerleştirilmeyecektir." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Ped kullan" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Desteklenen modelin altına bir ped ekler" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Ped duvar kalınlığı" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Pedin kalınlığı ve isteğe bağlı boşluk duvarları." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Ped duvar yüksekliği" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14184,19 +14156,19 @@ msgstr "" "boşluğun içinde aşırı bir emme etkisi oluşturabilir ve bu da baskıyı " "ayırmayı zorlaştırır." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "En fazla birleştirme mesafesi" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14206,11 +14178,11 @@ msgstr "" "birlikte olabilir. Bu parametre iki küçük pedin ortasının ne kadar uzakta " "olması gerektiğini tanımlar. Yaklaşırlarsa, bir pede birleştirilirler." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Ped duvar eğimi" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." @@ -14218,82 +14190,82 @@ msgstr "" "Ped duvarının tabla düzlemine göre eğimi. 90 derece, düz duvarlar anlamına " "gelir." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14302,75 +14274,75 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "OBJ olarak Dışa Aktar" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Model(ler)i OBJ olarak dışa aktar." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "SLA olarak Dışa Aktar" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "" "Modeli dilimleyin ve SLA yazdırma katmanlarını PNG olarak dışa aktarın." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "3MF Olarak Dışa Aktar" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Model(ler)i 3MF olarak dışa aktar." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "AMF Olarak Dışa Aktar" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Model(ler)i AMF olarak dışa aktar." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "STL olarak Dışa Aktar" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Model(ler)i STL olarak dışa aktar." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Modeli dilimleyin ve takım yollarını G kodu olarak dışa aktarın." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Dilim" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -14378,71 +14350,71 @@ msgstr "" "Modeli, printer_technology yapılandırma değerine göre FFF veya SLA olarak " "dilimleyin." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Yardım" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Bu yardımı göster." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Yardım (FFF seçenekleri)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Baskı/G-code yapılandırma seçeneklerinin tam listesini göster." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Yardım (SLA seçenekleri)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "SLA yazdırma yapılandırma seçeneklerinin tam listesini göster." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Çıktı Model Bilgisi" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Modelle ilgili bilgileri konsola yazın." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Konfigürasyon dosyasını kaydet" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Yapılandırmayı belirtilen dosyaya kaydeder." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "XY'yi Hizala" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Modeli verilen noktaya hizala." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Modeli belirtilen Z seviyesinden kes." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Merkez" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Baskıyı verilen merkezin çevresine ortala." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Düzenleme" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -14450,33 +14422,33 @@ msgstr "" "Birleştirmeden ve orijinal XY koordinatlarını saklamadan modelleri yeniden " "düzenleme." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Çoğalt" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Kopyaları bu faktörle çarpın." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Kılavuza göre çoğalt" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Izgara oluşturarak kopyaları çarpın." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -14484,7 +14456,7 @@ msgstr "" "Tedarik edilen modelleri bir plaka içinde düzenleyin ve bir kez işlem yapmak " "için bunları tek bir modelde birleştirin." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14493,60 +14465,60 @@ msgstr "" "eylemi gerçekleştirmek için modeli dilimlememiz gerektiğinde dolaylı olarak " "eklenir)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafındaki dönüş açısı, derece olarak." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "X etrafında döndür" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "X ekseni etrafındaki dönüş açısı, derece olarak." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Y etrafında döndür" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Y ekseni etrafındaki dönüş açısı, derece olarak." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Ölçekleme faktörü veya yüzdesi." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "" "Modellerde bağlı olmayan parçaları tespit et ve bunları ayrı nesnelere böl." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Uygun ölçek" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Verilen hacme uyması için ölçeklendirin." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Var olmayan config dosyalarını yoksay" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Do not fail if a file supplied to --load does not exist." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14554,27 +14526,27 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Konfigürasyon dosyası yükle" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -14582,33 +14554,33 @@ msgstr "" "Belirtilen dosyadan yapılandırmayı yükle. Seçenekleri birden fazla dosyadan " "yüklemek için birden fazla kez kullanılabilir." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Çıktı dosyası" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "" "Çıktının yazılacağı dosya (belirtilmemişse girdi dosyasına dayanacaktır)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Veri dizini" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14618,22 +14590,22 @@ msgstr "" "için veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " "kullanışlıdır." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Günlük seviyesi" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Bir yazılım oluşturucuyla işleme" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/uk/PrusaSlicer_uk.po b/resources/localization/uk/PrusaSlicer_uk.po index 7503b4c32..b4fb008bc 100644 --- a/resources/localization/uk/PrusaSlicer_uk.po +++ b/resources/localization/uk/PrusaSlicer_uk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2021-02-03 17:15+0100\n" "Last-Translator: Oleksandra Iushchenko \n" "Language-Team: \n" @@ -14,16 +14,16 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "Використані розробки" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "Копірайт" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" @@ -31,26 +31,26 @@ msgstr "" "Ліцензійні угоди всіх наступних програм (бібліотек) є частиною ліцензійної " "угоди програми" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "О %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "Версія" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "ліцензовано згідно" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "Загальна публічна ліцензія GNU Affero, версія 3" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." @@ -58,7 +58,7 @@ msgstr "" "PrusaSlicer заснований на Slic3r від Alessandro Ranellucci та спільноти " "RepRap." -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -68,7 +68,7 @@ msgstr "" "Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik та багатьох " "інших." -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "Скопіювати інформацію про версію" @@ -209,7 +209,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "Розмір" @@ -267,19 +267,18 @@ msgstr "Відстань координат 0,0 G-коду від нижньог #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "мм" @@ -314,7 +313,7 @@ msgid "Load shape from STL..." msgstr "Завантажте форму з STL ..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "Налаштування" @@ -327,7 +326,7 @@ msgid "Load..." msgstr "Завантажити..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "Видалити" @@ -547,19 +546,19 @@ msgstr "Чи потрібно змінити його на прямоліній msgid "Infill" msgstr "Заповнення" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "Проникнення головки не повинно бути більше її ширини." -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "Неприпустиме проникнення головки" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "Діаметр головки стовпа повинен бути менше діаметра стовпа." -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "Неприпустимий діаметр головки" @@ -668,7 +667,7 @@ msgid "Standard" msgstr "Стандартний" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "Всі" @@ -933,7 +932,7 @@ msgstr "Виберіть іншого постачальника, який пі msgid "Firmware Type" msgstr "Тип прошивки" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "Прошивка" @@ -1234,7 +1233,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "Скасувати" @@ -1886,7 +1885,7 @@ msgstr "Підтвердження" msgid "Cancelling..." msgstr "Скасування..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1902,7 +1901,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "Додати" @@ -1912,7 +1911,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "Видалити" @@ -2093,8 +2092,8 @@ msgstr "Переміщення" msgid "Extrusion" msgstr "Екструзія" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "Переривання" @@ -2149,7 +2148,7 @@ msgstr "Параметри друку" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "Філамент" @@ -2375,7 +2374,7 @@ msgid "Add..." msgstr "Додати..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "Видалити все" @@ -2422,7 +2421,7 @@ msgid "Next Undo action: %1%" msgstr "Скасувати дію: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "Повторити" @@ -2464,7 +2463,7 @@ msgid "Selection-Remove from rectangle" msgstr "Виділення - Видалено прямокутником" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "Розрізати" @@ -2719,7 +2718,7 @@ msgid "Quality" msgstr "Якість" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "Відстань закриття" @@ -2822,7 +2821,7 @@ msgstr "Пересунути" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "Обертати" @@ -2839,7 +2838,7 @@ msgstr "Застосувати" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "Масштаб" @@ -2890,7 +2889,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "Помилка" @@ -2974,7 +2973,7 @@ msgid "Minimal points distance" msgstr "Мінімальна відстань точок" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "Щільність точок підтримки" @@ -3785,7 +3784,7 @@ msgid "Speed" msgstr "Швидкість" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3808,52 +3807,51 @@ msgstr "Плінтус та край" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "Розширений" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "Підтримки" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "Подушка" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "Випорожнення" @@ -3995,7 +3993,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "Об’єднати" @@ -4056,7 +4054,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "Розділити" @@ -4719,11 +4717,11 @@ msgstr "Висота" msgid "Width" msgstr "Ширина" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "Швидкість вентилятора" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "Температура" @@ -5007,7 +5005,7 @@ msgstr "" msgid "Attention!" msgstr "Увага!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "Гарячі клавіши" @@ -5044,7 +5042,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "Завантажити конфігурацію з INI/AMF/3MF/GCODE та об’єднати" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "Експорт G-коду" @@ -5400,13 +5398,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "Відкрити файл G-кода" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "Перезавантажити стіл з диска" @@ -5443,7 +5441,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "Попередній перегляд" @@ -5527,7 +5525,7 @@ msgid "Keyboard shortcuts" msgstr "Гарячі клавіши" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "Відкрити новий екземпляр PrusaSlicer" @@ -5535,11 +5533,11 @@ msgstr "Відкрити новий екземпляр PrusaSlicer" msgid "G-code preview" msgstr "Перегляд G-коду" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "Відкрити переглядач G-коду" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "Відкрити PrusaSlicer" @@ -5565,13 +5563,13 @@ msgid "Print Settings" msgstr "Параметри друку" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "Параметри матеріалу" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "Параметри філаменту" @@ -5654,100 +5652,100 @@ msgstr "Показати діалог Про Slic3r" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "Показати список гарячих клавіш" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Вид Iso" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "Зверху" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "Вид зверху" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "Знизу" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "Вид знизу" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "Спереду" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "Вид спереду" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "Ззаду" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "Вид ззаду" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "З лівого боку" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "Вид з лівого боку" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "З правого боку" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "Вид з правого боку" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "Новий проект" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "Почати новий проект" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "Відкрити проект" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "Відкрити файл проекту" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "Останні проекти" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5755,523 +5753,523 @@ msgstr "" "Вибраний проект більше не доступний.\n" "Видалити його зі списку останніх проектів?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "Зберегти проект" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "Зберегти файл поточного проекту" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "Зберегти проект як" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "Зберегти файл поточного проекту як" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Імпорт STL/OBJ/AMF/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "Завантажити модель" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "Імпорт SТL (в імперських одиницях)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "Завантажити модель, збережену в імперських одиницях" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "Імпорт конфігурації" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "Завантажити експортований файл конфігурації" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "Імпорт конфігурації з проекту" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "Завантажити конфігурацію з файлу проекту" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "Імпорт пакету конфігурацій" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "Завантажити налаштування з пакету" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "Імпорт" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "Експортувати G-код" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "Експорт поточної пластини як G-код" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "Надіслати G-код" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "Надіслати на принтер поточний стіл як G-код" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "Експорт G-коду на SD-карту / Флешку" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "Експорт поточного столу як G-код на SD-карту / Флешку" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "Експорт столу як STL" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "Експорт поточної пластини як STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "Експорт столу як STL, включаючи підтримку" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "Експорт поточного столу як STL, включаючи підтримку" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "Експорт шляхів інструментів як OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "Експорт шляхів інструментів як OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "Експортувати конфігурацію" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "Експортувати поточну конфігурацію в файл" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "Експортувати пакет конфігурації" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "Експортувати всі налаштування у файл" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "Експортувати пакет конфігурації, включаючи фізичні принтери" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "Експортуйте всі пресети, включаючи фізичні принтери, у файл" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "Експорт" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "Від'єднати SD-карту/флешку" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" "Від'єднати SD-карту / Флешку після того, як на неї був експортований G-код." -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "Швидке нарізання" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "Нарізати файл у G-код" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "Швидко нарізати та зберегти як" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "Нарізати файл у G-код, зберегти як" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "Повторити останнє швидке нарізання" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "Повторити останнє швидке нарізання" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "(Пере)Нарізати зараз" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "Почати новий процес нарізання" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "Відновити STL-файл" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "Автоматично відновити як STL-файл" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "Перегляд G-коду" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "Вихід" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "Вийти з %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "Вибрати все" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "Видалити всі об'єкти" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "Скасувати вибір усіх" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "Скасовує вибір усіх об’єктів" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "Видалити вибране" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "Видаляє поточний вибір" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "Видалити все" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "Видалити всі об'єкти" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "Відмінити" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "Повторити" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "Копіювати" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "Скопіювати вибране в буфер обміну" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "Вставити" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "Вставити буфер обміну" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "Перезавантажити з диска" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "Пошук" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "Шукайте в налаштуваннях" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "Вкладка Платер" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "Показати plater" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "Вкладка параметрів друку" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "Показати параметри друку" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "Вкладка параметрів філаменту" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "Показати параметри філаменту" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "Вкладка параметрів принтеру" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "Показати параметри принтеру" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "Показати режим 3D-редагування" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "Попередній перегляд" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "Показати попередній перегляд 3D нарізки" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "Черга завантаження хоста друку" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "Показати вікна черги завантаження хоста друку" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "Показувати мітки" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "Показувати мітки об’єктів/екземплярів у 3D-сцені" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "Згорнути бічну панель" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "Згорнути бічну панель" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "Файл" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&Редагування" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "Вікно" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "Вид" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "Допомога" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "Відкрити G-код" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "Відкрити PrusaSlicer" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "Експорт" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "Надіслати на принтер" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "Вкладка параметрів матеріалу" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Вибрати файл для нарізання (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "Немає попередньо нарізаного файлу." -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "Попередньо нарізаний файл (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") не знайдено." -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "Файл не знайдено" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "Зберегти файл %s як:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-код" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "Зберегти zip-файл як:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "Нарізання" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "Обробка %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% був успішно нарізаний." -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "Нарізання завершено!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "Вибрати STL-файл для відновлення:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Зберегти OBJ-файл (менш схильний координувати помилки, ніж STL) як:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "Ваш файл було відновлено." -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "Відновити" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "Зберегти конфігурацію як:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "Вибрати конфігурацію для завантаження:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "Зберегти набір налаштувань як:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d налаштувань успішно імпортовано." @@ -6501,8 +6499,8 @@ msgstr "Екземпляри" msgid "Instance %d" msgstr "Екземпляр %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "Шари" @@ -6577,7 +6575,7 @@ msgstr "Описова назва принтера" msgid "Add preset for this printer device" msgstr "Додати пресет для цього пристрою принтера" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "Завантаження хоста друку" @@ -6732,7 +6730,7 @@ msgid "Select what kind of support do you need" msgstr "Виберіть необхідну вам підтримку" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "Підтримки тільки на столі" @@ -6834,7 +6832,7 @@ msgid "(including spool)" msgstr "(включаючи котушку)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "Вартість" @@ -7315,10 +7313,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "Вставити з буферу обміну" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "Загальне" @@ -7794,7 +7792,7 @@ msgid "Add/Remove presets" msgstr "Додати/Видалити пресети" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "Додати фізичний принтер" @@ -7806,7 +7804,7 @@ msgstr "Редагувати пресет" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "Редагувати фізичний принтер" @@ -8115,11 +8113,11 @@ msgstr "ВЗАГАЛІ БЕЗ раммінгу" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "с" @@ -8230,12 +8228,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "Просто переключитися до пресету \"%1%\"" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "Тихий" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "Нормальний" @@ -8491,7 +8489,7 @@ msgstr "повне ім'я профілю" msgid "symbolic profile name" msgstr "символічне ім'я профілю" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "Шари та периметри" @@ -8579,7 +8577,7 @@ msgstr "Перекриття" msgid "Flow" msgstr "Потік" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "Інше" @@ -8587,52 +8585,52 @@ msgstr "Інше" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "Параметри виводу" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "Послідовне друкування" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "Область зіткнення екструдера" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "Вихідний файл" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "Скрипти пост-обробки" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "Примітки" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "Залежності" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "Залежності профілю" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8646,82 +8644,82 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "Переписування глобальних змінних" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "Сопло" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "Стіл" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "Охолодження" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "Увімкнути" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "Налаштування вентилятора" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "Пороги охолодження" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "Властивості філаменту" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "Перевизначення швидкості друку" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "Параметри вежі витирання" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "Параметри зміни інструменту в одно-екструдерному ММ-принтері" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "Налаштування раммінгу" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "Користувацький G-код" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "Початок G-коду" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "Закінчення G-коду" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "Підказки об'ємного потоку відсутні" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8743,20 +8741,20 @@ msgstr "" "вкладці \"Параметри принтеру\". Профілі фізичного принтера зберігаються в " "каталозі \"PrusaSlicer/physical_printer\"." -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "Розмір і координати" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "Можливості" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "Кількість екструдерів у принтері." -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8768,64 +8766,64 @@ msgstr "" "Хочете змінити діаметр для всіх екструдерів на значення діаметра сопла " "першого екструдера?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "Діаметр сопла" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "G-код перед зміною шару" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "G-код після зміни шару" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "G-код зміни інструменту" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "G-код між об'єктами (для послідовного друку)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "G-код зміни кольору" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "G-код для паузи друку" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "Шаблон власного G-коду" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "Дисплей" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "Нахил" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "Час нахилу" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "Поправки" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "Експозиція" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8834,39 +8832,39 @@ msgstr "Експозиція" msgid "Machine limits" msgstr "Механічних обмеження" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "Значення в цьому стовпці для нормального режиму" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "Значення в цьому стовпці для тихого режиму" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "Максимальна швидкість подачі" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "Максимальні прискорення" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "Обмеження ривку" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "Мінімальна швидкість подачі" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "Налаштування MM екструдера" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "Параметри екструдеру в багато-екструдерному принтері" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" @@ -8874,19 +8872,19 @@ msgstr "" "Це одно-екструдерний багато-матеріальний принтер, діаметри всіх екструдерів " "будуть встановлені на нове значення. Ви хочете продовжити?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "Межі висоти шару" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "Позиція (для мульти-екструдерних принтерів)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "Межі підняття Z" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -8894,11 +8892,11 @@ msgstr "" "Переривання при відключенні інструмента (додаткові налаштування для " "налагодження мульти-екструдерів)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "Скинути до кольору філаменту" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8909,31 +8907,31 @@ msgstr "" "\n" "Відключити його для увімкнення програмного переривання?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "Програмне переривання" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "Від'єднаний" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "видалити" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "видалити" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "Це останній пресет для цього фізичного принтера." -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " @@ -8941,7 +8939,7 @@ msgid "" msgstr "" "Ви впевнені, що хочете видалити пресет \"%1%\" із фізичного принтера \"%2%\"?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" @@ -8950,7 +8948,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." @@ -8958,7 +8956,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8969,7 +8967,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" @@ -8978,57 +8976,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "Ви впевнені, що хочете %1% вибраний пресет?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% пресет" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "Встановити" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "Знайти" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "Тільки цілі слова" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" "Механічних обмеження публікуватимуться в G-код і використовуватимуться для " "розрахунку часу друку." -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -9038,7 +9036,7 @@ msgstr "" "використовуватися для оцінки часу друку, що, отже, може бути неточним, " "оскільки принтер може застосовувати інший набір механічних обмежень." -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." @@ -9046,12 +9044,12 @@ msgstr "" "Механічних обмеження не встановлені, тому оцінка часу друку може бути " "неточною." -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "ЗАКРИТИЙ ЗАМОК" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" @@ -9059,12 +9057,12 @@ msgstr "" "вказує на те, що параметри збігаються із системними (або за замовчуванням) " "значеннями для поточної групи опцій" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "ВІДКРИТИЙ ЗАМОК" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -9076,12 +9074,12 @@ msgstr "" "Клацніть, щоб скинути всі налаштування для поточної групи опцій до системних " "значень (або за замовчуванням)." -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "БІЛА КУЛЯ" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -9089,12 +9087,12 @@ msgstr "" "для лівої кнопки: вказує на несистемний (або не за замовчуванням) пресет,\n" "для правої кнопки: вказує на те, що параметри не були змінені." -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "СТРІЛКА НАЗАД" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -9106,7 +9104,7 @@ msgstr "" "Клацніть, щоб скинути всі параметри для поточної групи параметрів до " "останнього збереженого пресету." -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" @@ -9114,7 +9112,7 @@ msgstr "" "Значок \"ЗАКРИТИЙ ЗАМОК\" вказує на те, що параметри збігаються із " "системними (або за замовчуванням) значеннями для поточної групи опцій" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -9127,12 +9125,12 @@ msgstr "" "Клацніть, щоб скинути всі налаштування для поточної групи опцій до системних " "значень (або за замовчуванням)." -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" "Значок \"БІЛА КУЛЯ\" вказує на несистемний (або не за замовчуванням) пресет." -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -9140,7 +9138,7 @@ msgstr "" "Значок \"БІЛА КУЛЯ\" вказує на те, що параметри збігаються тими, які є в " "останньому збереженому пресеті для поточної групи опцій." -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9152,7 +9150,7 @@ msgstr "" "Клацніть, щоб скинути всі параметри для поточної групи параметрів до " "останнього збереженого пресету." -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." @@ -9160,7 +9158,7 @@ msgstr "" "Значок \"ЗАКРИТИЙ ЗАМОК\" вказує на те, що значення збігається із системним " "(або за замовчуванням)." -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9170,7 +9168,7 @@ msgstr "" "дорівнює системному (або за замовчуванням) значенню.\n" "Клацніть, щоб скинути поточне значення до системного (або за замовчуванням)." -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -9178,7 +9176,7 @@ msgstr "" "Значок \"БІЛА КУЛЯ\" вказує на те, що значення збігається з значенням " "збереженого пресету." -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9188,31 +9186,31 @@ msgstr "" "дорівнює останньому збереженому пресету.\n" "Клацніть, щоб скинути поточне значення до останнього збереженого пресету." -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "Матеріал" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "Головка підтримки" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "Стовп підтримки" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "З'єднання опорних стовпів і стиків" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "Автоматичне згенерування" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9221,11 +9219,11 @@ msgstr "" "\"%1%\" вимкнено, оскільки в категорії \"%3%\" увімкнено \"%2%\".\n" "Щоб увімкнути \"%1%\", вимкніть \"%2%\"" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "Підняття об’єкта" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "Подушка навколо об’єкта" @@ -9310,7 +9308,7 @@ msgstr "" "щоб знову запитати про незбережені зміни." #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -9378,49 +9376,49 @@ msgstr "" "зміни:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "Кількість екструдерів" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -10073,26 +10071,26 @@ msgid "" msgstr "" "Не вдається розрахувати ширину екструзії для %1%: Змінна \"%2%\" недоступна." -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "Вибраний 3MF-файл було збережено з новою версією %1% і не сумісний." -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10871,8 +10869,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10887,9 +10885,8 @@ msgstr "Ця швидкість вентилятора виконується д #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -11102,8 +11099,8 @@ msgstr "" msgid "Default print profile" msgstr "Профіль друку за замовчанням" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11256,8 +11253,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "мм або %" @@ -11343,7 +11341,7 @@ msgid "Extruder Color" msgstr "Колір екструдера" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" "Ця опція використовується лише у інтерфейсі Slic3r як візуальна допомога." @@ -11442,7 +11440,7 @@ msgstr "" msgid "approximate seconds" msgstr "приблизні секунди" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "Колір" @@ -11623,8 +11621,8 @@ msgstr "" "використовуйте суматор і виконайте декілька вимірювань вздовж філаменту, " "потім обчисліть середнє значення." -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "Щільність" @@ -11692,7 +11690,7 @@ msgstr "" msgid "g" msgstr "г" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(Невідомий)" @@ -13440,7 +13438,7 @@ msgstr "" "Використовуйте цей параметр, щоб повернути шаблон підтримуючого матеріалу на " "горизонтальній площині." -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -14051,33 +14049,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -14089,11 +14089,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -14102,63 +14102,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -14167,63 +14139,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "Ширина дисплея" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "Ширина дисплея" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "Висота дисплея" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "Висота дисплею" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "Кількість пікселів за віссю" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "Кількість пікселів за віссю X" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Кількість пікселів за віссю Y" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "Горизонтальне віддзеркалення дисплея" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "Віддзеркалити горизонтально" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "Увімкнути горизонтальне віддзеркалення вихідних зображень" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "Вертикальне віддзеркалення дисплея" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "Віддзеркалити вертикально" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "Увімкнути вертикальне віддзеркалення вихідних зображень" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "Орієнтація дисплея" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -14233,55 +14205,55 @@ msgstr "" "Портретний режим переверне значення параметрів ширини та висоти дисплея, а " "вихідні зображення повернуть на 90 градусів." -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "Альбомна" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "Книжкова" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "Швидкий" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "Швидкий нахил" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "Час швидкого нахилу" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "Повільний" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "Повільний нахил" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "Час повільного нахилу" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "Заповнена область" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -14291,61 +14263,61 @@ msgstr "" "Якщо область друку перевищує вказане значення,\n" "тоді буде використовуватися повільний нахил, інакше - швидкий нахил" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "Корекція масштабування принтера" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "Абсолютна корекція принтера" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "Надує або спустить нарізані 2D-полігони відповідно до знака корекції." -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "Мінімальна ширина слонової стопи" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" "Мінімальна ширина частей, яку слід підтримувати, виконуючи компенсацію стопи " "слона." -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "Гамма - корекція принтера" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -14355,43 +14327,43 @@ msgstr "" "гамми означає порогове значення з порогом посередині. Така поведінка усуває " "згладжування, не втрачаючи дірок у полігонах." -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "Тип SLA-матеріалу" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "Висота першого шару" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "Об’єм пляшки" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "мл" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "Вага пляшки" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "кг" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "г/мл" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "грошових одиниць/пляшку" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "Шари початкового контакту" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" @@ -14399,103 +14371,103 @@ msgstr "" "Кількість шарів, необхідних для часу експозиції, зменшується від початкового " "часу експозиції до часу експозиції" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "Мінімальний час експозиції" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "Максимальний час експозиції" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "Час експозиції" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "Мінімальний час початкової експозиції" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "Максимальний час початкової експозиції" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "Час початкової експозиції" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "Поправка на розширення" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "Примітки до друкованих SLA-матеріалів" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "Тут ви можете помістити свої нотатки щодо SLA-матеріалу." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "Профіль SLA-матеріалу за замовчанням" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "Генерувати підтримки" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "Генерувати підтримки для моделей" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "Діаметр головки стовпа" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "Діаметр носику головки" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "Проникнення головки" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "На скільки носики повинні проникати в поверхню моделі" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "Ширина головки стовпа" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "Ширина від центру задньої кулі до передньої кулі" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "Діаметр стовпів" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "Діаметр стовпів підтримки у мм" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "Процентний діаметр малих стовпів" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." @@ -14503,11 +14475,11 @@ msgstr "" "Відсоток менших стовпів порівняно з нормальним діаметром стовпа, які " "використовуються в проблемних зонах, де нормальний стовп не може поміститися." -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "Макс. мостів на стовпі" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14515,11 +14487,11 @@ msgstr "" "Максимальна кількість мостів, які можна розмістити на тримаючому стовпі. " "Мости утримують верхівки опор і з'єднуються зі стовпами як гілочки." -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "Режим з'єднання стовпів" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14529,23 +14501,23 @@ msgstr "" "поперечним (подвійний зигзагоподібний) або динамічним, який автоматично " "перемикається між першими двома залежно від відстані двох стовпів." -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "Зіг-Заг" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "Перехресний" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "Динамічний" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "Коефіцієнт розширення стовпа" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -14553,27 +14525,27 @@ msgstr "" "Злиття мостів або стовпів в інші стовпи може збільшити радіус. Нуль означає " "відсутність збільшення, один означає повне збільшення." -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "Діаметр основи підтримки" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "Діаметр основи стовпа у мм" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "Висота основи підтримки" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "Висота конуса основи стовпа" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "Безпечна відстань між основами підтримки" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14583,27 +14555,27 @@ msgstr "" "нульового підняття, коли між моделлю та майданчиком вставляється зазор " "відповідно до цього параметра." -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "Критичний кут" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "Кут за замовчуванням для з'єднання опорних палочок і з'єднань." -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "Максимальна довжина мосту" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "Максимальна довжина мосту" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "Макс. відстань між стовпами" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." @@ -14611,7 +14583,7 @@ msgstr "" "Максимальна відстань двох стовпів для з'єднання між собою. Нульове значення " "забороняє каскадування стовпів." -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." @@ -14619,39 +14591,39 @@ msgstr "" "Скільки опор повинно піднімати підтримуваний об’єкт. Якщо ввімкнено функцію " "\"Подушка навколо об’єкта\", це значення ігнорується." -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "Відносний показних щільності точок підтримки." -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "Мінімальна відстань опорних точок" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "Жодні точки підтримки не будуть розміщені ближче цього порогу." -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "Використовувати полушку" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "Додати подушечку під підтримувану модель" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "Товщина стінки подушки" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "Товщина подушки та її додаткових стінок порожнини." -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "Висота стінки подушки" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14663,19 +14635,19 @@ msgstr "" "можуть мати надзвичайний ефект всмоктування всередині порожнини, що " "ускладнює відшарування відбитка з фольги." -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "Розмір краю подушки" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "Як далеко повинна розширюватися подушка навколо вміщуваної геометрії" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "Макс. відстань об'єднання" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14685,45 +14657,45 @@ msgstr "" "великої. Цей параметр визначає, наскільки далеко повинен бути центр двох " "менших подушок. Якщо вони стануть ближче, вони об’єднаються в одну велику." -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "Нахил стінки подушки" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "" "Нахил стінки подушки відносно площини столу. 90 градусів означає прямі стіни." -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "Створити подушку навколо об’єкта та ігнорувати підняття підтримки" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "Подушка скрізь навколо об’єкта" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "Створити подушку навколо об’єкта" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "Розрив Подушка-Об'єкт" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" "Розрив між дном об’єкта та генерованою подушкою в режимі нульового підняття." -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "Крок з'єднувача Подушка-Об'єкт" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." @@ -14731,45 +14703,45 @@ msgstr "" "Відстань між двома з'єднувальними паличками, які з'єднують об'єкт та " "генеровану подушку." -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "Ширина з'єднувача Подушка-Об'єкт" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" "Ширина з'єднувальної паличками, що з'єднує об'єкт та генеровану подушку." -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "Глибина проникнення з'єднувача Подушка-Об'єкт" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "На скільки крихітні з'єднувачі повинні проникати в тіло моделі." -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "Увімкнути формування порожнин" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "Випорожнити модель, щоб мати порожній інтер’єр" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "Товщина стінки" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "Мінімальна товщина стінки порожнистої моделі." -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "Точність" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." @@ -14777,7 +14749,7 @@ msgstr "" "Продуктивність проти точності розрахунку. Менші значення можуть спричинити " "небажані артефакти." -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14790,74 +14762,74 @@ msgstr "" "назад до заданого зміщення. Більша відстань до закриття робить інтер’єр " "більш округлим. При нулі інтер’єр найбільше буде нагадувати екстер’єр." -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "Експорт OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "Експорт моделі як OBJ." -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "Експорт SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "Нарізати модель та експортувати шари SLA-друку до PNG." -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "Експортувати 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "Експорт моделі як 3MF." -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "Експортувати AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "Експорт моделі як АMF." -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "Експорт STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "Експорт моделі як STL." -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "Нарізати та експортувати G-код." -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "Переглядач G-коду" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "Візуалізувати вже нарізаний та збережений G-код" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "Нарізати" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." @@ -14865,71 +14837,71 @@ msgstr "" "Нарізати модель як FFF або SLA на основі значення printer_technology, " "зазначеного у конфігурації." -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "Допомога" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "Показати цю підказку." -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "Допомога (FFF параметри)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "Показати повний список параметрів конфігурації друку / G-коду." -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "Допомога (SLA параметри)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "Показати повний перелік параметрів конфігурації SLA-друку." -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "Інформація про вихідну модель" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "Писати інформацію про модель на консолі." -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "Зберегти файл конфігурації" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "Зберегти конфігурацію у вказаному файлі." -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "Вирівняти XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "Вирівняйте модель за заданою точкою." -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "Розрізати модель за заданим Z." -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "Центр" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "Відцентруйте друк навколо заданого центру." -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "Не впорядковувати" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." @@ -14937,33 +14909,33 @@ msgstr "" "Не переставляйте дані моделі перед об’єднанням та зберігайте їх початкові " "координати XY." -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "Дублювати" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "Збільшить кількість копій на цей коефіцієнт." -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "Дублювати за сіткою" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "Збільшить кількість копій, створивши сітку." -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." @@ -14971,7 +14943,7 @@ msgstr "" "Розташувати поставлені моделі на платформі та об’єднати їх в одну модель, " "щоб виконати дії один раз." -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14980,31 +14952,31 @@ msgstr "" "кожного разу, коли нам потрібно нарізати модель для виконання запитуваної " "дії)." -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "Кут обертання навколо осі Z у градусах." -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "Обертати навколо осі X" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "Кут обертання навколо осі Х у градусах." -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "Обертати навколо осі Y" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "Кут обертання навколо осі Y у градусах." -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "Коефіцієнт масштабування або відсоток." -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." @@ -15012,29 +14984,29 @@ msgstr "" "Визначити непоєднані частини у даній моделі (моделях) та розділити їх на " "окремі об’єкти." -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "Масштабувати під область друку" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "Масштабувати під задану область друку." -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "Ігнорувати неіснуючі конфігураційні файли" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "Не відмовляти, якщо файл, який подається до --load, не існує." -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -15042,27 +15014,27 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "Завантажити файл конфігурації" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." @@ -15070,11 +15042,11 @@ msgstr "" "Завантажити конфігурацію із зазначеного файлу. Його можна використовувати " "більше одного разу для завантаження опцій з декількох файлів." -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "Вихідний файл" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." @@ -15082,11 +15054,11 @@ msgstr "" "Файл, в який буде записано вихідні дані (якщо не вказано, він базуватиметься " "на вхідному файлі)." -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "Режим одного екземпляру PrusaSlicer" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -15097,11 +15069,11 @@ msgstr "" "вікно PrusaSlicer. Замінює значення конфігурації \"single_instance\" у " "налаштуваннях програми." -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "Каталог даних" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -15110,11 +15082,11 @@ msgstr "" "Завантажити та зберегти налаштування у вказаному каталозі. Це корисно для " "ведення різних профілів або включення конфігурацій із мережевого сховища." -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "Рівень журналізації" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -15125,11 +15097,11 @@ msgstr "" "Наприклад. loglevel=2 журнали фатальних, помилок і повідомлень рівня " "попередження." -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "Візуалізувати за допомогою програмного засобу візуалізації" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/zh_CN/PrusaSlicer.mo b/resources/localization/zh_CN/PrusaSlicer.mo index 5c256b74693bf1a6dfbbf1fbdb4a139183554551..a9b2a5e83abf0c4fe08d828b4d32f723c26da0d1 100644 GIT binary patch delta 97786 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 B9%29h delta 100893 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

o~c08YT<@ClT`NW-0@U!d&dG?s>&k?TTbD*A{( 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 CyRU`- diff --git a/resources/localization/zh_CN/PrusaSlicer_zh_CN.po b/resources/localization/zh_CN/PrusaSlicer_zh_CN.po index 0e5b21143..2453b584d 100644 --- a/resources/localization/zh_CN/PrusaSlicer_zh_CN.po +++ b/resources/localization/zh_CN/PrusaSlicer_zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2022-07-22 21:49+0800\n" "Last-Translator: Bral@qq.com\n" "Language-Team: \n" @@ -18,48 +18,48 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.1\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "部分版权" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "版权所有" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "所有以下程序(库)的许可协议是应用程序许可协议的一部分" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "关于 %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "版本" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "根据" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero 通用公共许可证,第 3 版" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" "PrusaSlicer 是以 Alessandro Ranellucci 和 RepRap 社区的 Slic3r 为基础的。" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " @@ -68,7 +68,7 @@ msgstr "" "Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph " "Lenox, Y.Sapir, Mike Sheldrake, Vojtech Bubnik 等人的贡献。" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "复制版本信息" @@ -205,7 +205,7 @@ msgstr "计划上传到 `%1%`。请参阅窗口-> 打印主机上传队列" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "大小" @@ -263,19 +263,18 @@ msgstr "G-Code 0,0 坐标相对于矩形框左前角的距离。" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "mm" @@ -308,7 +307,7 @@ msgid "Load shape from STL..." msgstr "从 STL 文件加载形状..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "设置" @@ -321,7 +320,7 @@ msgid "Load..." msgstr "加载..." #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "移除" @@ -538,19 +537,19 @@ msgstr "我要换成直线填充模式吗?" msgid "Infill" msgstr "填充" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "头部穿透不应大于头部宽度。" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "无效头部穿透" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "针头直径应小于支柱直径。" -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "无效的针头直径" @@ -659,7 +658,7 @@ msgid "Standard" msgstr "标准" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "所有" @@ -911,7 +910,7 @@ msgstr "选择 %s 支持的其他供应商" msgid "Firmware Type" msgstr "固件类型" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "固件" @@ -1208,7 +1207,7 @@ msgstr "执行" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "撤销" @@ -1847,7 +1846,7 @@ msgstr "确认" msgid "Cancelling..." msgstr "正在取消..." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "形状画廊" @@ -1863,7 +1862,7 @@ msgstr "加在床上" msgid "Add selected shape(s) to the bed" msgstr "将选定形状添加到床上" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "加入" @@ -1873,7 +1872,7 @@ msgstr "添加一个或多个自定义形状" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "删除" @@ -2056,8 +2055,8 @@ msgstr "移动" msgid "Extrusion" msgstr "挤压" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "回抽" @@ -2112,7 +2111,7 @@ msgstr "打印设置" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "耗材" @@ -2334,7 +2333,7 @@ msgid "Add..." msgstr "添加..." #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "全部删除" @@ -2381,7 +2380,7 @@ msgid "Next Undo action: %1%" msgstr "下一个撤消操作: %1%" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "重做" @@ -2423,7 +2422,7 @@ msgid "Selection-Remove from rectangle" msgstr "从矩形中选择-删除" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "剪切" @@ -2679,7 +2678,7 @@ msgid "Quality" msgstr "质量" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "近距离" @@ -2784,7 +2783,7 @@ msgstr "移动" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "旋转" @@ -2801,7 +2800,7 @@ msgstr "应用" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "比例" @@ -2853,7 +2852,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "当前仅当选择单个零件时才允许简化" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "错误" @@ -2937,7 +2936,7 @@ msgid "Minimal points distance" msgstr "最小点距离" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "支撑点密度" @@ -3754,7 +3753,7 @@ msgid "Speed" msgstr "速度" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3777,52 +3776,51 @@ msgstr "环绕和裙边" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "高级" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "支持" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "垫" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "掏空" @@ -3964,7 +3962,7 @@ msgid "Revert conversion from meters" msgstr "从仪表恢复转换" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "合并" @@ -4025,7 +4023,7 @@ msgid "Split the selected object into individual parts" msgstr "将选定对象拆分为各个部分" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "分裂" @@ -4659,11 +4657,11 @@ msgstr "高度" msgid "Width" msgstr "宽度" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "风扇速度" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "温度" @@ -4949,7 +4947,7 @@ msgstr "不能在床上加载包含多部分对象的 SLA 项目" msgid "Attention!" msgstr "注意!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "键盘快捷键" @@ -4986,7 +4984,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "从 ini/amf/3mf/gcode 加载配置并合并" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "导出 G-Code" @@ -5333,13 +5331,13 @@ msgstr "设置所选项目的挤出机编号" msgid "Objects List" msgstr "对象列表" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "打开一个 G-Code 文件" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "从磁盘重新加载制版机" @@ -5376,7 +5374,7 @@ msgid "Show/Hide G-code window" msgstr "显示/隐藏 G-Code 窗口" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "预览" @@ -5454,7 +5452,7 @@ msgid "Keyboard shortcuts" msgstr "键盘快捷键" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "打开一个新的 PrusaSlicer 实例" @@ -5462,11 +5460,11 @@ msgstr "打开一个新的 PrusaSlicer 实例" msgid "G-code preview" msgstr "G-Code 预览" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "打开 G-Code 查看器" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "打开 PrusaSlicer" @@ -5492,13 +5490,13 @@ msgid "Print Settings" msgstr "打印设置" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "材料设置" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "耗材设置" @@ -5581,100 +5579,100 @@ msgstr "显示关于对话框" msgid "Show Tip of the Day" msgstr "显示每日小贴士" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "在右下角打开“每日提示”通知,或在已打开的情况下显示另一个提示。" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "显示键盘快捷键的列表" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "等距" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "等距视图" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "顶部" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "顶部视图" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "底部" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "底部视图" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "前面" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "前视图" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "后面" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "后视图" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "左面" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "左视图" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "右面" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "右视图" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "新建项目(&N)" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "启动一个新项目" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "打开项目(&O)" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "打开项目文件" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "最近项目" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" @@ -5682,522 +5680,522 @@ msgstr "" "所选项目不再可用。\n" "是否要将其从最近的项目列表中删除?" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "保存项目(&S)" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "保存当前项目文件" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "将项目另存为(&A)" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "将当前项目文件另存为" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "导入 STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "加载模型" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "导入 STL (英制单位)" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "加载使用英制单位保存的模型" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "导入 SL1 / SL1S 档案" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "加载 SL1 / Sl1S 存档" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "导入配置(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "加载导出的配置文件" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "从项目导入配置(&P)" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "从项目文件加载配置" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "导入配置组(&B)" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "从包加载预设" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "导入(&I)" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "导出 G-Code(&G)" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "将当构建板导出为 G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "发送 G-Code(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "发送以 G-Code 打印当前板" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "将 G-Code 导出到 SD 卡/闪存驱动器" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "将当前板作为 G-Code 导出到 SD 卡/闪存驱动器" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "将板材导出为 STL(&S)" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "将当前构建板导出为 STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "将板材导出为 STL,包括支架(&I)" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "导出当前构建板为 STL,包括支撑" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "将工具路径导出为 OBJ(&T)" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "导出工具路径作为 OBJ" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "导出配置(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "将当前配置导出到文件" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "导出配置包(&B)" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "将所有预设导出到文件" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "使用物理打印机导出配置包" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "将包括物理打印机在内的所有预设导出到文件" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "导出(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "弹出 SD 卡/闪存驱动器(&T)" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "将 G-Code 导出到 SD 卡/闪存驱动器后将其弹出。" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "将文件切片成 G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "快速切片并另存为" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "将文件切片成 G-Code, 并另存为" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "重复上次快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "重复最后一个快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "立即重新切片(&W)" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "开始新的切片流程" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "修复 STL 文件(&R)" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "自动修复 STL 文件" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "G-Code 预览(&G)" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "退出(&Q)" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "退出 %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "全选(&S)" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "选择所有对象" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "取消选择(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "取消选择所有对象" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "删除所选内容(&D)" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "删除当前选择" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "全部删除(&A)" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "删除所有对象" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "撤销(&U)" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "重做(&R)" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "复制(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "将选择复制到剪贴板" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "粘贴(&P)" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "粘贴剪贴板" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "从磁盘重新加载(&L)" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "搜索(&H)" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "在设置中搜索" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "构建板选项卡(&P)" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "显示平台构建板" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "打印设置选项卡(&R)" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "显示打印设置" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "耗材设置选项卡(&F)" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "显示耗材设置" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "打印机设置选项卡(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "显示打印机设置" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "显示 3D 编辑视图" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "预览(&V)" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "显示 3D 切片预览" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "打开对话框以修改形状库" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "打印主机上传队列(&H)" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "显示打印主机上传队列窗口" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "打开新实例" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "比较预设" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "比较预设" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "显示标签(&L)" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "在三维场景中显示对象/实例标签" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "折叠边栏(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "折叠边栏" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "全屏(&F)" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "全屏" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "文件(&F)" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "编辑(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "窗口(&W)" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "视图(&V)" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "帮助(&H)" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "打开 G-Code(&O)" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "打开 PrusaSlicer(&P)" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "导出(&X)" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "发送到打印机(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "配合设置选项卡(&R)" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "选择要切片的文件 (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "没有预切片的文件。" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "预切片文件 (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") 无法找到。" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "文件未找到" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "将 %s 文件另存为:" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-Code" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "将 zip 文件另存为:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "切片" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "处理 %s" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "%1% 已成功切片。" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "切片完成!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "选择要修复的 STL 文件:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "将 OBJ 文件 (不像 STL 那样容易发生坐标错误) 保存为:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "您的文件已修复。" -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "修复" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "将配置另存为:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "加载配置文件" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "选择要加载的配置:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "导出配置包" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "某些预设已修改,未保存的更改将不会导出到配置包中。" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "将预设配置组另存为:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "加载配置包" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d 预设已成功导入。" @@ -6416,8 +6414,8 @@ msgstr "实例" msgid "Instance %d" msgstr "实例 %d" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "图层" @@ -6493,7 +6491,7 @@ msgstr "打印机的描述性名称" msgid "Add preset for this printer device" msgstr "添加此打印机设备的预设" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "打印主机上传" @@ -6643,7 +6641,7 @@ msgid "Select what kind of support do you need" msgstr "选择您需要何种支撑" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "仅从打印面板支撑" @@ -6739,7 +6737,7 @@ msgid "(including spool)" msgstr "(包括线轴)" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "费用" @@ -7222,10 +7220,10 @@ msgstr "修复网格后,移除了定制支架、接缝和多材料喷漆。" msgid "Paste From Clipboard" msgstr "从剪贴板粘贴" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "常规" @@ -7691,7 +7689,7 @@ msgid "Add/Remove presets" msgstr "添加/删除预设" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "添加物理打印机" @@ -7703,7 +7701,7 @@ msgstr "编辑预设" msgid "Change extruder color" msgstr "更改挤出机颜色" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "编辑物理打印机" @@ -8004,11 +8002,11 @@ msgstr "完全不存在" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -8119,12 +8117,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "只需切换到 \"%1%\" 预设" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "隐形" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "正常" @@ -8383,7 +8381,7 @@ msgstr "完整配置文件名" msgid "symbolic profile name" msgstr "符号配置文件名" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "层和轮廓" @@ -8471,7 +8469,7 @@ msgstr "交叠" msgid "Flow" msgstr "流量" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "其他" @@ -8479,52 +8477,52 @@ msgstr "其他" msgid "Arachne perimeter generator" msgstr "Arachne 轮廓生成器" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "输出选项" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "顺序打印" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "挤出机间隙" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "输出文件" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "后处理脚本" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "备注" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "依赖" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "配置文件依赖" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "后处理脚本应适当修改 G-Code 文件。" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8538,82 +8536,82 @@ msgstr[0] "" "下一行 %s 包含保留关键字。\n" "请删除它们,因为它们可能会导致 G-Code 可视化和打印时间估计出现问题。" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "在中找到保留关键字" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "耗材参数替换" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "喷嘴" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "热床" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "冷却" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "启用" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "风扇设置" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "冷却阈值" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "耗材特性" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "打印速度覆盖" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "擦料塔参数" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "单挤出机 多色 打印机的工具更换参数" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "冲击设置" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "自定义 G-Code" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "起始 G-Code" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "结尾 G-Code" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "容积流量提示不可用" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8632,20 +8630,20 @@ msgstr "" "物理打印机配置文件编辑器也会打开。\n" "物理打印机配置文件存储在 PrusaSlicer/Physical_Printer 目录中。" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "大小和坐标" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "功能" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "打印机的挤出机数。" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8656,64 +8654,64 @@ msgstr "" "和所有挤出机必须具有相同的直径。\n" "是否要将所有挤出机的直径更改为第一挤出机喷嘴直径值?" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "喷嘴直径" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "图层更改前 G-Code" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "图层更改后 G-Code" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "工具更改 G-Code" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "模型对象之间的 G-Code (用于顺序打印)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "颜色更改 G-Code" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "暂停打印 G-Code" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "模板自定义 G-Code" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "显示" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "倾斜" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "倾斜时间" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "修正" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "曝光" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8722,68 +8720,68 @@ msgstr "曝光" msgid "Machine limits" msgstr "机器限制" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "此列中的值用于正常模式" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "此列中的值用于隐身模式" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "最大进给率" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "最大加速度" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "抖动限制" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "最小进给率" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "单挤出机 MM 设置" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "单挤出机多材料参数" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" "这是一台单挤出机多材料打印机,所有挤出机的直径都将设置为新的值。是否要继续?" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "层高度限制" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "位置(适用于多挤出打印机)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "仅提升 Z" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "工具禁用时的回抽 (多挤出机设置的高级设置)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "重置为耗材颜色" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8793,51 +8791,51 @@ msgstr "" "\n" "我应禁用它,以便启用固件回抽?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "固件回抽" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "已选择新打印机预设" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "独立的" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "移除" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "删除" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "这是这台物理打印机的最后一次预设。" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "是否确实要从物理打印机 \"%2%\" 中删除 \"%1%\" 预设?" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" "The physical printers below are based on the preset, you are going to delete." msgstr[0] "下面的物理打印机基于此预设,您将要删除。" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "请注意,选定的预设也将从这些打印机中删除。" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8846,62 +8844,62 @@ msgid_plural "" "delete." msgstr[0] "下面的物理打印机仅基于此预设,您将要删除。" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" "Note, that these printers will be deleted after deleting the selected preset." msgstr[0] "请注意,删除选定预设后,这些打印机将被删除。" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "是否确实要将所选预设 %1%?" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "%1% 预设" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "设置" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "查找" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "替换为" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "正则表达式" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "不区分大小写" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "整字" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "匹配单线" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "是否确实要删除所有替换?" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "机器限制将发送到 G-Code,并用于估计打印时间。" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " @@ -8910,29 +8908,29 @@ msgstr "" "机器限制不会发送到 G-Code,但它们将用于估计打印时间,因此可能不准确,因为打印" "机可能会应用不同的机器限制集。" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "未设置机器限制,因此打印时间估计可能不准确。" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "锁定锁" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "指示设置与当前选项组的系统(或默认值)值相同" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "解锁锁" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8942,12 +8940,12 @@ msgstr "" "指示某些设置已更改,并且不等于当前选项组的系统(或默认值)值。\n" "单击\"锁定锁定\"图标可将当前选项组的所有设置重置为系统(或默认值)值。" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "灰色点" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." @@ -8955,12 +8953,12 @@ msgstr "" "对于左侧按钮:指示非系统(或非默认)预设,\n" "对于右侧按钮:指示设置尚未修改。" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "后箭头" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8970,13 +8968,13 @@ msgstr "" "指示设置已更改,不等于当前选项组的最后一个保存预设。\n" "单击\"后退箭头\"图标可将当前选项组的所有设置重置为上次保存的预设。" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "锁定锁定图标表示设置与当前选项组的系统(或默认值)值相同" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8986,17 +8984,17 @@ msgstr "" "锁定的锁图标指示某些设置已更改,并且不等于当前选项组的系统(或默认值)值。\n" "单击此处可将当前选项组的所有设置重置为系统(或默认值)值。" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "灰色点图标表示非系统(或非默认)预设。" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "灰色点图标表示设置与当前选项组上次保存的预设中的设置相同。" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -9006,13 +9004,13 @@ msgstr "" "后退箭头图标表示设置已更改,不等于当前选项组的最后保存预设。\n" "单击此处可将当前选项组的所有设置重置为上次保存的预设。" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "锁定锁定图标表示该值与系统(或默认值)值相同。" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" @@ -9021,13 +9019,13 @@ msgstr "" "锁定的锁 图标指示该值已更改,不等于系统(或默认值)值。\n" "单击以将当前值重置为系统(或默认值)值。" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "灰色点图标表示该值与上次保存的预设中的值相同。" -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -9036,31 +9034,31 @@ msgstr "" "后退箭头图标指示该值已更改,不等于上次保存的预设。\n" "单击以将当前值重置为上次保存的预设。" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "材料" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "材料打印配置文件" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "支撑头" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "支撑支柱" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "支撑杆和接头的连接" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "自动生成" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" @@ -9069,11 +9067,11 @@ msgstr "" "\"%1%\" 被禁用,因为 \"%2%\" 在 \"%3%\" 类别中处于启用状态。\n" "要启用 \"%1%\",请关闭 \"%2%\"" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "对象高程" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "对象周围填充" @@ -9159,7 +9157,7 @@ msgid "" msgstr "访问 “首选项” 并选中 \"%1%\",再次询问未保存的更改。" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "有些字段太长,无法容纳。鼠标右键单击显示全文。" @@ -9219,39 +9217,39 @@ msgid "" msgstr "预设 \"%1%\" 与新的打印配置文件不兼容,它有以下未保存的更改:" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "挤出机计数" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "选择要比较的预设" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "显示所有预设(包括不兼容)" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "左预设值" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "右预设值" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "其中一个预设未找到" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "不同的预设有不同的打印机技术" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "预设是一样的" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." @@ -9259,11 +9257,11 @@ msgstr "" "预设是不同的。\n" "单击此按钮为左右预设选择相同的预设。" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "未定义类别" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "未定义组" @@ -9907,26 +9905,26 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "无法计算 %1% 的拉伸宽度:无法访问变量 \"%2%\"。" -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "所选 3mf 文件已使用较新版本的 %1% 保存,不兼容。" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "所选 3MF 包含 FDM,支持使用较新版本的 PrusaSlicer 绘制对象,不兼容。" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "所选 3MF 包含使用较新版本的 PrusaSlicer 的接缝绘制对象,不兼容。" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10659,8 +10657,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10675,9 +10673,8 @@ msgstr "此风扇速度在所有桥和悬空期间强制执行。" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10880,8 +10877,8 @@ msgstr "" msgid "Default print profile" msgstr "默认打印配置文件" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -11020,8 +11017,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm 或 %" @@ -11097,7 +11095,7 @@ msgid "Extruder Color" msgstr "挤出头颜色" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "这仅在 Slic3r 界面中用作视觉帮助。" @@ -11186,7 +11184,7 @@ msgstr "" msgid "approximate seconds" msgstr "近似秒" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "颜色" @@ -11350,8 +11348,8 @@ msgstr "" "在此处输入您的耗材直径。需要比较好的精度,建议使用卡钳沿耗材进行多次测量,然" "后计算平均值。" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "密度" @@ -11413,7 +11411,7 @@ msgstr "" msgid "g" msgstr "g" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "(未知)" @@ -13049,7 +13047,7 @@ msgid "" "plane." msgstr "使用此设置可旋转水平平面上的支撑材料模式。" -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13638,37 +13636,35 @@ msgstr "轮廓生成器" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" -"经典轮廓生成器产生具有恒定挤出宽度的轮廓,并且对于非常薄的区域使用间隙填充。 " -"Arachne 引擎产生具有可变挤出宽度的轮廓。" -#: src/libslic3r/PrintConfig.cpp:3073 +#: src/libslic3r/PrintConfig.cpp:3074 msgid "Classic" msgstr "经典" -#: src/libslic3r/PrintConfig.cpp:3074 +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "Arachne" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "轮廓过渡长度" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" -"当随着零件变薄而在不同数量的周长之间过渡时,要分配出一定的空间来分割或连接周" -"长段。" -#: src/libslic3r/PrintConfig.cpp:3089 +#: src/libslic3r/PrintConfig.cpp:3091 msgid "Perimeter transitioning filter margin" msgstr "轮廓过渡过滤器余量" -#: src/libslic3r/PrintConfig.cpp:3091 +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13684,11 +13680,11 @@ msgstr "" "少挤压开始/停止的次数和移动时间。然而,大的挤出宽度变化会导致挤出不足或过度挤" "出的问题。如果用百分比表示(例如25%),将根据喷嘴直径计算。" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "轮廓过渡阈值角度" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13700,11 +13696,11 @@ msgstr "" "中心打印轮廓以填充剩余空间。 减少此设置会减少这些中心轮廓的数量和长度,但可能" "会留下间隙或过度拉伸。" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "轮廓分布计数" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " @@ -13713,64 +13709,24 @@ msgstr "" "从中心开始计算的轮廓数量,变化需要在这些轮廓上展开。较低的值意味着外部轮廓的" "宽度不发生变化。" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "分割中间轮廓阈值" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"最小的挤出宽度,作为正常挤出宽度的一个系数,超过这个宽度的中间轮廓(如果有的" -"话)将被分成两个。减少此设置以使用更多、更薄的轮廓。增加这个设置是为了使用更" -"少、更宽的轮廓。请注意,这适用整个形状应该用轮廓填充,所以这里的中间是指对象" -"的中间在形状的两个外边缘之间,即使实际上在打印中存在填充或其他挤压类型的轮" -"廓。" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "添加中间轮廓阈值" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" -"最小的挤出宽度,作为正常挤出宽度的一个系数,超过这个宽度将添加一个中间周长" -"(如果还没有)。减少此设置以使用更多、更薄的轮廓。增加这个设置是为了使用更" -"少、更宽的轮廓。请注意,这适用整个形状应该用轮廓填充,所以这里的中间是指对象" -"的中间在形状的两个外边缘之间,即使实际上在打印中存在填充或其他挤压类型的轮" -"廓。" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "最小特征尺寸" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -"薄型特征的最小厚度。比这个值薄的模型特征将不被打印,而比最小特征尺寸厚的特征" -"将被加宽到最小轮廓的宽度。" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "最小轮廓宽度" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13782,63 +13738,63 @@ msgstr "" "厚度,则轮廓将变得与特征本身一样厚。 如果以百分比表示(例如 85%),它将根据喷" "嘴直径计算。" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "显示宽度" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "显示宽度" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "显示高度" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "显示高度" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "像素点的数量" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X 中的像素数" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y 中的像素数" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "显示水平镜像" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "水平镜像" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "启用输出图像的水平镜像" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "显示垂直镜像" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "垂直镜像" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "启用输出图像的垂直镜像" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "显示方向" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13847,55 +13803,55 @@ msgstr "" "在 SLA 打印机内设置实际的 LCD 显示方向。人像模式将翻转显示宽度和高度参数的含" "义, 输出图像将旋转 90 度。" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "景观" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "肖像" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "快" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "快速倾斜" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "快速倾斜的时间" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "慢" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "缓慢倾斜" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "缓慢倾斜的时间" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "高粘性" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "高粘性树脂倾斜" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "超慢倾斜的时间" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "区域填充" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13905,59 +13861,59 @@ msgstr "" "如果打印区域超过指定值, \n" "然后缓慢倾斜将被使用,否则 - 快速倾斜" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "打印机缩放校正" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "X 轴上的打印机缩放校正" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "打印机缩放 X 轴校正" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "Y 轴上的打印机缩放校正" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "打印机缩放 Y 轴校正" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "Z 轴上的打印机缩放校正" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "打印机缩放 Z 轴校正" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "打印机绝对校正" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "将根据校正的符号放大或收缩切片的 2D 多边形。" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "象脚最小宽度" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "大象脚补偿时要保持的最小特征宽度。" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "打印机伽玛校正" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " @@ -13966,155 +13922,155 @@ msgstr "" "这将对栅格化的 2D 多边形应用伽玛校正。伽玛值为零表示在中间的阈值阈值。此行为" "消除了抗锯齿,而不会丢失多边形中的孔。" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "SLA 材料类型" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "初始层高度" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "瓶容量" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "毫升" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "瓶重" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "公斤" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "克/毫升" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "钱/瓶" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "褪色图层" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "曝光时间所需的图层数从初始曝光时间到曝光时间逐渐淡入淡出" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "最短曝光时间" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "最大曝光时间" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "曝光时间" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "最短初始暴露时间" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "最大初始曝光时间" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "初始暴露时间" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "扩展校正" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "X 轴膨胀修正" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "Y 轴膨胀修正" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "Z 轴膨胀修正" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA 打印材料注释" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "您可以在此处放置有关 SLA 打印材料的注释。" -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "默认 SLA 材料配置文件" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "生成支撑" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "生成模型的支撑" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "针头前端直径" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "头部指向侧的直径" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "头部穿透" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "针头穿透模型表面的程度" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "针头宽度" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "从后球体中心到前球体中心的宽度" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "立柱直径" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "支撑柱的直径以 mm 为单位" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "小矿柱直径百分比" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "与正常支柱直径相比,较小支柱的百分比,用于正常支柱无法安装的问题区域。" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "麦克斯在柱子上架桥" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." @@ -14122,11 +14078,11 @@ msgstr "" "可放置在支柱上的桥梁的最大数量。桥上有支撑点针头,并以小树枝的形式连接到柱子" "上。" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "立柱连接方式" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -14135,50 +14091,50 @@ msgstr "" "控制两个相邻支柱之间的桥接类型。可以是锯齿形、交叉(双锯齿形)或动态,根据两" "个支柱的距离,在前两个柱之间自动切换。" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "锯齿形" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "交叉" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "动态" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "支柱加宽系数" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" "将桥梁或柱子合并到另一个柱子中可以增加半径。零意味着没有增加,1意味着全增加。" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "支撑基直径" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "柱底直径以 mm 为单位" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "支撑基座高度" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "柱底锥的高度" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "支撑基部安全距离" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " @@ -14187,71 +14143,71 @@ msgstr "" "柱基与模型的最小距离 (以 mm 为单位) 在零高程模式下有意义,在模型和焊盘之间插入" "根据此参数的间隙。" -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "临界角度" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "用于连接支撑杆和结的默认角度。" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "最大桥长" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "搭桥的最大长度" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "最大柱线链接距离" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "两根柱子相互连接的最大距离。零值将禁止柱级联。" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "支撑应提升受支撑的对象。如果启用了\"对象周围的键盘\",则忽略此值。" -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "这是支撑点密度的相对度量。" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "支撑点的最小距离" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "不会将任何支撑点放置在比此阈值更近的位置。" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "使用垫" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "在支撑模型下添加一个垫" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "垫壁厚度" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "垫的厚度及其可选的腔壁。" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "垫墙高度" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -14261,19 +14217,19 @@ msgstr "" "定义垫腔深度。设置为零以禁用型腔。启用此功能时要小心,因为某些树脂可能在腔内产" "生极端的吸力效果,这使得从桶箔上剥下打印件变得困难。" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "垫裙边尺寸" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "焊盘应在包含的几何体周围延伸多远" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "最大合并距离" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -14282,92 +14238,92 @@ msgstr "" "某些对象可以使用几个较小的焊盘而不是单个大垫来配合。此参数定义两个较小焊盘的" "中心应有多远。如果他们更近,他们将被合并到一个垫子。" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "垫壁斜率" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "垫壁相对于床平面的斜率。90 度表示直壁。" -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "在对象周围创建垫盘并忽略支撑高程" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "到处都是物体" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "物体周围的力垫无处不在" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "垫对象间隙" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "在零高程模式下,对象底部和生成的垫盘之间的间隙。" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "垫对象连接器步长" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "连接对象和生成的焊盘的两个连接器杆之间的距离。" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "垫对象连接器宽度" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "连接对象和生成的焊盘的连接器杆的宽度。" -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "垫对象连接器穿透" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "微型连接器应该渗透到模型主体中多少。" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "启用空心化" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "挖空模型使其内部空旷" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "壁厚" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "中空模型的最小壁厚。" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "精确" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "性能与计算精度。较低的值可能会产生不需要的瑕疵。" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -14379,11 +14335,11 @@ msgstr "" "离),然后将其充气回指定的偏移量。更大的闭合距离使内部更圆。零度时,内部与外" "部最为相似。" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "打印速度" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " @@ -14392,143 +14348,143 @@ msgstr "" "当使用粘度更高的材料或一些中空零件时,可能需要较慢的打印速度。它会减缓倾斜运" "动,并在曝光前增加延迟。" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "导出 OBJ" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "将模型导出为 OBJ。" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "导出 SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "将模型切片并导出 SLA 打印图层为 PNG。" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "导出 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "将模型导出为 3MF。" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "导出 AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "将模型导出为 AMF。" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "导出 STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "将模型导出为 STL。" -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "切片模型并导出工具路径为 G-Code。" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "G-Code 查看器" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "可视化已经切片并保存的 G-Code" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "切片" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "根据 printer_technology 值将模型切片为 FFF 或 SLA。" -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "帮助" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "显示此帮助。" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "帮助(FFF 选项)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "显示打印/G-Code 配置选项的完整列表。" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "帮助(SLA 选项)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "显示 SLA 打印配置选项的完整列表。" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "输出模型信息" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "将有关模型的信息写入控制台。" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "保存配置文件" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "将配置保存到指定文件。" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "对齐 XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "将模型与给定点对齐。" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "在给定的 Z 处切割模型。" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "居中" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "将打印居中,以给定的中心为中心。" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "不自动布局" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "在合并之前,不要重新布局给定的模型并保留其原始 XY 坐标。" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "确保在床上" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." @@ -14536,89 +14492,89 @@ msgstr "" "当物体部分位于床下方时,将其抬到床上方。默认情况下,使用 --no-sure-on-bed 禁" "用。" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "复制" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "生成乘以此数量的副本。" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "按网格复制" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "通过创建网格来创建副本。" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" "将提供的模型排列在一个板中,并将它们合并到单个模型中,以便执行一次操作。" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." msgstr "" "尝试修复面(每当我们需要执行模型切片请求的操作时,都会隐式添加此选项)。" -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "围绕 Z 轴的旋转角度(以度表示)。" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "围绕 X 旋转" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "围绕 X 轴的旋转角度(以度表示)。" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "围绕 Y 旋转" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "围绕 Y 轴的旋转角度(以度表示)。" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "缩放因子或百分比。" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "检测给定模型中的未连接部件,并将它们拆分为单独的对象。" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "缩放至合适" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "缩放以适合给定的空间。" -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "忽略不存在的配置文件" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "如果提供给 --load 的文件不存在,不会报错失败。" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "从配置文件和项目文件(3MF、AMF)加载配置时的转发兼容性规则。" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14629,47 +14585,47 @@ msgstr "" "的 PrusaSlicer 可能会扩展支持的固件版本列表。人们可能会决定退出,或者用默认值" "悄悄地或详细地替换未知值。" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "对未知的配置值进行保护" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "通过用默认值详细替换未知配置值来启用读取。" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "通过用默认值替换未知配置值来启用读取。" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "加载配置文件" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "从指定文件加载配置。可以加载多次来从多个文件加载选项。" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "输出文件" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "将写入输出的文件(如果未指定,则基于输入文件)。" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "单实例模式" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " @@ -14678,11 +14634,11 @@ msgstr "" "如果启用,命令行参数将发送到 GUI PrusaSlicer 的现有实例,或者激活现有的 " "PrusaSlicer 窗口。覆盖应用程序首选项中的“单实例”配置值。" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "数据目录" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14691,11 +14647,11 @@ msgstr "" "在给定目录加载和存储设置。这对于维护不同的配置文件或包括网络存储中的配置非常" "有用。" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "日志级别" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" @@ -14704,11 +14660,11 @@ msgstr "" "设置日志敏感度。0:致命、1:错误、2:警告、3:信息、4:调试、5:跟踪\n" "例如。loglevel=2 记录致命、错误和警告级别的消息。" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "使用软件渲染器渲染" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." diff --git a/resources/localization/zh_TW/PrusaSlicer_zh_TW.po b/resources/localization/zh_TW/PrusaSlicer_zh_TW.po index 56cc36700..53d6cc448 100644 --- a/resources/localization/zh_TW/PrusaSlicer_zh_TW.po +++ b/resources/localization/zh_TW/PrusaSlicer_zh_TW.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-12 14:41+0200\n" +"POT-Creation-Date: 2022-08-12 10:25+0200\n" "PO-Revision-Date: 2019-05-22 10:35+0800\n" "Last-Translator: Jiang Yue , patched traditional " "chinese by Cheng-Hsien Ho \n" @@ -20,54 +20,54 @@ msgstr "" "X-Poedit-SearchPath-1: xs/xrc/slic3r/GUI\n" "X-Poedit-SearchPath-2: xs/xrc/slic3r\n" -#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:303 +#: src/slic3r/GUI/AboutDialog.cpp:45 src/slic3r/GUI/AboutDialog.cpp:305 msgid "Portions copyright" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:139 src/slic3r/GUI/AboutDialog.cpp:267 +#: src/slic3r/GUI/AboutDialog.cpp:141 src/slic3r/GUI/AboutDialog.cpp:269 msgid "Copyright" msgstr "" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:141 +#: src/slic3r/GUI/AboutDialog.cpp:143 msgid "" "License agreements of all following programs (libraries) are part of " "application license agreement" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:210 +#: src/slic3r/GUI/AboutDialog.cpp:212 #, c-format, boost-format msgid "About %s" msgstr "關於 %s" -#: src/slic3r/GUI/AboutDialog.cpp:242 src/slic3r/GUI/AboutDialog.cpp:367 +#: src/slic3r/GUI/AboutDialog.cpp:244 src/slic3r/GUI/AboutDialog.cpp:369 #: src/slic3r/GUI/GUI_App.cpp:262 msgid "Version" msgstr "版本" #. TRN "Slic3r _is licensed under the_ License" -#: src/slic3r/GUI/AboutDialog.cpp:269 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:271 src/slic3r/GUI/GUI_App.cpp:268 msgid "is licensed under the" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:270 src/slic3r/GUI/GUI_App.cpp:268 +#: src/slic3r/GUI/AboutDialog.cpp:272 src/slic3r/GUI/GUI_App.cpp:268 msgid "GNU Affero General Public License, version 3" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:271 +#: src/slic3r/GUI/AboutDialog.cpp:273 msgid "" "PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap " "community." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:272 +#: src/slic3r/GUI/AboutDialog.cpp:274 msgid "" "Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " "Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " "numerous others." msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:308 +#: src/slic3r/GUI/AboutDialog.cpp:310 msgid "Copy Version Info" msgstr "" @@ -191,7 +191,7 @@ msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:31 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218 src/slic3r/GUI/Plater.cpp:204 -#: src/slic3r/GUI/Tab.cpp:2764 +#: src/slic3r/GUI/Tab.cpp:2762 msgid "Size" msgstr "尺寸" @@ -249,19 +249,18 @@ msgstr "G-code 0,0 座標相對於矩形框左前角落的距離。" #: src/libslic3r/PrintConfig.cpp:2995 src/libslic3r/PrintConfig.cpp:3002 #: src/libslic3r/PrintConfig.cpp:3016 src/libslic3r/PrintConfig.cpp:3040 #: src/libslic3r/PrintConfig.cpp:3050 src/libslic3r/PrintConfig.cpp:3060 -#: src/libslic3r/PrintConfig.cpp:3083 src/libslic3r/PrintConfig.cpp:3161 -#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3408 -#: src/libslic3r/PrintConfig.cpp:3568 src/libslic3r/PrintConfig.cpp:3577 -#: src/libslic3r/PrintConfig.cpp:3586 src/libslic3r/PrintConfig.cpp:3596 -#: src/libslic3r/PrintConfig.cpp:3661 src/libslic3r/PrintConfig.cpp:3671 -#: src/libslic3r/PrintConfig.cpp:3683 src/libslic3r/PrintConfig.cpp:3703 -#: src/libslic3r/PrintConfig.cpp:3713 src/libslic3r/PrintConfig.cpp:3723 -#: src/libslic3r/PrintConfig.cpp:3741 src/libslic3r/PrintConfig.cpp:3756 -#: src/libslic3r/PrintConfig.cpp:3770 src/libslic3r/PrintConfig.cpp:3781 -#: src/libslic3r/PrintConfig.cpp:3794 src/libslic3r/PrintConfig.cpp:3839 -#: src/libslic3r/PrintConfig.cpp:3849 src/libslic3r/PrintConfig.cpp:3858 -#: src/libslic3r/PrintConfig.cpp:3868 src/libslic3r/PrintConfig.cpp:3884 -#: src/libslic3r/PrintConfig.cpp:3908 +#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3381 +#: src/libslic3r/PrintConfig.cpp:3541 src/libslic3r/PrintConfig.cpp:3550 +#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3569 +#: src/libslic3r/PrintConfig.cpp:3634 src/libslic3r/PrintConfig.cpp:3644 +#: src/libslic3r/PrintConfig.cpp:3656 src/libslic3r/PrintConfig.cpp:3676 +#: src/libslic3r/PrintConfig.cpp:3686 src/libslic3r/PrintConfig.cpp:3696 +#: src/libslic3r/PrintConfig.cpp:3714 src/libslic3r/PrintConfig.cpp:3729 +#: src/libslic3r/PrintConfig.cpp:3743 src/libslic3r/PrintConfig.cpp:3754 +#: src/libslic3r/PrintConfig.cpp:3767 src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3822 src/libslic3r/PrintConfig.cpp:3831 +#: src/libslic3r/PrintConfig.cpp:3841 src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3881 msgid "mm" msgstr "毫米" @@ -294,7 +293,7 @@ msgid "Load shape from STL..." msgstr "從STL文件加載形狀..." #: src/slic3r/GUI/BedShapeDialog.cpp:249 src/slic3r/GUI/GCodeViewer.cpp:3709 -#: src/slic3r/GUI/MainFrame.cpp:2143 +#: src/slic3r/GUI/MainFrame.cpp:2147 msgid "Settings" msgstr "設置" @@ -307,7 +306,7 @@ msgid "Load..." msgstr "" #: src/slic3r/GUI/BedShapeDialog.cpp:292 src/slic3r/GUI/BedShapeDialog.cpp:362 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Remove" msgstr "移除" @@ -506,19 +505,19 @@ msgstr "" msgid "Infill" msgstr "填充" -#: src/slic3r/GUI/ConfigManipulation.cpp:338 +#: src/slic3r/GUI/ConfigManipulation.cpp:336 msgid "Head penetration should not be greater than the head width." msgstr "頭部滲透不應大於頭部寬度。" -#: src/slic3r/GUI/ConfigManipulation.cpp:340 +#: src/slic3r/GUI/ConfigManipulation.cpp:338 msgid "Invalid Head penetration" msgstr "無效的頭部滲透" -#: src/slic3r/GUI/ConfigManipulation.cpp:351 +#: src/slic3r/GUI/ConfigManipulation.cpp:349 msgid "Pinhead diameter should be smaller than the pillar diameter." msgstr "針頭直徑應小於柱直徑。" -#: src/slic3r/GUI/ConfigManipulation.cpp:353 +#: src/slic3r/GUI/ConfigManipulation.cpp:351 msgid "Invalid pinhead diameter" msgstr "針頭直徑無效" @@ -627,7 +626,7 @@ msgid "Standard" msgstr "標準" #: src/slic3r/GUI/ConfigWizard.cpp:331 src/slic3r/GUI/ConfigWizard.cpp:651 -#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3832 +#: src/slic3r/GUI/Preferences.cpp:434 src/slic3r/GUI/Tab.cpp:3830 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1154 msgid "All" msgstr "所有" @@ -867,7 +866,7 @@ msgstr "" msgid "Firmware Type" msgstr "固件類型" -#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2365 +#: src/slic3r/GUI/ConfigWizard.cpp:1357 src/slic3r/GUI/Tab.cpp:2363 msgid "Firmware" msgstr "固件" @@ -1159,7 +1158,7 @@ msgstr "" #: src/slic3r/GUI/DesktopIntegrationDialog.cpp:486 #: src/slic3r/GUI/GLCanvas3D.cpp:4699 src/slic3r/GUI/KBShortcutsDialog.cpp:97 -#: src/slic3r/GUI/MainFrame.cpp:1338 +#: src/slic3r/GUI/MainFrame.cpp:1342 msgid "Undo" msgstr "回復" @@ -1768,7 +1767,7 @@ msgstr "確認" msgid "Cancelling..." msgstr "正在取消...." -#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/GalleryDialog.cpp:69 src/slic3r/GUI/MainFrame.cpp:1404 msgid "Shape Gallery" msgstr "" @@ -1784,7 +1783,7 @@ msgstr "" msgid "Add selected shape(s) to the bed" msgstr "" -#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4151 +#: src/slic3r/GUI/GalleryDialog.cpp:117 src/slic3r/GUI/Tab.cpp:4149 msgid "Add" msgstr "加入" @@ -1794,7 +1793,7 @@ msgstr "" #: src/slic3r/GUI/GalleryDialog.cpp:118 src/slic3r/GUI/GalleryDialog.cpp:508 #: src/slic3r/GUI/GLCanvas3D.cpp:4490 src/slic3r/GUI/GUI_Factories.cpp:444 -#: src/slic3r/GUI/Tab.cpp:3750 +#: src/slic3r/GUI/Tab.cpp:3748 msgid "Delete" msgstr "刪除" @@ -1975,8 +1974,8 @@ msgstr "" msgid "Extrusion" msgstr "" -#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1869 -#: src/slic3r/GUI/Tab.cpp:2811 +#: src/slic3r/GUI/GCodeViewer.cpp:3614 src/slic3r/GUI/Tab.cpp:1867 +#: src/slic3r/GUI/Tab.cpp:2809 msgid "Retraction" msgstr "回縮" @@ -2031,7 +2030,7 @@ msgstr "列印設置" #: src/slic3r/GUI/GCodeViewer.cpp:3700 src/slic3r/GUI/GCodeViewer.cpp:3726 #: src/slic3r/GUI/GUI.cpp:339 src/slic3r/GUI/Plater.cpp:819 -#: src/slic3r/GUI/Tab.cpp:1969 src/slic3r/GUI/Tab.cpp:1970 +#: src/slic3r/GUI/Tab.cpp:1967 src/slic3r/GUI/Tab.cpp:1968 msgid "Filament" msgstr "線材" @@ -2253,7 +2252,7 @@ msgid "Add..." msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4499 src/slic3r/GUI/KBShortcutsDialog.cpp:96 -#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4157 +#: src/slic3r/GUI/Plater.cpp:5496 src/slic3r/GUI/Tab.cpp:4155 msgid "Delete all" msgstr "" @@ -2300,7 +2299,7 @@ msgid "Next Undo action: %1%" msgstr "" #: src/slic3r/GUI/GLCanvas3D.cpp:4738 src/slic3r/GUI/KBShortcutsDialog.cpp:98 -#: src/slic3r/GUI/MainFrame.cpp:1341 +#: src/slic3r/GUI/MainFrame.cpp:1345 msgid "Redo" msgstr "重做" @@ -2340,7 +2339,7 @@ msgid "Selection-Remove from rectangle" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:50 -#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4471 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:160 src/libslic3r/PrintConfig.cpp:4446 msgid "Cut" msgstr "切割" @@ -2595,7 +2594,7 @@ msgid "Quality" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp:34 -#: src/libslic3r/PrintConfig.cpp:3900 +#: src/libslic3r/PrintConfig.cpp:3873 msgid "Closing distance" msgstr "" @@ -2698,7 +2697,7 @@ msgstr "" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:543 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:562 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:578 -#: src/libslic3r/PrintConfig.cpp:4525 +#: src/libslic3r/PrintConfig.cpp:4500 msgid "Rotate" msgstr "旋轉" @@ -2715,7 +2714,7 @@ msgstr "套用" #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:216 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:563 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:579 -#: src/libslic3r/PrintConfig.cpp:4540 +#: src/libslic3r/PrintConfig.cpp:4515 msgid "Scale" msgstr "縮放" @@ -2766,7 +2765,7 @@ msgid "Simplification is currently only allowed when a single part is selected" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp:157 -#: src/slic3r/GUI/MainFrame.cpp:1165 src/slic3r/GUI/MainFrame.cpp:1622 +#: src/slic3r/GUI/MainFrame.cpp:1169 src/slic3r/GUI/MainFrame.cpp:1626 #: src/slic3r/GUI/PrintHostDialogs.cpp:373 msgid "Error" msgstr "錯誤" @@ -2850,7 +2849,7 @@ msgid "Minimal points distance" msgstr "" #: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:46 -#: src/libslic3r/PrintConfig.cpp:3730 +#: src/libslic3r/PrintConfig.cpp:3703 msgid "Support points density" msgstr "支撐點密度" @@ -3614,7 +3613,7 @@ msgid "Speed" msgstr "速度" #: src/slic3r/GUI/GUI_Factories.cpp:133 src/slic3r/GUI/Tab.cpp:1620 -#: src/slic3r/GUI/Tab.cpp:2303 src/libslic3r/PrintConfig.cpp:792 +#: src/slic3r/GUI/Tab.cpp:2301 src/libslic3r/PrintConfig.cpp:792 #: src/libslic3r/PrintConfig.cpp:1465 src/libslic3r/PrintConfig.cpp:1965 #: src/libslic3r/PrintConfig.cpp:2341 src/libslic3r/PrintConfig.cpp:2615 #: src/libslic3r/PrintConfig.cpp:2643 @@ -3637,52 +3636,51 @@ msgstr "環邊和裙邊" #: src/slic3r/GUI/GUI_Factories.cpp:138 src/slic3r/GUI/Tab.cpp:1491 #: src/slic3r/GUI/Tab.cpp:1525 src/slic3r/GUI/Tab.cpp:1642 -#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2030 -#: src/slic3r/GUI/Tab.cpp:2401 src/slic3r/GUI/Tab.cpp:4728 +#: src/slic3r/GUI/Tab.cpp:1646 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:2399 src/slic3r/GUI/Tab.cpp:4726 #: src/libslic3r/PrintConfig.cpp:259 src/libslic3r/PrintConfig.cpp:494 #: src/libslic3r/PrintConfig.cpp:1414 src/libslic3r/PrintConfig.cpp:1501 #: src/libslic3r/PrintConfig.cpp:1548 src/libslic3r/PrintConfig.cpp:2498 #: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:3046 -#: src/libslic3r/PrintConfig.cpp:3080 src/libslic3r/PrintConfig.cpp:3090 -#: src/libslic3r/PrintConfig.cpp:3105 src/libslic3r/PrintConfig.cpp:3118 -#: src/libslic3r/PrintConfig.cpp:3127 src/libslic3r/PrintConfig.cpp:3142 -#: src/libslic3r/PrintConfig.cpp:3157 src/libslic3r/PrintConfig.cpp:3168 -#: src/libslic3r/PrintConfig.cpp:3365 +#: src/libslic3r/PrintConfig.cpp:3081 src/libslic3r/PrintConfig.cpp:3092 +#: src/libslic3r/PrintConfig.cpp:3107 src/libslic3r/PrintConfig.cpp:3120 +#: src/libslic3r/PrintConfig.cpp:3129 src/libslic3r/PrintConfig.cpp:3141 +#: src/libslic3r/PrintConfig.cpp:3338 msgid "Advanced" msgstr "進階" #: src/slic3r/GUI/GUI_Factories.cpp:140 src/slic3r/GUI/Plater.cpp:428 -#: src/slic3r/GUI/Tab.cpp:4662 src/slic3r/GUI/Tab.cpp:4663 -#: src/libslic3r/PrintConfig.cpp:3559 src/libslic3r/PrintConfig.cpp:3566 -#: src/libslic3r/PrintConfig.cpp:3575 src/libslic3r/PrintConfig.cpp:3584 -#: src/libslic3r/PrintConfig.cpp:3594 src/libslic3r/PrintConfig.cpp:3604 -#: src/libslic3r/PrintConfig.cpp:3641 src/libslic3r/PrintConfig.cpp:3648 -#: src/libslic3r/PrintConfig.cpp:3659 src/libslic3r/PrintConfig.cpp:3669 -#: src/libslic3r/PrintConfig.cpp:3678 src/libslic3r/PrintConfig.cpp:3691 -#: src/libslic3r/PrintConfig.cpp:3701 src/libslic3r/PrintConfig.cpp:3710 -#: src/libslic3r/PrintConfig.cpp:3720 src/libslic3r/PrintConfig.cpp:3731 -#: src/libslic3r/PrintConfig.cpp:3739 +#: src/slic3r/GUI/Tab.cpp:4660 src/slic3r/GUI/Tab.cpp:4661 +#: src/libslic3r/PrintConfig.cpp:3532 src/libslic3r/PrintConfig.cpp:3539 +#: src/libslic3r/PrintConfig.cpp:3548 src/libslic3r/PrintConfig.cpp:3557 +#: src/libslic3r/PrintConfig.cpp:3567 src/libslic3r/PrintConfig.cpp:3577 +#: src/libslic3r/PrintConfig.cpp:3614 src/libslic3r/PrintConfig.cpp:3621 +#: src/libslic3r/PrintConfig.cpp:3632 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:3651 src/libslic3r/PrintConfig.cpp:3664 +#: src/libslic3r/PrintConfig.cpp:3674 src/libslic3r/PrintConfig.cpp:3683 +#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3704 +#: src/libslic3r/PrintConfig.cpp:3712 msgid "Supports" msgstr "支撐" #: src/slic3r/GUI/GUI_Factories.cpp:141 src/slic3r/GUI/Plater.cpp:575 -#: src/slic3r/GUI/Tab.cpp:4703 src/slic3r/GUI/Tab.cpp:4704 -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3747 -#: src/libslic3r/PrintConfig.cpp:3754 src/libslic3r/PrintConfig.cpp:3768 -#: src/libslic3r/PrintConfig.cpp:3779 src/libslic3r/PrintConfig.cpp:3789 -#: src/libslic3r/PrintConfig.cpp:3811 src/libslic3r/PrintConfig.cpp:3822 -#: src/libslic3r/PrintConfig.cpp:3829 src/libslic3r/PrintConfig.cpp:3836 -#: src/libslic3r/PrintConfig.cpp:3847 src/libslic3r/PrintConfig.cpp:3856 -#: src/libslic3r/PrintConfig.cpp:3865 +#: src/slic3r/GUI/Tab.cpp:4701 src/slic3r/GUI/Tab.cpp:4702 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3720 +#: src/libslic3r/PrintConfig.cpp:3727 src/libslic3r/PrintConfig.cpp:3741 +#: src/libslic3r/PrintConfig.cpp:3752 src/libslic3r/PrintConfig.cpp:3762 +#: src/libslic3r/PrintConfig.cpp:3784 src/libslic3r/PrintConfig.cpp:3795 +#: src/libslic3r/PrintConfig.cpp:3802 src/libslic3r/PrintConfig.cpp:3809 +#: src/libslic3r/PrintConfig.cpp:3820 src/libslic3r/PrintConfig.cpp:3829 +#: src/libslic3r/PrintConfig.cpp:3838 msgid "Pad" msgstr "墊" -#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4721 -#: src/slic3r/GUI/Tab.cpp:4722 src/libslic3r/SLA/Hollowing.cpp:73 +#: src/slic3r/GUI/GUI_Factories.cpp:142 src/slic3r/GUI/Tab.cpp:4719 +#: src/slic3r/GUI/Tab.cpp:4720 src/libslic3r/SLA/Hollowing.cpp:73 #: src/libslic3r/SLA/Hollowing.cpp:85 src/libslic3r/SLA/Hollowing.cpp:105 -#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3875 -#: src/libslic3r/PrintConfig.cpp:3882 src/libslic3r/PrintConfig.cpp:3892 -#: src/libslic3r/PrintConfig.cpp:3901 +#: src/libslic3r/SLA/Hollowing.cpp:114 src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3855 src/libslic3r/PrintConfig.cpp:3865 +#: src/libslic3r/PrintConfig.cpp:3874 msgid "Hollowing" msgstr "" @@ -3824,7 +3822,7 @@ msgid "Revert conversion from meters" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:859 src/slic3r/GUI/GUI_ObjectList.cpp:2133 -#: src/libslic3r/PrintConfig.cpp:4516 +#: src/libslic3r/PrintConfig.cpp:4491 msgid "Merge" msgstr "合併" @@ -3885,7 +3883,7 @@ msgid "Split the selected object into individual parts" msgstr "" #: src/slic3r/GUI/GUI_Factories.cpp:944 src/slic3r/GUI/GUI_Factories.cpp:954 -#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4545 +#: src/slic3r/GUI/GUI_Factories.cpp:975 src/libslic3r/PrintConfig.cpp:4520 msgid "Split" msgstr "拆分" @@ -4507,11 +4505,11 @@ msgstr "高度" msgid "Width" msgstr "寬度" -#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2015 +#: src/slic3r/GUI/GUI_Preview.cpp:221 src/slic3r/GUI/Tab.cpp:2013 msgid "Fan speed" msgstr "風扇速度" -#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1990 +#: src/slic3r/GUI/GUI_Preview.cpp:222 src/slic3r/GUI/Tab.cpp:1988 msgid "Temperature" msgstr "溫度" @@ -4792,7 +4790,7 @@ msgstr "" msgid "Attention!" msgstr "注意!" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:18 src/slic3r/GUI/MainFrame.cpp:1107 msgid "Keyboard Shortcuts" msgstr "鍵盤快捷鍵" @@ -4829,7 +4827,7 @@ msgid "Load Config from ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:87 src/slic3r/GUI/Plater.cpp:913 -#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4416 +#: src/slic3r/GUI/Plater.cpp:6530 src/libslic3r/PrintConfig.cpp:4391 msgid "Export G-code" msgstr "導出 G-code" @@ -5172,13 +5170,13 @@ msgstr "" msgid "Objects List" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:205 src/slic3r/GUI/MainFrame.cpp:1525 msgid "Open a G-code file" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1355 -#: src/slic3r/GUI/MainFrame.cpp:1359 src/slic3r/GUI/MainFrame.cpp:1526 -#: src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:207 src/slic3r/GUI/MainFrame.cpp:1359 +#: src/slic3r/GUI/MainFrame.cpp:1363 src/slic3r/GUI/MainFrame.cpp:1530 +#: src/slic3r/GUI/MainFrame.cpp:1534 msgid "Reload the plater from disk" msgstr "" @@ -5215,7 +5213,7 @@ msgid "Show/Hide G-code window" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:230 src/slic3r/GUI/Plater.cpp:4467 -#: src/slic3r/GUI/Tab.cpp:2831 +#: src/slic3r/GUI/Tab.cpp:2829 msgid "Preview" msgstr "預覽" @@ -5293,7 +5291,7 @@ msgid "Keyboard shortcuts" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:75 src/slic3r/GUI/MainFrame.cpp:89 -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open a new PrusaSlicer instance" msgstr "" @@ -5301,11 +5299,11 @@ msgstr "" msgid "G-code preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:78 src/slic3r/GUI/MainFrame.cpp:1308 msgid "Open G-code viewer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:89 src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open PrusaSlicer" msgstr "" @@ -5331,13 +5329,13 @@ msgid "Print Settings" msgstr "列印設置" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:339 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:535 msgid "Material Settings" msgstr "材料設置" #: src/slic3r/GUI/MainFrame.cpp:286 src/slic3r/GUI/MainFrame.cpp:337 -#: src/slic3r/GUI/MainFrame.cpp:2099 src/slic3r/GUI/MainFrame.cpp:2100 +#: src/slic3r/GUI/MainFrame.cpp:2103 src/slic3r/GUI/MainFrame.cpp:2104 #: src/slic3r/GUI/Tab.hpp:461 msgid "Filament Settings" msgstr "耗材絲設置" @@ -5420,621 +5418,621 @@ msgstr "關於對話框" msgid "Show Tip of the Day" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1100 +#: src/slic3r/GUI/MainFrame.cpp:1104 msgid "" "Opens Tip of the day notification in bottom right corner or shows another " "tip if already opened." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1103 +#: src/slic3r/GUI/MainFrame.cpp:1107 msgid "Show the list of the keyboard shortcuts" msgstr "顯示鍵盤快捷鍵的列表" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso" msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:1117 +#: src/slic3r/GUI/MainFrame.cpp:1121 msgid "Iso View" msgstr "Iso 視圖" #. TRN To be shown in the main menu View->Top #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1121 src/libslic3r/PrintConfig.cpp:2885 +#: src/slic3r/GUI/MainFrame.cpp:1125 src/libslic3r/PrintConfig.cpp:2885 #: src/libslic3r/PrintConfig.cpp:2894 msgid "Top" msgstr "頂部" -#: src/slic3r/GUI/MainFrame.cpp:1121 +#: src/slic3r/GUI/MainFrame.cpp:1125 msgid "Top View" msgstr "頂視圖" #. TRN To be shown in the main menu View->Bottom #. TRN To be shown in Print Settings "Bottom solid layers" #. TRN To be shown in Print Settings "Top solid layers" -#: src/slic3r/GUI/MainFrame.cpp:1124 src/libslic3r/PrintConfig.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:445 #: src/libslic3r/PrintConfig.cpp:454 msgid "Bottom" msgstr "底部" -#: src/slic3r/GUI/MainFrame.cpp:1124 +#: src/slic3r/GUI/MainFrame.cpp:1128 msgid "Bottom View" msgstr "底部視圖" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front" msgstr "前面" -#: src/slic3r/GUI/MainFrame.cpp:1126 +#: src/slic3r/GUI/MainFrame.cpp:1130 msgid "Front View" msgstr "正視圖" -#: src/slic3r/GUI/MainFrame.cpp:1128 src/libslic3r/PrintConfig.cpp:2242 +#: src/slic3r/GUI/MainFrame.cpp:1132 src/libslic3r/PrintConfig.cpp:2242 msgid "Rear" msgstr "背面" -#: src/slic3r/GUI/MainFrame.cpp:1128 +#: src/slic3r/GUI/MainFrame.cpp:1132 msgid "Rear View" msgstr "後視圖" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left" msgstr "左" -#: src/slic3r/GUI/MainFrame.cpp:1130 +#: src/slic3r/GUI/MainFrame.cpp:1134 msgid "Left View" msgstr "左視圖" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right" msgstr "右" -#: src/slic3r/GUI/MainFrame.cpp:1132 +#: src/slic3r/GUI/MainFrame.cpp:1136 msgid "Right View" msgstr "右視圖" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "&New Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1145 +#: src/slic3r/GUI/MainFrame.cpp:1149 msgid "Start a new project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "&Open Project" msgstr "&打開項目" -#: src/slic3r/GUI/MainFrame.cpp:1148 +#: src/slic3r/GUI/MainFrame.cpp:1152 msgid "Open a project file" msgstr "打開項目文件" -#: src/slic3r/GUI/MainFrame.cpp:1153 +#: src/slic3r/GUI/MainFrame.cpp:1157 msgid "Recent projects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1165 +#: src/slic3r/GUI/MainFrame.cpp:1169 msgid "" "The selected project is no longer available.\n" "Do you want to remove it from the recent projects list?" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "&Save Project" msgstr "&保存項目" -#: src/slic3r/GUI/MainFrame.cpp:1190 +#: src/slic3r/GUI/MainFrame.cpp:1194 msgid "Save current project file" msgstr "將當前項目文件另存爲" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save Project &as" msgstr "保存項目 &爲" -#: src/slic3r/GUI/MainFrame.cpp:1194 src/slic3r/GUI/MainFrame.cpp:1196 +#: src/slic3r/GUI/MainFrame.cpp:1198 src/slic3r/GUI/MainFrame.cpp:1200 msgid "Save current project file as" msgstr "將當前項目文件另存爲" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Import STL/OBJ/AM&F/3MF" msgstr "導入 STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:1204 +#: src/slic3r/GUI/MainFrame.cpp:1208 msgid "Load a model" msgstr "加載模型" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Import STL (Imperial Units)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1208 +#: src/slic3r/GUI/MainFrame.cpp:1212 msgid "Load an model saved with imperial units" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Import SL1 / SL1S Archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1212 +#: src/slic3r/GUI/MainFrame.cpp:1216 msgid "Load an SL1 / Sl1S archive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Import &Config" msgstr "導入&配置" -#: src/slic3r/GUI/MainFrame.cpp:1217 +#: src/slic3r/GUI/MainFrame.cpp:1221 msgid "Load exported configuration file" msgstr "加載導出的配置文件" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Import Config from &Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1220 +#: src/slic3r/GUI/MainFrame.cpp:1224 msgid "Load configuration from project file" msgstr "從項目文件加載配置" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Import Config &Bundle" msgstr "導入配置&組" -#: src/slic3r/GUI/MainFrame.cpp:1224 +#: src/slic3r/GUI/MainFrame.cpp:1228 msgid "Load presets from a bundle" msgstr "從包加載預設" -#: src/slic3r/GUI/MainFrame.cpp:1227 +#: src/slic3r/GUI/MainFrame.cpp:1231 msgid "&Import" msgstr "&導入" -#: src/slic3r/GUI/MainFrame.cpp:1230 src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1586 msgid "Export &G-code" msgstr "導出 &G-code" -#: src/slic3r/GUI/MainFrame.cpp:1230 +#: src/slic3r/GUI/MainFrame.cpp:1234 msgid "Export current plate as G-code" msgstr "將當佈局板導出爲 G-code" -#: src/slic3r/GUI/MainFrame.cpp:1234 src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1238 src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1234 +#: src/slic3r/GUI/MainFrame.cpp:1238 msgid "Send to print current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export G-code to SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1238 +#: src/slic3r/GUI/MainFrame.cpp:1242 msgid "Export current plate as G-code to SD card / Flash drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export Plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1242 +#: src/slic3r/GUI/MainFrame.cpp:1246 msgid "Export current plate as STL" msgstr "將當前佈局板導出爲 STL" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export Plate as STL &Including Supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1245 +#: src/slic3r/GUI/MainFrame.cpp:1249 msgid "Export current plate as STL including supports" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export &Toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1253 src/slic3r/GUI/MainFrame.cpp:1534 +#: src/slic3r/GUI/MainFrame.cpp:1257 src/slic3r/GUI/MainFrame.cpp:1538 msgid "Export toolpaths as OBJ" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export &Config" msgstr "導出&配置" -#: src/slic3r/GUI/MainFrame.cpp:1257 +#: src/slic3r/GUI/MainFrame.cpp:1261 msgid "Export current configuration to file" msgstr "將當前配置導出到文件" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export Config &Bundle" msgstr "導出配置&包" -#: src/slic3r/GUI/MainFrame.cpp:1260 +#: src/slic3r/GUI/MainFrame.cpp:1264 msgid "Export all presets to file" msgstr "將所有預設導出到文件" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export Config Bundle With Physical Printers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1263 +#: src/slic3r/GUI/MainFrame.cpp:1267 msgid "Export all presets including physical printers to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1266 +#: src/slic3r/GUI/MainFrame.cpp:1270 msgid "&Export" msgstr "導出(&E)" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Ejec&t SD Card / Flash Drive" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1268 +#: src/slic3r/GUI/MainFrame.cpp:1272 msgid "Eject SD card / Flash drive after the G-code was exported to it." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Quick Slice" msgstr "快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1276 +#: src/slic3r/GUI/MainFrame.cpp:1280 msgid "Slice a file into a G-code" msgstr "將文件切片成 G-code" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Quick Slice and Save As" msgstr "快速切片並另存爲" -#: src/slic3r/GUI/MainFrame.cpp:1282 +#: src/slic3r/GUI/MainFrame.cpp:1286 msgid "Slice a file into a G-code, save as" msgstr "將文件切片成 G-code, 並另存爲" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat Last Quick Slice" msgstr "重複上一個快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1288 +#: src/slic3r/GUI/MainFrame.cpp:1292 msgid "Repeat last quick slice" msgstr "重複上一個快速切片" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "(Re)Slice No&w" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1296 +#: src/slic3r/GUI/MainFrame.cpp:1300 msgid "Start new slicing process" msgstr "開始新的切片流程" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "&Repair STL file" msgstr "&修復 STL 文件" -#: src/slic3r/GUI/MainFrame.cpp:1300 +#: src/slic3r/GUI/MainFrame.cpp:1304 msgid "Automatically repair an STL file" msgstr "自動修復 STL 文件" -#: src/slic3r/GUI/MainFrame.cpp:1304 +#: src/slic3r/GUI/MainFrame.cpp:1308 msgid "&G-code Preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 msgid "&Quit" msgstr "&退出" -#: src/slic3r/GUI/MainFrame.cpp:1307 src/slic3r/GUI/MainFrame.cpp:1541 +#: src/slic3r/GUI/MainFrame.cpp:1311 src/slic3r/GUI/MainFrame.cpp:1545 #, c-format, boost-format msgid "Quit %s" msgstr "結束 %s" -#: src/slic3r/GUI/MainFrame.cpp:1322 +#: src/slic3r/GUI/MainFrame.cpp:1326 msgid "&Select All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1323 +#: src/slic3r/GUI/MainFrame.cpp:1327 msgid "Selects all objects" msgstr "選擇所有對象" -#: src/slic3r/GUI/MainFrame.cpp:1325 +#: src/slic3r/GUI/MainFrame.cpp:1329 msgid "D&eselect All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1326 +#: src/slic3r/GUI/MainFrame.cpp:1330 msgid "Deselects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1329 +#: src/slic3r/GUI/MainFrame.cpp:1333 msgid "&Delete Selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1330 +#: src/slic3r/GUI/MainFrame.cpp:1334 msgid "Deletes the current selection" msgstr "刪除當前所選內容" -#: src/slic3r/GUI/MainFrame.cpp:1332 +#: src/slic3r/GUI/MainFrame.cpp:1336 msgid "Delete &All" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1333 +#: src/slic3r/GUI/MainFrame.cpp:1337 msgid "Deletes all objects" msgstr "刪除所有對象" -#: src/slic3r/GUI/MainFrame.cpp:1337 +#: src/slic3r/GUI/MainFrame.cpp:1341 msgid "&Undo" msgstr "回復(&U)" -#: src/slic3r/GUI/MainFrame.cpp:1340 +#: src/slic3r/GUI/MainFrame.cpp:1344 msgid "&Redo" msgstr "重做(&R)" -#: src/slic3r/GUI/MainFrame.cpp:1345 +#: src/slic3r/GUI/MainFrame.cpp:1349 msgid "&Copy" msgstr "複製(&C)" -#: src/slic3r/GUI/MainFrame.cpp:1346 +#: src/slic3r/GUI/MainFrame.cpp:1350 msgid "Copy selection to clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1348 +#: src/slic3r/GUI/MainFrame.cpp:1352 msgid "&Paste" msgstr "貼上(&P)" -#: src/slic3r/GUI/MainFrame.cpp:1349 +#: src/slic3r/GUI/MainFrame.cpp:1353 msgid "Paste clipboard" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1354 src/slic3r/GUI/MainFrame.cpp:1358 -#: src/slic3r/GUI/MainFrame.cpp:1525 src/slic3r/GUI/MainFrame.cpp:1529 +#: src/slic3r/GUI/MainFrame.cpp:1358 src/slic3r/GUI/MainFrame.cpp:1362 +#: src/slic3r/GUI/MainFrame.cpp:1529 src/slic3r/GUI/MainFrame.cpp:1533 msgid "Re&load from Disk" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1364 +#: src/slic3r/GUI/MainFrame.cpp:1368 msgid "Searc&h" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1365 +#: src/slic3r/GUI/MainFrame.cpp:1369 msgid "Search in settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "&Plater Tab" msgstr "&佈局器 選項卡" -#: src/slic3r/GUI/MainFrame.cpp:1373 +#: src/slic3r/GUI/MainFrame.cpp:1377 msgid "Show the plater" msgstr "顯示平臺佈局器" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "P&rint Settings Tab" msgstr "&列印設置選項卡" -#: src/slic3r/GUI/MainFrame.cpp:1378 +#: src/slic3r/GUI/MainFrame.cpp:1382 msgid "Show the print settings" msgstr "顯示列印設置" -#: src/slic3r/GUI/MainFrame.cpp:1381 src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1385 src/slic3r/GUI/MainFrame.cpp:1589 msgid "&Filament Settings Tab" msgstr "&線材設置選項卡" -#: src/slic3r/GUI/MainFrame.cpp:1381 +#: src/slic3r/GUI/MainFrame.cpp:1385 msgid "Show the filament settings" msgstr "顯示耗材設置" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Print&er Settings Tab" msgstr "&印表機設置選項卡" -#: src/slic3r/GUI/MainFrame.cpp:1385 +#: src/slic3r/GUI/MainFrame.cpp:1389 msgid "Show the printer settings" msgstr "顯示印表機設置" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:1391 +#: src/slic3r/GUI/MainFrame.cpp:1395 msgid "Show the 3D editing view" msgstr "顯示3D 編輯視圖" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Pre&view" msgstr "預覽" -#: src/slic3r/GUI/MainFrame.cpp:1394 +#: src/slic3r/GUI/MainFrame.cpp:1398 msgid "Show the 3D slices preview" msgstr "顯示3D 切片預覽" -#: src/slic3r/GUI/MainFrame.cpp:1400 +#: src/slic3r/GUI/MainFrame.cpp:1404 msgid "Open the dialog to modify shape gallery" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Print &Host Upload Queue" msgstr "列印&主機上載隊列" -#: src/slic3r/GUI/MainFrame.cpp:1412 +#: src/slic3r/GUI/MainFrame.cpp:1416 msgid "Display the Print Host Upload Queue window" msgstr "顯示 \"列印主機上載隊列\" 窗口" -#: src/slic3r/GUI/MainFrame.cpp:1416 +#: src/slic3r/GUI/MainFrame.cpp:1420 msgid "Open New Instance" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1563 +#: src/slic3r/GUI/MainFrame.cpp:1424 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1566 msgid "Compare Presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1420 +#: src/slic3r/GUI/MainFrame.cpp:1424 msgid "Compare presets" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show &Labels" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1430 +#: src/slic3r/GUI/MainFrame.cpp:1434 msgid "Show object/instance labels in 3D scene" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 +#: src/slic3r/GUI/MainFrame.cpp:1437 msgid "&Collapse Sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1433 src/slic3r/GUI/Plater.cpp:2320 +#: src/slic3r/GUI/MainFrame.cpp:1437 src/slic3r/GUI/Plater.cpp:2320 msgid "Collapse sidebar" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "&Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1438 +#: src/slic3r/GUI/MainFrame.cpp:1442 msgid "Fullscreen" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1453 src/slic3r/GUI/MainFrame.cpp:1556 +#: src/slic3r/GUI/MainFrame.cpp:1457 src/slic3r/GUI/MainFrame.cpp:1560 msgid "&File" msgstr "&文件" -#: src/slic3r/GUI/MainFrame.cpp:1454 +#: src/slic3r/GUI/MainFrame.cpp:1458 msgid "&Edit" msgstr "&編輯" -#: src/slic3r/GUI/MainFrame.cpp:1455 +#: src/slic3r/GUI/MainFrame.cpp:1459 msgid "&Window" msgstr "&窗口" -#: src/slic3r/GUI/MainFrame.cpp:1456 src/slic3r/GUI/MainFrame.cpp:1557 +#: src/slic3r/GUI/MainFrame.cpp:1460 src/slic3r/GUI/MainFrame.cpp:1561 msgid "&View" msgstr "&視圖" -#: src/slic3r/GUI/MainFrame.cpp:1459 src/slic3r/GUI/MainFrame.cpp:1560 +#: src/slic3r/GUI/MainFrame.cpp:1463 src/slic3r/GUI/MainFrame.cpp:1564 msgid "&Help" msgstr "&幫助" -#: src/slic3r/GUI/MainFrame.cpp:1521 +#: src/slic3r/GUI/MainFrame.cpp:1525 msgid "&Open G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1537 +#: src/slic3r/GUI/MainFrame.cpp:1541 msgid "Open &PrusaSlicer" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1582 +#: src/slic3r/GUI/MainFrame.cpp:1586 msgid "E&xport" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1583 +#: src/slic3r/GUI/MainFrame.cpp:1587 msgid "S&end to print" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1585 +#: src/slic3r/GUI/MainFrame.cpp:1589 msgid "Mate&rial Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1609 +#: src/slic3r/GUI/MainFrame.cpp:1613 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "選擇要切片的文件(STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:1621 +#: src/slic3r/GUI/MainFrame.cpp:1625 msgid "No previously sliced file." msgstr "沒有預切片的文件。" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid "Previously sliced file (" msgstr "預切片文件 (" -#: src/slic3r/GUI/MainFrame.cpp:1628 +#: src/slic3r/GUI/MainFrame.cpp:1632 msgid ") not found." msgstr ") 無法找到。" -#: src/slic3r/GUI/MainFrame.cpp:1629 +#: src/slic3r/GUI/MainFrame.cpp:1633 msgid "File Not Found" msgstr "文件未找到" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 #, c-format, boost-format msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:1664 +#: src/slic3r/GUI/MainFrame.cpp:1668 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:1676 +#: src/slic3r/GUI/MainFrame.cpp:1680 msgid "Save zip file as:" msgstr "將 zip 文件另存爲:" -#: src/slic3r/GUI/MainFrame.cpp:1685 src/slic3r/GUI/Plater.cpp:3316 +#: src/slic3r/GUI/MainFrame.cpp:1689 src/slic3r/GUI/Plater.cpp:3316 #: src/slic3r/GUI/Plater.cpp:6051 src/slic3r/GUI/Tab.cpp:1663 -#: src/slic3r/GUI/Tab.cpp:4729 +#: src/slic3r/GUI/Tab.cpp:4727 msgid "Slicing" msgstr "切片" #. TRN "Processing input_file_basename" -#: src/slic3r/GUI/MainFrame.cpp:1687 +#: src/slic3r/GUI/MainFrame.cpp:1691 #, c-format, boost-format msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1710 +#: src/slic3r/GUI/MainFrame.cpp:1714 #, boost-format msgid "%1% was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1713 +#: src/slic3r/GUI/MainFrame.cpp:1717 msgid "Slicing Done!" msgstr "切片完成!" -#: src/slic3r/GUI/MainFrame.cpp:1729 +#: src/slic3r/GUI/MainFrame.cpp:1733 msgid "Select the STL file to repair:" msgstr "選擇要修復的 STL 文件:" -#: src/slic3r/GUI/MainFrame.cpp:1739 +#: src/slic3r/GUI/MainFrame.cpp:1743 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "將 OBJ 文件 (不像 STL 那樣容易發生座標錯誤) 保存爲:" -#: src/slic3r/GUI/MainFrame.cpp:1750 +#: src/slic3r/GUI/MainFrame.cpp:1754 msgid "Your file was repaired." msgstr "您的文件已修復。" -#: src/slic3r/GUI/MainFrame.cpp:1750 src/libslic3r/PrintConfig.cpp:4521 +#: src/slic3r/GUI/MainFrame.cpp:1754 src/libslic3r/PrintConfig.cpp:4496 msgid "Repair" msgstr "修復" -#: src/slic3r/GUI/MainFrame.cpp:1764 +#: src/slic3r/GUI/MainFrame.cpp:1768 msgid "Save configuration as:" msgstr "將配置另存爲:" -#: src/slic3r/GUI/MainFrame.cpp:1781 +#: src/slic3r/GUI/MainFrame.cpp:1785 msgid "Loading of a configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1783 src/slic3r/GUI/MainFrame.cpp:1848 +#: src/slic3r/GUI/MainFrame.cpp:1787 src/slic3r/GUI/MainFrame.cpp:1852 msgid "Select configuration to load:" msgstr "選擇要加載的配置:" -#: src/slic3r/GUI/MainFrame.cpp:1812 +#: src/slic3r/GUI/MainFrame.cpp:1816 msgid "Exporting configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1813 +#: src/slic3r/GUI/MainFrame.cpp:1817 msgid "" "Some presets are modified and the unsaved changes will not be exported into " "configuration bundle." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1822 +#: src/slic3r/GUI/MainFrame.cpp:1826 msgid "Save presets bundle as:" msgstr "將預設包保存爲:" -#: src/slic3r/GUI/MainFrame.cpp:1845 +#: src/slic3r/GUI/MainFrame.cpp:1849 msgid "Loading of a configuration bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:1875 +#: src/slic3r/GUI/MainFrame.cpp:1879 #, c-format, boost-format msgid "%d presets successfully imported." msgstr "%d 預設已成功導入。" @@ -6251,8 +6249,8 @@ msgstr "" msgid "Instance %d" msgstr "" -#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4567 -#: src/slic3r/GUI/Tab.cpp:4658 +#: src/slic3r/GUI/ObjectDataViewModel.cpp:105 src/slic3r/GUI/Tab.cpp:4565 +#: src/slic3r/GUI/Tab.cpp:4656 msgid "Layers" msgstr "圖層" @@ -6322,7 +6320,7 @@ msgstr "" msgid "Add preset for this printer device" msgstr "" -#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2254 +#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:210 src/slic3r/GUI/Tab.cpp:2252 msgid "Print Host upload" msgstr "列印主機上傳隊列" @@ -6470,7 +6468,7 @@ msgid "Select what kind of support do you need" msgstr "選擇您需要的支持類型" #: src/slic3r/GUI/Plater.cpp:433 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:3640 +#: src/libslic3r/PrintConfig.cpp:3613 msgid "Support on build plate only" msgstr "僅在熱牀上生成支撐" @@ -6566,7 +6564,7 @@ msgid "(including spool)" msgstr "" #: src/slic3r/GUI/Plater.cpp:1411 src/libslic3r/PrintConfig.cpp:1067 -#: src/libslic3r/PrintConfig.cpp:3434 src/libslic3r/PrintConfig.cpp:3435 +#: src/libslic3r/PrintConfig.cpp:3407 src/libslic3r/PrintConfig.cpp:3408 msgid "Cost" msgstr "單價" @@ -7028,10 +7026,10 @@ msgstr "" msgid "Paste From Clipboard" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2289 -#: src/slic3r/GUI/Tab.cpp:2516 src/slic3r/GUI/Tab.cpp:2623 +#: src/slic3r/GUI/Preferences.cpp:106 src/slic3r/GUI/Tab.cpp:2287 +#: src/slic3r/GUI/Tab.cpp:2514 src/slic3r/GUI/Tab.cpp:2621 #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "General" msgstr "常規" @@ -7471,7 +7469,7 @@ msgid "Add/Remove presets" msgstr "" #: src/slic3r/GUI/PresetComboBoxes.cpp:702 -#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:742 src/slic3r/GUI/Tab.cpp:3245 msgid "Add physical printer" msgstr "" @@ -7483,7 +7481,7 @@ msgstr "" msgid "Change extruder color" msgstr "" -#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3247 +#: src/slic3r/GUI/PresetComboBoxes.cpp:730 src/slic3r/GUI/Tab.cpp:3245 msgid "Edit physical printer" msgstr "" @@ -7780,11 +7778,11 @@ msgstr "完全不存在" #: src/slic3r/GUI/RammingChart.cpp:90 src/slic3r/GUI/WipeTowerDialog.cpp:114 #: src/libslic3r/PrintConfig.cpp:951 src/libslic3r/PrintConfig.cpp:995 -#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3292 -#: src/libslic3r/PrintConfig.cpp:3301 src/libslic3r/PrintConfig.cpp:3310 -#: src/libslic3r/PrintConfig.cpp:3451 src/libslic3r/PrintConfig.cpp:3459 -#: src/libslic3r/PrintConfig.cpp:3467 src/libslic3r/PrintConfig.cpp:3474 -#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3490 +#: src/libslic3r/PrintConfig.cpp:1010 src/libslic3r/PrintConfig.cpp:3265 +#: src/libslic3r/PrintConfig.cpp:3274 src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3424 src/libslic3r/PrintConfig.cpp:3432 +#: src/libslic3r/PrintConfig.cpp:3440 src/libslic3r/PrintConfig.cpp:3447 +#: src/libslic3r/PrintConfig.cpp:3455 src/libslic3r/PrintConfig.cpp:3463 msgid "s" msgstr "s" @@ -7893,12 +7891,12 @@ msgid "Just switch to \"%1%\" preset" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2651 +#: src/slic3r/GUI/Tab.cpp:2649 msgid "Stealth" msgstr "" #: src/slic3r/GUI/Search.cpp:90 src/slic3r/GUI/Search.cpp:336 -#: src/slic3r/GUI/Tab.cpp:2645 +#: src/slic3r/GUI/Tab.cpp:2643 msgid "Normal" msgstr "正常" @@ -8149,7 +8147,7 @@ msgstr "" msgid "symbolic profile name" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4656 +#: src/slic3r/GUI/Tab.cpp:1447 src/slic3r/GUI/Tab.cpp:4654 msgid "Layers and perimeters" msgstr "層和輪廓" @@ -8237,7 +8235,7 @@ msgstr "交疊" msgid "Flow" msgstr "流量" -#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1699 +#: src/slic3r/GUI/Tab.cpp:1671 src/slic3r/GUI/Tab.cpp:1697 msgid "Other" msgstr "其他" @@ -8245,52 +8243,52 @@ msgstr "其他" msgid "Arachne perimeter generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1684 src/slic3r/GUI/Tab.cpp:4733 +#: src/slic3r/GUI/Tab.cpp:1682 src/slic3r/GUI/Tab.cpp:4731 msgid "Output options" msgstr "輸出選項" -#: src/slic3r/GUI/Tab.cpp:1685 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "Sequential printing" msgstr "順序列印" -#: src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1685 msgid "Extruder clearance" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1692 src/slic3r/GUI/Tab.cpp:4734 +#: src/slic3r/GUI/Tab.cpp:1690 src/slic3r/GUI/Tab.cpp:4732 msgid "Output file" msgstr "輸出文件" -#: src/slic3r/GUI/Tab.cpp:1711 src/libslic3r/PrintConfig.cpp:2010 +#: src/slic3r/GUI/Tab.cpp:1709 src/libslic3r/PrintConfig.cpp:2010 msgid "Post-processing scripts" msgstr "後處理腳本" -#: src/slic3r/GUI/Tab.cpp:1723 src/slic3r/GUI/Tab.cpp:1724 -#: src/slic3r/GUI/Tab.cpp:2109 src/slic3r/GUI/Tab.cpp:2110 -#: src/slic3r/GUI/Tab.cpp:2497 src/slic3r/GUI/Tab.cpp:2498 -#: src/slic3r/GUI/Tab.cpp:2570 src/slic3r/GUI/Tab.cpp:2571 -#: src/slic3r/GUI/Tab.cpp:3956 src/slic3r/GUI/Tab.cpp:4584 -#: src/slic3r/GUI/Tab.cpp:4585 +#: src/slic3r/GUI/Tab.cpp:1721 src/slic3r/GUI/Tab.cpp:1722 +#: src/slic3r/GUI/Tab.cpp:2107 src/slic3r/GUI/Tab.cpp:2108 +#: src/slic3r/GUI/Tab.cpp:2495 src/slic3r/GUI/Tab.cpp:2496 +#: src/slic3r/GUI/Tab.cpp:2568 src/slic3r/GUI/Tab.cpp:2569 +#: src/slic3r/GUI/Tab.cpp:3954 src/slic3r/GUI/Tab.cpp:4582 +#: src/slic3r/GUI/Tab.cpp:4583 msgid "Notes" msgstr "備註" -#: src/slic3r/GUI/Tab.cpp:1730 src/slic3r/GUI/Tab.cpp:2117 -#: src/slic3r/GUI/Tab.cpp:2504 src/slic3r/GUI/Tab.cpp:2577 -#: src/slic3r/GUI/Tab.cpp:4592 src/slic3r/GUI/Tab.cpp:4739 +#: src/slic3r/GUI/Tab.cpp:1728 src/slic3r/GUI/Tab.cpp:2115 +#: src/slic3r/GUI/Tab.cpp:2502 src/slic3r/GUI/Tab.cpp:2575 +#: src/slic3r/GUI/Tab.cpp:4590 src/slic3r/GUI/Tab.cpp:4737 msgid "Dependencies" msgstr "依賴" -#: src/slic3r/GUI/Tab.cpp:1731 src/slic3r/GUI/Tab.cpp:2118 -#: src/slic3r/GUI/Tab.cpp:2505 src/slic3r/GUI/Tab.cpp:2578 -#: src/slic3r/GUI/Tab.cpp:4593 src/slic3r/GUI/Tab.cpp:4740 +#: src/slic3r/GUI/Tab.cpp:1729 src/slic3r/GUI/Tab.cpp:2116 +#: src/slic3r/GUI/Tab.cpp:2503 src/slic3r/GUI/Tab.cpp:2576 +#: src/slic3r/GUI/Tab.cpp:4591 src/slic3r/GUI/Tab.cpp:4738 msgid "Profile dependencies" msgstr "配置文件依賴" -#: src/slic3r/GUI/Tab.cpp:1770 +#: src/slic3r/GUI/Tab.cpp:1768 msgid "Post processing scripts shall modify G-code file in place." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1849 +#: src/slic3r/GUI/Tab.cpp:1847 #, c-format, boost-format msgid "" "The following line %s contains reserved keywords.\n" @@ -8302,82 +8300,82 @@ msgid_plural "" "printing time estimation." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:1854 +#: src/slic3r/GUI/Tab.cpp:1852 msgid "Found reserved keywords in" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1868 +#: src/slic3r/GUI/Tab.cpp:1866 msgid "Filament Overrides" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1991 +#: src/slic3r/GUI/Tab.cpp:1989 msgid "Nozzle" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1996 +#: src/slic3r/GUI/Tab.cpp:1994 msgid "Bed" msgstr "牀" -#: src/slic3r/GUI/Tab.cpp:2001 +#: src/slic3r/GUI/Tab.cpp:1999 msgid "Cooling" msgstr "冷卻" -#: src/slic3r/GUI/Tab.cpp:2003 src/libslic3r/PrintConfig.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:2001 src/libslic3r/PrintConfig.cpp:1912 #: src/libslic3r/PrintConfig.cpp:2962 msgid "Enable" msgstr "使能" -#: src/slic3r/GUI/Tab.cpp:2014 +#: src/slic3r/GUI/Tab.cpp:2012 msgid "Fan settings" msgstr "風扇設置" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2023 msgid "Cooling thresholds" msgstr "冷卻閾值" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2029 msgid "Filament properties" msgstr "耗材絲特性" -#: src/slic3r/GUI/Tab.cpp:2038 +#: src/slic3r/GUI/Tab.cpp:2036 msgid "Print speed override" msgstr "列印速度覆蓋" -#: src/slic3r/GUI/Tab.cpp:2048 +#: src/slic3r/GUI/Tab.cpp:2046 msgid "Wipe tower parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2051 +#: src/slic3r/GUI/Tab.cpp:2049 msgid "Toolchange parameters with single extruder MM printers" msgstr "單擠出機 MM 印表機的工具更換參數" -#: src/slic3r/GUI/Tab.cpp:2064 +#: src/slic3r/GUI/Tab.cpp:2062 msgid "Ramming settings" msgstr "衝壓設置" -#: src/slic3r/GUI/Tab.cpp:2088 src/slic3r/GUI/Tab.cpp:2409 -#: src/slic3r/GUI/Tab.cpp:4263 src/libslic3r/GCode.cpp:733 +#: src/slic3r/GUI/Tab.cpp:2086 src/slic3r/GUI/Tab.cpp:2407 +#: src/slic3r/GUI/Tab.cpp:4261 src/libslic3r/GCode.cpp:733 #: src/libslic3r/PrintConfig.cpp:2468 msgid "Custom G-code" msgstr "自定義 G-code" -#: src/slic3r/GUI/Tab.cpp:2089 src/slic3r/GUI/Tab.cpp:2410 +#: src/slic3r/GUI/Tab.cpp:2087 src/slic3r/GUI/Tab.cpp:2408 #: src/libslic3r/GCode.cpp:707 src/libslic3r/PrintConfig.cpp:2418 #: src/libslic3r/PrintConfig.cpp:2433 msgid "Start G-code" msgstr "起始G代碼" -#: src/slic3r/GUI/Tab.cpp:2099 src/slic3r/GUI/Tab.cpp:2420 +#: src/slic3r/GUI/Tab.cpp:2097 src/slic3r/GUI/Tab.cpp:2418 #: src/libslic3r/GCode.cpp:708 src/libslic3r/PrintConfig.cpp:684 #: src/libslic3r/PrintConfig.cpp:694 msgid "End G-code" msgstr "結尾G代碼" -#: src/slic3r/GUI/Tab.cpp:2152 +#: src/slic3r/GUI/Tab.cpp:2150 msgid "Volumetric flow hints not available" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2256 +#: src/slic3r/GUI/Tab.cpp:2254 msgid "" "Note: All parameters from this group are moved to the Physical Printer " "settings (see changelog).\n" @@ -8390,20 +8388,20 @@ msgid "" "physical_printer directory." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2290 src/slic3r/GUI/Tab.cpp:2517 +#: src/slic3r/GUI/Tab.cpp:2288 src/slic3r/GUI/Tab.cpp:2515 msgid "Size and coordinates" msgstr "尺寸和座標" -#: src/slic3r/GUI/Tab.cpp:2299 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1674 +#: src/slic3r/GUI/Tab.cpp:2297 src/slic3r/GUI/UnsavedChangesDialog.cpp:1287 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1677 msgid "Capabilities" msgstr "權限" -#: src/slic3r/GUI/Tab.cpp:2304 +#: src/slic3r/GUI/Tab.cpp:2302 msgid "Number of extruders of the printer." msgstr "印表機擠出機的數量。" -#: src/slic3r/GUI/Tab.cpp:2333 +#: src/slic3r/GUI/Tab.cpp:2331 msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" @@ -8411,64 +8409,64 @@ msgid "" "nozzle diameter value?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2337 src/slic3r/GUI/Tab.cpp:2781 +#: src/slic3r/GUI/Tab.cpp:2335 src/slic3r/GUI/Tab.cpp:2779 #: src/libslic3r/PrintConfig.cpp:1876 msgid "Nozzle diameter" msgstr "噴嘴直徑" -#: src/slic3r/GUI/Tab.cpp:2430 src/libslic3r/GCode.cpp:709 +#: src/slic3r/GUI/Tab.cpp:2428 src/libslic3r/GCode.cpp:709 #: src/libslic3r/PrintConfig.cpp:424 msgid "Before layer change G-code" msgstr "層改變前的G代碼" -#: src/slic3r/GUI/Tab.cpp:2440 src/libslic3r/GCode.cpp:710 +#: src/slic3r/GUI/Tab.cpp:2438 src/libslic3r/GCode.cpp:710 #: src/libslic3r/PrintConfig.cpp:1602 msgid "After layer change G-code" msgstr "層變化後G代碼" -#: src/slic3r/GUI/Tab.cpp:2450 src/libslic3r/GCode.cpp:711 +#: src/slic3r/GUI/Tab.cpp:2448 src/libslic3r/GCode.cpp:711 #: src/libslic3r/PrintConfig.cpp:2845 msgid "Tool change G-code" msgstr "切換工具G代碼" -#: src/slic3r/GUI/Tab.cpp:2460 src/libslic3r/GCode.cpp:712 +#: src/slic3r/GUI/Tab.cpp:2458 src/libslic3r/GCode.cpp:712 msgid "Between objects G-code (for sequential printing)" msgstr "模型對象之間的 G-code (用於順序列印)" -#: src/slic3r/GUI/Tab.cpp:2470 src/libslic3r/GCode.cpp:713 +#: src/slic3r/GUI/Tab.cpp:2468 src/libslic3r/GCode.cpp:713 msgid "Color Change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2479 src/libslic3r/GCode.cpp:714 +#: src/slic3r/GUI/Tab.cpp:2477 src/libslic3r/GCode.cpp:714 #: src/libslic3r/PrintConfig.cpp:2459 msgid "Pause Print G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2488 src/libslic3r/GCode.cpp:715 +#: src/slic3r/GUI/Tab.cpp:2486 src/libslic3r/GCode.cpp:715 msgid "Template Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2524 +#: src/slic3r/GUI/Tab.cpp:2522 msgid "Display" msgstr "顯示" -#: src/slic3r/GUI/Tab.cpp:2539 +#: src/slic3r/GUI/Tab.cpp:2537 msgid "Tilt" msgstr "傾斜" -#: src/slic3r/GUI/Tab.cpp:2540 +#: src/slic3r/GUI/Tab.cpp:2538 msgid "Tilt time" msgstr "傾斜時間" -#: src/slic3r/GUI/Tab.cpp:2547 src/slic3r/GUI/Tab.cpp:4574 +#: src/slic3r/GUI/Tab.cpp:2545 src/slic3r/GUI/Tab.cpp:4572 msgid "Corrections" msgstr "修正" -#: src/slic3r/GUI/Tab.cpp:2560 src/slic3r/GUI/Tab.cpp:4570 +#: src/slic3r/GUI/Tab.cpp:2558 src/slic3r/GUI/Tab.cpp:4568 msgid "Exposure" msgstr "曝光" -#: src/slic3r/GUI/Tab.cpp:2621 src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2619 src/slic3r/GUI/Tab.cpp:2706 #: src/libslic3r/PrintConfig.cpp:1631 src/libslic3r/PrintConfig.cpp:1666 #: src/libslic3r/PrintConfig.cpp:1683 src/libslic3r/PrintConfig.cpp:1700 #: src/libslic3r/PrintConfig.cpp:1716 src/libslic3r/PrintConfig.cpp:1726 @@ -8477,67 +8475,67 @@ msgstr "曝光" msgid "Machine limits" msgstr "機器限制" -#: src/slic3r/GUI/Tab.cpp:2644 +#: src/slic3r/GUI/Tab.cpp:2642 msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2650 +#: src/slic3r/GUI/Tab.cpp:2648 msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2659 +#: src/slic3r/GUI/Tab.cpp:2657 msgid "Maximum feedrates" msgstr "最大進給率" -#: src/slic3r/GUI/Tab.cpp:2664 +#: src/slic3r/GUI/Tab.cpp:2662 msgid "Maximum accelerations" msgstr "最大加速度" -#: src/slic3r/GUI/Tab.cpp:2673 +#: src/slic3r/GUI/Tab.cpp:2671 msgid "Jerk limits" msgstr "抖動限制" -#: src/slic3r/GUI/Tab.cpp:2679 +#: src/slic3r/GUI/Tab.cpp:2677 msgid "Minimum feedrates" msgstr "最小進給率" -#: src/slic3r/GUI/Tab.cpp:2733 src/slic3r/GUI/Tab.cpp:2742 +#: src/slic3r/GUI/Tab.cpp:2731 src/slic3r/GUI/Tab.cpp:2740 msgid "Single extruder MM setup" msgstr "單擠出機 MM 設置" -#: src/slic3r/GUI/Tab.cpp:2743 +#: src/slic3r/GUI/Tab.cpp:2741 msgid "Single extruder multimaterial parameters" msgstr "單擠出機多材料參數" -#: src/slic3r/GUI/Tab.cpp:2778 +#: src/slic3r/GUI/Tab.cpp:2776 msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2803 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "Layer height limits" msgstr "層高度限制" -#: src/slic3r/GUI/Tab.cpp:2808 +#: src/slic3r/GUI/Tab.cpp:2806 msgid "Position (for multi-extruder printers)" msgstr "位置 (適用於多擠出機印表機)" -#: src/slic3r/GUI/Tab.cpp:2814 +#: src/slic3r/GUI/Tab.cpp:2812 msgid "Only lift Z" msgstr "僅提升 Z" -#: src/slic3r/GUI/Tab.cpp:2827 +#: src/slic3r/GUI/Tab.cpp:2825 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "禁用工具時的回縮 (多擠出機設置的高級設置)" -#: src/slic3r/GUI/Tab.cpp:2834 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Reset to Filament Color" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3011 +#: src/slic3r/GUI/Tab.cpp:3009 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -8547,51 +8545,51 @@ msgstr "" "\n" "要禁用它以啓用固件回抽嗎?" -#: src/slic3r/GUI/Tab.cpp:3013 +#: src/slic3r/GUI/Tab.cpp:3011 msgid "Firmware Retraction" msgstr "固件回縮" -#: src/slic3r/GUI/Tab.cpp:3318 +#: src/slic3r/GUI/Tab.cpp:3316 msgid "New printer preset selected" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3624 +#: src/slic3r/GUI/Tab.cpp:3622 msgid "Detached" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "remove" msgstr "移除" -#: src/slic3r/GUI/Tab.cpp:3701 +#: src/slic3r/GUI/Tab.cpp:3699 msgid "delete" msgstr "刪除" -#: src/slic3r/GUI/Tab.cpp:3710 +#: src/slic3r/GUI/Tab.cpp:3708 msgid "It's a last preset for this physical printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3715 +#: src/slic3r/GUI/Tab.cpp:3713 #, boost-format msgid "" "Are you sure you want to delete \"%1%\" preset from the physical printer " "\"%2%\"?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3727 +#: src/slic3r/GUI/Tab.cpp:3725 msgid "" "The physical printer below is based on the preset, you are going to delete." msgid_plural "" "The physical printers below are based on the preset, you are going to delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3732 +#: src/slic3r/GUI/Tab.cpp:3730 msgid "Note, that the selected preset will be deleted from this printer too." msgid_plural "" "Note, that the selected preset will be deleted from these printers too." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3737 +#: src/slic3r/GUI/Tab.cpp:3735 msgid "" "The physical printer below is based only on the preset, you are going to " "delete." @@ -8600,91 +8598,91 @@ msgid_plural "" "delete." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3742 +#: src/slic3r/GUI/Tab.cpp:3740 msgid "" "Note, that this printer will be deleted after deleting the selected preset." msgid_plural "" "Note, that these printers will be deleted after deleting the selected preset." msgstr[0] "" -#: src/slic3r/GUI/Tab.cpp:3747 +#: src/slic3r/GUI/Tab.cpp:3745 #, boost-format msgid "Are you sure you want to %1% the selected preset?" msgstr "" #. TRN Remove/Delete -#: src/slic3r/GUI/Tab.cpp:3752 +#: src/slic3r/GUI/Tab.cpp:3750 #, boost-format msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3835 src/slic3r/GUI/Tab.cpp:4197 +#: src/slic3r/GUI/Tab.cpp:3833 src/slic3r/GUI/Tab.cpp:4195 msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3954 +#: src/slic3r/GUI/Tab.cpp:3952 msgid "Find" msgstr "尋找" -#: src/slic3r/GUI/Tab.cpp:3955 +#: src/slic3r/GUI/Tab.cpp:3953 msgid "Replace with" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4044 +#: src/slic3r/GUI/Tab.cpp:4042 msgid "Regular expression" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4048 +#: src/slic3r/GUI/Tab.cpp:4046 msgid "Case insensitive" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4052 +#: src/slic3r/GUI/Tab.cpp:4050 msgid "Whole word" msgstr "整個字" -#: src/slic3r/GUI/Tab.cpp:4056 +#: src/slic3r/GUI/Tab.cpp:4054 msgid "Match single line" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4159 +#: src/slic3r/GUI/Tab.cpp:4157 msgid "Are you sure you want to delete all substitutions?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4291 +#: src/slic3r/GUI/Tab.cpp:4289 msgid "" "Machine limits will be emitted to G-code and used to estimate print time." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4294 +#: src/slic3r/GUI/Tab.cpp:4292 msgid "" "Machine limits will NOT be emitted to G-code, however they will be used to " "estimate print time, which may therefore not be accurate as the printer may " "apply a different set of machine limits." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4298 +#: src/slic3r/GUI/Tab.cpp:4296 msgid "" "Machine limits are not set, therefore the print time estimate may not be " "accurate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4320 +#: src/slic3r/GUI/Tab.cpp:4318 msgid "LOCKED LOCK" msgstr "" #. TRN Description for "LOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4322 +#: src/slic3r/GUI/Tab.cpp:4320 msgid "" "indicates that the settings are the same as the system (or default) values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4324 +#: src/slic3r/GUI/Tab.cpp:4322 msgid "UNLOCKED LOCK" msgstr "" #. TRN Description for "UNLOCKED LOCK" -#: src/slic3r/GUI/Tab.cpp:4326 +#: src/slic3r/GUI/Tab.cpp:4324 msgid "" "indicates that some settings were changed and are not equal to the system " "(or default) values for the current option group.\n" @@ -8692,23 +8690,23 @@ msgid "" "to the system (or default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4331 +#: src/slic3r/GUI/Tab.cpp:4329 msgid "WHITE BULLET" msgstr "" #. TRN Description for "WHITE BULLET" -#: src/slic3r/GUI/Tab.cpp:4333 +#: src/slic3r/GUI/Tab.cpp:4331 msgid "" "for the left button: indicates a non-system (or non-default) preset,\n" "for the right button: indicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4336 +#: src/slic3r/GUI/Tab.cpp:4334 msgid "BACK ARROW" msgstr "" #. TRN Description for "BACK ARROW" -#: src/slic3r/GUI/Tab.cpp:4338 +#: src/slic3r/GUI/Tab.cpp:4336 msgid "" "indicates that the settings were changed and are not equal to the last saved " "preset for the current option group.\n" @@ -8716,13 +8714,13 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4348 +#: src/slic3r/GUI/Tab.cpp:4346 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system (or " "default) values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4350 +#: src/slic3r/GUI/Tab.cpp:4348 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system (or default) values for the current option group.\n" @@ -8730,17 +8728,17 @@ msgid "" "default) values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4353 +#: src/slic3r/GUI/Tab.cpp:4351 msgid "WHITE BULLET icon indicates a non system (or non default) preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4356 +#: src/slic3r/GUI/Tab.cpp:4354 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "白色子彈圖標表示設置與當前選項組上次保存的預設中的設置相同。" -#: src/slic3r/GUI/Tab.cpp:4358 +#: src/slic3r/GUI/Tab.cpp:4356 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -8750,26 +8748,26 @@ msgstr "" "\"後退箭頭\" 圖標表示設置已更改, 與當前選項組的上次保存的預設不相等。\n" "單擊可將當前選項組的所有設置重置爲上次保存的預設。" -#: src/slic3r/GUI/Tab.cpp:4364 +#: src/slic3r/GUI/Tab.cpp:4362 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system (or " "default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4365 +#: src/slic3r/GUI/Tab.cpp:4363 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system (or default) value.\n" "Click to reset current value to the system (or default) value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:4371 +#: src/slic3r/GUI/Tab.cpp:4369 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "白色子彈圖標表示該值與上次保存的預設中的值相同。" -#: src/slic3r/GUI/Tab.cpp:4372 +#: src/slic3r/GUI/Tab.cpp:4370 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -8778,42 +8776,42 @@ msgstr "" "\"後退箭頭\" 圖標表示該值已更改, 不等於上次保存的預設。\n" "單擊可將當前值重置爲上次保存的預設。" -#: src/slic3r/GUI/Tab.cpp:4526 src/slic3r/GUI/Tab.cpp:4528 +#: src/slic3r/GUI/Tab.cpp:4524 src/slic3r/GUI/Tab.cpp:4526 msgid "Material" msgstr "材料" -#: src/slic3r/GUI/Tab.cpp:4613 src/slic3r/GUI/Tab.cpp:4614 +#: src/slic3r/GUI/Tab.cpp:4611 src/slic3r/GUI/Tab.cpp:4612 msgid "Material printing profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4666 +#: src/slic3r/GUI/Tab.cpp:4664 msgid "Support head" msgstr "支撐頭部寬度" -#: src/slic3r/GUI/Tab.cpp:4671 +#: src/slic3r/GUI/Tab.cpp:4669 msgid "Support pillar" msgstr "支撐支柱" -#: src/slic3r/GUI/Tab.cpp:4694 +#: src/slic3r/GUI/Tab.cpp:4692 msgid "Connection of the support sticks and junctions" msgstr "支撐杆和連接點的連接" -#: src/slic3r/GUI/Tab.cpp:4699 +#: src/slic3r/GUI/Tab.cpp:4697 msgid "Automatic generation" msgstr "自動生成" -#: src/slic3r/GUI/Tab.cpp:4774 +#: src/slic3r/GUI/Tab.cpp:4772 #, boost-format msgid "" "\"%1%\" is disabled because \"%2%\" is on in \"%3%\" category.\n" "To enable \"%1%\", please switch off \"%2%\"" msgstr "" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3719 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3692 msgid "Object elevation" msgstr "對象高程" -#: src/slic3r/GUI/Tab.cpp:4776 src/libslic3r/PrintConfig.cpp:3821 +#: src/slic3r/GUI/Tab.cpp:4774 src/libslic3r/PrintConfig.cpp:3794 msgid "Pad around object" msgstr "" @@ -8896,7 +8894,7 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:936 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1696 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1699 msgid "" "Some fields are too long to fit. Right mouse click reveals the full text." msgstr "" @@ -8956,49 +8954,49 @@ msgid "" msgstr "" #: src/slic3r/GUI/UnsavedChangesDialog.cpp:1283 -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1670 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1673 msgid "Extruders count" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1453 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1456 msgid "Select presets to compare" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1502 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1505 msgid "Show all presets (including incompatible)" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1517 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1520 msgid "Left Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1518 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1521 msgid "Right Preset Value" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1627 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1630 msgid "One of the presets doesn't found" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1638 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1641 msgid "Compared presets has different printer technology" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1652 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1655 msgid "Presets are the same" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1660 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1663 msgid "" "Presets are different.\n" "Click this button to select the same preset for the right and left preset." msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef category" msgstr "" -#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1684 +#: src/slic3r/GUI/UnsavedChangesDialog.cpp:1687 msgid "Undef group" msgstr "" @@ -9606,26 +9604,26 @@ msgid "" "Cannot calculate extrusion width for %1%: Variable \"%2%\" not accessible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1734 +#: src/libslic3r/Format/3mf.cpp:1735 #, boost-format msgid "" "The selected 3mf file has been saved with a newer version of %1% and is not " "compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1745 +#: src/libslic3r/Format/3mf.cpp:1746 msgid "" "The selected 3MF contains FDM supports painted object using a newer version " "of PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1749 +#: src/libslic3r/Format/3mf.cpp:1750 msgid "" "The selected 3MF contains seam painted object using a newer version of " "PrusaSlicer and is not compatible." msgstr "" -#: src/libslic3r/Format/3mf.cpp:1753 +#: src/libslic3r/Format/3mf.cpp:1754 msgid "" "The selected 3MF contains multi-material painted object using a newer " "version of PrusaSlicer and is not compatible." @@ -10332,8 +10330,8 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:478 src/libslic3r/PrintConfig.cpp:1097 #: src/libslic3r/PrintConfig.cpp:2250 src/libslic3r/PrintConfig.cpp:2260 #: src/libslic3r/PrintConfig.cpp:2551 src/libslic3r/PrintConfig.cpp:2792 -#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3110 -#: src/libslic3r/PrintConfig.cpp:3693 src/libslic3r/PrintConfig.cpp:3814 +#: src/libslic3r/PrintConfig.cpp:3009 src/libslic3r/PrintConfig.cpp:3112 +#: src/libslic3r/PrintConfig.cpp:3666 src/libslic3r/PrintConfig.cpp:3787 msgid "°" msgstr "°" @@ -10348,9 +10346,8 @@ msgstr "此項爲在列印所有橋和懸垂部位時的風扇速度。" #: src/libslic3r/PrintConfig.cpp:486 src/libslic3r/PrintConfig.cpp:1109 #: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:1769 #: src/libslic3r/PrintConfig.cpp:1832 src/libslic3r/PrintConfig.cpp:2083 -#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3134 -#: src/libslic3r/PrintConfig.cpp:3149 src/libslic3r/PrintConfig.cpp:3318 -#: src/libslic3r/PrintConfig.cpp:3607 src/libslic3r/PrintConfig.cpp:3733 +#: src/libslic3r/PrintConfig.cpp:2142 src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3580 src/libslic3r/PrintConfig.cpp:3706 msgid "%" msgstr "%" @@ -10549,8 +10546,8 @@ msgstr "" msgid "Default print profile" msgstr "默認 SLA 列印配置文件" -#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3537 -#: src/libslic3r/PrintConfig.cpp:3548 +#: src/libslic3r/PrintConfig.cpp:652 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3521 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -10685,8 +10682,9 @@ msgstr "" #: src/libslic3r/PrintConfig.cpp:1478 src/libslic3r/PrintConfig.cpp:1505 #: src/libslic3r/PrintConfig.cpp:1979 src/libslic3r/PrintConfig.cpp:2365 #: src/libslic3r/PrintConfig.cpp:2539 src/libslic3r/PrintConfig.cpp:2628 -#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3098 -#: src/libslic3r/PrintConfig.cpp:3173 +#: src/libslic3r/PrintConfig.cpp:2863 src/libslic3r/PrintConfig.cpp:3085 +#: src/libslic3r/PrintConfig.cpp:3100 src/libslic3r/PrintConfig.cpp:3134 +#: src/libslic3r/PrintConfig.cpp:3146 msgid "mm or %" msgstr "mm 或 %" @@ -10762,7 +10760,7 @@ msgid "Extruder Color" msgstr "擠出頭顏色" #: src/libslic3r/PrintConfig.cpp:827 src/libslic3r/PrintConfig.cpp:890 -#: src/libslic3r/PrintConfig.cpp:3389 +#: src/libslic3r/PrintConfig.cpp:3362 msgid "This is only used in the Slic3r interface as a visual help." msgstr "僅提供Slic3r界面的視覺幫助。" @@ -10852,7 +10850,7 @@ msgstr "" msgid "approximate seconds" msgstr "秒(大約)" -#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3388 +#: src/libslic3r/PrintConfig.cpp:889 src/libslic3r/PrintConfig.cpp:3361 msgid "Color" msgstr "顏色" @@ -11014,8 +11012,8 @@ msgstr "" "在這裏輸入你的材料直徑。需要較高精度,所以請使用卡尺,沿着材料長絲做多次測" "量,計算平均值。" -#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3427 -#: src/libslic3r/PrintConfig.cpp:3428 +#: src/libslic3r/PrintConfig.cpp:1024 src/libslic3r/PrintConfig.cpp:3400 +#: src/libslic3r/PrintConfig.cpp:3401 msgid "Density" msgstr "密度" @@ -11076,7 +11074,7 @@ msgstr "" msgid "g" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3532 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:3505 msgid "(Unknown)" msgstr "" @@ -12653,7 +12651,7 @@ msgid "" "plane." msgstr "使用該參數對支撐材料的樣子在水平面上進行旋轉。" -#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3642 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:3615 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -13213,33 +13211,35 @@ msgstr "" msgid "" "Classic perimeter generator produces perimeters with constant extrusion " "width and for very thin areas is used gap-fill. Arachne engine produces " -"perimeters with variable extrusion width." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3073 -msgid "Classic" +"perimeters with variable extrusion width. This setting also affects the " +"Concentric infill." msgstr "" #: src/libslic3r/PrintConfig.cpp:3074 +msgid "Classic" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3075 msgid "Arachne" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3079 +#: src/libslic3r/PrintConfig.cpp:3080 msgid "Perimeter transition length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 +#: src/libslic3r/PrintConfig.cpp:3082 msgid "" "When transitioning between different numbers of perimeters as the part " "becomes thinner, a certain amount of space is allotted to split or join the " -"perimeter segments." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3089 -msgid "Perimeter transitioning filter margin" +"perimeter segments. If expressed as a percentage (for example 100%), it will " +"be computed based on the nozzle diameter." msgstr "" #: src/libslic3r/PrintConfig.cpp:3091 +msgid "Perimeter transitioning filter margin" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 msgid "" "Prevent transitioning back and forth between one extra perimeter and one " "less. This margin extends the range of extrusion widths which follow to " @@ -13251,11 +13251,11 @@ msgid "" "diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3104 +#: src/libslic3r/PrintConfig.cpp:3106 msgid "Perimeter transitioning threshold angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:3108 msgid "" "When to create transitions between even and odd numbers of perimeters. A " "wedge shape with an angle greater than this setting will not have " @@ -13264,63 +13264,35 @@ msgid "" "these center perimeters, but may leave gaps or overextrude." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3117 +#: src/libslic3r/PrintConfig.cpp:3119 msgid "Perimeter distribution count" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3119 +#: src/libslic3r/PrintConfig.cpp:3121 msgid "" "The number of perimeters, counted from the center, over which the variation " "needs to be spread. Lower values mean that the outer perimeters don't change " "in width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Split middle perimeter threshold" -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3128 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which the middle perimeter (if there is one) will be split into two. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3141 -msgid "Add middle perimeter threshold" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3143 -msgid "" -"The smallest extrusion width, as a factor of the normal extrusion width, " -"above which a middle perimeter (if there wasn't one already) will be added. " -"Reduce this setting to use more, thinner perimeters. Increase to use fewer, " -"wider perimeters. Note that this applies -as if- the entire shape should be " -"filled with perimeter, so the middle here refers to the middle of the object " -"between two outer edges of the shape, even if there actually is infill or " -"other extrusion types in the print instead of the perimeter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3156 msgid "Minimum feature size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3158 +#: src/libslic3r/PrintConfig.cpp:3130 msgid "" "Minimum thickness of thin features. Model features that are thinner than " "this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum perimeter width." +"feature size will be widened to the Minimum perimeter width. If expressed as " +"a percentage (for example 25%), it will be computed based on the nozzle " +"diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3167 +#: src/libslic3r/PrintConfig.cpp:3140 msgid "Minimum perimeter width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3169 +#: src/libslic3r/PrintConfig.cpp:3142 msgid "" "Width of the perimeter that will replace thin features (according to the " "Minimum feature size) of the model. If the Minimum perimeter width is " @@ -13329,63 +13301,63 @@ msgid "" "it will be computed based on the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3237 +#: src/libslic3r/PrintConfig.cpp:3210 msgid "Display width" msgstr "顯示寬度" -#: src/libslic3r/PrintConfig.cpp:3238 +#: src/libslic3r/PrintConfig.cpp:3211 msgid "Width of the display" msgstr "顯示寬度" -#: src/libslic3r/PrintConfig.cpp:3243 +#: src/libslic3r/PrintConfig.cpp:3216 msgid "Display height" msgstr "顯示高度" -#: src/libslic3r/PrintConfig.cpp:3244 +#: src/libslic3r/PrintConfig.cpp:3217 msgid "Height of the display" msgstr "顯示高度" -#: src/libslic3r/PrintConfig.cpp:3249 +#: src/libslic3r/PrintConfig.cpp:3222 msgid "Number of pixels in" msgstr "像素點的數量" -#: src/libslic3r/PrintConfig.cpp:3251 +#: src/libslic3r/PrintConfig.cpp:3224 msgid "Number of pixels in X" msgstr "X 中的像素數" -#: src/libslic3r/PrintConfig.cpp:3257 +#: src/libslic3r/PrintConfig.cpp:3230 msgid "Number of pixels in Y" msgstr "Y 中的像素數" -#: src/libslic3r/PrintConfig.cpp:3262 +#: src/libslic3r/PrintConfig.cpp:3235 msgid "Display horizontal mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3263 +#: src/libslic3r/PrintConfig.cpp:3236 msgid "Mirror horizontally" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3264 +#: src/libslic3r/PrintConfig.cpp:3237 msgid "Enable horizontal mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3269 +#: src/libslic3r/PrintConfig.cpp:3242 msgid "Display vertical mirroring" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3270 +#: src/libslic3r/PrintConfig.cpp:3243 msgid "Mirror vertically" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3271 +#: src/libslic3r/PrintConfig.cpp:3244 msgid "Enable vertical mirroring of output images" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3276 +#: src/libslic3r/PrintConfig.cpp:3249 msgid "Display orientation" msgstr "顯示方向" -#: src/libslic3r/PrintConfig.cpp:3277 +#: src/libslic3r/PrintConfig.cpp:3250 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -13394,55 +13366,55 @@ msgstr "" "在 SLA 印表機內設置實際的 LCD 顯示方向。人像模式將翻轉顯示寬度和高度參數的含" "義, 輸出圖像將旋轉90度。" -#: src/libslic3r/PrintConfig.cpp:3283 +#: src/libslic3r/PrintConfig.cpp:3256 msgid "Landscape" msgstr "景觀" -#: src/libslic3r/PrintConfig.cpp:3284 +#: src/libslic3r/PrintConfig.cpp:3257 msgid "Portrait" msgstr "肖像" -#: src/libslic3r/PrintConfig.cpp:3289 src/libslic3r/PrintConfig.cpp:3924 +#: src/libslic3r/PrintConfig.cpp:3262 src/libslic3r/PrintConfig.cpp:3897 msgid "Fast" msgstr "快" -#: src/libslic3r/PrintConfig.cpp:3290 +#: src/libslic3r/PrintConfig.cpp:3263 msgid "Fast tilt" msgstr "快速傾斜" -#: src/libslic3r/PrintConfig.cpp:3291 +#: src/libslic3r/PrintConfig.cpp:3264 msgid "Time of the fast tilt" msgstr "快速傾斜的時間" -#: src/libslic3r/PrintConfig.cpp:3298 src/libslic3r/PrintConfig.cpp:3923 +#: src/libslic3r/PrintConfig.cpp:3271 src/libslic3r/PrintConfig.cpp:3896 msgid "Slow" msgstr "慢" -#: src/libslic3r/PrintConfig.cpp:3299 +#: src/libslic3r/PrintConfig.cpp:3272 msgid "Slow tilt" msgstr "緩慢傾斜" -#: src/libslic3r/PrintConfig.cpp:3300 +#: src/libslic3r/PrintConfig.cpp:3273 msgid "Time of the slow tilt" msgstr "緩慢傾斜的時間" -#: src/libslic3r/PrintConfig.cpp:3307 src/libslic3r/PrintConfig.cpp:3925 +#: src/libslic3r/PrintConfig.cpp:3280 src/libslic3r/PrintConfig.cpp:3898 msgid "High viscosity" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3308 +#: src/libslic3r/PrintConfig.cpp:3281 msgid "Tilt for high viscosity resin" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3309 +#: src/libslic3r/PrintConfig.cpp:3282 msgid "Time of the super slow tilt" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3316 +#: src/libslic3r/PrintConfig.cpp:3289 msgid "Area fill" msgstr "區域填充" -#: src/libslic3r/PrintConfig.cpp:3317 +#: src/libslic3r/PrintConfig.cpp:3290 msgid "" "The percentage of the bed area. \n" "If the print area exceeds the specified value, \n" @@ -13452,345 +13424,345 @@ msgstr "" "如果列印區域超過指定的值,\n" "然後一個緩慢的傾斜將被使用, 否則-一個快速傾斜" -#: src/libslic3r/PrintConfig.cpp:3324 src/libslic3r/PrintConfig.cpp:3325 -#: src/libslic3r/PrintConfig.cpp:3326 +#: src/libslic3r/PrintConfig.cpp:3297 src/libslic3r/PrintConfig.cpp:3298 +#: src/libslic3r/PrintConfig.cpp:3299 msgid "Printer scaling correction" msgstr "印表機縮放校正" -#: src/libslic3r/PrintConfig.cpp:3332 src/libslic3r/PrintConfig.cpp:3334 +#: src/libslic3r/PrintConfig.cpp:3305 src/libslic3r/PrintConfig.cpp:3307 msgid "Printer scaling correction in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3333 +#: src/libslic3r/PrintConfig.cpp:3306 msgid "Printer scaling X axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3340 src/libslic3r/PrintConfig.cpp:3342 +#: src/libslic3r/PrintConfig.cpp:3313 src/libslic3r/PrintConfig.cpp:3315 msgid "Printer scaling correction in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3341 +#: src/libslic3r/PrintConfig.cpp:3314 msgid "Printer scaling Y axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3348 src/libslic3r/PrintConfig.cpp:3350 +#: src/libslic3r/PrintConfig.cpp:3321 src/libslic3r/PrintConfig.cpp:3323 msgid "Printer scaling correction in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3349 +#: src/libslic3r/PrintConfig.cpp:3322 msgid "Printer scaling Z axis correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3356 src/libslic3r/PrintConfig.cpp:3357 +#: src/libslic3r/PrintConfig.cpp:3329 src/libslic3r/PrintConfig.cpp:3330 msgid "Printer absolute correction" msgstr "印表機絕對校正" -#: src/libslic3r/PrintConfig.cpp:3358 +#: src/libslic3r/PrintConfig.cpp:3331 msgid "" "Will inflate or deflate the sliced 2D polygons according to the sign of the " "correction." msgstr "將根據校正的符號對切片的2D 多邊形進行放大或收縮。" -#: src/libslic3r/PrintConfig.cpp:3364 +#: src/libslic3r/PrintConfig.cpp:3337 msgid "Elephant foot minimum width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3366 +#: src/libslic3r/PrintConfig.cpp:3339 msgid "" "Minimum width of features to maintain when doing elephant foot compensation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3373 src/libslic3r/PrintConfig.cpp:3374 +#: src/libslic3r/PrintConfig.cpp:3346 src/libslic3r/PrintConfig.cpp:3347 msgid "Printer gamma correction" msgstr "印表機伽瑪校正" -#: src/libslic3r/PrintConfig.cpp:3375 +#: src/libslic3r/PrintConfig.cpp:3348 msgid "" "This will apply a gamma correction to the rasterized 2D polygons. A gamma " "value of zero means thresholding with the threshold in the middle. This " "behaviour eliminates antialiasing without losing holes in polygons." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3394 src/libslic3r/PrintConfig.cpp:3395 +#: src/libslic3r/PrintConfig.cpp:3367 src/libslic3r/PrintConfig.cpp:3368 msgid "SLA material type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3406 src/libslic3r/PrintConfig.cpp:3407 +#: src/libslic3r/PrintConfig.cpp:3379 src/libslic3r/PrintConfig.cpp:3380 msgid "Initial layer height" msgstr "初始圖層高度" -#: src/libslic3r/PrintConfig.cpp:3413 src/libslic3r/PrintConfig.cpp:3414 +#: src/libslic3r/PrintConfig.cpp:3386 src/libslic3r/PrintConfig.cpp:3387 msgid "Bottle volume" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3415 +#: src/libslic3r/PrintConfig.cpp:3388 msgid "ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3420 src/libslic3r/PrintConfig.cpp:3421 +#: src/libslic3r/PrintConfig.cpp:3393 src/libslic3r/PrintConfig.cpp:3394 msgid "Bottle weight" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3422 +#: src/libslic3r/PrintConfig.cpp:3395 msgid "kg" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3429 +#: src/libslic3r/PrintConfig.cpp:3402 msgid "g/ml" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3436 +#: src/libslic3r/PrintConfig.cpp:3409 msgid "money/bottle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3441 +#: src/libslic3r/PrintConfig.cpp:3414 msgid "Faded layers" msgstr "淡入淡出的圖層" -#: src/libslic3r/PrintConfig.cpp:3442 +#: src/libslic3r/PrintConfig.cpp:3415 msgid "" "Number of the layers needed for the exposure time fade from initial exposure " "time to the exposure time" msgstr "曝光時間所需的層數從最初的曝光時間消失到曝光時間" -#: src/libslic3r/PrintConfig.cpp:3449 src/libslic3r/PrintConfig.cpp:3450 +#: src/libslic3r/PrintConfig.cpp:3422 src/libslic3r/PrintConfig.cpp:3423 msgid "Minimum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3457 src/libslic3r/PrintConfig.cpp:3458 +#: src/libslic3r/PrintConfig.cpp:3430 src/libslic3r/PrintConfig.cpp:3431 msgid "Maximum exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3465 src/libslic3r/PrintConfig.cpp:3466 +#: src/libslic3r/PrintConfig.cpp:3438 src/libslic3r/PrintConfig.cpp:3439 msgid "Exposure time" msgstr "曝光時間" -#: src/libslic3r/PrintConfig.cpp:3472 src/libslic3r/PrintConfig.cpp:3473 +#: src/libslic3r/PrintConfig.cpp:3445 src/libslic3r/PrintConfig.cpp:3446 msgid "Minimum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3480 src/libslic3r/PrintConfig.cpp:3481 +#: src/libslic3r/PrintConfig.cpp:3453 src/libslic3r/PrintConfig.cpp:3454 msgid "Maximum initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3488 src/libslic3r/PrintConfig.cpp:3489 +#: src/libslic3r/PrintConfig.cpp:3461 src/libslic3r/PrintConfig.cpp:3462 msgid "Initial exposure time" msgstr "初始曝光時間" -#: src/libslic3r/PrintConfig.cpp:3495 src/libslic3r/PrintConfig.cpp:3496 +#: src/libslic3r/PrintConfig.cpp:3468 src/libslic3r/PrintConfig.cpp:3469 msgid "Correction for expansion" msgstr "擴展的更正" -#: src/libslic3r/PrintConfig.cpp:3502 src/libslic3r/PrintConfig.cpp:3503 +#: src/libslic3r/PrintConfig.cpp:3475 src/libslic3r/PrintConfig.cpp:3476 msgid "Correction for expansion in X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3510 +#: src/libslic3r/PrintConfig.cpp:3482 src/libslic3r/PrintConfig.cpp:3483 msgid "Correction for expansion in Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3516 src/libslic3r/PrintConfig.cpp:3517 +#: src/libslic3r/PrintConfig.cpp:3489 src/libslic3r/PrintConfig.cpp:3490 msgid "Correction for expansion in Z axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3523 +#: src/libslic3r/PrintConfig.cpp:3496 msgid "SLA print material notes" msgstr "SLA 列印材料註釋" -#: src/libslic3r/PrintConfig.cpp:3524 +#: src/libslic3r/PrintConfig.cpp:3497 msgid "You can put your notes regarding the SLA print material here." msgstr "您可以在此處放置有關 sla 列印材料的註釋." -#: src/libslic3r/PrintConfig.cpp:3536 src/libslic3r/PrintConfig.cpp:3547 +#: src/libslic3r/PrintConfig.cpp:3509 src/libslic3r/PrintConfig.cpp:3520 msgid "Default SLA material profile" msgstr "默認 SLA 材料配置文件" -#: src/libslic3r/PrintConfig.cpp:3558 +#: src/libslic3r/PrintConfig.cpp:3531 msgid "Generate supports" msgstr "生成支撐" -#: src/libslic3r/PrintConfig.cpp:3560 +#: src/libslic3r/PrintConfig.cpp:3533 msgid "Generate supports for the models" msgstr "生成模型的支撐" -#: src/libslic3r/PrintConfig.cpp:3565 +#: src/libslic3r/PrintConfig.cpp:3538 msgid "Pinhead front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3567 +#: src/libslic3r/PrintConfig.cpp:3540 msgid "Diameter of the pointing side of the head" msgstr "頭部指向側的直徑" -#: src/libslic3r/PrintConfig.cpp:3574 +#: src/libslic3r/PrintConfig.cpp:3547 msgid "Head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3576 +#: src/libslic3r/PrintConfig.cpp:3549 msgid "How much the pinhead has to penetrate the model surface" msgstr "針頭穿透模型表面的程度" -#: src/libslic3r/PrintConfig.cpp:3583 +#: src/libslic3r/PrintConfig.cpp:3556 msgid "Pinhead width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3585 +#: src/libslic3r/PrintConfig.cpp:3558 msgid "Width from the back sphere center to the front sphere center" msgstr "從後球體中心到前球體中心的寬度" -#: src/libslic3r/PrintConfig.cpp:3593 +#: src/libslic3r/PrintConfig.cpp:3566 msgid "Pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3595 +#: src/libslic3r/PrintConfig.cpp:3568 msgid "Diameter in mm of the support pillars" msgstr "支撐柱直徑 (毫米)" -#: src/libslic3r/PrintConfig.cpp:3603 +#: src/libslic3r/PrintConfig.cpp:3576 msgid "Small pillar diameter percent" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3605 +#: src/libslic3r/PrintConfig.cpp:3578 msgid "" "The percentage of smaller pillars compared to the normal pillar diameter " "which are used in problematic areas where a normal pilla cannot fit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3614 +#: src/libslic3r/PrintConfig.cpp:3587 msgid "Max bridges on a pillar" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3616 +#: src/libslic3r/PrintConfig.cpp:3589 msgid "" "Maximum number of bridges that can be placed on a pillar. Bridges hold " "support point pinheads and connect to pillars as small branches." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3624 +#: src/libslic3r/PrintConfig.cpp:3597 msgid "Pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3625 +#: src/libslic3r/PrintConfig.cpp:3598 msgid "" "Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3633 +#: src/libslic3r/PrintConfig.cpp:3606 msgid "Zig-Zag" msgstr "鋸齒形" -#: src/libslic3r/PrintConfig.cpp:3634 +#: src/libslic3r/PrintConfig.cpp:3607 msgid "Cross" msgstr "交叉" -#: src/libslic3r/PrintConfig.cpp:3635 +#: src/libslic3r/PrintConfig.cpp:3608 msgid "Dynamic" msgstr "動態" -#: src/libslic3r/PrintConfig.cpp:3647 +#: src/libslic3r/PrintConfig.cpp:3620 msgid "Pillar widening factor" msgstr "支柱加寬係數" -#: src/libslic3r/PrintConfig.cpp:3649 +#: src/libslic3r/PrintConfig.cpp:3622 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" "將橋樑或柱子合併到另一個柱子中可以增加半徑。零意味着沒有增加,1意味着全增加。" -#: src/libslic3r/PrintConfig.cpp:3658 +#: src/libslic3r/PrintConfig.cpp:3631 msgid "Support base diameter" msgstr "支撐底座直徑" -#: src/libslic3r/PrintConfig.cpp:3660 +#: src/libslic3r/PrintConfig.cpp:3633 msgid "Diameter in mm of the pillar base" msgstr "柱底座直徑 (毫米)" -#: src/libslic3r/PrintConfig.cpp:3668 +#: src/libslic3r/PrintConfig.cpp:3641 msgid "Support base height" msgstr "支撐基座高度" -#: src/libslic3r/PrintConfig.cpp:3670 +#: src/libslic3r/PrintConfig.cpp:3643 msgid "The height of the pillar base cone" msgstr "柱基錐的高度" -#: src/libslic3r/PrintConfig.cpp:3677 +#: src/libslic3r/PrintConfig.cpp:3650 msgid "Support base safety distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3680 +#: src/libslic3r/PrintConfig.cpp:3653 msgid "" "The minimum distance of the pillar base from the model in mm. Makes sense in " "zero elevation mode where a gap according to this parameter is inserted " "between the model and the pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3690 +#: src/libslic3r/PrintConfig.cpp:3663 msgid "Critical angle" msgstr "臨界角度" -#: src/libslic3r/PrintConfig.cpp:3692 +#: src/libslic3r/PrintConfig.cpp:3665 msgid "The default angle for connecting support sticks and junctions." msgstr "連接支撐杆和連接點的默認角度。" -#: src/libslic3r/PrintConfig.cpp:3700 +#: src/libslic3r/PrintConfig.cpp:3673 msgid "Max bridge length" msgstr "最大橋長" -#: src/libslic3r/PrintConfig.cpp:3702 +#: src/libslic3r/PrintConfig.cpp:3675 msgid "The max length of a bridge" msgstr "橋的最大長度" -#: src/libslic3r/PrintConfig.cpp:3709 +#: src/libslic3r/PrintConfig.cpp:3682 msgid "Max pillar linking distance" msgstr "最大柱連接距離" -#: src/libslic3r/PrintConfig.cpp:3711 +#: src/libslic3r/PrintConfig.cpp:3684 msgid "" "The max distance of two pillars to get linked with each other. A zero value " "will prohibit pillar cascading." msgstr "兩個支柱的最大距離, 以相互連接。零值將禁止柱級聯。" -#: src/libslic3r/PrintConfig.cpp:3721 +#: src/libslic3r/PrintConfig.cpp:3694 msgid "" "How much the supports should lift up the supported object. If \"Pad around " "object\" is enabled, this value is ignored." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3732 +#: src/libslic3r/PrintConfig.cpp:3705 msgid "This is a relative measure of support points density." msgstr "這是支持點密度的相對度量。" -#: src/libslic3r/PrintConfig.cpp:3738 +#: src/libslic3r/PrintConfig.cpp:3711 msgid "Minimal distance of the support points" msgstr "支撐點的最小距離" -#: src/libslic3r/PrintConfig.cpp:3740 +#: src/libslic3r/PrintConfig.cpp:3713 msgid "No support points will be placed closer than this threshold." msgstr "沒有任何支助點將被放置在比這一閾值更近的地方。" -#: src/libslic3r/PrintConfig.cpp:3746 +#: src/libslic3r/PrintConfig.cpp:3719 msgid "Use pad" msgstr "使用墊" -#: src/libslic3r/PrintConfig.cpp:3748 +#: src/libslic3r/PrintConfig.cpp:3721 msgid "Add a pad underneath the supported model" msgstr "在支撐模型下添加一個墊" -#: src/libslic3r/PrintConfig.cpp:3753 +#: src/libslic3r/PrintConfig.cpp:3726 msgid "Pad wall thickness" msgstr "墊壁厚度" -#: src/libslic3r/PrintConfig.cpp:3755 +#: src/libslic3r/PrintConfig.cpp:3728 msgid "The thickness of the pad and its optional cavity walls." msgstr "墊片的厚度及其可選的空腔壁。" -#: src/libslic3r/PrintConfig.cpp:3763 +#: src/libslic3r/PrintConfig.cpp:3736 msgid "Pad wall height" msgstr "墊壁高度" -#: src/libslic3r/PrintConfig.cpp:3764 +#: src/libslic3r/PrintConfig.cpp:3737 msgid "" "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " "when enabling this feature, as some resins may produce an extreme suction " @@ -13798,19 +13770,19 @@ msgid "" "difficult." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3777 +#: src/libslic3r/PrintConfig.cpp:3750 msgid "Pad brim size" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3778 +#: src/libslic3r/PrintConfig.cpp:3751 msgid "How far should the pad extend around the contained geometry" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3788 +#: src/libslic3r/PrintConfig.cpp:3761 msgid "Max merge distance" msgstr "最大合併距離" -#: src/libslic3r/PrintConfig.cpp:3790 +#: src/libslic3r/PrintConfig.cpp:3763 msgid "" "Some objects can get along with a few smaller pads instead of a single big " "one. This parameter defines how far the center of two smaller pads should " @@ -13819,92 +13791,92 @@ msgstr "" "有些物體可以與幾個較小的墊子在一起, 而不是一個大的墊子。此參數定義兩個較小墊" "的中心應該有多遠。如果它們更接近, 它們將被合併成一個墊子。" -#: src/libslic3r/PrintConfig.cpp:3810 +#: src/libslic3r/PrintConfig.cpp:3783 msgid "Pad wall slope" msgstr "墊壁坡度" -#: src/libslic3r/PrintConfig.cpp:3812 +#: src/libslic3r/PrintConfig.cpp:3785 msgid "" "The slope of the pad wall relative to the bed plane. 90 degrees means " "straight walls." msgstr "墊壁相對於牀面的斜率。90度意味着直牆。" -#: src/libslic3r/PrintConfig.cpp:3823 +#: src/libslic3r/PrintConfig.cpp:3796 msgid "Create pad around object and ignore the support elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3828 +#: src/libslic3r/PrintConfig.cpp:3801 msgid "Pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3830 +#: src/libslic3r/PrintConfig.cpp:3803 msgid "Force pad around object everywhere" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3835 +#: src/libslic3r/PrintConfig.cpp:3808 msgid "Pad object gap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3837 +#: src/libslic3r/PrintConfig.cpp:3810 msgid "" "The gap between the object bottom and the generated pad in zero elevation " "mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3846 +#: src/libslic3r/PrintConfig.cpp:3819 msgid "Pad object connector stride" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3848 +#: src/libslic3r/PrintConfig.cpp:3821 msgid "" "Distance between two connector sticks which connect the object and the " "generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3855 +#: src/libslic3r/PrintConfig.cpp:3828 msgid "Pad object connector width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3857 +#: src/libslic3r/PrintConfig.cpp:3830 msgid "" "Width of the connector sticks which connect the object and the generated pad." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3864 +#: src/libslic3r/PrintConfig.cpp:3837 msgid "Pad object connector penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3867 +#: src/libslic3r/PrintConfig.cpp:3840 msgid "How much should the tiny connectors penetrate into the model body." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3874 +#: src/libslic3r/PrintConfig.cpp:3847 msgid "Enable hollowing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3876 +#: src/libslic3r/PrintConfig.cpp:3849 msgid "Hollow out a model to have an empty interior" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3881 +#: src/libslic3r/PrintConfig.cpp:3854 msgid "Wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3883 +#: src/libslic3r/PrintConfig.cpp:3856 msgid "Minimum wall thickness of a hollowed model." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3891 +#: src/libslic3r/PrintConfig.cpp:3864 msgid "Accuracy" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3893 +#: src/libslic3r/PrintConfig.cpp:3866 msgid "" "Performance vs accuracy of calculation. Lower values may produce unwanted " "artifacts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3903 +#: src/libslic3r/PrintConfig.cpp:3876 msgid "" "Hollowing is done in two steps: first, an imaginary interior is calculated " "deeper (offset plus the closing distance) in the object and then it's " @@ -13913,183 +13885,183 @@ msgid "" "most." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3915 +#: src/libslic3r/PrintConfig.cpp:3888 msgid "Print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3917 +#: src/libslic3r/PrintConfig.cpp:3890 msgid "" "A slower printing profile might be necessary when using materials with " "higher viscosity or with some hollowed parts. It slows down the tilt " "movement and adds a delay before exposure." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4383 +#: src/libslic3r/PrintConfig.cpp:4358 msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4384 +#: src/libslic3r/PrintConfig.cpp:4359 msgid "Export the model(s) as OBJ." msgstr "將模型導出爲 OBJ。" -#: src/libslic3r/PrintConfig.cpp:4395 +#: src/libslic3r/PrintConfig.cpp:4370 msgid "Export SLA" msgstr "導出 SLA" -#: src/libslic3r/PrintConfig.cpp:4396 +#: src/libslic3r/PrintConfig.cpp:4371 msgid "Slice the model and export SLA printing layers as PNG." msgstr "將模型切片, 並將 SLA 列印圖層導出爲 PNG。" -#: src/libslic3r/PrintConfig.cpp:4401 +#: src/libslic3r/PrintConfig.cpp:4376 msgid "Export 3MF" msgstr "導出 3MF" -#: src/libslic3r/PrintConfig.cpp:4402 +#: src/libslic3r/PrintConfig.cpp:4377 msgid "Export the model(s) as 3MF." msgstr "將模型導出爲3MF。" -#: src/libslic3r/PrintConfig.cpp:4406 +#: src/libslic3r/PrintConfig.cpp:4381 msgid "Export AMF" msgstr "導出 AMF" -#: src/libslic3r/PrintConfig.cpp:4407 +#: src/libslic3r/PrintConfig.cpp:4382 msgid "Export the model(s) as AMF." msgstr "將模型導出爲 AMF。" -#: src/libslic3r/PrintConfig.cpp:4411 +#: src/libslic3r/PrintConfig.cpp:4386 msgid "Export STL" msgstr "導出STL Export STL" -#: src/libslic3r/PrintConfig.cpp:4412 +#: src/libslic3r/PrintConfig.cpp:4387 msgid "Export the model(s) as STL." msgstr "將模型導出爲 STL。" -#: src/libslic3r/PrintConfig.cpp:4417 +#: src/libslic3r/PrintConfig.cpp:4392 msgid "Slice the model and export toolpaths as G-code." msgstr "將模型切片並將刀具路徑導出爲 G 代碼。" -#: src/libslic3r/PrintConfig.cpp:4422 +#: src/libslic3r/PrintConfig.cpp:4397 msgid "G-code viewer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4423 +#: src/libslic3r/PrintConfig.cpp:4398 msgid "Visualize an already sliced and saved G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4428 +#: src/libslic3r/PrintConfig.cpp:4403 msgid "Slice" msgstr "切片" -#: src/libslic3r/PrintConfig.cpp:4429 +#: src/libslic3r/PrintConfig.cpp:4404 msgid "" "Slice the model as FFF or SLA based on the printer_technology configuration " "value." msgstr "根據印表機技術配置值將模型切片爲 FFF 或 SLA。" -#: src/libslic3r/PrintConfig.cpp:4434 +#: src/libslic3r/PrintConfig.cpp:4409 msgid "Help" msgstr "幫助" -#: src/libslic3r/PrintConfig.cpp:4435 +#: src/libslic3r/PrintConfig.cpp:4410 msgid "Show this help." msgstr "顯示此幫助。" -#: src/libslic3r/PrintConfig.cpp:4440 +#: src/libslic3r/PrintConfig.cpp:4415 msgid "Help (FFF options)" msgstr "幫助 (FFF 選項)" -#: src/libslic3r/PrintConfig.cpp:4441 +#: src/libslic3r/PrintConfig.cpp:4416 msgid "Show the full list of print/G-code configuration options." msgstr "顯示列印代碼配置選項的完整列表。" -#: src/libslic3r/PrintConfig.cpp:4445 +#: src/libslic3r/PrintConfig.cpp:4420 msgid "Help (SLA options)" msgstr "幫助 (SLA 選項)" -#: src/libslic3r/PrintConfig.cpp:4446 +#: src/libslic3r/PrintConfig.cpp:4421 msgid "Show the full list of SLA print configuration options." msgstr "顯示 SLA 列印配置選項的完整列表。" -#: src/libslic3r/PrintConfig.cpp:4450 +#: src/libslic3r/PrintConfig.cpp:4425 msgid "Output Model Info" msgstr "輸出模型信息" -#: src/libslic3r/PrintConfig.cpp:4451 +#: src/libslic3r/PrintConfig.cpp:4426 msgid "Write information about the model to the console." msgstr "給控制檯寫入模型的信息。" -#: src/libslic3r/PrintConfig.cpp:4455 +#: src/libslic3r/PrintConfig.cpp:4430 msgid "Save config file" msgstr "保存配置文件" -#: src/libslic3r/PrintConfig.cpp:4456 +#: src/libslic3r/PrintConfig.cpp:4431 msgid "Save configuration to the specified file." msgstr "將配置參數保存到指定文件。" -#: src/libslic3r/PrintConfig.cpp:4466 +#: src/libslic3r/PrintConfig.cpp:4441 msgid "Align XY" msgstr "對齊 XY" -#: src/libslic3r/PrintConfig.cpp:4467 +#: src/libslic3r/PrintConfig.cpp:4442 msgid "Align the model to the given point." msgstr "將模型對齊到給定點。" -#: src/libslic3r/PrintConfig.cpp:4472 +#: src/libslic3r/PrintConfig.cpp:4447 msgid "Cut model at the given Z." msgstr "在給定Z處切割模型。" -#: src/libslic3r/PrintConfig.cpp:4493 +#: src/libslic3r/PrintConfig.cpp:4468 msgid "Center" msgstr "居中" -#: src/libslic3r/PrintConfig.cpp:4494 +#: src/libslic3r/PrintConfig.cpp:4469 msgid "Center the print around the given center." msgstr "將列印內容集中在給定的中心周圍。" -#: src/libslic3r/PrintConfig.cpp:4498 +#: src/libslic3r/PrintConfig.cpp:4473 msgid "Don't arrange" msgstr "不要排列布局" -#: src/libslic3r/PrintConfig.cpp:4499 +#: src/libslic3r/PrintConfig.cpp:4474 msgid "" "Do not rearrange the given models before merging and keep their original XY " "coordinates." msgstr "在合併之前, 不要重新排列給定的模型, 並保留其原始 XY 座標。" -#: src/libslic3r/PrintConfig.cpp:4502 +#: src/libslic3r/PrintConfig.cpp:4477 msgid "Ensure on bed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4503 +#: src/libslic3r/PrintConfig.cpp:4478 msgid "" "Lift the object above the bed when it is partially below. Enabled by " "default, use --no-ensure-on-bed to disable." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4507 +#: src/libslic3r/PrintConfig.cpp:4482 msgid "Duplicate" msgstr "複製" -#: src/libslic3r/PrintConfig.cpp:4508 +#: src/libslic3r/PrintConfig.cpp:4483 msgid "Multiply copies by this factor." msgstr "按此倍數增加副本。" -#: src/libslic3r/PrintConfig.cpp:4512 +#: src/libslic3r/PrintConfig.cpp:4487 msgid "Duplicate by grid" msgstr "按網格複製" -#: src/libslic3r/PrintConfig.cpp:4513 +#: src/libslic3r/PrintConfig.cpp:4488 msgid "Multiply copies by creating a grid." msgstr "通過創建網格將副本增加。" -#: src/libslic3r/PrintConfig.cpp:4517 +#: src/libslic3r/PrintConfig.cpp:4492 msgid "" "Arrange the supplied models in a plate and merge them in a single model in " "order to perform actions once." msgstr "" "將提供的模型排列在一個平板中, 並將它們合併到一個模型中, 以便執行一次操作。" -#: src/libslic3r/PrintConfig.cpp:4522 +#: src/libslic3r/PrintConfig.cpp:4497 msgid "" "Try to repair any non-manifold meshes (this option is implicitly added " "whenever we need to slice the model to perform the requested action)." @@ -14097,59 +14069,59 @@ msgstr "" "嘗試修復任何非流形網格 (每當我們需要對模型進行切片以執行請求的操作時, 都會隱" "式添加此選項)。" -#: src/libslic3r/PrintConfig.cpp:4526 +#: src/libslic3r/PrintConfig.cpp:4501 msgid "Rotation angle around the Z axis in degrees." msgstr "圍繞 Z 軸的旋轉角度 (以度爲單位)。" -#: src/libslic3r/PrintConfig.cpp:4530 +#: src/libslic3r/PrintConfig.cpp:4505 msgid "Rotate around X" msgstr "繞X軸旋轉" -#: src/libslic3r/PrintConfig.cpp:4531 +#: src/libslic3r/PrintConfig.cpp:4506 msgid "Rotation angle around the X axis in degrees." msgstr "圍繞 X 軸的旋轉角度 (以度爲單位)。" -#: src/libslic3r/PrintConfig.cpp:4535 +#: src/libslic3r/PrintConfig.cpp:4510 msgid "Rotate around Y" msgstr "繞Y軸旋轉" -#: src/libslic3r/PrintConfig.cpp:4536 +#: src/libslic3r/PrintConfig.cpp:4511 msgid "Rotation angle around the Y axis in degrees." msgstr "圍繞 Y 軸的旋轉角度 (以度爲單位)。" -#: src/libslic3r/PrintConfig.cpp:4541 +#: src/libslic3r/PrintConfig.cpp:4516 msgid "Scaling factor or percentage." msgstr "縮放因子或百分比。" -#: src/libslic3r/PrintConfig.cpp:4546 +#: src/libslic3r/PrintConfig.cpp:4521 msgid "" "Detect unconnected parts in the given model(s) and split them into separate " "objects." msgstr "檢測給定模型中未連接的部件, 並將其拆分爲單獨的對象。" -#: src/libslic3r/PrintConfig.cpp:4549 +#: src/libslic3r/PrintConfig.cpp:4524 msgid "Scale to Fit" msgstr "縮放到合適大小" -#: src/libslic3r/PrintConfig.cpp:4550 +#: src/libslic3r/PrintConfig.cpp:4525 msgid "Scale to fit the given volume." msgstr "縮放到適合於給定體積。" -#: src/libslic3r/PrintConfig.cpp:4559 +#: src/libslic3r/PrintConfig.cpp:4534 msgid "Ignore non-existent config files" msgstr "忽略不存在的配置文件" -#: src/libslic3r/PrintConfig.cpp:4560 +#: src/libslic3r/PrintConfig.cpp:4535 msgid "Do not fail if a file supplied to --load does not exist." msgstr "如果提供給—load 的文件不存在, 不要報錯。" -#: src/libslic3r/PrintConfig.cpp:4563 +#: src/libslic3r/PrintConfig.cpp:4538 msgid "" "Forward-compatibility rule when loading configurations from config files and " "project files (3MF, AMF)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4564 +#: src/libslic3r/PrintConfig.cpp:4539 msgid "" "This version of PrusaSlicer may not understand configurations produced by " "the newest PrusaSlicer versions. For example, newer PrusaSlicer may extend " @@ -14157,58 +14129,58 @@ msgid "" "substitute an unknown value with a default silently or verbosely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4571 +#: src/libslic3r/PrintConfig.cpp:4546 msgid "Bail out on unknown configuration values" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4572 +#: src/libslic3r/PrintConfig.cpp:4547 msgid "" "Enable reading unknown configuration values by verbosely substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4573 +#: src/libslic3r/PrintConfig.cpp:4548 msgid "" "Enable reading unknown configuration values by silently substituting them " "with defaults." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4577 +#: src/libslic3r/PrintConfig.cpp:4552 msgid "Load config file" msgstr "加載配置文件" -#: src/libslic3r/PrintConfig.cpp:4578 +#: src/libslic3r/PrintConfig.cpp:4553 msgid "" "Load configuration from the specified file. It can be used more than once to " "load options from multiple files." msgstr "從指定文件加載配置。可多次使用以從多個文件中加載參數。" -#: src/libslic3r/PrintConfig.cpp:4581 +#: src/libslic3r/PrintConfig.cpp:4556 msgid "Output File" msgstr "輸出文件" -#: src/libslic3r/PrintConfig.cpp:4582 +#: src/libslic3r/PrintConfig.cpp:4557 msgid "" "The file where the output will be written (if not specified, it will be " "based on the input file)." msgstr "輸出的文件(如果未指定,則將依據輸入文件)。" -#: src/libslic3r/PrintConfig.cpp:4586 +#: src/libslic3r/PrintConfig.cpp:4561 msgid "Single instance mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4587 +#: src/libslic3r/PrintConfig.cpp:4562 msgid "" "If enabled, the command line arguments are sent to an existing instance of " "GUI PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides " "the \"single_instance\" configuration value from application preferences." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4598 +#: src/libslic3r/PrintConfig.cpp:4573 msgid "Data directory" msgstr "數據目錄" -#: src/libslic3r/PrintConfig.cpp:4599 +#: src/libslic3r/PrintConfig.cpp:4574 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " @@ -14217,22 +14189,22 @@ msgstr "" "在給定目錄中加載和存儲設置。這對於維護不同的配置文件或包括來自網絡存儲的配置" "非常有用。" -#: src/libslic3r/PrintConfig.cpp:4602 +#: src/libslic3r/PrintConfig.cpp:4577 msgid "Logging level" msgstr "日誌級別" -#: src/libslic3r/PrintConfig.cpp:4603 +#: src/libslic3r/PrintConfig.cpp:4578 msgid "" "Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" "trace\n" "For example. loglevel=2 logs fatal, error and warning level messages." msgstr "" -#: src/libslic3r/PrintConfig.cpp:4609 +#: src/libslic3r/PrintConfig.cpp:4584 msgid "Render with a software renderer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:4610 +#: src/libslic3r/PrintConfig.cpp:4585 msgid "" "Render with a software renderer. The bundled MESA software renderer is " "loaded instead of the default OpenGL driver." From e8528c415a95f1066f1ee397b207c1295f439d9d Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 15 Aug 2022 12:35:53 +0200 Subject: [PATCH 124/131] Bumped up version to 2.5.0-beta1 --- src/slic3r/GUI/GUI_App.cpp | 6 +++--- version.inc | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index c25f06ff6..f9ed37f21 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -869,9 +869,9 @@ static boost::optional parse_semver_from_ini(std::string path) void GUI_App::init_app_config() { // Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release. -// SetAppName(SLIC3R_APP_KEY); - SetAppName(SLIC3R_APP_KEY "-alpha"); -// SetAppName(SLIC3R_APP_KEY "-beta"); +// SetAppName(SLIC3R_APP_KEY); +// SetAppName(SLIC3R_APP_KEY "-alpha"); + SetAppName(SLIC3R_APP_KEY "-beta"); // SetAppDisplayName(SLIC3R_APP_NAME); diff --git a/version.inc b/version.inc index 6f3a9a894..29862a340 100644 --- a/version.inc +++ b/version.inc @@ -3,7 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -set(SLIC3R_VERSION "2.5.0-alpha3") +set(SLIC3R_VERSION "2.5.0-beta1") set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,5,0,0") set(SLIC3R_RC_VERSION_DOTS "2.5.0.0") From deac513faa7cbe3a6acd835fc86134f1cab6babc Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 15 Aug 2022 14:02:50 +0200 Subject: [PATCH 125/131] Fixed conflicts after merge --- CMakeLists.txt | 3 - deps/CMakeLists.txt | 3 - src/CMakeLists.txt | 7 - src/libslic3r/CMakeLists.txt | 3 - src/libslic3r/Format/3mf.cpp | 3215 +-------------------- src/libslic3r/GCode/SeamPlacer.cpp | 21 - src/slic3r/GUI/GUI_App.cpp | 3756 ++----------------------- src/slic3r/GUI/GUI_App.hpp | 3 - src/slic3r/GUI/Gizmos/GLGizmoBase.cpp | 90 +- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 13 - src/slic3r/GUI/Notebook.hpp | 3 - tests/libslic3r/CMakeLists.txt | 3 - version.inc | 4 - 13 files changed, 280 insertions(+), 6844 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e61bbc122..9e1aef5e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,11 +33,8 @@ option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) option(SLIC3R_PERL_XS "Compile XS Perl module and enable Perl unit and integration tests" 0) option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0) -<<<<<<< HEAD option(SLIC3R_UBSAN "Enable UBSan on Clang and GCC" 0) -======= option(SLIC3R_ENABLE_FORMAT_STEP "Enable compilation of STEP file support" 1) ->>>>>>> master_250 # If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable. CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION "Allow perfoming desktop integration during runtime" 1 "NOT SLIC3R_FHS" 0) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 643f21de9..b00f85ba7 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -205,11 +205,8 @@ set(_dep_list dep_OpenVDB dep_OpenCSG dep_CGAL -<<<<<<< HEAD dep_Qhull -======= dep_OCCT ->>>>>>> master_250 ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ac7df6d82..131a69b5a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,7 +15,6 @@ add_subdirectory(libigl) add_subdirectory(hints) add_subdirectory(qoi) add_subdirectory(libnest2d) -<<<<<<< HEAD find_package(Qhull 7.2 REQUIRED) add_library(qhull INTERFACE) @@ -27,8 +26,6 @@ else() target_link_libraries(qhull INTERFACE Qhull::qhullcpp Qhull::qhull_r) endif() -======= ->>>>>>> master_250 add_subdirectory(libslic3r) if (SLIC3R_ENABLE_FORMAT_STEP) @@ -150,12 +147,8 @@ if (NOT WIN32 AND NOT APPLE) set_target_properties(PrusaSlicer PROPERTIES OUTPUT_NAME "prusa-slicer") endif () -<<<<<<< HEAD target_link_libraries(PrusaSlicer libslic3r libcereal) -======= -target_link_libraries(PrusaSlicer libslic3r cereal) ->>>>>>> master_250 if (APPLE) # add_compile_options(-stdlib=libc++) # add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 4b03900b3..01a6a3aa2 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -105,15 +105,12 @@ set(SLIC3R_SOURCES Format/ZipperArchiveImport.cpp Format/SL1.hpp Format/SL1.cpp -<<<<<<< HEAD Format/SL1_SVG.hpp Format/SL1_SVG.cpp Format/pwmx.hpp Format/pwmx.cpp -======= Format/STEP.hpp Format/STEP.cpp ->>>>>>> master_250 GCode/ThumbnailData.cpp GCode/ThumbnailData.hpp GCode/Thumbnails.cpp diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 19731923c..5caff6d3a 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -1,4 +1,3 @@ -<<<<<<< HEAD #include "../libslic3r.h" #include "../Exception.hpp" #include "../Model.hpp" @@ -458,6 +457,7 @@ namespace Slic3r { bool load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, bool check_version); unsigned int version() const { return m_version; } + boost::optional prusaslicer_generator_version() const { return m_prusaslicer_generator_version; } private: void _destroy_xml_parser(); @@ -3148,8 +3148,7 @@ bool _3MF_Exporter::_add_custom_gcode_per_print_z_file_to_archive( mz_zip_archiv } // Perform conversions based on the config values available. -//FIXME provide a version of PrusaSlicer that stored the project file (3MF). -static void handle_legacy_project_loaded(unsigned int version_project_file, DynamicPrintConfig& config) +static void handle_legacy_project_loaded(unsigned int version_project_file, DynamicPrintConfig& config, const boost::optional& prusaslicer_generator_version) { if (! config.has("brim_separation")) { if (auto *opt_elephant_foot = config.option("elefant_foot_compensation", false); opt_elephant_foot) { @@ -3158,6 +3157,23 @@ static void handle_legacy_project_loaded(unsigned int version_project_file, Dyna opt_brim_separation->value = opt_elephant_foot->value; } } + + // In PrusaSlicer 2.5.0-alpha2 and 2.5.0-alpha3, we introduce several parameters for Arachne that depend + // on nozzle size . Later we decided to make default values for those parameters computed automatically + // until the user changes them. + if (prusaslicer_generator_version && *prusaslicer_generator_version >= *Semver::parse("2.5.0-alpha2") && *prusaslicer_generator_version <= *Semver::parse("2.5.0-alpha3")) { + if (auto *opt_wall_transition_length = config.option("wall_transition_length", false); + opt_wall_transition_length && !opt_wall_transition_length->percent && opt_wall_transition_length->value == 0.4) { + opt_wall_transition_length->percent = true; + opt_wall_transition_length->value = 100; + } + + if (auto *opt_min_feature_size = config.option("min_feature_size", false); + opt_min_feature_size && !opt_min_feature_size->percent && opt_min_feature_size->value == 0.1) { + opt_min_feature_size->percent = true; + opt_min_feature_size->value = 25; + } + } } bool is_project_3mf(const std::string& filename) @@ -3200,7 +3216,7 @@ bool load_3mf(const char* path, DynamicPrintConfig& config, ConfigSubstitutionCo _3MF_Importer importer; importer.load_model_from_file(path, *model, config, config_substitutions, check_version); importer.log_errors(); - handle_legacy_project_loaded(importer.version(), config); + handle_legacy_project_loaded(importer.version(), config, importer.prusaslicer_generator_version()); return !model->objects.empty() || !config.empty(); } @@ -3221,3194 +3237,3 @@ bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config, return res; } } // namespace Slic3r -======= -#include "../libslic3r.h" -#include "../Exception.hpp" -#include "../Model.hpp" -#include "../Utils.hpp" -#include "../LocalesUtils.hpp" -#include "../GCode.hpp" -#include "../Geometry.hpp" -#include "../GCode/ThumbnailData.hpp" -#include "../Semver.hpp" -#include "../Time.hpp" - -#include "../I18N.hpp" - -#include "3mf.hpp" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -namespace pt = boost::property_tree; - -#include -#include -#include "miniz_extension.hpp" - -#include - -// Slightly faster than sprintf("%.9g"), but there is an issue with the karma floating point formatter, -// https://github.com/boostorg/spirit/pull/586 -// where the exported string is one digit shorter than it should be to guarantee lossless round trip. -// The code is left here for the ocasion boost guys improve. -#define EXPORT_3MF_USE_SPIRIT_KARMA_FP 0 - -// VERSION NUMBERS -// 0 : .3mf, files saved by older slic3r or other applications. No version definition in them. -// 1 : Introduction of 3mf versioning. No other change in data saved into 3mf files. -// 2 : Volumes' matrices and source data added to Metadata/Slic3r_PE_model.config file, meshes transformed back to their coordinate system on loading. -// WARNING !! -> the version number has been rolled back to 1 -// the next change should use 3 -const unsigned int VERSION_3MF = 1; -// Allow loading version 2 file as well. -const unsigned int VERSION_3MF_COMPATIBLE = 2; -const char* SLIC3RPE_3MF_VERSION = "slic3rpe:Version3mf"; // definition of the metadata name saved into .model file - -// Painting gizmos data version numbers -// 0 : 3MF files saved by older PrusaSlicer or the painting gizmo wasn't used. No version definition in them. -// 1 : Introduction of painting gizmos data versioning. No other changes in painting gizmos data. -const unsigned int FDM_SUPPORTS_PAINTING_VERSION = 1; -const unsigned int SEAM_PAINTING_VERSION = 1; -const unsigned int MM_PAINTING_VERSION = 1; - -const std::string SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION = "slic3rpe:FdmSupportsPaintingVersion"; -const std::string SLIC3RPE_SEAM_PAINTING_VERSION = "slic3rpe:SeamPaintingVersion"; -const std::string SLIC3RPE_MM_PAINTING_VERSION = "slic3rpe:MmPaintingVersion"; - -const std::string MODEL_FOLDER = "3D/"; -const std::string MODEL_EXTENSION = ".model"; -const std::string MODEL_FILE = "3D/3dmodel.model"; // << this is the only format of the string which works with CURA -const std::string CONTENT_TYPES_FILE = "[Content_Types].xml"; -const std::string RELATIONSHIPS_FILE = "_rels/.rels"; -const std::string THUMBNAIL_FILE = "Metadata/thumbnail.png"; -const std::string PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config"; -const std::string MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config"; -const std::string LAYER_HEIGHTS_PROFILE_FILE = "Metadata/Slic3r_PE_layer_heights_profile.txt"; -const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"; -const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"; -const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt"; -const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml"; - -static constexpr const char* MODEL_TAG = "model"; -static constexpr const char* RESOURCES_TAG = "resources"; -static constexpr const char* OBJECT_TAG = "object"; -static constexpr const char* MESH_TAG = "mesh"; -static constexpr const char* VERTICES_TAG = "vertices"; -static constexpr const char* VERTEX_TAG = "vertex"; -static constexpr const char* TRIANGLES_TAG = "triangles"; -static constexpr const char* TRIANGLE_TAG = "triangle"; -static constexpr const char* COMPONENTS_TAG = "components"; -static constexpr const char* COMPONENT_TAG = "component"; -static constexpr const char* BUILD_TAG = "build"; -static constexpr const char* ITEM_TAG = "item"; -static constexpr const char* METADATA_TAG = "metadata"; - -static constexpr const char* CONFIG_TAG = "config"; -static constexpr const char* VOLUME_TAG = "volume"; - -static constexpr const char* UNIT_ATTR = "unit"; -static constexpr const char* NAME_ATTR = "name"; -static constexpr const char* TYPE_ATTR = "type"; -static constexpr const char* ID_ATTR = "id"; -static constexpr const char* X_ATTR = "x"; -static constexpr const char* Y_ATTR = "y"; -static constexpr const char* Z_ATTR = "z"; -static constexpr const char* V1_ATTR = "v1"; -static constexpr const char* V2_ATTR = "v2"; -static constexpr const char* V3_ATTR = "v3"; -static constexpr const char* OBJECTID_ATTR = "objectid"; -static constexpr const char* TRANSFORM_ATTR = "transform"; -static constexpr const char* PRINTABLE_ATTR = "printable"; -static constexpr const char* INSTANCESCOUNT_ATTR = "instances_count"; -static constexpr const char* CUSTOM_SUPPORTS_ATTR = "slic3rpe:custom_supports"; -static constexpr const char* CUSTOM_SEAM_ATTR = "slic3rpe:custom_seam"; -static constexpr const char* MMU_SEGMENTATION_ATTR = "slic3rpe:mmu_segmentation"; - -static constexpr const char* KEY_ATTR = "key"; -static constexpr const char* VALUE_ATTR = "value"; -static constexpr const char* FIRST_TRIANGLE_ID_ATTR = "firstid"; -static constexpr const char* LAST_TRIANGLE_ID_ATTR = "lastid"; - -static constexpr const char* OBJECT_TYPE = "object"; -static constexpr const char* VOLUME_TYPE = "volume"; - -static constexpr const char* NAME_KEY = "name"; -static constexpr const char* MODIFIER_KEY = "modifier"; -static constexpr const char* VOLUME_TYPE_KEY = "volume_type"; -static constexpr const char* MATRIX_KEY = "matrix"; -static constexpr const char* SOURCE_FILE_KEY = "source_file"; -static constexpr const char* SOURCE_OBJECT_ID_KEY = "source_object_id"; -static constexpr const char* SOURCE_VOLUME_ID_KEY = "source_volume_id"; -static constexpr const char* SOURCE_OFFSET_X_KEY = "source_offset_x"; -static constexpr const char* SOURCE_OFFSET_Y_KEY = "source_offset_y"; -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_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"; -static constexpr const char* MESH_STAT_FACETS_RESERVED = "facets_reversed"; -static constexpr const char* MESH_STAT_BACKWARDS_EDGES = "backwards_edges"; - - -const unsigned int VALID_OBJECT_TYPES_COUNT = 1; -const char* VALID_OBJECT_TYPES[] = -{ - "model" -}; - -const char* INVALID_OBJECT_TYPES[] = -{ - "solidsupport", - "support", - "surface", - "other" -}; - -class version_error : public Slic3r::FileIOError -{ -public: - version_error(const std::string& what_arg) : Slic3r::FileIOError(what_arg) {} - version_error(const char* what_arg) : Slic3r::FileIOError(what_arg) {} -}; - -const char* get_attribute_value_charptr(const char** attributes, unsigned int attributes_size, const char* attribute_key) -{ - if ((attributes == nullptr) || (attributes_size == 0) || (attributes_size % 2 != 0) || (attribute_key == nullptr)) - return nullptr; - - for (unsigned int a = 0; a < attributes_size; a += 2) { - if (::strcmp(attributes[a], attribute_key) == 0) - return attributes[a + 1]; - } - - return nullptr; -} - -std::string get_attribute_value_string(const char** attributes, unsigned int attributes_size, const char* attribute_key) -{ - const char* text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); - return (text != nullptr) ? text : ""; -} - -float get_attribute_value_float(const char** attributes, unsigned int attributes_size, const char* attribute_key) -{ - float value = 0.0f; - if (const char *text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); text != nullptr) - fast_float::from_chars(text, text + strlen(text), value); - return value; -} - -int get_attribute_value_int(const char** attributes, unsigned int attributes_size, const char* attribute_key) -{ - int value = 0; - if (const char *text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); text != nullptr) - boost::spirit::qi::parse(text, text + strlen(text), boost::spirit::qi::int_, value); - return value; -} - -bool get_attribute_value_bool(const char** attributes, unsigned int attributes_size, const char* attribute_key) -{ - const char* text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); - return (text != nullptr) ? (bool)::atoi(text) : true; -} - -Slic3r::Transform3d get_transform_from_3mf_specs_string(const std::string& mat_str) -{ - // check: https://3mf.io/3d-manufacturing-format/ or https://github.com/3MFConsortium/spec_core/blob/master/3MF%20Core%20Specification.md - // to see how matrices are stored inside 3mf according to specifications - Slic3r::Transform3d ret = Slic3r::Transform3d::Identity(); - - if (mat_str.empty()) - // empty string means default identity matrix - return ret; - - std::vector mat_elements_str; - boost::split(mat_elements_str, mat_str, boost::is_any_of(" "), boost::token_compress_on); - - unsigned int size = (unsigned int)mat_elements_str.size(); - if (size != 12) - // invalid data, return identity matrix - return ret; - - unsigned int i = 0; - // matrices are stored into 3mf files as 4x3 - // we need to transpose them - for (unsigned int c = 0; c < 4; ++c) { - for (unsigned int r = 0; r < 3; ++r) { - ret(r, c) = ::atof(mat_elements_str[i++].c_str()); - } - } - return ret; -} - -float get_unit_factor(const std::string& unit) -{ - const char* text = unit.c_str(); - - if (::strcmp(text, "micron") == 0) - return 0.001f; - else if (::strcmp(text, "centimeter") == 0) - return 10.0f; - else if (::strcmp(text, "inch") == 0) - return 25.4f; - else if (::strcmp(text, "foot") == 0) - return 304.8f; - else if (::strcmp(text, "meter") == 0) - return 1000.0f; - else - // default "millimeters" (see specification) - return 1.0f; -} - -bool is_valid_object_type(const std::string& type) -{ - // if the type is empty defaults to "model" (see specification) - if (type.empty()) - return true; - - for (unsigned int i = 0; i < VALID_OBJECT_TYPES_COUNT; ++i) { - if (::strcmp(type.c_str(), VALID_OBJECT_TYPES[i]) == 0) - return true; - } - - return false; -} - -namespace Slic3r { - -//! macro used to mark string used at localization, -//! return same string -#define L(s) (s) -#define _(s) Slic3r::I18N::translate(s) - - // Base class with error messages management - class _3MF_Base - { - std::vector m_errors; - - protected: - void add_error(const std::string& error) { m_errors.push_back(error); } - void clear_errors() { m_errors.clear(); } - - public: - void log_errors() - { - for (const std::string& error : m_errors) - BOOST_LOG_TRIVIAL(error) << error; - } - }; - - class _3MF_Importer : public _3MF_Base - { - struct Component - { - int object_id; - Transform3d transform; - - explicit Component(int object_id) - : object_id(object_id) - , transform(Transform3d::Identity()) - { - } - - Component(int object_id, const Transform3d& transform) - : object_id(object_id) - , transform(transform) - { - } - }; - - typedef std::vector ComponentsList; - - struct Geometry - { - std::vector vertices; - std::vector triangles; - std::vector custom_supports; - std::vector custom_seam; - std::vector mmu_segmentation; - - bool empty() { return vertices.empty() || triangles.empty(); } - - void reset() { - vertices.clear(); - triangles.clear(); - custom_supports.clear(); - custom_seam.clear(); - mmu_segmentation.clear(); - } - }; - - struct CurrentObject - { - // ID of the object inside the 3MF file, 1 based. - int id; - // Index of the ModelObject in its respective Model, zero based. - int model_object_idx; - Geometry geometry; - ModelObject* object; - ComponentsList components; - - CurrentObject() { reset(); } - - void reset() { - id = -1; - model_object_idx = -1; - geometry.reset(); - object = nullptr; - components.clear(); - } - }; - - struct CurrentConfig - { - int object_id; - int volume_id; - }; - - struct Instance - { - ModelInstance* instance; - Transform3d transform; - - Instance(ModelInstance* instance, const Transform3d& transform) - : instance(instance) - , transform(transform) - { - } - }; - - struct Metadata - { - std::string key; - std::string value; - - Metadata(const std::string& key, const std::string& value) - : key(key) - , value(value) - { - } - }; - - typedef std::vector MetadataList; - - struct ObjectMetadata - { - struct VolumeMetadata - { - unsigned int first_triangle_id; - unsigned int last_triangle_id; - MetadataList metadata; - RepairedMeshErrors mesh_stats; - - VolumeMetadata(unsigned int first_triangle_id, unsigned int last_triangle_id) - : first_triangle_id(first_triangle_id) - , last_triangle_id(last_triangle_id) - { - } - }; - - typedef std::vector VolumeMetadataList; - - MetadataList metadata; - VolumeMetadataList volumes; - }; - - // Map from a 1 based 3MF object ID to a 0 based ModelObject index inside m_model->objects. - typedef std::map IdToModelObjectMap; - typedef std::map IdToAliasesMap; - typedef std::vector InstancesList; - typedef std::map IdToMetadataMap; - typedef std::map IdToGeometryMap; - typedef std::map> IdToLayerHeightsProfileMap; - typedef std::map IdToLayerConfigRangesMap; - typedef std::map> IdToSlaSupportPointsMap; - typedef std::map> IdToSlaDrainHolesMap; - - // Version of the 3mf file - unsigned int m_version; - bool m_check_version; - - // Semantic version of PrusaSlicer, that generated this 3MF. - boost::optional m_prusaslicer_generator_version; - unsigned int m_fdm_supports_painting_version = 0; - unsigned int m_seam_painting_version = 0; - unsigned int m_mm_painting_version = 0; - - XML_Parser m_xml_parser; - // Error code returned by the application side of the parser. In that case the expat may not reliably deliver the error state - // after returning from XML_Parse() function, thus we keep the error state here. - bool m_parse_error { false }; - std::string m_parse_error_message; - Model* m_model; - float m_unit_factor; - CurrentObject m_curr_object; - IdToModelObjectMap m_objects; - IdToAliasesMap m_objects_aliases; - InstancesList m_instances; - IdToGeometryMap m_geometries; - CurrentConfig m_curr_config; - IdToMetadataMap m_objects_metadata; - IdToLayerHeightsProfileMap m_layer_heights_profiles; - IdToLayerConfigRangesMap m_layer_config_ranges; - IdToSlaSupportPointsMap m_sla_support_points; - IdToSlaDrainHolesMap m_sla_drain_holes; - std::string m_curr_metadata_name; - std::string m_curr_characters; - std::string m_name; - - public: - _3MF_Importer(); - ~_3MF_Importer(); - - bool load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, bool check_version); - unsigned int version() const { return m_version; } - boost::optional prusaslicer_generator_version() const { return m_prusaslicer_generator_version; } - - private: - void _destroy_xml_parser(); - void _stop_xml_parser(const std::string& msg = std::string()); - - bool parse_error() const { return m_parse_error; } - const char* parse_error_message() const { - return m_parse_error ? - // The error was signalled by the user code, not the expat parser. - (m_parse_error_message.empty() ? "Invalid 3MF format" : m_parse_error_message.c_str()) : - // The error was signalled by the expat parser. - XML_ErrorString(XML_GetErrorCode(m_xml_parser)); - } - - bool _load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions); - bool _extract_model_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); - void _extract_layer_heights_profile_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); - void _extract_layer_config_ranges_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, ConfigSubstitutionContext& config_substitutions); - void _extract_sla_support_points_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); - void _extract_sla_drain_holes_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); - - void _extract_custom_gcode_per_print_z_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); - - void _extract_print_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, DynamicPrintConfig& config, ConfigSubstitutionContext& subs_context, const std::string& archive_filename); - bool _extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model); - - // handlers to parse the .model file - void _handle_start_model_xml_element(const char* name, const char** attributes); - void _handle_end_model_xml_element(const char* name); - void _handle_model_xml_characters(const XML_Char* s, int len); - - // handlers to parse the MODEL_CONFIG_FILE file - void _handle_start_config_xml_element(const char* name, const char** attributes); - void _handle_end_config_xml_element(const char* name); - - bool _handle_start_model(const char** attributes, unsigned int num_attributes); - bool _handle_end_model(); - - bool _handle_start_resources(const char** attributes, unsigned int num_attributes); - bool _handle_end_resources(); - - bool _handle_start_object(const char** attributes, unsigned int num_attributes); - bool _handle_end_object(); - - bool _handle_start_mesh(const char** attributes, unsigned int num_attributes); - bool _handle_end_mesh(); - - bool _handle_start_vertices(const char** attributes, unsigned int num_attributes); - bool _handle_end_vertices(); - - bool _handle_start_vertex(const char** attributes, unsigned int num_attributes); - bool _handle_end_vertex(); - - bool _handle_start_triangles(const char** attributes, unsigned int num_attributes); - bool _handle_end_triangles(); - - bool _handle_start_triangle(const char** attributes, unsigned int num_attributes); - bool _handle_end_triangle(); - - bool _handle_start_components(const char** attributes, unsigned int num_attributes); - bool _handle_end_components(); - - bool _handle_start_component(const char** attributes, unsigned int num_attributes); - bool _handle_end_component(); - - bool _handle_start_build(const char** attributes, unsigned int num_attributes); - bool _handle_end_build(); - - bool _handle_start_item(const char** attributes, unsigned int num_attributes); - bool _handle_end_item(); - - bool _handle_start_metadata(const char** attributes, unsigned int num_attributes); - bool _handle_end_metadata(); - - bool _create_object_instance(int object_id, const Transform3d& transform, const bool printable, unsigned int recur_counter); - - void _apply_transform(ModelInstance& instance, const Transform3d& transform); - - bool _handle_start_config(const char** attributes, unsigned int num_attributes); - bool _handle_end_config(); - - bool _handle_start_config_object(const char** attributes, unsigned int num_attributes); - bool _handle_end_config_object(); - - bool _handle_start_config_volume(const char** attributes, unsigned int num_attributes); - bool _handle_start_config_volume_mesh(const char** attributes, unsigned int num_attributes); - bool _handle_end_config_volume(); - bool _handle_end_config_volume_mesh(); - - bool _handle_start_config_metadata(const char** attributes, unsigned int num_attributes); - bool _handle_end_config_metadata(); - - bool _generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions); - - // callbacks to parse the .model file - static void XMLCALL _handle_start_model_xml_element(void* userData, const char* name, const char** attributes); - static void XMLCALL _handle_end_model_xml_element(void* userData, const char* name); - static void XMLCALL _handle_model_xml_characters(void* userData, const XML_Char* s, int len); - - // callbacks to parse the MODEL_CONFIG_FILE file - static void XMLCALL _handle_start_config_xml_element(void* userData, const char* name, const char** attributes); - static void XMLCALL _handle_end_config_xml_element(void* userData, const char* name); - }; - - _3MF_Importer::_3MF_Importer() - : m_version(0) - , m_check_version(false) - , m_xml_parser(nullptr) - , m_model(nullptr) - , m_unit_factor(1.0f) - , m_curr_metadata_name("") - , m_curr_characters("") - , m_name("") - { - } - - _3MF_Importer::~_3MF_Importer() - { - _destroy_xml_parser(); - } - - bool _3MF_Importer::load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, bool check_version) - { - m_version = 0; - m_fdm_supports_painting_version = 0; - m_seam_painting_version = 0; - m_mm_painting_version = 0; - m_check_version = check_version; - m_model = &model; - m_unit_factor = 1.0f; - m_curr_object.reset(); - m_objects.clear(); - m_objects_aliases.clear(); - m_instances.clear(); - m_geometries.clear(); - m_curr_config.object_id = -1; - m_curr_config.volume_id = -1; - m_objects_metadata.clear(); - m_layer_heights_profiles.clear(); - m_layer_config_ranges.clear(); - m_sla_support_points.clear(); - m_curr_metadata_name.clear(); - m_curr_characters.clear(); - clear_errors(); - - return _load_model_from_file(filename, model, config, config_substitutions); - } - - void _3MF_Importer::_destroy_xml_parser() - { - if (m_xml_parser != nullptr) { - XML_ParserFree(m_xml_parser); - m_xml_parser = nullptr; - } - } - - void _3MF_Importer::_stop_xml_parser(const std::string &msg) - { - assert(! m_parse_error); - assert(m_parse_error_message.empty()); - assert(m_xml_parser != nullptr); - m_parse_error = true; - m_parse_error_message = msg; - XML_StopParser(m_xml_parser, false); - } - - bool _3MF_Importer::_load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions) - { - mz_zip_archive archive; - mz_zip_zero_struct(&archive); - - if (!open_zip_reader(&archive, filename)) { - add_error("Unable to open the file"); - return false; - } - - mz_uint num_entries = mz_zip_reader_get_num_files(&archive); - - mz_zip_archive_file_stat stat; - - m_name = boost::filesystem::path(filename).stem().string(); - - // we first loop the entries to read from the archive the .model file only, in order to extract the version from it - for (mz_uint i = 0; i < num_entries; ++i) { - if (mz_zip_reader_file_stat(&archive, i, &stat)) { - std::string name(stat.m_filename); - std::replace(name.begin(), name.end(), '\\', '/'); - - if (boost::algorithm::istarts_with(name, MODEL_FOLDER) && boost::algorithm::iends_with(name, MODEL_EXTENSION)) { - try - { - // valid model name -> extract model - if (!_extract_model_from_archive(archive, stat)) { - close_zip_reader(&archive); - add_error("Archive does not contain a valid model"); - return false; - } - } - catch (const std::exception& e) - { - // ensure the zip archive is closed and rethrow the exception - close_zip_reader(&archive); - throw Slic3r::FileIOError(e.what()); - } - } - } - } - - // we then loop again the entries to read other files stored in the archive - for (mz_uint i = 0; i < num_entries; ++i) { - if (mz_zip_reader_file_stat(&archive, i, &stat)) { - std::string name(stat.m_filename); - std::replace(name.begin(), name.end(), '\\', '/'); - - if (boost::algorithm::iequals(name, LAYER_HEIGHTS_PROFILE_FILE)) { - // extract slic3r layer heights profile file - _extract_layer_heights_profile_config_from_archive(archive, stat); - } - else if (boost::algorithm::iequals(name, LAYER_CONFIG_RANGES_FILE)) { - // extract slic3r layer config ranges file - _extract_layer_config_ranges_from_archive(archive, stat, config_substitutions); - } - else if (boost::algorithm::iequals(name, SLA_SUPPORT_POINTS_FILE)) { - // extract sla support points file - _extract_sla_support_points_from_archive(archive, stat); - } - else if (boost::algorithm::iequals(name, SLA_DRAIN_HOLES_FILE)) { - // extract sla support points file - _extract_sla_drain_holes_from_archive(archive, stat); - } - else if (boost::algorithm::iequals(name, PRINT_CONFIG_FILE)) { - // extract slic3r print config file - _extract_print_config_from_archive(archive, stat, config, config_substitutions, filename); - } - else if (boost::algorithm::iequals(name, CUSTOM_GCODE_PER_PRINT_Z_FILE)) { - // extract slic3r layer config ranges file - _extract_custom_gcode_per_print_z_from_archive(archive, stat); - } - else if (boost::algorithm::iequals(name, MODEL_CONFIG_FILE)) { - // extract slic3r model config file - if (!_extract_model_config_from_archive(archive, stat, model)) { - close_zip_reader(&archive); - add_error("Archive does not contain a valid model config"); - return false; - } - } - } - } - - close_zip_reader(&archive); - - if (m_version == 0) { - // if the 3mf was not produced by PrusaSlicer and there is more than one instance, - // split the object in as many objects as instances - size_t curr_models_count = m_model->objects.size(); - size_t i = 0; - while (i < curr_models_count) { - ModelObject* model_object = m_model->objects[i]; - if (model_object->instances.size() > 1) { - // select the geometry associated with the original model object - const Geometry* geometry = nullptr; - for (const IdToModelObjectMap::value_type& object : m_objects) { - if (object.second == int(i)) { - IdToGeometryMap::const_iterator obj_geometry = m_geometries.find(object.first); - if (obj_geometry == m_geometries.end()) { - add_error("Unable to find object geometry"); - return false; - } - geometry = &obj_geometry->second; - break; - } - } - - if (geometry == nullptr) { - add_error("Unable to find object geometry"); - return false; - } - - // use the geometry to create the volumes in the new model objects - ObjectMetadata::VolumeMetadataList volumes(1, { 0, (unsigned int)geometry->triangles.size() - 1 }); - - // for each instance after the 1st, create a new model object containing only that instance - // and copy into it the geometry - while (model_object->instances.size() > 1) { - ModelObject* new_model_object = m_model->add_object(*model_object); - new_model_object->clear_instances(); - new_model_object->add_instance(*model_object->instances.back()); - model_object->delete_last_instance(); - if (!_generate_volumes(*new_model_object, *geometry, volumes, config_substitutions)) - return false; - } - } - ++i; - } - } - - for (const IdToModelObjectMap::value_type& object : m_objects) { - if (object.second >= int(m_model->objects.size())) { - add_error("Unable to find object"); - return false; - } - ModelObject* model_object = m_model->objects[object.second]; - IdToGeometryMap::const_iterator obj_geometry = m_geometries.find(object.first); - if (obj_geometry == m_geometries.end()) { - add_error("Unable to find object geometry"); - return false; - } - - // m_layer_heights_profiles are indexed by a 1 based model object index. - IdToLayerHeightsProfileMap::iterator obj_layer_heights_profile = m_layer_heights_profiles.find(object.second + 1); - if (obj_layer_heights_profile != m_layer_heights_profiles.end()) - model_object->layer_height_profile.set(std::move(obj_layer_heights_profile->second)); - - // m_layer_config_ranges are indexed by a 1 based model object index. - IdToLayerConfigRangesMap::iterator obj_layer_config_ranges = m_layer_config_ranges.find(object.second + 1); - if (obj_layer_config_ranges != m_layer_config_ranges.end()) - model_object->layer_config_ranges = std::move(obj_layer_config_ranges->second); - - // m_sla_support_points are indexed by a 1 based model object index. - IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1); - if (obj_sla_support_points != m_sla_support_points.end() && !obj_sla_support_points->second.empty()) { - model_object->sla_support_points = std::move(obj_sla_support_points->second); - model_object->sla_points_status = sla::PointsStatus::UserModified; - } - - IdToSlaDrainHolesMap::iterator obj_drain_holes = m_sla_drain_holes.find(object.second + 1); - if (obj_drain_holes != m_sla_drain_holes.end() && !obj_drain_holes->second.empty()) { - model_object->sla_drain_holes = std::move(obj_drain_holes->second); - } - - ObjectMetadata::VolumeMetadataList volumes; - ObjectMetadata::VolumeMetadataList* volumes_ptr = nullptr; - - IdToMetadataMap::iterator obj_metadata = m_objects_metadata.find(object.first); - if (obj_metadata != m_objects_metadata.end()) { - // config data has been found, this model was saved using slic3r pe - - // apply object's name and config data - for (const Metadata& metadata : obj_metadata->second.metadata) { - if (metadata.key == "name") - model_object->name = metadata.value; - else - model_object->config.set_deserialize(metadata.key, metadata.value, config_substitutions); - } - - // select object's detected volumes - volumes_ptr = &obj_metadata->second.volumes; - } - else { - // config data not found, this model was not saved using slic3r pe - - // add the entire geometry as the single volume to generate - volumes.emplace_back(0, (int)obj_geometry->second.triangles.size() - 1); - - // select as volumes - volumes_ptr = &volumes; - } - - if (!_generate_volumes(*model_object, obj_geometry->second, *volumes_ptr, config_substitutions)) - return false; - } - - int object_idx = 0; - for (ModelObject* o : model.objects) { - int volume_idx = 0; - for (ModelVolume* v : o->volumes) { - if (v->source.input_file.empty() && v->type() == ModelVolumeType::MODEL_PART) { - v->source.input_file = filename; - if (v->source.volume_idx == -1) - v->source.volume_idx = volume_idx; - if (v->source.object_idx == -1) - v->source.object_idx = object_idx; - } - ++volume_idx; - } - ++object_idx; - } - -// // fixes the min z of the model if negative -// model.adjust_min_z(); - - return true; - } - - bool _3MF_Importer::_extract_model_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) - { - if (stat.m_uncomp_size == 0) { - add_error("Found invalid size"); - return false; - } - - _destroy_xml_parser(); - - m_xml_parser = XML_ParserCreate(nullptr); - if (m_xml_parser == nullptr) { - add_error("Unable to create parser"); - return false; - } - - XML_SetUserData(m_xml_parser, (void*)this); - XML_SetElementHandler(m_xml_parser, _3MF_Importer::_handle_start_model_xml_element, _3MF_Importer::_handle_end_model_xml_element); - XML_SetCharacterDataHandler(m_xml_parser, _3MF_Importer::_handle_model_xml_characters); - - struct CallbackData - { - XML_Parser& parser; - _3MF_Importer& importer; - const mz_zip_archive_file_stat& stat; - - CallbackData(XML_Parser& parser, _3MF_Importer& importer, const mz_zip_archive_file_stat& stat) : parser(parser), importer(importer), stat(stat) {} - }; - - CallbackData data(m_xml_parser, *this, stat); - - mz_bool res = 0; - - try - { - res = mz_zip_reader_extract_file_to_callback(&archive, stat.m_filename, [](void* pOpaque, mz_uint64 file_ofs, const void* pBuf, size_t n)->size_t { - CallbackData* data = (CallbackData*)pOpaque; - if (!XML_Parse(data->parser, (const char*)pBuf, (int)n, (file_ofs + n == data->stat.m_uncomp_size) ? 1 : 0) || data->importer.parse_error()) { - char error_buf[1024]; - ::sprintf(error_buf, "Error (%s) while parsing '%s' at line %d", data->importer.parse_error_message(), data->stat.m_filename, (int)XML_GetCurrentLineNumber(data->parser)); - throw Slic3r::FileIOError(error_buf); - } - - return n; - }, &data, 0); - } - catch (const version_error& e) - { - // rethrow the exception - throw Slic3r::FileIOError(e.what()); - } - catch (std::exception& e) - { - add_error(e.what()); - return false; - } - - if (res == 0) { - add_error("Error while extracting model data from zip archive"); - return false; - } - - return true; - } - - void _3MF_Importer::_extract_print_config_from_archive( - mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, - DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, - const std::string& archive_filename) - { - if (stat.m_uncomp_size > 0) { - std::string buffer((size_t)stat.m_uncomp_size, 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading config data to buffer"); - return; - } - //FIXME Loading a "will be one day a legacy format" of configuration in a form of a G-code comment. - // Each config line is prefixed with a semicolon (G-code comment), that is ugly. - - // Replacing the legacy function with load_from_ini_string_commented leads to issues when - // parsing 3MFs from before PrusaSlicer 2.0.0 (which can have duplicated entries in the INI. - // See https://github.com/prusa3d/PrusaSlicer/issues/7155. We'll revert it for now. - //config_substitutions.substitutions = config.load_from_ini_string_commented(std::move(buffer), config_substitutions.rule); - ConfigBase::load_from_gcode_string_legacy(config, buffer.data(), config_substitutions); - } - } - - void _3MF_Importer::_extract_layer_heights_profile_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) - { - if (stat.m_uncomp_size > 0) { - std::string buffer((size_t)stat.m_uncomp_size, 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading layer heights profile data to buffer"); - return; - } - - if (buffer.back() == '\n') - buffer.pop_back(); - - std::vector objects; - boost::split(objects, buffer, boost::is_any_of("\n"), boost::token_compress_off); - - for (const std::string& object : objects) { - std::vector object_data; - boost::split(object_data, object, boost::is_any_of("|"), boost::token_compress_off); - if (object_data.size() != 2) { - add_error("Error while reading object data"); - continue; - } - - std::vector object_data_id; - boost::split(object_data_id, object_data[0], boost::is_any_of("="), boost::token_compress_off); - if (object_data_id.size() != 2) { - add_error("Error while reading object id"); - continue; - } - - int object_id = std::atoi(object_data_id[1].c_str()); - if (object_id == 0) { - add_error("Found invalid object id"); - continue; - } - - IdToLayerHeightsProfileMap::iterator object_item = m_layer_heights_profiles.find(object_id); - if (object_item != m_layer_heights_profiles.end()) { - add_error("Found duplicated layer heights profile"); - continue; - } - - std::vector object_data_profile; - boost::split(object_data_profile, object_data[1], boost::is_any_of(";"), boost::token_compress_off); - if (object_data_profile.size() <= 4 || object_data_profile.size() % 2 != 0) { - add_error("Found invalid layer heights profile"); - continue; - } - - std::vector profile; - profile.reserve(object_data_profile.size()); - - for (const std::string& value : object_data_profile) { - profile.push_back((coordf_t)std::atof(value.c_str())); - } - - m_layer_heights_profiles.insert({ object_id, profile }); - } - } - } - - void _3MF_Importer::_extract_layer_config_ranges_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, ConfigSubstitutionContext& config_substitutions) - { - if (stat.m_uncomp_size > 0) { - std::string buffer((size_t)stat.m_uncomp_size, 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading layer config ranges data to buffer"); - return; - } - - std::istringstream iss(buffer); // wrap returned xml to istringstream - pt::ptree objects_tree; - pt::read_xml(iss, objects_tree); - - for (const auto& object : objects_tree.get_child("objects")) { - pt::ptree object_tree = object.second; - int obj_idx = object_tree.get(".id", -1); - if (obj_idx <= 0) { - add_error("Found invalid object id"); - continue; - } - - IdToLayerConfigRangesMap::iterator object_item = m_layer_config_ranges.find(obj_idx); - if (object_item != m_layer_config_ranges.end()) { - add_error("Found duplicated layer config range"); - continue; - } - - t_layer_config_ranges config_ranges; - - for (const auto& range : object_tree) { - if (range.first != "range") - continue; - pt::ptree range_tree = range.second; - double min_z = range_tree.get(".min_z"); - double max_z = range_tree.get(".max_z"); - - // get Z range information - DynamicPrintConfig config; - - for (const auto& option : range_tree) { - if (option.first != "option") - continue; - std::string opt_key = option.second.get(".opt_key"); - std::string value = option.second.data(); - config.set_deserialize(opt_key, value, config_substitutions); - } - - config_ranges[{ min_z, max_z }].assign_config(std::move(config)); - } - - if (!config_ranges.empty()) - m_layer_config_ranges.insert({ obj_idx, std::move(config_ranges) }); - } - } - } - - void _3MF_Importer::_extract_sla_support_points_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) - { - if (stat.m_uncomp_size > 0) { - std::string buffer((size_t)stat.m_uncomp_size, 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading sla support points data to buffer"); - return; - } - - if (buffer.back() == '\n') - buffer.pop_back(); - - std::vector objects; - boost::split(objects, buffer, boost::is_any_of("\n"), boost::token_compress_off); - - // Info on format versioning - see 3mf.hpp - int version = 0; - std::string key("support_points_format_version="); - if (!objects.empty() && objects[0].find(key) != std::string::npos) { - objects[0].erase(objects[0].begin(), objects[0].begin() + long(key.size())); // removes the string - version = std::stoi(objects[0]); - objects.erase(objects.begin()); // pop the header - } - - for (const std::string& object : objects) { - std::vector object_data; - boost::split(object_data, object, boost::is_any_of("|"), boost::token_compress_off); - - if (object_data.size() != 2) { - add_error("Error while reading object data"); - continue; - } - - std::vector object_data_id; - boost::split(object_data_id, object_data[0], boost::is_any_of("="), boost::token_compress_off); - if (object_data_id.size() != 2) { - add_error("Error while reading object id"); - continue; - } - - int object_id = std::atoi(object_data_id[1].c_str()); - if (object_id == 0) { - add_error("Found invalid object id"); - continue; - } - - IdToSlaSupportPointsMap::iterator object_item = m_sla_support_points.find(object_id); - if (object_item != m_sla_support_points.end()) { - add_error("Found duplicated SLA support points"); - continue; - } - - std::vector object_data_points; - boost::split(object_data_points, object_data[1], boost::is_any_of(" "), boost::token_compress_off); - - std::vector sla_support_points; - - if (version == 0) { - for (unsigned int i=0; i 0) { - std::string buffer(size_t(stat.m_uncomp_size), 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading sla support points data to buffer"); - return; - } - - if (buffer.back() == '\n') - buffer.pop_back(); - - std::vector objects; - boost::split(objects, buffer, boost::is_any_of("\n"), boost::token_compress_off); - - // Info on format versioning - see 3mf.hpp - int version = 0; - std::string key("drain_holes_format_version="); - if (!objects.empty() && objects[0].find(key) != std::string::npos) { - objects[0].erase(objects[0].begin(), objects[0].begin() + long(key.size())); // removes the string - version = std::stoi(objects[0]); - objects.erase(objects.begin()); // pop the header - } - - for (const std::string& object : objects) { - std::vector object_data; - boost::split(object_data, object, boost::is_any_of("|"), boost::token_compress_off); - - if (object_data.size() != 2) { - add_error("Error while reading object data"); - continue; - } - - std::vector object_data_id; - boost::split(object_data_id, object_data[0], boost::is_any_of("="), boost::token_compress_off); - if (object_data_id.size() != 2) { - add_error("Error while reading object id"); - continue; - } - - int object_id = std::atoi(object_data_id[1].c_str()); - if (object_id == 0) { - add_error("Found invalid object id"); - continue; - } - - IdToSlaDrainHolesMap::iterator object_item = m_sla_drain_holes.find(object_id); - if (object_item != m_sla_drain_holes.end()) { - add_error("Found duplicated SLA drain holes"); - continue; - } - - std::vector object_data_points; - boost::split(object_data_points, object_data[1], boost::is_any_of(" "), boost::token_compress_off); - - sla::DrainHoles sla_drain_holes; - - if (version == 1) { - for (unsigned int i=0; i 0) { - std::string buffer((size_t)stat.m_uncomp_size, 0); - mz_bool res = mz_zip_reader_extract_file_to_mem(&archive, stat.m_filename, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); - if (res == 0) { - add_error("Error while reading custom Gcodes per height data to buffer"); - return; - } - - std::istringstream iss(buffer); // wrap returned xml to istringstream - pt::ptree main_tree; - pt::read_xml(iss, main_tree); - - if (main_tree.front().first != "custom_gcodes_per_print_z") - return; - pt::ptree code_tree = main_tree.front().second; - - m_model->custom_gcode_per_print_z.gcodes.clear(); - - for (const auto& code : code_tree) { - if (code.first == "mode") { - pt::ptree tree = code.second; - std::string mode = tree.get(".value"); - m_model->custom_gcode_per_print_z.mode = mode == CustomGCode::SingleExtruderMode ? CustomGCode::Mode::SingleExtruder : - mode == CustomGCode::MultiAsSingleMode ? CustomGCode::Mode::MultiAsSingle : - CustomGCode::Mode::MultiExtruder; - } - if (code.first != "code") - continue; - - pt::ptree tree = code.second; - double print_z = tree.get (".print_z" ); - int extruder = tree.get (".extruder"); - std::string color = tree.get (".color" ); - - CustomGCode::Type type; - std::string extra; - pt::ptree attr_tree = tree.find("")->second; - if (attr_tree.find("type") == attr_tree.not_found()) { - // It means that data was saved in old version (2.2.0 and older) of PrusaSlicer - // read old data ... - std::string gcode = tree.get (".gcode"); - // ... and interpret them to the new data - type = gcode == "M600" ? CustomGCode::ColorChange : - gcode == "M601" ? CustomGCode::PausePrint : - gcode == "tool_change" ? CustomGCode::ToolChange : CustomGCode::Custom; - extra = type == CustomGCode::PausePrint ? color : - type == CustomGCode::Custom ? gcode : ""; - } - else { - type = static_cast(tree.get(".type")); - extra = tree.get(".extra"); - } - m_model->custom_gcode_per_print_z.gcodes.push_back(CustomGCode::Item{print_z, type, extruder, color, extra}) ; - } - } - } - - void _3MF_Importer::_handle_start_model_xml_element(const char* name, const char** attributes) - { - if (m_xml_parser == nullptr) - return; - - bool res = true; - unsigned int num_attributes = (unsigned int)XML_GetSpecifiedAttributeCount(m_xml_parser); - - if (::strcmp(MODEL_TAG, name) == 0) - res = _handle_start_model(attributes, num_attributes); - else if (::strcmp(RESOURCES_TAG, name) == 0) - res = _handle_start_resources(attributes, num_attributes); - else if (::strcmp(OBJECT_TAG, name) == 0) - res = _handle_start_object(attributes, num_attributes); - else if (::strcmp(MESH_TAG, name) == 0) - res = _handle_start_mesh(attributes, num_attributes); - else if (::strcmp(VERTICES_TAG, name) == 0) - res = _handle_start_vertices(attributes, num_attributes); - else if (::strcmp(VERTEX_TAG, name) == 0) - res = _handle_start_vertex(attributes, num_attributes); - else if (::strcmp(TRIANGLES_TAG, name) == 0) - res = _handle_start_triangles(attributes, num_attributes); - else if (::strcmp(TRIANGLE_TAG, name) == 0) - res = _handle_start_triangle(attributes, num_attributes); - else if (::strcmp(COMPONENTS_TAG, name) == 0) - res = _handle_start_components(attributes, num_attributes); - else if (::strcmp(COMPONENT_TAG, name) == 0) - res = _handle_start_component(attributes, num_attributes); - else if (::strcmp(BUILD_TAG, name) == 0) - res = _handle_start_build(attributes, num_attributes); - else if (::strcmp(ITEM_TAG, name) == 0) - res = _handle_start_item(attributes, num_attributes); - else if (::strcmp(METADATA_TAG, name) == 0) - res = _handle_start_metadata(attributes, num_attributes); - - if (!res) - _stop_xml_parser(); - } - - void _3MF_Importer::_handle_end_model_xml_element(const char* name) - { - if (m_xml_parser == nullptr) - return; - - bool res = true; - - if (::strcmp(MODEL_TAG, name) == 0) - res = _handle_end_model(); - else if (::strcmp(RESOURCES_TAG, name) == 0) - res = _handle_end_resources(); - else if (::strcmp(OBJECT_TAG, name) == 0) - res = _handle_end_object(); - else if (::strcmp(MESH_TAG, name) == 0) - res = _handle_end_mesh(); - else if (::strcmp(VERTICES_TAG, name) == 0) - res = _handle_end_vertices(); - else if (::strcmp(VERTEX_TAG, name) == 0) - res = _handle_end_vertex(); - else if (::strcmp(TRIANGLES_TAG, name) == 0) - res = _handle_end_triangles(); - else if (::strcmp(TRIANGLE_TAG, name) == 0) - res = _handle_end_triangle(); - else if (::strcmp(COMPONENTS_TAG, name) == 0) - res = _handle_end_components(); - else if (::strcmp(COMPONENT_TAG, name) == 0) - res = _handle_end_component(); - else if (::strcmp(BUILD_TAG, name) == 0) - res = _handle_end_build(); - else if (::strcmp(ITEM_TAG, name) == 0) - res = _handle_end_item(); - else if (::strcmp(METADATA_TAG, name) == 0) - res = _handle_end_metadata(); - - if (!res) - _stop_xml_parser(); - } - - void _3MF_Importer::_handle_model_xml_characters(const XML_Char* s, int len) - { - m_curr_characters.append(s, len); - } - - void _3MF_Importer::_handle_start_config_xml_element(const char* name, const char** attributes) - { - if (m_xml_parser == nullptr) - return; - - bool res = true; - unsigned int num_attributes = (unsigned int)XML_GetSpecifiedAttributeCount(m_xml_parser); - - if (::strcmp(CONFIG_TAG, name) == 0) - res = _handle_start_config(attributes, num_attributes); - else if (::strcmp(OBJECT_TAG, name) == 0) - res = _handle_start_config_object(attributes, num_attributes); - else if (::strcmp(VOLUME_TAG, name) == 0) - res = _handle_start_config_volume(attributes, num_attributes); - else if (::strcmp(MESH_TAG, name) == 0) - res = _handle_start_config_volume_mesh(attributes, num_attributes); - else if (::strcmp(METADATA_TAG, name) == 0) - res = _handle_start_config_metadata(attributes, num_attributes); - - if (!res) - _stop_xml_parser(); - } - - void _3MF_Importer::_handle_end_config_xml_element(const char* name) - { - if (m_xml_parser == nullptr) - return; - - bool res = true; - - if (::strcmp(CONFIG_TAG, name) == 0) - res = _handle_end_config(); - else if (::strcmp(OBJECT_TAG, name) == 0) - res = _handle_end_config_object(); - else if (::strcmp(VOLUME_TAG, name) == 0) - res = _handle_end_config_volume(); - else if (::strcmp(MESH_TAG, name) == 0) - res = _handle_end_config_volume_mesh(); - else if (::strcmp(METADATA_TAG, name) == 0) - res = _handle_end_config_metadata(); - - if (!res) - _stop_xml_parser(); - } - - bool _3MF_Importer::_handle_start_model(const char** attributes, unsigned int num_attributes) - { - m_unit_factor = get_unit_factor(get_attribute_value_string(attributes, num_attributes, UNIT_ATTR)); - return true; - } - - bool _3MF_Importer::_handle_end_model() - { - // deletes all non-built or non-instanced objects - for (const IdToModelObjectMap::value_type& object : m_objects) { - if (object.second >= int(m_model->objects.size())) { - add_error("Unable to find object"); - return false; - } - ModelObject *model_object = m_model->objects[object.second]; - if (model_object != nullptr && model_object->instances.size() == 0) - m_model->delete_object(model_object); - } - - if (m_version == 0) { - // if the 3mf was not produced by PrusaSlicer and there is only one object, - // set the object name to match the filename - if (m_model->objects.size() == 1) - m_model->objects.front()->name = m_name; - } - - // applies instances' matrices - for (Instance& instance : m_instances) { - if (instance.instance != nullptr && instance.instance->get_object() != nullptr) - // apply the transform to the instance - _apply_transform(*instance.instance, instance.transform); - } - - return true; - } - - bool _3MF_Importer::_handle_start_resources(const char** attributes, unsigned int num_attributes) - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_end_resources() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_object(const char** attributes, unsigned int num_attributes) - { - // reset current data - m_curr_object.reset(); - - if (is_valid_object_type(get_attribute_value_string(attributes, num_attributes, TYPE_ATTR))) { - // create new object (it may be removed later if no instances are generated from it) - m_curr_object.model_object_idx = (int)m_model->objects.size(); - m_curr_object.object = m_model->add_object(); - if (m_curr_object.object == nullptr) { - add_error("Unable to create object"); - return false; - } - - // set object data - m_curr_object.object->name = get_attribute_value_string(attributes, num_attributes, NAME_ATTR); - if (m_curr_object.object->name.empty()) - m_curr_object.object->name = m_name + "_" + std::to_string(m_model->objects.size()); - - m_curr_object.id = get_attribute_value_int(attributes, num_attributes, ID_ATTR); - } - - return true; - } - - bool _3MF_Importer::_handle_end_object() - { - if (m_curr_object.object != nullptr) { - if (m_curr_object.geometry.empty()) { - // no geometry defined - // remove the object from the model - m_model->delete_object(m_curr_object.object); - - if (m_curr_object.components.empty()) { - // no components defined -> invalid object, delete it - IdToModelObjectMap::iterator object_item = m_objects.find(m_curr_object.id); - if (object_item != m_objects.end()) - m_objects.erase(object_item); - - IdToAliasesMap::iterator alias_item = m_objects_aliases.find(m_curr_object.id); - if (alias_item != m_objects_aliases.end()) - m_objects_aliases.erase(alias_item); - } - else - // adds components to aliases - m_objects_aliases.insert({ m_curr_object.id, m_curr_object.components }); - } - else { - // geometry defined, store it for later use - m_geometries.insert({ m_curr_object.id, std::move(m_curr_object.geometry) }); - - // stores the object for later use - if (m_objects.find(m_curr_object.id) == m_objects.end()) { - m_objects.insert({ m_curr_object.id, m_curr_object.model_object_idx }); - m_objects_aliases.insert({ m_curr_object.id, { 1, Component(m_curr_object.id) } }); // aliases itself - } - else { - add_error("Found object with duplicate id"); - return false; - } - } - } - - return true; - } - - bool _3MF_Importer::_handle_start_mesh(const char** attributes, unsigned int num_attributes) - { - // reset current geometry - m_curr_object.geometry.reset(); - return true; - } - - bool _3MF_Importer::_handle_end_mesh() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_vertices(const char** attributes, unsigned int num_attributes) - { - // reset current vertices - m_curr_object.geometry.vertices.clear(); - return true; - } - - bool _3MF_Importer::_handle_end_vertices() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_vertex(const char** attributes, unsigned int num_attributes) - { - // appends the vertex coordinates - // missing values are set equal to ZERO - m_curr_object.geometry.vertices.emplace_back( - m_unit_factor * get_attribute_value_float(attributes, num_attributes, X_ATTR), - m_unit_factor * get_attribute_value_float(attributes, num_attributes, Y_ATTR), - m_unit_factor * get_attribute_value_float(attributes, num_attributes, Z_ATTR)); - return true; - } - - bool _3MF_Importer::_handle_end_vertex() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_triangles(const char** attributes, unsigned int num_attributes) - { - // reset current triangles - m_curr_object.geometry.triangles.clear(); - return true; - } - - bool _3MF_Importer::_handle_end_triangles() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_triangle(const char** attributes, unsigned int num_attributes) - { - // we are ignoring the following attributes: - // p1 - // p2 - // p3 - // pid - // see specifications - - // appends the triangle's vertices indices - // missing values are set equal to ZERO - m_curr_object.geometry.triangles.emplace_back( - get_attribute_value_int(attributes, num_attributes, V1_ATTR), - get_attribute_value_int(attributes, num_attributes, V2_ATTR), - get_attribute_value_int(attributes, num_attributes, V3_ATTR)); - - m_curr_object.geometry.custom_supports.push_back(get_attribute_value_string(attributes, num_attributes, CUSTOM_SUPPORTS_ATTR)); - m_curr_object.geometry.custom_seam.push_back(get_attribute_value_string(attributes, num_attributes, CUSTOM_SEAM_ATTR)); - m_curr_object.geometry.mmu_segmentation.push_back(get_attribute_value_string(attributes, num_attributes, MMU_SEGMENTATION_ATTR)); - return true; - } - - bool _3MF_Importer::_handle_end_triangle() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_components(const char** attributes, unsigned int num_attributes) - { - // reset current components - m_curr_object.components.clear(); - return true; - } - - bool _3MF_Importer::_handle_end_components() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_component(const char** attributes, unsigned int num_attributes) - { - int object_id = get_attribute_value_int(attributes, num_attributes, OBJECTID_ATTR); - Transform3d transform = get_transform_from_3mf_specs_string(get_attribute_value_string(attributes, num_attributes, TRANSFORM_ATTR)); - - IdToModelObjectMap::iterator object_item = m_objects.find(object_id); - if (object_item == m_objects.end()) { - IdToAliasesMap::iterator alias_item = m_objects_aliases.find(object_id); - if (alias_item == m_objects_aliases.end()) { - add_error("Found component with invalid object id"); - return false; - } - } - - m_curr_object.components.emplace_back(object_id, transform); - - return true; - } - - bool _3MF_Importer::_handle_end_component() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_build(const char** attributes, unsigned int num_attributes) - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_end_build() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_item(const char** attributes, unsigned int num_attributes) - { - // we are ignoring the following attributes - // thumbnail - // partnumber - // pid - // pindex - // see specifications - - int object_id = get_attribute_value_int(attributes, num_attributes, OBJECTID_ATTR); - Transform3d transform = get_transform_from_3mf_specs_string(get_attribute_value_string(attributes, num_attributes, TRANSFORM_ATTR)); - int printable = get_attribute_value_bool(attributes, num_attributes, PRINTABLE_ATTR); - - return _create_object_instance(object_id, transform, printable, 1); - } - - bool _3MF_Importer::_handle_end_item() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_metadata(const char** attributes, unsigned int num_attributes) - { - m_curr_characters.clear(); - - std::string name = get_attribute_value_string(attributes, num_attributes, NAME_ATTR); - if (!name.empty()) - m_curr_metadata_name = name; - - return true; - } - - inline static void check_painting_version(unsigned int loaded_version, unsigned int highest_supported_version, const std::string &error_msg) - { - if (loaded_version > highest_supported_version) - throw version_error(error_msg); - } - - bool _3MF_Importer::_handle_end_metadata() - { - if (m_curr_metadata_name == SLIC3RPE_3MF_VERSION) { - m_version = (unsigned int)atoi(m_curr_characters.c_str()); - if (m_check_version && (m_version > VERSION_3MF_COMPATIBLE)) { - // std::string msg = _(L("The selected 3mf file has been saved with a newer version of " + std::string(SLIC3R_APP_NAME) + " and is not compatible.")); - // throw version_error(msg.c_str()); - const std::string msg = (boost::format(_(L("The selected 3mf file has been saved with a newer version of %1% and is not compatible."))) % std::string(SLIC3R_APP_NAME)).str(); - throw version_error(msg); - } - } else if (m_curr_metadata_name == "Application") { - // Generator application of the 3MF. - // SLIC3R_APP_KEY - SLIC3R_VERSION - if (boost::starts_with(m_curr_characters, "PrusaSlicer-")) - m_prusaslicer_generator_version = Semver::parse(m_curr_characters.substr(12)); - } else if (m_curr_metadata_name == SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION) { - m_fdm_supports_painting_version = (unsigned int) atoi(m_curr_characters.c_str()); - check_painting_version(m_fdm_supports_painting_version, FDM_SUPPORTS_PAINTING_VERSION, - _(L("The selected 3MF contains FDM supports painted object using a newer version of PrusaSlicer and is not compatible."))); - } else if (m_curr_metadata_name == SLIC3RPE_SEAM_PAINTING_VERSION) { - m_seam_painting_version = (unsigned int) atoi(m_curr_characters.c_str()); - check_painting_version(m_seam_painting_version, SEAM_PAINTING_VERSION, - _(L("The selected 3MF contains seam painted object using a newer version of PrusaSlicer and is not compatible."))); - } else if (m_curr_metadata_name == SLIC3RPE_MM_PAINTING_VERSION) { - m_mm_painting_version = (unsigned int) atoi(m_curr_characters.c_str()); - check_painting_version(m_mm_painting_version, MM_PAINTING_VERSION, - _(L("The selected 3MF contains multi-material painted object using a newer version of PrusaSlicer and is not compatible."))); - } - - return true; - } - - bool _3MF_Importer::_create_object_instance(int object_id, const Transform3d& transform, const bool printable, unsigned int recur_counter) - { - static const unsigned int MAX_RECURSIONS = 10; - - // escape from circular aliasing - if (recur_counter > MAX_RECURSIONS) { - add_error("Too many recursions"); - return false; - } - - IdToAliasesMap::iterator it = m_objects_aliases.find(object_id); - if (it == m_objects_aliases.end()) { - add_error("Found item with invalid object id"); - return false; - } - - if (it->second.size() == 1 && it->second[0].object_id == object_id) { - // aliasing to itself - - IdToModelObjectMap::iterator object_item = m_objects.find(object_id); - if (object_item == m_objects.end() || object_item->second == -1) { - add_error("Found invalid object"); - return false; - } - else { - ModelInstance* instance = m_model->objects[object_item->second]->add_instance(); - if (instance == nullptr) { - add_error("Unable to add object instance"); - return false; - } - instance->printable = printable; - - m_instances.emplace_back(instance, transform); - } - } - else { - // recursively process nested components - for (const Component& component : it->second) { - if (!_create_object_instance(component.object_id, transform * component.transform, printable, recur_counter + 1)) - return false; - } - } - - return true; - } - - void _3MF_Importer::_apply_transform(ModelInstance& instance, const Transform3d& transform) - { - Slic3r::Geometry::Transformation t(transform); - // invalid scale value, return - if (!t.get_scaling_factor().all()) - return; - - instance.set_transformation(t); - } - - bool _3MF_Importer::_handle_start_config(const char** attributes, unsigned int num_attributes) - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_end_config() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_config_object(const char** attributes, unsigned int num_attributes) - { - int object_id = get_attribute_value_int(attributes, num_attributes, ID_ATTR); - IdToMetadataMap::iterator object_item = m_objects_metadata.find(object_id); - if (object_item != m_objects_metadata.end()) { - add_error("Found duplicated object id"); - return false; - } - - // Added because of github #3435, currently not used by PrusaSlicer - // int instances_count_id = get_attribute_value_int(attributes, num_attributes, INSTANCESCOUNT_ATTR); - - m_objects_metadata.insert({ object_id, ObjectMetadata() }); - m_curr_config.object_id = object_id; - return true; - } - - bool _3MF_Importer::_handle_end_config_object() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_config_volume(const char** attributes, unsigned int num_attributes) - { - IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id); - if (object == m_objects_metadata.end()) { - add_error("Cannot assign volume to a valid object"); - return false; - } - - m_curr_config.volume_id = (int)object->second.volumes.size(); - - unsigned int first_triangle_id = (unsigned int)get_attribute_value_int(attributes, num_attributes, FIRST_TRIANGLE_ID_ATTR); - unsigned int last_triangle_id = (unsigned int)get_attribute_value_int(attributes, num_attributes, LAST_TRIANGLE_ID_ATTR); - - object->second.volumes.emplace_back(first_triangle_id, last_triangle_id); - return true; - } - - bool _3MF_Importer::_handle_start_config_volume_mesh(const char** attributes, unsigned int num_attributes) - { - IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id); - if (object == m_objects_metadata.end()) { - add_error("Cannot assign volume mesh to a valid object"); - return false; - } - if (object->second.volumes.empty()) { - add_error("Cannot assign mesh to a valid olume"); - return false; - } - - ObjectMetadata::VolumeMetadata& volume = object->second.volumes.back(); - - int edges_fixed = get_attribute_value_int(attributes, num_attributes, MESH_STAT_EDGES_FIXED ); - int degenerate_facets = get_attribute_value_int(attributes, num_attributes, MESH_STAT_DEGENERATED_FACETS); - int facets_removed = get_attribute_value_int(attributes, num_attributes, MESH_STAT_FACETS_REMOVED ); - int facets_reversed = get_attribute_value_int(attributes, num_attributes, MESH_STAT_FACETS_RESERVED ); - int backwards_edges = get_attribute_value_int(attributes, num_attributes, MESH_STAT_BACKWARDS_EDGES ); - - volume.mesh_stats = { edges_fixed, degenerate_facets, facets_removed, facets_reversed, backwards_edges }; - - return true; - } - - bool _3MF_Importer::_handle_end_config_volume() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_end_config_volume_mesh() - { - // do nothing - return true; - } - - bool _3MF_Importer::_handle_start_config_metadata(const char** attributes, unsigned int num_attributes) - { - IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id); - if (object == m_objects_metadata.end()) { - add_error("Cannot assign metadata to valid object id"); - return false; - } - - std::string type = get_attribute_value_string(attributes, num_attributes, TYPE_ATTR); - std::string key = get_attribute_value_string(attributes, num_attributes, KEY_ATTR); - std::string value = get_attribute_value_string(attributes, num_attributes, VALUE_ATTR); - - if (type == OBJECT_TYPE) - object->second.metadata.emplace_back(key, value); - else if (type == VOLUME_TYPE) { - if (size_t(m_curr_config.volume_id) < object->second.volumes.size()) - object->second.volumes[m_curr_config.volume_id].metadata.emplace_back(key, value); - } - else { - add_error("Found invalid metadata type"); - return false; - } - - return true; - } - - bool _3MF_Importer::_handle_end_config_metadata() - { - // do nothing - return true; - } - - bool _3MF_Importer::_generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions) - { - if (!object.volumes.empty()) { - add_error("Found invalid volumes count"); - return false; - } - - unsigned int geo_tri_count = (unsigned int)geometry.triangles.size(); - unsigned int renamed_volumes_count = 0; - - for (const ObjectMetadata::VolumeMetadata& volume_data : volumes) { - if (geo_tri_count <= volume_data.first_triangle_id || geo_tri_count <= volume_data.last_triangle_id || volume_data.last_triangle_id < volume_data.first_triangle_id) { - add_error("Found invalid triangle id"); - return false; - } - - Transform3d volume_matrix_to_object = Transform3d::Identity(); - bool has_transform = false; - // 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; - } - } - - // splits volume out of imported geometry - indexed_triangle_set its; - its.indices.assign(geometry.triangles.begin() + volume_data.first_triangle_id, geometry.triangles.begin() + volume_data.last_triangle_id + 1); - const size_t triangles_count = its.indices.size(); - if (triangles_count == 0) { - add_error("An empty triangle mesh found"); - return false; - } - - { - int min_id = its.indices.front()[0]; - int max_id = min_id; - for (const Vec3i& face : its.indices) { - for (const int tri_id : face) { - if (tri_id < 0 || tri_id >= int(geometry.vertices.size())) { - add_error("Found invalid vertex id"); - return false; - } - min_id = std::min(min_id, tri_id); - max_id = std::max(max_id, tri_id); - } - } - its.vertices.assign(geometry.vertices.begin() + min_id, geometry.vertices.begin() + max_id + 1); - - // rebase indices to the current vertices list - for (Vec3i& face : its.indices) - for (int& tri_id : face) - tri_id -= min_id; - } - - if (m_prusaslicer_generator_version && - *m_prusaslicer_generator_version >= *Semver::parse("2.4.0-alpha1") && - *m_prusaslicer_generator_version < *Semver::parse("2.4.0-alpha3")) - // PrusaSlicer 2.4.0-alpha2 contained a bug, where all vertices of a single object were saved for each volume the object contained. - // Remove the vertices, that are not referenced by any face. - its_compactify_vertices(its, true); - - TriangleMesh triangle_mesh(std::move(its), volume_data.mesh_stats); - - if (m_version == 0) { - // if the 3mf was not produced by PrusaSlicer 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(); - - ModelVolume* volume = object.add_volume(std::move(triangle_mesh)); - // stores the volume matrix taken from the metadata, if present - if (has_transform) - volume->source.transform = Slic3r::Geometry::Transformation(volume_matrix_to_object); - - // recreate custom supports, seam and mmu segmentation from previously loaded attribute - volume->supported_facets.reserve(triangles_count); - volume->seam_facets.reserve(triangles_count); - volume->mmu_segmentation_facets.reserve(triangles_count); - for (size_t i=0; isupported_facets.set_triangle_from_string(i, geometry.custom_supports[index]); - if (! geometry.custom_seam[index].empty()) - volume->seam_facets.set_triangle_from_string(i, geometry.custom_seam[index]); - if (! geometry.mmu_segmentation[index].empty()) - volume->mmu_segmentation_facets.set_triangle_from_string(i, geometry.mmu_segmentation[index]); - } - volume->supported_facets.shrink_to_fit(); - volume->seam_facets.shrink_to_fit(); - volume->mmu_segmentation_facets.shrink_to_fit(); - - // apply the remaining volume's metadata - for (const Metadata& metadata : volume_data.metadata) { - if (metadata.key == NAME_KEY) - volume->name = metadata.value; - else if ((metadata.key == MODIFIER_KEY) && (metadata.value == "1")) - volume->set_type(ModelVolumeType::PARAMETER_MODIFIER); - else if (metadata.key == VOLUME_TYPE_KEY) - volume->set_type(ModelVolume::type_from_string(metadata.value)); - else if (metadata.key == SOURCE_FILE_KEY) - volume->source.input_file = metadata.value; - else if (metadata.key == SOURCE_OBJECT_ID_KEY) - volume->source.object_idx = ::atoi(metadata.value.c_str()); - else if (metadata.key == SOURCE_VOLUME_ID_KEY) - volume->source.volume_idx = ::atoi(metadata.value.c_str()); - else if (metadata.key == SOURCE_OFFSET_X_KEY) - volume->source.mesh_offset(0) = ::atof(metadata.value.c_str()); - else if (metadata.key == SOURCE_OFFSET_Y_KEY) - volume->source.mesh_offset(1) = ::atof(metadata.value.c_str()); - else if (metadata.key == SOURCE_OFFSET_Z_KEY) - volume->source.mesh_offset(2) = ::atof(metadata.value.c_str()); - else if (metadata.key == SOURCE_IN_INCHES) - 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 - volume->config.set_deserialize(metadata.key, metadata.value, config_substitutions); - } - - // this may happen for 3mf saved by 3rd part softwares - if (volume->name.empty()) { - volume->name = object.name; - if (renamed_volumes_count > 0) - volume->name += "_" + std::to_string(renamed_volumes_count + 1); - ++renamed_volumes_count; - } - } - - return true; - } - - void XMLCALL _3MF_Importer::_handle_start_model_xml_element(void* userData, const char* name, const char** attributes) - { - _3MF_Importer* importer = (_3MF_Importer*)userData; - if (importer != nullptr) - importer->_handle_start_model_xml_element(name, attributes); - } - - void XMLCALL _3MF_Importer::_handle_end_model_xml_element(void* userData, const char* name) - { - _3MF_Importer* importer = (_3MF_Importer*)userData; - if (importer != nullptr) - importer->_handle_end_model_xml_element(name); - } - - void XMLCALL _3MF_Importer::_handle_model_xml_characters(void* userData, const XML_Char* s, int len) - { - _3MF_Importer* importer = (_3MF_Importer*)userData; - if (importer != nullptr) - importer->_handle_model_xml_characters(s, len); - } - - void XMLCALL _3MF_Importer::_handle_start_config_xml_element(void* userData, const char* name, const char** attributes) - { - _3MF_Importer* importer = (_3MF_Importer*)userData; - if (importer != nullptr) - importer->_handle_start_config_xml_element(name, attributes); - } - - void XMLCALL _3MF_Importer::_handle_end_config_xml_element(void* userData, const char* name) - { - _3MF_Importer* importer = (_3MF_Importer*)userData; - if (importer != nullptr) - importer->_handle_end_config_xml_element(name); - } - - class _3MF_Exporter : public _3MF_Base - { - struct BuildItem - { - unsigned int id; - Transform3d transform; - bool printable; - - BuildItem(unsigned int id, const Transform3d& transform, const bool printable) - : id(id) - , transform(transform) - , printable(printable) - { - } - }; - - struct Offsets - { - unsigned int first_vertex_id; - unsigned int first_triangle_id; - unsigned int last_triangle_id; - - Offsets(unsigned int first_vertex_id) - : first_vertex_id(first_vertex_id) - , first_triangle_id(-1) - , last_triangle_id(-1) - { - } - }; - - typedef std::map VolumeToOffsetsMap; - - struct ObjectData - { - ModelObject* object; - VolumeToOffsetsMap volumes_offsets; - - explicit ObjectData(ModelObject* object) - : object(object) - { - } - }; - - typedef std::vector BuildItemsList; - typedef std::map IdToObjectDataMap; - - bool m_fullpath_sources{ true }; - bool m_zip64 { true }; - - public: - bool save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, bool fullpath_sources, const ThumbnailData* thumbnail_data, bool zip64); - - private: - bool _save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data); - bool _add_content_types_file_to_archive(mz_zip_archive& archive); - bool _add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data); - bool _add_relationships_file_to_archive(mz_zip_archive& archive); - bool _add_model_file_to_archive(const std::string& filename, mz_zip_archive& archive, const Model& model, IdToObjectDataMap& objects_data); - bool _add_object_to_model_stream(mz_zip_writer_staged_context &context, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items, VolumeToOffsetsMap& volumes_offsets); - bool _add_mesh_to_object_stream(mz_zip_writer_staged_context &context, ModelObject& object, VolumeToOffsetsMap& volumes_offsets); - bool _add_build_to_model_stream(std::stringstream& stream, const BuildItemsList& build_items); - bool _add_layer_height_profile_file_to_archive(mz_zip_archive& archive, Model& model); - bool _add_layer_config_ranges_file_to_archive(mz_zip_archive& archive, Model& model); - bool _add_sla_support_points_file_to_archive(mz_zip_archive& archive, Model& model); - bool _add_sla_drain_holes_file_to_archive(mz_zip_archive& archive, Model& model); - bool _add_print_config_file_to_archive(mz_zip_archive& archive, const DynamicPrintConfig &config); - bool _add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, const IdToObjectDataMap &objects_data); - bool _add_custom_gcode_per_print_z_file_to_archive(mz_zip_archive& archive, Model& model, const DynamicPrintConfig* config); - }; - - bool _3MF_Exporter::save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, bool fullpath_sources, const ThumbnailData* thumbnail_data, bool zip64) - { - clear_errors(); - m_fullpath_sources = fullpath_sources; - m_zip64 = zip64; - return _save_model_to_file(filename, model, config, thumbnail_data); - } - - bool _3MF_Exporter::_save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data) - { - mz_zip_archive archive; - mz_zip_zero_struct(&archive); - - if (!open_zip_writer(&archive, filename)) { - add_error("Unable to open the file"); - return false; - } - - // Adds content types file ("[Content_Types].xml";). - // The content of this file is the same for each PrusaSlicer 3mf. - if (!_add_content_types_file_to_archive(archive)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - if (thumbnail_data != nullptr && thumbnail_data->is_valid()) { - // Adds the file Metadata/thumbnail.png. - if (!_add_thumbnail_file_to_archive(archive, *thumbnail_data)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - } - - // Adds relationships file ("_rels/.rels"). - // The content of this file is the same for each PrusaSlicer 3mf. - // The relationshis file contains a reference to the geometry file "3D/3dmodel.model", the name was chosen to be compatible with CURA. - if (!_add_relationships_file_to_archive(archive)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - // Adds model file ("3D/3dmodel.model"). - // This is the one and only file that contains all the geometry (vertices and triangles) of all ModelVolumes. - IdToObjectDataMap objects_data; - if (!_add_model_file_to_archive(filename, archive, model, objects_data)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - // Adds layer height profile file ("Metadata/Slic3r_PE_layer_heights_profile.txt"). - // All layer height profiles of all ModelObjects are stored here, indexed by 1 based index of the ModelObject in Model. - // The index differes from the index of an object ID of an object instance of a 3MF file! - if (!_add_layer_height_profile_file_to_archive(archive, model)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - // Adds layer config ranges file ("Metadata/Slic3r_PE_layer_config_ranges.txt"). - // All layer height profiles of all ModelObjects are stored here, indexed by 1 based index of the ModelObject in Model. - // The index differes from the index of an object ID of an object instance of a 3MF file! - if (!_add_layer_config_ranges_file_to_archive(archive, model)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - // Adds sla support points file ("Metadata/Slic3r_PE_sla_support_points.txt"). - // All sla support points of all ModelObjects are stored here, indexed by 1 based index of the ModelObject in Model. - // The index differes from the index of an object ID of an object instance of a 3MF file! - if (!_add_sla_support_points_file_to_archive(archive, model)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - if (!_add_sla_drain_holes_file_to_archive(archive, model)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - - // Adds custom gcode per height file ("Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml"). - // All custom gcode per height of whole Model are stored here - if (!_add_custom_gcode_per_print_z_file_to_archive(archive, model, config)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - // Adds slic3r print config file ("Metadata/Slic3r_PE.config"). - // This file contains the content of FullPrintConfing / SLAFullPrintConfig. - if (config != nullptr) { - if (!_add_print_config_file_to_archive(archive, *config)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - } - - // Adds slic3r model config file ("Metadata/Slic3r_PE_model.config"). - // This file contains all the attributes of all ModelObjects and their ModelVolumes (names, parameter overrides). - // As there is just a single Indexed Triangle Set data stored per ModelObject, offsets of volumes into their respective Indexed Triangle Set data - // is stored here as well. - if (!_add_model_config_file_to_archive(archive, model, objects_data)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - return false; - } - - if (!mz_zip_writer_finalize_archive(&archive)) { - close_zip_writer(&archive); - boost::filesystem::remove(filename); - add_error("Unable to finalize the archive"); - return false; - } - - close_zip_writer(&archive); - - return true; - } - - bool _3MF_Exporter::_add_content_types_file_to_archive(mz_zip_archive& archive) - { - std::stringstream stream; - stream << "\n"; - stream << "\n"; - stream << " \n"; - stream << " \n"; - stream << " \n"; - stream << ""; - - std::string out = stream.str(); - - if (!mz_zip_writer_add_mem(&archive, CONTENT_TYPES_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add content types file to archive"); - return false; - } - - return true; - } - - bool _3MF_Exporter::_add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data) - { - bool res = false; - - size_t png_size = 0; - void* png_data = tdefl_write_image_to_png_file_in_memory_ex((const void*)thumbnail_data.pixels.data(), thumbnail_data.width, thumbnail_data.height, 4, &png_size, MZ_DEFAULT_LEVEL, 1); - if (png_data != nullptr) { - res = mz_zip_writer_add_mem(&archive, THUMBNAIL_FILE.c_str(), (const void*)png_data, png_size, MZ_DEFAULT_COMPRESSION); - mz_free(png_data); - } - - if (!res) - add_error("Unable to add thumbnail file to archive"); - - return res; - } - - bool _3MF_Exporter::_add_relationships_file_to_archive(mz_zip_archive& archive) - { - std::stringstream stream; - stream << "\n"; - stream << "\n"; - stream << " \n"; - stream << " \n"; - stream << ""; - - std::string out = stream.str(); - - if (!mz_zip_writer_add_mem(&archive, RELATIONSHIPS_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add relationships file to archive"); - return false; - } - - return true; - } - - static void reset_stream(std::stringstream &stream) - { - stream.str(""); - stream.clear(); - // https://en.cppreference.com/w/cpp/types/numeric_limits/max_digits10 - // Conversion of a floating-point value to text and back is exact as long as at least max_digits10 were used (9 for float, 17 for double). - // It is guaranteed to produce the same floating-point value, even though the intermediate text representation is not exact. - // The default value of std::stream precision is 6 digits only! - stream << std::setprecision(std::numeric_limits::max_digits10); - } - - bool _3MF_Exporter::_add_model_file_to_archive(const std::string& filename, mz_zip_archive& archive, const Model& model, IdToObjectDataMap& objects_data) - { - mz_zip_writer_staged_context context; - if (!mz_zip_writer_add_staged_open(&archive, &context, MODEL_FILE.c_str(), - m_zip64 ? - // Maximum expected and allowed 3MF file size is 16GiB. - // This switches the ZIP file to a 64bit mode, which adds a tiny bit of overhead to file records. - (uint64_t(1) << 30) * 16 : - // Maximum expected 3MF file size is 4GB-1. This is a workaround for interoperability with Windows 10 3D model fixing API, see - // GH issue #6193. - (uint64_t(1) << 32) - 1, - nullptr, nullptr, 0, MZ_DEFAULT_COMPRESSION, nullptr, 0, nullptr, 0)) { - add_error("Unable to add model file to archive"); - return false; - } - - { - std::stringstream stream; - reset_stream(stream); - stream << "\n"; - stream << "<" << MODEL_TAG << " unit=\"millimeter\" xml:lang=\"en-US\" xmlns=\"http://schemas.microsoft.com/3dmanufacturing/core/2015/02\" xmlns:slic3rpe=\"http://schemas.slic3r.org/3mf/2017/06\">\n"; - stream << " <" << METADATA_TAG << " name=\"" << SLIC3RPE_3MF_VERSION << "\">" << VERSION_3MF << "\n"; - - if (model.is_fdm_support_painted()) - stream << " <" << METADATA_TAG << " name=\"" << SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION << "\">" << FDM_SUPPORTS_PAINTING_VERSION << "\n"; - - if (model.is_seam_painted()) - stream << " <" << METADATA_TAG << " name=\"" << SLIC3RPE_SEAM_PAINTING_VERSION << "\">" << SEAM_PAINTING_VERSION << "\n"; - - if (model.is_mm_painted()) - stream << " <" << METADATA_TAG << " name=\"" << SLIC3RPE_MM_PAINTING_VERSION << "\">" << MM_PAINTING_VERSION << "\n"; - - std::string name = xml_escape(boost::filesystem::path(filename).stem().string()); - stream << " <" << METADATA_TAG << " name=\"Title\">" << name << "\n"; - stream << " <" << METADATA_TAG << " name=\"Designer\">" << "\n"; - stream << " <" << METADATA_TAG << " name=\"Description\">" << name << "\n"; - stream << " <" << METADATA_TAG << " name=\"Copyright\">" << "\n"; - stream << " <" << METADATA_TAG << " name=\"LicenseTerms\">" << "\n"; - stream << " <" << METADATA_TAG << " name=\"Rating\">" << "\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())) { - add_error("Unable to add model file to archive"); - return false; - } - } - - // Instance transformations, indexed by the 3MF object ID (which is a linear serialization of all instances of all ModelObjects). - BuildItemsList build_items; - - // The object_id here is a one based identifier of the first instance of a ModelObject in the 3MF file, where - // all the object instances of all ModelObjects are stored and indexed in a 1 based linear fashion. - // Therefore the list of object_ids here may not be continuous. - unsigned int object_id = 1; - for (ModelObject* obj : model.objects) { - if (obj == nullptr) - continue; - - // Index of an object in the 3MF file corresponding to the 1st instance of a ModelObject. - unsigned int curr_id = object_id; - IdToObjectDataMap::iterator object_it = objects_data.insert({ curr_id, ObjectData(obj) }).first; - // Store geometry of all ModelVolumes contained in a single ModelObject into a single 3MF indexed triangle set object. - // object_it->second.volumes_offsets will contain the offsets of the ModelVolumes in that single indexed triangle set. - // object_id will be increased to point to the 1st instance of the next ModelObject. - if (!_add_object_to_model_stream(context, object_id, *obj, build_items, object_it->second.volumes_offsets)) { - add_error("Unable to add object to archive"); - mz_zip_writer_add_staged_finish(&context); - return false; - } - } - - { - std::stringstream stream; - reset_stream(stream); - stream << " \n"; - - // Store the transformations of all the ModelInstances of all ModelObjects, indexed in a linear fashion. - if (!_add_build_to_model_stream(stream, build_items)) { - add_error("Unable to add build to archive"); - mz_zip_writer_add_staged_finish(&context); - return false; - } - - stream << "\n"; - - std::string buf = stream.str(); - - if ((! buf.empty() && ! mz_zip_writer_add_staged_data(&context, buf.data(), buf.size())) || - ! mz_zip_writer_add_staged_finish(&context)) { - add_error("Unable to add model file to archive"); - return false; - } - } - - return true; - } - - bool _3MF_Exporter::_add_object_to_model_stream(mz_zip_writer_staged_context &context, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items, VolumeToOffsetsMap& volumes_offsets) - { - std::stringstream stream; - reset_stream(stream); - unsigned int id = 0; - for (const ModelInstance* instance : object.instances) { - assert(instance != nullptr); - if (instance == nullptr) - continue; - - unsigned int instance_id = object_id + id; - stream << " <" << OBJECT_TAG << " id=\"" << instance_id << "\" type=\"model\">\n"; - - if (id == 0) { - std::string buf = stream.str(); - reset_stream(stream); - if ((! buf.empty() && ! mz_zip_writer_add_staged_data(&context, buf.data(), buf.size())) || - ! _add_mesh_to_object_stream(context, object, volumes_offsets)) { - add_error("Unable to add mesh to archive"); - return false; - } - } - else { - stream << " <" << COMPONENTS_TAG << ">\n"; - stream << " <" << COMPONENT_TAG << " objectid=\"" << object_id << "\"/>\n"; - stream << " \n"; - } - - Transform3d t = instance->get_matrix(); - // instance_id is just a 1 indexed index in build_items. - assert(instance_id == build_items.size() + 1); - build_items.emplace_back(instance_id, t, instance->printable); - - stream << " \n"; - - ++id; - } - - object_id += id; - std::string buf = stream.str(); - return buf.empty() || mz_zip_writer_add_staged_data(&context, buf.data(), buf.size()); - } - -#if EXPORT_3MF_USE_SPIRIT_KARMA_FP - template - struct coordinate_policy_fixed : boost::spirit::karma::real_policies - { - static int floatfield(Num n) { return fmtflags::fixed; } - // Number of decimal digits to maintain float accuracy when storing into a text file and parsing back. - static unsigned precision(Num /* n */) { return std::numeric_limits::max_digits10 + 1; } - // No trailing zeros, thus for fmtflags::fixed usually much less than max_digits10 decimal numbers will be produced. - static bool trailing_zeros(Num /* n */) { return false; } - }; - template - struct coordinate_policy_scientific : coordinate_policy_fixed - { - static int floatfield(Num n) { return fmtflags::scientific; } - }; - // Define a new generator type based on the new coordinate policy. - using coordinate_type_fixed = boost::spirit::karma::real_generator>; - using coordinate_type_scientific = boost::spirit::karma::real_generator>; -#endif // EXPORT_3MF_USE_SPIRIT_KARMA_FP - - bool _3MF_Exporter::_add_mesh_to_object_stream(mz_zip_writer_staged_context &context, ModelObject& object, VolumeToOffsetsMap& volumes_offsets) - { - std::string output_buffer; - output_buffer += " <"; - output_buffer += MESH_TAG; - output_buffer += ">\n <"; - output_buffer += VERTICES_TAG; - output_buffer += ">\n"; - - auto flush = [this, &output_buffer, &context](bool force = false) { - if ((force && ! output_buffer.empty()) || output_buffer.size() >= 65536 * 16) { - if (! mz_zip_writer_add_staged_data(&context, output_buffer.data(), output_buffer.size())) { - add_error("Error during writing or compression"); - return false; - } - output_buffer.clear(); - } - return true; - }; - - auto format_coordinate = [](float f, char *buf) -> char* { - assert(is_decimal_separator_point()); -#if EXPORT_3MF_USE_SPIRIT_KARMA_FP - // Slightly faster than sprintf("%.9g"), but there is an issue with the karma floating point formatter, - // https://github.com/boostorg/spirit/pull/586 - // where the exported string is one digit shorter than it should be to guarantee lossless round trip. - // The code is left here for the ocasion boost guys improve. - coordinate_type_fixed const coordinate_fixed = coordinate_type_fixed(); - coordinate_type_scientific const coordinate_scientific = coordinate_type_scientific(); - // Format "f" in a fixed format. - char *ptr = buf; - boost::spirit::karma::generate(ptr, coordinate_fixed, f); - // Format "f" in a scientific format. - char *ptr2 = ptr; - boost::spirit::karma::generate(ptr2, coordinate_scientific, f); - // Return end of the shorter string. - auto len2 = ptr2 - ptr; - if (ptr - buf > len2) { - // Move the shorter scientific form to the front. - memcpy(buf, ptr, len2); - ptr = buf + len2; - } - // Return pointer to the end. - return ptr; -#else - // Round-trippable float, shortest possible. - return buf + sprintf(buf, "%.9g", f); -#endif - }; - - char buf[256]; - unsigned int vertices_count = 0; - for (ModelVolume* volume : object.volumes) { - if (volume == nullptr) - continue; - - volumes_offsets.insert({ volume, Offsets(vertices_count) }); - - const indexed_triangle_set &its = volume->mesh().its; - if (its.vertices.empty()) { - add_error("Found invalid mesh"); - return false; - } - - vertices_count += (int)its.vertices.size(); - - const Transform3d& matrix = volume->get_matrix(); - - for (size_t i = 0; i < its.vertices.size(); ++i) { - Vec3f v = (matrix * its.vertices[i].cast()).cast(); - char *ptr = buf; - boost::spirit::karma::generate(ptr, boost::spirit::lit(" <") << VERTEX_TAG << " x=\""); - ptr = format_coordinate(v.x(), ptr); - boost::spirit::karma::generate(ptr, "\" y=\""); - ptr = format_coordinate(v.y(), ptr); - boost::spirit::karma::generate(ptr, "\" z=\""); - ptr = format_coordinate(v.z(), ptr); - boost::spirit::karma::generate(ptr, "\"/>\n"); - *ptr = '\0'; - output_buffer += buf; - if (! flush()) - return false; - } - } - - output_buffer += " \n <"; - output_buffer += TRIANGLES_TAG; - output_buffer += ">\n"; - - unsigned int triangles_count = 0; - for (ModelVolume* volume : object.volumes) { - if (volume == nullptr) - continue; - - bool is_left_handed = volume->is_left_handed(); - VolumeToOffsetsMap::iterator volume_it = volumes_offsets.find(volume); - assert(volume_it != volumes_offsets.end()); - - const indexed_triangle_set &its = volume->mesh().its; - - // updates triangle offsets - volume_it->second.first_triangle_id = triangles_count; - triangles_count += (int)its.indices.size(); - volume_it->second.last_triangle_id = triangles_count - 1; - - for (int i = 0; i < int(its.indices.size()); ++ i) { - { - const Vec3i &idx = its.indices[i]; - char *ptr = buf; - boost::spirit::karma::generate(ptr, boost::spirit::lit(" <") << TRIANGLE_TAG << - " v1=\"" << boost::spirit::int_ << - "\" v2=\"" << boost::spirit::int_ << - "\" v3=\"" << boost::spirit::int_ << "\"", - idx[is_left_handed ? 2 : 0] + volume_it->second.first_vertex_id, - idx[1] + volume_it->second.first_vertex_id, - idx[is_left_handed ? 0 : 2] + volume_it->second.first_vertex_id); - *ptr = '\0'; - output_buffer += buf; - } - - std::string custom_supports_data_string = volume->supported_facets.get_triangle_as_string(i); - if (! custom_supports_data_string.empty()) { - output_buffer += " "; - output_buffer += CUSTOM_SUPPORTS_ATTR; - output_buffer += "=\""; - output_buffer += custom_supports_data_string; - output_buffer += "\""; - } - - std::string custom_seam_data_string = volume->seam_facets.get_triangle_as_string(i); - if (! custom_seam_data_string.empty()) { - output_buffer += " "; - output_buffer += CUSTOM_SEAM_ATTR; - output_buffer += "=\""; - output_buffer += custom_seam_data_string; - output_buffer += "\""; - } - - std::string mmu_painting_data_string = volume->mmu_segmentation_facets.get_triangle_as_string(i); - if (! mmu_painting_data_string.empty()) { - output_buffer += " "; - output_buffer += MMU_SEGMENTATION_ATTR; - output_buffer += "=\""; - output_buffer += mmu_painting_data_string; - output_buffer += "\""; - } - - output_buffer += "/>\n"; - - if (! flush()) - return false; - } - } - - output_buffer += " \n \n"; - - // Force flush. - return flush(true); - } - - bool _3MF_Exporter::_add_build_to_model_stream(std::stringstream& stream, const BuildItemsList& build_items) - { - // This happens for empty projects - if (build_items.size() == 0) { - add_error("No build item found"); - return true; - } - - stream << " <" << BUILD_TAG << ">\n"; - - for (const BuildItem& item : build_items) { - stream << " <" << ITEM_TAG << " " << OBJECTID_ATTR << "=\"" << item.id << "\" " << TRANSFORM_ATTR << "=\""; - for (unsigned c = 0; c < 4; ++c) { - for (unsigned r = 0; r < 3; ++r) { - stream << item.transform(r, c); - if (r != 2 || c != 3) - stream << " "; - } - } - stream << "\" " << PRINTABLE_ATTR << "=\"" << item.printable << "\"/>\n"; - } - - stream << " \n"; - - return true; - } - - bool _3MF_Exporter::_add_layer_height_profile_file_to_archive(mz_zip_archive& archive, Model& model) - { - assert(is_decimal_separator_point()); - std::string out = ""; - char buffer[1024]; - - unsigned int count = 0; - for (const ModelObject* object : model.objects) { - ++count; - const std::vector& layer_height_profile = object->layer_height_profile.get(); - if (layer_height_profile.size() >= 4 && layer_height_profile.size() % 2 == 0) { - sprintf(buffer, "object_id=%d|", count); - out += buffer; - - // Store the layer height profile as a single semicolon separated list. - for (size_t i = 0; i < layer_height_profile.size(); ++i) { - sprintf(buffer, (i == 0) ? "%f" : ";%f", layer_height_profile[i]); - out += buffer; - } - - out += "\n"; - } - } - - if (!out.empty()) { - if (!mz_zip_writer_add_mem(&archive, LAYER_HEIGHTS_PROFILE_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add layer heights profile file to archive"); - return false; - } - } - - return true; - } - - bool _3MF_Exporter::_add_layer_config_ranges_file_to_archive(mz_zip_archive& archive, Model& model) - { - std::string out = ""; - pt::ptree tree; - - unsigned int object_cnt = 0; - for (const ModelObject* object : model.objects) { - object_cnt++; - const t_layer_config_ranges& ranges = object->layer_config_ranges; - if (!ranges.empty()) - { - pt::ptree& obj_tree = tree.add("objects.object",""); - - obj_tree.put(".id", object_cnt); - - // Store the layer config ranges. - for (const auto& range : ranges) { - pt::ptree& range_tree = obj_tree.add("range", ""); - - // store minX and maxZ - range_tree.put(".min_z", range.first.first); - range_tree.put(".max_z", range.first.second); - - // store range configuration - const ModelConfig& config = range.second; - for (const std::string& opt_key : config.keys()) { - pt::ptree& opt_tree = range_tree.add("option", config.opt_serialize(opt_key)); - opt_tree.put(".opt_key", opt_key); - } - } - } - } - - if (!tree.empty()) { - std::ostringstream oss; - pt::write_xml(oss, tree); - out = oss.str(); - - // Post processing("beautification") of the output string for a better preview - boost::replace_all(out, ">\n \n \n ", ">\n "); - boost::replace_all(out, ">", ">\n "); - // OR just - boost::replace_all(out, "><", ">\n<"); - } - - if (!out.empty()) { - if (!mz_zip_writer_add_mem(&archive, LAYER_CONFIG_RANGES_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add layer heights profile file to archive"); - return false; - } - } - - return true; - } - - bool _3MF_Exporter::_add_sla_support_points_file_to_archive(mz_zip_archive& archive, Model& model) - { - assert(is_decimal_separator_point()); - std::string out = ""; - char buffer[1024]; - - unsigned int count = 0; - for (const ModelObject* object : model.objects) { - ++count; - const std::vector& sla_support_points = object->sla_support_points; - if (!sla_support_points.empty()) { - sprintf(buffer, "object_id=%d|", count); - out += buffer; - - // Store the layer height profile as a single space separated list. - for (size_t i = 0; i < sla_support_points.size(); ++i) { - sprintf(buffer, (i==0 ? "%f %f %f %f %f" : " %f %f %f %f %f"), sla_support_points[i].pos(0), sla_support_points[i].pos(1), sla_support_points[i].pos(2), sla_support_points[i].head_front_radius, (float)sla_support_points[i].is_new_island); - out += buffer; - } - out += "\n"; - } - } - - if (!out.empty()) { - // Adds version header at the beginning: - out = std::string("support_points_format_version=") + std::to_string(support_points_format_version) + std::string("\n") + out; - - if (!mz_zip_writer_add_mem(&archive, SLA_SUPPORT_POINTS_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add sla support points file to archive"); - return false; - } - } - return true; - } - - bool _3MF_Exporter::_add_sla_drain_holes_file_to_archive(mz_zip_archive& archive, Model& model) - { - assert(is_decimal_separator_point()); - const char *const fmt = "object_id=%d|"; - std::string out; - - unsigned int count = 0; - for (const ModelObject* object : model.objects) { - ++count; - sla::DrainHoles drain_holes = object->sla_drain_holes; - - // The holes were placed 1mm above the mesh in the first implementation. - // This was a bad idea and the reference point was changed in 2.3 so - // to be on the mesh exactly. The elevated position is still saved - // in 3MFs for compatibility reasons. - for (sla::DrainHole& hole : drain_holes) { - hole.pos -= hole.normal.normalized(); - hole.height += 1.f; - } - - if (!drain_holes.empty()) { - out += string_printf(fmt, count); - - // Store the layer height profile as a single space separated list. - for (size_t i = 0; i < drain_holes.size(); ++i) - out += string_printf((i == 0 ? "%f %f %f %f %f %f %f %f" : " %f %f %f %f %f %f %f %f"), - drain_holes[i].pos(0), - drain_holes[i].pos(1), - drain_holes[i].pos(2), - drain_holes[i].normal(0), - drain_holes[i].normal(1), - drain_holes[i].normal(2), - drain_holes[i].radius, - drain_holes[i].height); - - out += "\n"; - } - } - - if (!out.empty()) { - // Adds version header at the beginning: - out = std::string("drain_holes_format_version=") + std::to_string(drain_holes_format_version) + std::string("\n") + out; - - if (!mz_zip_writer_add_mem(&archive, SLA_DRAIN_HOLES_FILE.c_str(), static_cast(out.data()), out.length(), mz_uint(MZ_DEFAULT_COMPRESSION))) { - add_error("Unable to add sla support points file to archive"); - return false; - } - } - return true; - } - - bool _3MF_Exporter::_add_print_config_file_to_archive(mz_zip_archive& archive, const DynamicPrintConfig &config) - { - assert(is_decimal_separator_point()); - char buffer[1024]; - sprintf(buffer, "; %s\n\n", header_slic3r_generated().c_str()); - std::string out = buffer; - - for (const std::string &key : config.keys()) - if (key != "compatible_printers") - out += "; " + key + " = " + config.opt_serialize(key) + "\n"; - - if (!out.empty()) { - if (!mz_zip_writer_add_mem(&archive, PRINT_CONFIG_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add print config file to archive"); - return false; - } - } - - return true; - } - - bool _3MF_Exporter::_add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, const IdToObjectDataMap &objects_data) - { - std::stringstream stream; - // 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); - stream << "\n"; - stream << "<" << CONFIG_TAG << ">\n"; - - for (const IdToObjectDataMap::value_type& obj_metadata : objects_data) { - const ModelObject* obj = obj_metadata.second.object; - if (obj != nullptr) { - // Output of instances count added because of github #3435, currently not used by PrusaSlicer - stream << " <" << OBJECT_TAG << " " << ID_ATTR << "=\"" << obj_metadata.first << "\" " << INSTANCESCOUNT_ATTR << "=\"" << obj->instances.size() << "\">\n"; - - // stores object's name - if (!obj->name.empty()) - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << OBJECT_TYPE << "\" " << KEY_ATTR << "=\"name\" " << VALUE_ATTR << "=\"" << xml_escape(obj->name) << "\"/>\n"; - - // stores object's config data - for (const std::string& key : obj->config.keys()) { - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << OBJECT_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << obj->config.opt_serialize(key) << "\"/>\n"; - } - - for (const ModelVolume* volume : obj_metadata.second.object->volumes) { - if (volume != nullptr) { - const VolumeToOffsetsMap& offsets = obj_metadata.second.volumes_offsets; - VolumeToOffsetsMap::const_iterator it = offsets.find(volume); - if (it != offsets.end()) { - // stores volume's offsets - stream << " <" << VOLUME_TAG << " "; - stream << FIRST_TRIANGLE_ID_ATTR << "=\"" << it->second.first_triangle_id << "\" "; - stream << LAST_TRIANGLE_ID_ATTR << "=\"" << it->second.last_triangle_id << "\">\n"; - - // stores volume's name - if (!volume->name.empty()) - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << NAME_KEY << "\" " << VALUE_ATTR << "=\"" << xml_escape(volume->name) << "\"/>\n"; - - // stores volume's modifier field (legacy, to support old slicers) - if (volume->is_modifier()) - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << MODIFIER_KEY << "\" " << VALUE_ATTR << "=\"1\"/>\n"; - // stores volume's type (overrides the modifier field above) - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << VOLUME_TYPE_KEY << "\" " << - VALUE_ATTR << "=\"" << ModelVolume::type_to_string(volume->type()) << "\"/>\n"; - - // stores volume's local matrix - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << MATRIX_KEY << "\" " << VALUE_ATTR << "=\""; - Transform3d matrix = volume->get_matrix() * volume->source.transform.get_matrix(); - for (int r = 0; r < 4; ++r) { - for (int c = 0; c < 4; ++c) { - stream << matrix(r, c); - if (r != 3 || c != 3) - stream << " "; - } - } - stream << "\"/>\n"; - - // stores volume's source data - { - std::string input_file = xml_escape(m_fullpath_sources ? volume->source.input_file : boost::filesystem::path(volume->source.input_file).filename().string()); - std::string prefix = std::string(" <") + METADATA_TAG + " " + TYPE_ATTR + "=\"" + VOLUME_TYPE + "\" " + KEY_ATTR + "=\""; - if (! volume->source.input_file.empty()) { - stream << prefix << SOURCE_FILE_KEY << "\" " << VALUE_ATTR << "=\"" << input_file << "\"/>\n"; - stream << prefix << SOURCE_OBJECT_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.object_idx << "\"/>\n"; - stream << prefix << SOURCE_VOLUME_ID_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.volume_idx << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_X_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(0) << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_Y_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(1) << "\"/>\n"; - stream << prefix << SOURCE_OFFSET_Z_KEY << "\" " << VALUE_ATTR << "=\"" << volume->source.mesh_offset(2) << "\"/>\n"; - } - assert(! volume->source.is_converted_from_inches || ! volume->source.is_converted_from_meters); - if (volume->source.is_converted_from_inches) - stream << prefix << SOURCE_IN_INCHES << "\" " << VALUE_ATTR << "=\"1\"/>\n"; - else if (volume->source.is_converted_from_meters) - stream << prefix << SOURCE_IN_METERS << "\" " << VALUE_ATTR << "=\"1\"/>\n"; - } - - // stores volume's config data - for (const std::string& key : volume->config.keys()) { - stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << volume->config.opt_serialize(key) << "\"/>\n"; - } - - // stores mesh's statistics - const RepairedMeshErrors& stats = volume->mesh().stats().repaired_errors; - stream << " <" << MESH_TAG << " "; - stream << MESH_STAT_EDGES_FIXED << "=\"" << stats.edges_fixed << "\" "; - stream << MESH_STAT_DEGENERATED_FACETS << "=\"" << stats.degenerate_facets << "\" "; - stream << MESH_STAT_FACETS_REMOVED << "=\"" << stats.facets_removed << "\" "; - stream << MESH_STAT_FACETS_RESERVED << "=\"" << stats.facets_reversed << "\" "; - stream << MESH_STAT_BACKWARDS_EDGES << "=\"" << stats.backwards_edges << "\"/>\n"; - - stream << " \n"; - } - } - } - - stream << " \n"; - } - } - - stream << "\n"; - - std::string out = stream.str(); - - if (!mz_zip_writer_add_mem(&archive, MODEL_CONFIG_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add model config file to archive"); - return false; - } - - return true; - } - -bool _3MF_Exporter::_add_custom_gcode_per_print_z_file_to_archive( mz_zip_archive& archive, Model& model, const DynamicPrintConfig* config) -{ - std::string out = ""; - - if (!model.custom_gcode_per_print_z.gcodes.empty()) { - pt::ptree tree; - pt::ptree& main_tree = tree.add("custom_gcodes_per_print_z", ""); - - for (const CustomGCode::Item& code : model.custom_gcode_per_print_z.gcodes) { - pt::ptree& code_tree = main_tree.add("code", ""); - - // store data of custom_gcode_per_print_z - code_tree.put(".print_z" , code.print_z ); - code_tree.put(".type" , static_cast(code.type)); - code_tree.put(".extruder" , code.extruder ); - code_tree.put(".color" , code.color ); - code_tree.put(".extra" , code.extra ); - - // add gcode field data for the old version of the PrusaSlicer - std::string gcode = code.type == CustomGCode::ColorChange ? config->opt_string("color_change_gcode") : - code.type == CustomGCode::PausePrint ? config->opt_string("pause_print_gcode") : - code.type == CustomGCode::Template ? config->opt_string("template_custom_gcode") : - code.type == CustomGCode::ToolChange ? "tool_change" : code.extra; - code_tree.put(".gcode" , gcode ); - } - - pt::ptree& mode_tree = main_tree.add("mode", ""); - // store mode of a custom_gcode_per_print_z - mode_tree.put(".value", model.custom_gcode_per_print_z.mode == CustomGCode::Mode::SingleExtruder ? CustomGCode::SingleExtruderMode : - model.custom_gcode_per_print_z.mode == CustomGCode::Mode::MultiAsSingle ? CustomGCode::MultiAsSingleMode : - CustomGCode::MultiExtruderMode); - - if (!tree.empty()) { - std::ostringstream oss; - boost::property_tree::write_xml(oss, tree); - out = oss.str(); - - // Post processing("beautification") of the output string - boost::replace_all(out, "><", ">\n<"); - } - } - - if (!out.empty()) { - if (!mz_zip_writer_add_mem(&archive, CUSTOM_GCODE_PER_PRINT_Z_FILE.c_str(), (const void*)out.data(), out.length(), MZ_DEFAULT_COMPRESSION)) { - add_error("Unable to add custom Gcodes per print_z file to archive"); - return false; - } - } - - return true; -} - -// Perform conversions based on the config values available. -static void handle_legacy_project_loaded(unsigned int version_project_file, DynamicPrintConfig& config, const boost::optional& prusaslicer_generator_version) -{ - if (! config.has("brim_separation")) { - if (auto *opt_elephant_foot = config.option("elefant_foot_compensation", false); opt_elephant_foot) { - // Conversion from older PrusaSlicer which applied brim separation equal to elephant foot compensation. - auto *opt_brim_separation = config.option("brim_separation", true); - opt_brim_separation->value = opt_elephant_foot->value; - } - } - - // In PrusaSlicer 2.5.0-alpha2 and 2.5.0-alpha3, we introduce several parameters for Arachne that depend - // on nozzle size . Later we decided to make default values for those parameters computed automatically - // until the user changes them. - if (prusaslicer_generator_version && *prusaslicer_generator_version >= *Semver::parse("2.5.0-alpha2") && *prusaslicer_generator_version <= *Semver::parse("2.5.0-alpha3")) { - if (auto *opt_wall_transition_length = config.option("wall_transition_length", false); - opt_wall_transition_length && !opt_wall_transition_length->percent && opt_wall_transition_length->value == 0.4) { - opt_wall_transition_length->percent = true; - opt_wall_transition_length->value = 100; - } - - if (auto *opt_min_feature_size = config.option("min_feature_size", false); - opt_min_feature_size && !opt_min_feature_size->percent && opt_min_feature_size->value == 0.1) { - opt_min_feature_size->percent = true; - opt_min_feature_size->value = 25; - } - } -} - -bool is_project_3mf(const std::string& filename) -{ - mz_zip_archive archive; - mz_zip_zero_struct(&archive); - - if (!open_zip_reader(&archive, filename)) - return false; - - mz_uint num_entries = mz_zip_reader_get_num_files(&archive); - - // loop the entries to search for config - mz_zip_archive_file_stat stat; - bool config_found = false; - for (mz_uint i = 0; i < num_entries; ++i) { - if (mz_zip_reader_file_stat(&archive, i, &stat)) { - std::string name(stat.m_filename); - std::replace(name.begin(), name.end(), '\\', '/'); - - if (boost::algorithm::iequals(name, PRINT_CONFIG_FILE)) { - config_found = true; - break; - } - } - } - - close_zip_reader(&archive); - - return config_found; -} - -bool load_3mf(const char* path, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, Model* model, bool check_version) -{ - if (path == nullptr || model == nullptr) - return false; - - // All import should use "C" locales for number formatting. - CNumericLocalesSetter locales_setter; - _3MF_Importer importer; - bool res = importer.load_model_from_file(path, *model, config, config_substitutions, check_version); - importer.log_errors(); - handle_legacy_project_loaded(importer.version(), config, importer.prusaslicer_generator_version()); - return res; -} - -bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config, bool fullpath_sources, const ThumbnailData* thumbnail_data, bool zip64) -{ - // All export should use "C" locales for number formatting. - CNumericLocalesSetter locales_setter; - - if (path == nullptr || model == nullptr) - return false; - - _3MF_Exporter exporter; - bool res = exporter.save_model_to_file(path, *model, config, fullpath_sources, thumbnail_data, zip64); - if (!res) - exporter.log_errors(); - - return res; -} -} // namespace Slic3r ->>>>>>> master_250 diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index eac6c669a..5e86e902a 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -33,27 +33,6 @@ namespace Slic3r { namespace SeamPlacerImpl { -<<<<<<< HEAD -======= -// ************ FOR BACKPORT COMPATIBILITY ONLY *************** -// Color mapping of a value into RGB false colors. -inline Vec3f value_to_rgbf(float minimum, float maximum, float value) - { - 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(); -} -// *************************** - ->>>>>>> master_250 template int sgn(T val) { return int(T(0) < val) - int(val < T(0)); } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 5f3251e79..63b36ae35 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1,3265 +1,3 @@ -<<<<<<< HEAD -#include "libslic3r/Technologies.hpp" -#include "GUI_App.hpp" -#include "GUI_Init.hpp" -#include "GUI_ObjectList.hpp" -#include "GUI_ObjectManipulation.hpp" -#include "GUI_Factories.hpp" -#include "format.hpp" -#include "I18N.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "libslic3r/Utils.hpp" -#include "libslic3r/Model.hpp" -#include "libslic3r/I18N.hpp" -#include "libslic3r/PresetBundle.hpp" -#include "libslic3r/Color.hpp" - -#include "GUI.hpp" -#include "GUI_Utils.hpp" -#include "3DScene.hpp" -#include "MainFrame.hpp" -#include "Plater.hpp" -#include "GLCanvas3D.hpp" - -#include "../Utils/PresetUpdater.hpp" -#include "../Utils/PrintHost.hpp" -#include "../Utils/Process.hpp" -#include "../Utils/MacDarkMode.hpp" -#include "../Utils/AppUpdater.hpp" -#include "../Utils/WinRegistry.hpp" -#include "slic3r/Config/Snapshot.hpp" -#include "ConfigSnapshotDialog.hpp" -#include "FirmwareDialog.hpp" -#include "Preferences.hpp" -#include "Tab.hpp" -#include "SysInfoDialog.hpp" -#include "KBShortcutsDialog.hpp" -#include "UpdateDialogs.hpp" -#include "Mouse3DController.hpp" -#include "RemovableDriveManager.hpp" -#include "InstanceCheck.hpp" -#include "NotificationManager.hpp" -#include "UnsavedChangesDialog.hpp" -#include "SavePresetDialog.hpp" -#include "PrintHostDialogs.hpp" -#include "DesktopIntegrationDialog.hpp" -#include "SendSystemInfoDialog.hpp" - -#include "BitmapCache.hpp" -#include "Notebook.hpp" - -#ifdef __WXMSW__ -#include -#include -#ifdef _MSW_DARK_MODE -#include -#endif // _MSW_DARK_MODE -#endif -#ifdef _WIN32 -#include -#endif - -#if ENABLE_THUMBNAIL_GENERATOR_DEBUG -#include -#include -#endif // ENABLE_THUMBNAIL_GENERATOR_DEBUG - -// Needed for forcing menu icons back under gtk2 and gtk3 -#if defined(__WXGTK20__) || defined(__WXGTK3__) - #include -#endif - -using namespace std::literals; - -namespace Slic3r { -namespace GUI { - -class MainFrame; - -class SplashScreen : public wxSplashScreen -{ -public: - SplashScreen(const wxBitmap& bitmap, long splashStyle, int milliseconds, wxPoint pos = wxDefaultPosition) - : wxSplashScreen(bitmap, splashStyle, milliseconds, static_cast(wxGetApp().mainframe), wxID_ANY, wxDefaultPosition, wxDefaultSize, -#ifdef __APPLE__ - wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR | wxSTAY_ON_TOP -#else - wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR -#endif // !__APPLE__ - ) - { - wxASSERT(bitmap.IsOk()); - - int init_dpi = get_dpi_for_window(this); - this->SetPosition(pos); - // The size of the SplashScreen can be hanged after its moving to another display - // So, update it from a bitmap size - this->SetClientSize(bitmap.GetWidth(), bitmap.GetHeight()); - this->CenterOnScreen(); - int new_dpi = get_dpi_for_window(this); - -// m_scale = (float)(new_dpi) / (float)(init_dpi); - m_main_bitmap = bitmap; - -// scale_bitmap(m_main_bitmap, m_scale); - - // init constant texts and scale fonts - init_constant_text(); - - // this font will be used for the action string - m_action_font = m_constant_text.credits_font.Bold(); - - // draw logo and constant info text - Decorate(m_main_bitmap); - } - - void SetText(const wxString& text) - { - set_bitmap(m_main_bitmap); - if (!text.empty()) { - wxBitmap bitmap(m_main_bitmap); - - wxMemoryDC memDC; - memDC.SelectObject(bitmap); - - memDC.SetFont(m_action_font); - memDC.SetTextForeground(wxColour(237, 107, 33)); - memDC.DrawText(text, int(m_scale * 60), m_action_line_y_position); - - memDC.SelectObject(wxNullBitmap); - set_bitmap(bitmap); -#ifdef __WXOSX__ - // without this code splash screen wouldn't be updated under OSX - wxYield(); -#endif - } - } - - static wxBitmap MakeBitmap(wxBitmap bmp) - { - if (!bmp.IsOk()) - return wxNullBitmap; - - // create dark grey background for the splashscreen - // It will be 5/3 of the weight of the bitmap - int width = lround((double)5 / 3 * bmp.GetWidth()); - int height = bmp.GetHeight(); - - wxImage image(width, height); - unsigned char* imgdata_ = image.GetData(); - for (int i = 0; i < width * height; ++i) { - *imgdata_++ = 51; - *imgdata_++ = 51; - *imgdata_++ = 51; - } - - wxBitmap new_bmp(image); - - wxMemoryDC memDC; - memDC.SelectObject(new_bmp); - memDC.DrawBitmap(bmp, width - bmp.GetWidth(), 0, true); - - return new_bmp; - } - - void Decorate(wxBitmap& bmp) - { - if (!bmp.IsOk()) - return; - - // draw text to the box at the left of the splashscreen. - // this box will be 2/5 of the weight of the bitmap, and be at the left. - int width = lround(bmp.GetWidth() * 0.4); - - // load bitmap for logo - BitmapCache bmp_cache; - int logo_size = lround(width * 0.25); - wxBitmap logo_bmp = *bmp_cache.load_svg(wxGetApp().logo_name(), logo_size, logo_size); - - wxCoord margin = int(m_scale * 20); - - wxRect banner_rect(wxPoint(0, logo_size), wxPoint(width, bmp.GetHeight())); - banner_rect.Deflate(margin, 2 * margin); - - // use a memory DC to draw directly onto the bitmap - wxMemoryDC memDc(bmp); - - // draw logo - memDc.DrawBitmap(logo_bmp, margin, margin, true); - - // draw the (white) labels inside of our black box (at the left of the splashscreen) - memDc.SetTextForeground(wxColour(255, 255, 255)); - - memDc.SetFont(m_constant_text.title_font); - memDc.DrawLabel(m_constant_text.title, banner_rect, wxALIGN_TOP | wxALIGN_LEFT); - - int title_height = memDc.GetTextExtent(m_constant_text.title).GetY(); - banner_rect.SetTop(banner_rect.GetTop() + title_height); - banner_rect.SetHeight(banner_rect.GetHeight() - title_height); - - memDc.SetFont(m_constant_text.version_font); - memDc.DrawLabel(m_constant_text.version, banner_rect, wxALIGN_TOP | wxALIGN_LEFT); - int version_height = memDc.GetTextExtent(m_constant_text.version).GetY(); - - memDc.SetFont(m_constant_text.credits_font); - memDc.DrawLabel(m_constant_text.credits, banner_rect, wxALIGN_BOTTOM | wxALIGN_LEFT); - int credits_height = memDc.GetMultiLineTextExtent(m_constant_text.credits).GetY(); - int text_height = memDc.GetTextExtent("text").GetY(); - - // calculate position for the dynamic text - int logo_and_header_height = margin + logo_size + title_height + version_height; - m_action_line_y_position = logo_and_header_height + 0.5 * (bmp.GetHeight() - margin - credits_height - logo_and_header_height - text_height); - } - -private: - wxBitmap m_main_bitmap; - wxFont m_action_font; - int m_action_line_y_position; - float m_scale {1.0}; - - struct ConstantText - { - wxString title; - wxString version; - wxString credits; - - wxFont title_font; - wxFont version_font; - wxFont credits_font; - - void init(wxFont init_font) - { - // title - title = wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME; - - // dynamically get the version to display - version = _L("Version") + " " + std::string(SLIC3R_VERSION); - - // credits infornation - credits = title + " " + - _L("is based on Slic3r by Alessandro Ranellucci and the RepRap community.") + "\n" + - _L("Developed by Prusa Research.") + "\n\n" + - title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + ".\n\n" + - _L("Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others.") + "\n\n" + - _L("Artwork model by Leslie Ing"); - - title_font = version_font = credits_font = init_font; - } - } - m_constant_text; - - void init_constant_text() - { - m_constant_text.init(get_default_font(this)); - - // As default we use a system font for current display. - // Scale fonts in respect to banner width - - int text_banner_width = lround(0.4 * m_main_bitmap.GetWidth()) - roundl(m_scale * 50); // banner_width - margins - - float title_font_scale = (float)text_banner_width / GetTextExtent(m_constant_text.title).GetX(); - scale_font(m_constant_text.title_font, title_font_scale > 3.5f ? 3.5f : title_font_scale); - - float version_font_scale = (float)text_banner_width / GetTextExtent(m_constant_text.version).GetX(); - scale_font(m_constant_text.version_font, version_font_scale > 2.f ? 2.f : version_font_scale); - - // The width of the credits information string doesn't respect to the banner width some times. - // So, scale credits_font in the respect to the longest string width - int longest_string_width = word_wrap_string(m_constant_text.credits); - float font_scale = (float)text_banner_width / longest_string_width; - scale_font(m_constant_text.credits_font, font_scale); - } - - void set_bitmap(wxBitmap& bmp) - { - m_window->SetBitmap(bmp); - m_window->Refresh(); - m_window->Update(); - } - - void scale_bitmap(wxBitmap& bmp, float scale) - { - if (scale == 1.0) - return; - - wxImage image = bmp.ConvertToImage(); - if (!image.IsOk() || image.GetWidth() == 0 || image.GetHeight() == 0) - return; - - int width = int(scale * image.GetWidth()); - int height = int(scale * image.GetHeight()); - image.Rescale(width, height, wxIMAGE_QUALITY_BILINEAR); - - bmp = wxBitmap(std::move(image)); - } - - void scale_font(wxFont& font, float scale) - { -#ifdef __WXMSW__ - // Workaround for the font scaling in respect to the current active display, - // not for the primary display, as it's implemented in Font.cpp - // See https://github.com/wxWidgets/wxWidgets/blob/master/src/msw/font.cpp - // void wxNativeFontInfo::SetFractionalPointSize(float pointSizeNew) - wxNativeFontInfo nfi= *font.GetNativeFontInfo(); - float pointSizeNew = wxDisplay(this).GetScaleFactor() * scale * font.GetPointSize(); - nfi.lf.lfHeight = nfi.GetLogFontHeightAtPPI(pointSizeNew, get_dpi_for_window(this)); - nfi.pointSize = pointSizeNew; - font = wxFont(nfi); -#else - font.Scale(scale); -#endif //__WXMSW__ - } - - // wrap a string for the strings no longer then 55 symbols - // return extent of the longest string - int word_wrap_string(wxString& input) - { - size_t line_len = 55;// count of symbols in one line - int idx = -1; - size_t cur_len = 0; - - wxString longest_sub_string; - auto get_longest_sub_string = [input](wxString &longest_sub_str, size_t cur_len, size_t i) { - if (cur_len > longest_sub_str.Len()) - longest_sub_str = input.SubString(i - cur_len + 1, i); - }; - - for (size_t i = 0; i < input.Len(); i++) - { - cur_len++; - if (input[i] == ' ') - idx = i; - if (input[i] == '\n') - { - get_longest_sub_string(longest_sub_string, cur_len, i); - idx = -1; - cur_len = 0; - } - if (cur_len >= line_len && idx >= 0) - { - get_longest_sub_string(longest_sub_string, cur_len, i); - input[idx] = '\n'; - cur_len = i - static_cast(idx); - } - } - - return GetTextExtent(longest_sub_string).GetX(); - } -}; - - -#ifdef __linux__ -bool static check_old_linux_datadir(const wxString& app_name) { - // If we are on Linux and the datadir does not exist yet, look into the old - // location where the datadir was before version 2.3. If we find it there, - // tell the user that he might wanna migrate to the new location. - // (https://github.com/prusa3d/PrusaSlicer/issues/2911) - // To be precise, the datadir should exist, it is created when single instance - // lock happens. Instead of checking for existence, check the contents. - - namespace fs = boost::filesystem; - - std::string new_path = Slic3r::data_dir(); - - wxString dir; - if (! wxGetEnv(wxS("XDG_CONFIG_HOME"), &dir) || dir.empty() ) - dir = wxFileName::GetHomeDir() + wxS("/.config"); - std::string default_path = (dir + "/" + app_name).ToUTF8().data(); - - if (new_path != default_path) { - // This happens when the user specifies a custom --datadir. - // Do not show anything in that case. - return true; - } - - fs::path data_dir = fs::path(new_path); - if (! fs::is_directory(data_dir)) - return true; // This should not happen. - - int file_count = std::distance(fs::directory_iterator(data_dir), fs::directory_iterator()); - - if (file_count <= 1) { // just cache dir with an instance lock - std::string old_path = wxStandardPaths::Get().GetUserDataDir().ToUTF8().data(); - - if (fs::is_directory(old_path)) { - wxString msg = from_u8((boost::format(_u8L("Starting with %1% 2.3, configuration " - "directory on Linux has changed (according to XDG Base Directory Specification) to \n%2%.\n\n" - "This directory did not exist yet (maybe you run the new version for the first time).\nHowever, " - "an old %1% configuration directory was detected in \n%3%.\n\n" - "Consider moving the contents of the old directory to the new location in order to access " - "your profiles, etc.\nNote that if you decide to downgrade %1% in future, it will use the old " - "location again.\n\n" - "What do you want to do now?")) % SLIC3R_APP_NAME % new_path % old_path).str()); - wxString caption = from_u8((boost::format(_u8L("%s - BREAKING CHANGE")) % SLIC3R_APP_NAME).str()); - RichMessageDialog dlg(nullptr, msg, caption, wxYES_NO); - dlg.SetYesNoLabels(_L("Quit, I will move my data now"), _L("Start the application")); - if (dlg.ShowModal() != wxID_NO) - return false; - } - } else { - // If the new directory exists, be silent. The user likely already saw the message. - } - return true; -} -#endif - -#ifdef _WIN32 -#if 0 // External Updater is replaced with AppUpdater.cpp -static bool run_updater_win() -{ - // find updater exe - boost::filesystem::path path_updater = boost::dll::program_location().parent_path() / "prusaslicer-updater.exe"; - // run updater. Original args: /silent -restartapp prusa-slicer.exe -startappfirst - std::string msg; - bool res = create_process(path_updater, L"/silent", msg); - if (!res) - BOOST_LOG_TRIVIAL(error) << msg; - return res; -} -#endif // 0 -#endif // _WIN32 - -struct FileWildcards { - std::string_view title; - std::vector file_extensions; -}; - -static const FileWildcards file_wildcards_by_type[FT_SIZE] = { - /* FT_STL */ { "STL files"sv, { ".stl"sv } }, - /* FT_OBJ */ { "OBJ files"sv, { ".obj"sv } }, - /* FT_OBJECT */ { "Object files"sv, { ".stl"sv, ".obj"sv } }, - /* FT_AMF */ { "AMF files"sv, { ".amf"sv, ".zip.amf"sv, ".xml"sv } }, - /* FT_3MF */ { "3MF files"sv, { ".3mf"sv } }, - /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".gco"sv, ".g"sv, ".ngc"sv } }, - /* FT_MODEL */ { "Known files"sv, { ".stl"sv, ".obj"sv, ".3mf"sv, ".amf"sv, ".zip.amf"sv, ".xml"sv } }, - /* FT_PROJECT */ { "Project files"sv, { ".3mf"sv, ".amf"sv, ".zip.amf"sv } }, - /* FT_GALLERY */ { "Known files"sv, { ".stl"sv, ".obj"sv } }, - - /* FT_INI */ { "INI files"sv, { ".ini"sv } }, - /* FT_SVG */ { "SVG files"sv, { ".svg"sv } }, - - /* FT_TEX */ { "Texture"sv, { ".png"sv, ".svg"sv } }, - - /* FT_SL1 */ { "Masked SLA files"sv, { ".sl1"sv, ".sl1s"sv, ".pwmx"sv } }, -}; - -#if ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR -wxString file_wildcards(FileType file_type) -{ - const FileWildcards& data = file_wildcards_by_type[file_type]; - std::string title; - std::string mask; - - // Generate cumulative first item - for (const std::string_view& ext : data.file_extensions) { - if (title.empty()) { - title = "*"; - title += ext; - mask = title; - } - else { - title += ", *"; - title += ext; - mask += ";*"; - mask += ext; - } - mask += ";*"; - mask += boost::to_upper_copy(std::string(ext)); - } - - wxString ret = GUI::format_wxstr("%s (%s)|%s", data.title, title, mask); - - // Adds an item for each of the extensions - if (data.file_extensions.size() > 1) { - for (const std::string_view& ext : data.file_extensions) { - title = "*"; - title += ext; - ret += GUI::format_wxstr("|%s (%s)|%s", data.title, title, title); - } - } - - return ret; -} -#else -// This function produces a Win32 file dialog file template mask to be consumed by wxWidgets on all platforms. -// The function accepts a custom extension parameter. If the parameter is provided, the custom extension -// will be added as a fist to the list. This is important for a "file save" dialog on OSX, which strips -// an extension from the provided initial file name and substitutes it with the default extension (the first one in the template). -wxString file_wildcards(FileType file_type, const std::string &custom_extension) -{ - const FileWildcards& data = file_wildcards_by_type[file_type]; - std::string title; - std::string mask; - std::string custom_ext_lower; - - if (! custom_extension.empty()) { - // Generate an extension into the title mask and into the list of extensions. - custom_ext_lower = boost::to_lower_copy(custom_extension); - const std::string custom_ext_upper = boost::to_upper_copy(custom_extension); - if (custom_ext_lower == custom_extension) { - // Add a lower case version. - title = std::string("*") + custom_ext_lower; - mask = title; - // Add an upper case version. - mask += ";*"; - mask += custom_ext_upper; - } else if (custom_ext_upper == custom_extension) { - // Add an upper case version. - title = std::string("*") + custom_ext_upper; - mask = title; - // Add a lower case version. - mask += ";*"; - mask += custom_ext_lower; - } else { - // Add the mixed case version only. - title = std::string("*") + custom_extension; - mask = title; - } - } - - for (const std::string_view &ext : data.file_extensions) - // Only add an extension if it was not added first as the custom extension. - if (ext != custom_ext_lower) { - if (title.empty()) { - title = "*"; - title += ext; - mask = title; - } else { - title += ", *"; - title += ext; - mask += ";*"; - mask += ext; - } - mask += ";*"; - mask += boost::to_upper_copy(std::string(ext)); - } - - return GUI::format_wxstr("%s (%s)|%s", data.title, title, mask); -} -#endif // ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR - -static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); } - -#ifdef WIN32 -#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) -static void register_win32_dpi_event() -{ - enum { WM_DPICHANGED_ = 0x02e0 }; - - wxWindow::MSWRegisterMessageHandler(WM_DPICHANGED_, [](wxWindow *win, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - const int dpi = wParam & 0xffff; - const auto rect = reinterpret_cast(lParam); - const wxRect wxrect(wxPoint(rect->top, rect->left), wxPoint(rect->bottom, rect->right)); - - DpiChangedEvent evt(EVT_DPI_CHANGED_SLICER, dpi, wxrect); - win->GetEventHandler()->AddPendingEvent(evt); - - return true; - }); -} -#endif // !wxVERSION_EQUAL_OR_GREATER_THAN - -static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }; - -static void register_win32_device_notification_event() -{ - wxWindow::MSWRegisterMessageHandler(WM_DEVICECHANGE, [](wxWindow *win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) { - // Some messages are sent to top level windows by default, some messages are sent to only registered windows, and we explictely register on MainFrame only. - auto main_frame = dynamic_cast(win); - auto plater = (main_frame == nullptr) ? nullptr : main_frame->plater(); - if (plater == nullptr) - // Maybe some other top level window like a dialog or maybe a pop-up menu? - return true; - PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; - switch (wParam) { - case DBT_DEVICEARRIVAL: - if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) - plater->GetEventHandler()->AddPendingEvent(VolumeAttachedEvent(EVT_VOLUME_ATTACHED)); - else if (lpdb->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { - PDEV_BROADCAST_DEVICEINTERFACE lpdbi = (PDEV_BROADCAST_DEVICEINTERFACE)lpdb; -// if (lpdbi->dbcc_classguid == GUID_DEVINTERFACE_VOLUME) { -// printf("DBT_DEVICEARRIVAL %d - Media has arrived: %ws\n", msg_count, lpdbi->dbcc_name); - if (lpdbi->dbcc_classguid == GUID_DEVINTERFACE_HID) - plater->GetEventHandler()->AddPendingEvent(HIDDeviceAttachedEvent(EVT_HID_DEVICE_ATTACHED, boost::nowide::narrow(lpdbi->dbcc_name))); - } - break; - case DBT_DEVICEREMOVECOMPLETE: - if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) - plater->GetEventHandler()->AddPendingEvent(VolumeDetachedEvent(EVT_VOLUME_DETACHED)); - else if (lpdb->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { - PDEV_BROADCAST_DEVICEINTERFACE lpdbi = (PDEV_BROADCAST_DEVICEINTERFACE)lpdb; -// if (lpdbi->dbcc_classguid == GUID_DEVINTERFACE_VOLUME) -// printf("DBT_DEVICEARRIVAL %d - Media was removed: %ws\n", msg_count, lpdbi->dbcc_name); - if (lpdbi->dbcc_classguid == GUID_DEVINTERFACE_HID) - plater->GetEventHandler()->AddPendingEvent(HIDDeviceDetachedEvent(EVT_HID_DEVICE_DETACHED, boost::nowide::narrow(lpdbi->dbcc_name))); - } - break; - default: - break; - } - return true; - }); - - wxWindow::MSWRegisterMessageHandler(MainFrame::WM_USER_MEDIACHANGED, [](wxWindow *win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) { - // Some messages are sent to top level windows by default, some messages are sent to only registered windows, and we explictely register on MainFrame only. - auto main_frame = dynamic_cast(win); - auto plater = (main_frame == nullptr) ? nullptr : main_frame->plater(); - if (plater == nullptr) - // Maybe some other top level window like a dialog or maybe a pop-up menu? - return true; - wchar_t sPath[MAX_PATH]; - if (lParam == SHCNE_MEDIAINSERTED || lParam == SHCNE_MEDIAREMOVED) { - struct _ITEMIDLIST* pidl = *reinterpret_cast(wParam); - if (! SHGetPathFromIDList(pidl, sPath)) { - BOOST_LOG_TRIVIAL(error) << "MediaInserted: SHGetPathFromIDList failed"; - return false; - } - } - switch (lParam) { - case SHCNE_MEDIAINSERTED: - { - //printf("SHCNE_MEDIAINSERTED %S\n", sPath); - plater->GetEventHandler()->AddPendingEvent(VolumeAttachedEvent(EVT_VOLUME_ATTACHED)); - break; - } - case SHCNE_MEDIAREMOVED: - { - //printf("SHCNE_MEDIAREMOVED %S\n", sPath); - plater->GetEventHandler()->AddPendingEvent(VolumeDetachedEvent(EVT_VOLUME_DETACHED)); - break; - } - default: -// printf("Unknown\n"); - break; - } - return true; - }); - - wxWindow::MSWRegisterMessageHandler(WM_INPUT, [](wxWindow *win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) { - auto main_frame = dynamic_cast(Slic3r::GUI::find_toplevel_parent(win)); - auto plater = (main_frame == nullptr) ? nullptr : main_frame->plater(); -// if (wParam == RIM_INPUTSINK && plater != nullptr && main_frame->IsActive()) { - if (wParam == RIM_INPUT && plater != nullptr && main_frame->IsActive()) { - RAWINPUT raw; - UINT rawSize = sizeof(RAWINPUT); - ::GetRawInputData((HRAWINPUT)lParam, RID_INPUT, &raw, &rawSize, sizeof(RAWINPUTHEADER)); - if (raw.header.dwType == RIM_TYPEHID && plater->get_mouse3d_controller().handle_raw_input_win32(raw.data.hid.bRawData, raw.data.hid.dwSizeHid)) - return true; - } - return false; - }); - - wxWindow::MSWRegisterMessageHandler(WM_COPYDATA, [](wxWindow* win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) { - COPYDATASTRUCT* copy_data_structure = { 0 }; - copy_data_structure = (COPYDATASTRUCT*)lParam; - if (copy_data_structure->dwData == 1) { - LPCWSTR arguments = (LPCWSTR)copy_data_structure->lpData; - Slic3r::GUI::wxGetApp().other_instance_message_handler()->handle_message(boost::nowide::narrow(arguments)); - } - return true; - }); -} -#endif // WIN32 - -static void generic_exception_handle() -{ - // Note: Some wxWidgets APIs use wxLogError() to report errors, eg. wxImage - // - see https://docs.wxwidgets.org/3.1/classwx_image.html#aa249e657259fe6518d68a5208b9043d0 - // - // wxLogError typically goes around exception handling and display an error dialog some time - // after an error is logged even if exception handling and OnExceptionInMainLoop() take place. - // This is why we use wxLogError() here as well instead of a custom dialog, because it accumulates - // errors if multiple have been collected and displays just one error message for all of them. - // Otherwise we would get multiple error messages for one missing png, for example. - // - // If a custom error message window (or some other solution) were to be used, it would be necessary - // to turn off wxLogError() usage in wx APIs, most notably in wxImage - // - see https://docs.wxwidgets.org/trunk/classwx_image.html#aa32e5d3507cc0f8c3330135bc0befc6a - - try { - throw; - } catch (const std::bad_alloc& ex) { - // bad_alloc in main thread is most likely fatal. Report immediately to the user (wxLogError would be delayed) - // and terminate the app so it is at least certain to happen now. - wxString errmsg = wxString::Format(_L("%s has encountered an error. It was likely caused by running out of memory. " - "If you are sure you have enough RAM on your system, this may also be a bug and we would " - "be glad if you reported it.\n\nThe application will now terminate."), SLIC3R_APP_NAME); - wxMessageBox(errmsg + "\n\n" + wxString(ex.what()), _L("Fatal error"), wxOK | wxICON_ERROR); - BOOST_LOG_TRIVIAL(error) << boost::format("std::bad_alloc exception: %1%") % ex.what(); - std::terminate(); - } catch (const boost::io::bad_format_string& ex) { - wxString errmsg = _L("PrusaSlicer has encountered a localization error. " - "Please report to PrusaSlicer team, what language was active and in which scenario " - "this issue happened. Thank you.\n\nThe application will now terminate."); - wxMessageBox(errmsg + "\n\n" + wxString(ex.what()), _L("Critical error"), wxOK | wxICON_ERROR); - BOOST_LOG_TRIVIAL(error) << boost::format("Uncaught exception: %1%") % ex.what(); - std::terminate(); - throw; - } catch (const std::exception& ex) { - wxLogError(format_wxstr(_L("Internal error: %1%"), ex.what())); - BOOST_LOG_TRIVIAL(error) << boost::format("Uncaught exception: %1%") % ex.what(); - throw; - } -} - -void GUI_App::post_init() -{ - assert(initialized()); - if (! this->initialized()) - throw Slic3r::RuntimeError("Calling post_init() while not yet initialized"); - - if (this->is_gcode_viewer()) { - if (! this->init_params->input_files.empty()) - this->plater()->load_gcode(wxString::FromUTF8(this->init_params->input_files[0].c_str())); - } - else { - if (! this->init_params->preset_substitutions.empty()) - show_substitutions_info(this->init_params->preset_substitutions); - -#if 0 - // Load the cummulative config over the currently active profiles. - //FIXME if multiple configs are loaded, only the last one will have an effect. - // We need to decide what to do about loading of separate presets (just print preset, just filament preset etc). - // As of now only the full configs are supported here. - if (!m_print_config.empty()) - this->gui->mainframe->load_config(m_print_config); -#endif - if (! this->init_params->load_configs.empty()) - // Load the last config to give it a name at the UI. The name of the preset may be later - // changed by loading an AMF or 3MF. - //FIXME this is not strictly correct, as one may pass a print/filament/printer profile here instead of a full config. - this->mainframe->load_config_file(this->init_params->load_configs.back()); - // If loading a 3MF file, the config is loaded from the last one. - if (!this->init_params->input_files.empty()) { - const std::vector res = this->plater()->load_files(this->init_params->input_files, true, true); - if (!res.empty() && this->init_params->input_files.size() == 1) { - // Update application titlebar when opening a project file - const std::string& filename = this->init_params->input_files.front(); - if (boost::algorithm::iends_with(filename, ".amf") || - boost::algorithm::iends_with(filename, ".amf.xml") || - boost::algorithm::iends_with(filename, ".3mf")) - this->plater()->set_project_filename(from_u8(filename)); - } - } - if (! this->init_params->extra_config.empty()) - this->mainframe->load_config(this->init_params->extra_config); - } - - // show "Did you know" notification - if (app_config->get("show_hints") == "1" && ! is_gcode_viewer()) - plater_->get_notification_manager()->push_hint_notification(true); - - // The extra CallAfter() is needed because of Mac, where this is the only way - // to popup a modal dialog on start without screwing combo boxes. - // This is ugly but I honestly found no better way to do it. - // Neither wxShowEvent nor wxWindowCreateEvent work reliably. - if (this->preset_updater) { // G-Code Viewer does not initialize preset_updater. - if (! this->check_updates(false)) - // Configuration is not compatible and reconfigure was refused by the user. Application is closing. - return; - CallAfter([this] { - bool cw_showed = this->config_wizard_startup(); - this->preset_updater->sync(preset_bundle); - this->app_version_check(false); - if (! cw_showed) { - // The CallAfter is needed as well, without it, GL extensions did not show. - // Also, we only want to show this when the wizard does not, so the new user - // sees something else than "we want something" on the first start. - show_send_system_info_dialog_if_needed(); - } - }); - } - - // Set PrusaSlicer version and save to PrusaSlicer.ini or PrusaSlicerGcodeViewer.ini. - app_config->set("version", SLIC3R_VERSION); - app_config->save(); - -#ifdef _WIN32 - // Sets window property to mainframe so other instances can indentify it. - OtherInstanceMessageHandler::init_windows_properties(mainframe, m_instance_hash_int); -#endif //WIN32 -} - -IMPLEMENT_APP(GUI_App) - -GUI_App::GUI_App(EAppMode mode) - : wxApp() - , m_app_mode(mode) - , m_em_unit(10) - , m_imgui(new ImGuiWrapper()) - , m_removable_drive_manager(std::make_unique()) - , m_other_instance_message_handler(std::make_unique()) -{ - //app config initializes early becasuse it is used in instance checking in PrusaSlicer.cpp - this->init_app_config(); - // init app downloader after path to datadir is set - m_app_updater = std::make_unique(); -} - -GUI_App::~GUI_App() -{ - if (app_config != nullptr) - delete app_config; - - if (preset_bundle != nullptr) - delete preset_bundle; - - if (preset_updater != nullptr) - delete preset_updater; -} - -// If formatted for github, plaintext with OpenGL extensions enclosed into

. -// Otherwise HTML formatted for the system info dialog. -std::string GUI_App::get_gl_info(bool for_github) -{ - return OpenGLManager::get_gl_info().to_string(for_github); -} - -wxGLContext* GUI_App::init_glcontext(wxGLCanvas& canvas) -{ -#if ENABLE_GL_CORE_PROFILE -#if ENABLE_OPENGL_DEBUG_OPTION - return m_opengl_mgr.init_glcontext(canvas, init_params != nullptr ? init_params->opengl_version : std::make_pair(0, 0), - init_params != nullptr ? init_params->opengl_debug : false); -#else - return m_opengl_mgr.init_glcontext(canvas, init_params != nullptr ? init_params->opengl_version : std::make_pair(0, 0)); -#endif // ENABLE_OPENGL_DEBUG_OPTION -#else - return m_opengl_mgr.init_glcontext(canvas); -#endif // ENABLE_GL_CORE_PROFILE -} - -bool GUI_App::init_opengl() -{ -#ifdef __linux__ - bool status = m_opengl_mgr.init_gl(); - m_opengl_initialized = true; - return status; -#else - return m_opengl_mgr.init_gl(); -#endif -} - -// gets path to PrusaSlicer.ini, returns semver from first line comment -static boost::optional parse_semver_from_ini(std::string path) -{ - std::ifstream stream(path); - std::stringstream buffer; - buffer << stream.rdbuf(); - std::string body = buffer.str(); - size_t start = body.find("PrusaSlicer "); - if (start == std::string::npos) - return boost::none; - body = body.substr(start + 12); - size_t end = body.find_first_of(" \n"); - if (end < body.size()) - body.resize(end); - return Semver::parse(body); -} - -void GUI_App::init_app_config() -{ - // Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release. -// SetAppName(SLIC3R_APP_KEY); - SetAppName(SLIC3R_APP_KEY "-alpha"); -// SetAppName(SLIC3R_APP_KEY "-beta"); - - -// SetAppDisplayName(SLIC3R_APP_NAME); - - // Set the Slic3r data directory at the Slic3r XS module. - // Unix: ~/ .Slic3r - // Windows : "C:\Users\username\AppData\Roaming\Slic3r" or "C:\Documents and Settings\username\Application Data\Slic3r" - // Mac : "~/Library/Application Support/Slic3r" - - if (data_dir().empty()) { - #ifndef __linux__ - set_data_dir(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()); - #else - // Since version 2.3, config dir on Linux is in ${XDG_CONFIG_HOME}. - // https://github.com/prusa3d/PrusaSlicer/issues/2911 - wxString dir; - if (! wxGetEnv(wxS("XDG_CONFIG_HOME"), &dir) || dir.empty() ) - dir = wxFileName::GetHomeDir() + wxS("/.config"); - set_data_dir((dir + "/" + GetAppName()).ToUTF8().data()); - #endif - } else { - m_datadir_redefined = true; - } - - if (!app_config) - app_config = new AppConfig(is_editor() ? AppConfig::EAppMode::Editor : AppConfig::EAppMode::GCodeViewer); - - // load settings - m_app_conf_exists = app_config->exists(); - if (m_app_conf_exists) { - std::string error = app_config->load(); - if (!error.empty()) { - // Error while parsing config file. We'll customize the error message and rethrow to be displayed. - if (is_editor()) { - throw Slic3r::RuntimeError( - _u8L("Error parsing PrusaSlicer config file, it is probably corrupted. " - "Try to manually delete the file to recover from the error. Your user profiles will not be affected.") + - "\n\n" + app_config->config_path() + "\n\n" + error); - } - else { - throw Slic3r::RuntimeError( - _u8L("Error parsing PrusaGCodeViewer config file, it is probably corrupted. " - "Try to manually delete the file to recover from the error.") + - "\n\n" + app_config->config_path() + "\n\n" + error); - } - } - } -} - -// returns old config path to copy from if such exists, -// returns an empty string if such config path does not exists or if it cannot be loaded. -std::string GUI_App::check_older_app_config(Semver current_version, bool backup) -{ - std::string older_data_dir_path; - - // If the config folder is redefined - do not check - if (m_datadir_redefined) - return {}; - - // find other version app config (alpha / beta / release) - std::string config_path = app_config->config_path(); - boost::filesystem::path parent_file_path(config_path); - std::string filename = parent_file_path.filename().string(); - parent_file_path.remove_filename().remove_filename(); - - std::vector candidates; - - if (SLIC3R_APP_KEY "-alpha" != GetAppName()) candidates.emplace_back(parent_file_path / SLIC3R_APP_KEY "-alpha" / filename); - if (SLIC3R_APP_KEY "-beta" != GetAppName()) candidates.emplace_back(parent_file_path / SLIC3R_APP_KEY "-beta" / filename); - if (SLIC3R_APP_KEY != GetAppName()) candidates.emplace_back(parent_file_path / SLIC3R_APP_KEY / filename); - - Semver last_semver = current_version; - for (const auto& candidate : candidates) { - if (boost::filesystem::exists(candidate)) { - // parse - boost::optionalother_semver = parse_semver_from_ini(candidate.string()); - if (other_semver && *other_semver > last_semver) { - last_semver = *other_semver; - older_data_dir_path = candidate.parent_path().string(); - } - } - } - if (older_data_dir_path.empty()) - return {}; - BOOST_LOG_TRIVIAL(info) << "last app config file used: " << older_data_dir_path; - // ask about using older data folder - - InfoDialog msg(nullptr - , format_wxstr(_L("You are opening %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION) - , backup ? - format_wxstr(_L( - "The active configuration was created by %1% %2%," - "\nwhile a newer configuration was found in %3%" - "\ncreated by %1% %4%." - "\n\nShall the newer configuration be imported?" - "\nIf so, your active configuration will be backed up before importing the new configuration." - ) - , SLIC3R_APP_NAME, current_version.to_string(), older_data_dir_path, last_semver.to_string()) - : format_wxstr(_L( - "An existing configuration was found in %3%" - "\ncreated by %1% %2%." - "\n\nShall this configuration be imported?" - ) - , SLIC3R_APP_NAME, last_semver.to_string(), older_data_dir_path) - , true, wxYES_NO); - - if (backup) { - msg.SetButtonLabel(wxID_YES, _L("Import")); - msg.SetButtonLabel(wxID_NO, _L("Don't import")); - } - - if (msg.ShowModal() == wxID_YES) { - std::string snapshot_id; - if (backup) { - const Config::Snapshot* snapshot{ nullptr }; - if (! GUI::Config::take_config_snapshot_cancel_on_error(*app_config, Config::Snapshot::SNAPSHOT_USER, "", - _u8L("Continue and import newer configuration?"), &snapshot)) - return {}; - if (snapshot) { - // Save snapshot ID before loading the alternate AppConfig, as loading the alternate AppConfig may fail. - snapshot_id = snapshot->id; - assert(! snapshot_id.empty()); - app_config->set("on_snapshot", snapshot_id); - } else - BOOST_LOG_TRIVIAL(error) << "Failed to take congiguration snapshot"; - } - - // load app config from older file - std::string error = app_config->load((boost::filesystem::path(older_data_dir_path) / filename).string()); - if (!error.empty()) { - // Error while parsing config file. We'll customize the error message and rethrow to be displayed. - if (is_editor()) { - throw Slic3r::RuntimeError( - _u8L("Error parsing PrusaSlicer config file, it is probably corrupted. " - "Try to manually delete the file to recover from the error. Your user profiles will not be affected.") + - "\n\n" + app_config->config_path() + "\n\n" + error); - } - else { - throw Slic3r::RuntimeError( - _u8L("Error parsing PrusaGCodeViewer config file, it is probably corrupted. " - "Try to manually delete the file to recover from the error.") + - "\n\n" + app_config->config_path() + "\n\n" + error); - } - } - if (!snapshot_id.empty()) - app_config->set("on_snapshot", snapshot_id); - m_app_conf_exists = true; - return older_data_dir_path; - } - return {}; -} - -void GUI_App::init_single_instance_checker(const std::string &name, const std::string &path) -{ - BOOST_LOG_TRIVIAL(debug) << "init wx instance checker " << name << " "<< path; - m_single_instance_checker = std::make_unique(boost::nowide::widen(name), boost::nowide::widen(path)); -} - -bool GUI_App::OnInit() -{ - try { - return on_init_inner(); - } catch (const std::exception&) { - generic_exception_handle(); - return false; - } -} - -bool GUI_App::on_init_inner() -{ - // Set initialization of image handlers before any UI actions - See GH issue #7469 - wxInitAllImageHandlers(); - -#if defined(_WIN32) && ! defined(_WIN64) - // Win32 32bit build. - if (wxPlatformInfo::Get().GetArchName().substr(0, 2) == "64") { - RichMessageDialog dlg(nullptr, - _L("You are running a 32 bit build of PrusaSlicer on 64-bit Windows." - "\n32 bit build of PrusaSlicer will likely not be able to utilize all the RAM available in the system." - "\nPlease download and install a 64 bit build of PrusaSlicer from https://www.prusa3d.cz/prusaslicer/." - "\nDo you wish to continue?"), - "PrusaSlicer", wxICON_QUESTION | wxYES_NO); - if (dlg.ShowModal() != wxID_YES) - return false; - } -#endif // _WIN64 - - // Forcing back menu icons under gtk2 and gtk3. Solution is based on: - // https://docs.gtk.org/gtk3/class.Settings.html - // see also https://docs.wxwidgets.org/3.0/classwx_menu_item.html#a2b5d6bcb820b992b1e4709facbf6d4fb - // TODO: Find workaround for GTK4 -#if defined(__WXGTK20__) || defined(__WXGTK3__) - g_object_set (gtk_settings_get_default (), "gtk-menu-images", TRUE, NULL); -#endif - - // Verify resources path - const wxString resources_dir = from_u8(Slic3r::resources_dir()); - wxCHECK_MSG(wxDirExists(resources_dir), false, - wxString::Format("Resources path does not exist or is not a directory: %s", resources_dir)); - -#ifdef __linux__ - if (! check_old_linux_datadir(GetAppName())) { - std::cerr << "Quitting, user chose to move their data to new location." << std::endl; - return false; - } -#endif - - // Enable this to get the default Win32 COMCTRL32 behavior of static boxes. -// wxSystemOptions::SetOption("msw.staticbox.optimized-paint", 0); - // Enable this to disable Windows Vista themes for all wxNotebooks. The themes seem to lead to terrible - // performance when working on high resolution multi-display setups. -// wxSystemOptions::SetOption("msw.notebook.themed-background", 0); - -// Slic3r::debugf "wxWidgets version %s, Wx version %s\n", wxVERSION_STRING, wxVERSION; - - // !!! Initialization of UI settings as a language, application color mode, fonts... have to be done before first UI action. - // Like here, before the show InfoDialog in check_older_app_config() - - // If load_language() fails, the application closes. - load_language(wxString(), true); -#ifdef _MSW_DARK_MODE - bool init_dark_color_mode = app_config->get("dark_color_mode") == "1"; - bool init_sys_menu_enabled = app_config->get("sys_menu_enabled") == "1"; - NppDarkMode::InitDarkMode(init_dark_color_mode, init_sys_menu_enabled); -#endif - // initialize label colors and fonts - init_label_colours(); - init_fonts(); - - std::string older_data_dir_path; - if (m_app_conf_exists) { - if (app_config->orig_version().valid() && app_config->orig_version() < *Semver::parse(SLIC3R_VERSION)) - // Only copying configuration if it was saved with a newer slicer than the one currently running. - older_data_dir_path = check_older_app_config(app_config->orig_version(), true); - } else { - // No AppConfig exists, fresh install. Always try to copy from an alternate location, don't make backup of the current configuration. - older_data_dir_path = check_older_app_config(Semver(), false); - } - -#ifdef _MSW_DARK_MODE - // app_config can be updated in check_older_app_config(), so check if dark_color_mode and sys_menu_enabled was changed - if (bool new_dark_color_mode = app_config->get("dark_color_mode") == "1"; - init_dark_color_mode != new_dark_color_mode) { - NppDarkMode::SetDarkMode(new_dark_color_mode); - init_label_colours(); - update_label_colours_from_appconfig(); - } - if (bool new_sys_menu_enabled = app_config->get("sys_menu_enabled") == "1"; - init_sys_menu_enabled != new_sys_menu_enabled) - NppDarkMode::SetSystemMenuForApp(new_sys_menu_enabled); -#endif - - if (is_editor()) { - std::string msg = Http::tls_global_init(); - std::string ssl_cert_store = app_config->get("tls_accepted_cert_store_location"); - bool ssl_accept = app_config->get("tls_cert_store_accepted") == "yes" && ssl_cert_store == Http::tls_system_cert_store(); - - if (!msg.empty() && !ssl_accept) { - RichMessageDialog - dlg(nullptr, - wxString::Format(_L("%s\nDo you want to continue?"), msg), - "PrusaSlicer", wxICON_QUESTION | wxYES_NO); - dlg.ShowCheckBox(_L("Remember my choice")); - if (dlg.ShowModal() != wxID_YES) return false; - - app_config->set("tls_cert_store_accepted", - dlg.IsCheckBoxChecked() ? "yes" : "no"); - app_config->set("tls_accepted_cert_store_location", - dlg.IsCheckBoxChecked() ? Http::tls_system_cert_store() : ""); - } - } - - SplashScreen* scrn = nullptr; - if (app_config->get("show_splash_screen") == "1") { - // make a bitmap with dark grey banner on the left side - wxBitmap bmp = SplashScreen::MakeBitmap(wxBitmap(from_u8(var(is_editor() ? "splashscreen.jpg" : "splashscreen-gcodepreview.jpg")), wxBITMAP_TYPE_JPEG)); - - // Detect position (display) to show the splash screen - // Now this position is equal to the mainframe position - wxPoint splashscreen_pos = wxDefaultPosition; - bool default_splashscreen_pos = true; - if (app_config->has("window_mainframe") && app_config->get("restore_win_position") == "1") { - auto metrics = WindowMetrics::deserialize(app_config->get("window_mainframe")); - default_splashscreen_pos = metrics == boost::none; - if (!default_splashscreen_pos) - splashscreen_pos = metrics->get_rect().GetPosition(); - } - - if (!default_splashscreen_pos) { - // workaround for crash related to the positioning of the window on secondary monitor - get_app_config()->set("restore_win_position", "crashed_at_splashscreen_pos"); - get_app_config()->save(); - } - - // create splash screen with updated bmp - scrn = new SplashScreen(bmp.IsOk() ? bmp : get_bmp_bundle("PrusaSlicer", 400)->GetPreferredBitmapSizeAtScale(1.0), - wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); - - if (!default_splashscreen_pos) - // revert "restore_win_position" value if application wasn't crashed - get_app_config()->set("restore_win_position", "1"); -#ifndef __linux__ - wxYield(); -#endif - scrn->SetText(_L("Loading configuration")+ dots); - } - - preset_bundle = new PresetBundle(); - - // just checking for existence of Slic3r::data_dir is not enough : it may be an empty directory - // supplied as argument to --datadir; in that case we should still run the wizard - preset_bundle->setup_directories(); - - if (! older_data_dir_path.empty()) { - preset_bundle->import_newer_configs(older_data_dir_path); - app_config->save(); - } - - if (is_editor()) { -#ifdef __WXMSW__ - if (app_config->get("associate_3mf") == "1") - associate_3mf_files(); - if (app_config->get("associate_stl") == "1") - associate_stl_files(); -#endif // __WXMSW__ - - preset_updater = new PresetUpdater(); - Bind(EVT_SLIC3R_VERSION_ONLINE, &GUI_App::on_version_read, this); - Bind(EVT_SLIC3R_EXPERIMENTAL_VERSION_ONLINE, [this](const wxCommandEvent& evt) { - if (this->plater_ != nullptr && app_config->get("notify_release") == "all") { - std::string evt_string = into_u8(evt.GetString()); - if (*Semver::parse(SLIC3R_VERSION) < *Semver::parse(evt_string)) { - auto notif_type = (evt_string.find("beta") != std::string::npos ? NotificationType::NewBetaAvailable : NotificationType::NewAlphaAvailable); - this->plater_->get_notification_manager()->push_notification( notif_type - , NotificationManager::NotificationLevel::ImportantNotificationLevel - , Slic3r::format(_u8L("New prerelease version %1% is available."), evt_string) - , _u8L("See Releases page.") - , [](wxEvtHandler* evnthndlr) {wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/PrusaSlicer/releases"); return true; } - ); - } - } - }); - Bind(EVT_SLIC3R_APP_DOWNLOAD_PROGRESS, [this](const wxCommandEvent& evt) { - //lm:This does not force a render. The progress bar only updateswhen the mouse is moved. - if (this->plater_ != nullptr) - this->plater_->get_notification_manager()->set_download_progress_percentage((float)std::stoi(into_u8(evt.GetString())) / 100.f ); - }); - - Bind(EVT_SLIC3R_APP_DOWNLOAD_FAILED, [this](const wxCommandEvent& evt) { - if (this->plater_ != nullptr) - this->plater_->get_notification_manager()->close_notification_of_type(NotificationType::AppDownload); - if(!evt.GetString().IsEmpty()) - show_error(nullptr, evt.GetString()); - }); - - Bind(EVT_SLIC3R_APP_OPEN_FAILED, [](const wxCommandEvent& evt) { - show_error(nullptr, evt.GetString()); - }); - } - else { -#ifdef __WXMSW__ - if (app_config->get("associate_gcode") == "1") - associate_gcode_files(); -#endif // __WXMSW__ - } - - // Suppress the '- default -' presets. - preset_bundle->set_default_suppressed(app_config->get("no_defaults") == "1"); - try { - // Enable all substitutions (in both user and system profiles), but log the substitutions in user profiles only. - // If there are substitutions in system profiles, then a "reconfigure" event shall be triggered, which will force - // installation of a compatible system preset, thus nullifying the system preset substitutions. - init_params->preset_substitutions = preset_bundle->load_presets(*app_config, ForwardCompatibilitySubstitutionRule::EnableSystemSilent); - } catch (const std::exception &ex) { - show_error(nullptr, ex.what()); - } - -#ifdef WIN32 -#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) - register_win32_dpi_event(); -#endif // !wxVERSION_EQUAL_OR_GREATER_THAN - register_win32_device_notification_event(); -#endif // WIN32 - - // Let the libslic3r know the callback, which will translate messages on demand. - Slic3r::I18N::set_translate_callback(libslic3r_translate_callback); - - // application frame - if (scrn && is_editor()) - scrn->SetText(_L("Preparing settings tabs") + dots); - - mainframe = new MainFrame(); - // hide settings tabs after first Layout - if (is_editor()) - mainframe->select_tab(size_t(0)); - - sidebar().obj_list()->init_objects(); // propagate model objects to object list -// update_mode(); // !!! do that later - SetTopWindow(mainframe); - - plater_->init_notification_manager(); - - m_printhost_job_queue.reset(new PrintHostJobQueue(mainframe->printhost_queue_dlg())); - - if (is_gcode_viewer()) { - mainframe->update_layout(); - if (plater_ != nullptr) - // ensure the selected technology is ptFFF - plater_->set_printer_technology(ptFFF); - } - else - load_current_presets(); - - // Save the active profiles as a "saved into project". - update_saved_preset_from_current_preset(); - - if (plater_ != nullptr) { - // Save the names of active presets and project specific config into ProjectDirtyStateManager. - plater_->reset_project_dirty_initial_presets(); - // Update Project dirty state, update application title bar. - plater_->update_project_dirty_from_presets(); - } - - mainframe->Show(true); - - obj_list()->set_min_height(); - - update_mode(); // update view mode after fix of the object_list size - -#ifdef __APPLE__ - other_instance_message_handler()->bring_instance_forward(); -#endif //__APPLE__ - - Bind(wxEVT_IDLE, [this](wxIdleEvent& event) - { - if (! plater_) - return; - - this->obj_manipul()->update_if_dirty(); - - // An ugly solution to GH #5537 in which GUI_App::init_opengl (normally called from events wxEVT_PAINT - // and wxEVT_SET_FOCUS before GUI_App::post_init is called) wasn't called before GUI_App::post_init and OpenGL wasn't initialized. -#ifdef __linux__ - if (! m_post_initialized && m_opengl_initialized) { -#else - if (! m_post_initialized) { -#endif - m_post_initialized = true; -#ifdef WIN32 - this->mainframe->register_win32_callbacks(); -#endif - this->post_init(); - } - - if (m_post_initialized && app_config->dirty() && app_config->get("autosave") == "1") - app_config->save(); - }); - - m_initialized = true; - - if (const std::string& crash_reason = app_config->get("restore_win_position"); - boost::starts_with(crash_reason,"crashed")) - { - wxString preferences_item = _L("Restore window position on start"); - InfoDialog dialog(nullptr, - _L("PrusaSlicer started after a crash"), - format_wxstr(_L("PrusaSlicer crashed last time when attempting to set window position.\n" - "We are sorry for the inconvenience, it unfortunately happens with certain multiple-monitor setups.\n" - "More precise reason for the crash: \"%1%\".\n" - "For more information see our GitHub issue tracker: \"%2%\" and \"%3%\"\n\n" - "To avoid this problem, consider disabling \"%4%\" in \"Preferences\". " - "Otherwise, the application will most likely crash again next time."), - "" + from_u8(crash_reason) + "", - "#2939", - "#5573", - "" + preferences_item + ""), - true, wxYES_NO); - - dialog.SetButtonLabel(wxID_YES, format_wxstr(_L("Disable \"%1%\""), preferences_item)); - dialog.SetButtonLabel(wxID_NO, format_wxstr(_L("Leave \"%1%\" enabled") , preferences_item)); - - auto answer = dialog.ShowModal(); - if (answer == wxID_YES) - app_config->set("restore_win_position", "0"); - else if (answer == wxID_NO) - app_config->set("restore_win_position", "1"); - app_config->save(); - } - - return true; -} - -unsigned GUI_App::get_colour_approx_luma(const wxColour &colour) -{ - double r = colour.Red(); - double g = colour.Green(); - double b = colour.Blue(); - - return std::round(std::sqrt( - r * r * .241 + - g * g * .691 + - b * b * .068 - )); -} - -bool GUI_App::dark_mode() -{ -#if __APPLE__ - // The check for dark mode returns false positive on 10.12 and 10.13, - // which allowed setting dark menu bar and dock area, which is - // is detected as dark mode. We must run on at least 10.14 where the - // proper dark mode was first introduced. - return wxPlatformInfo::Get().CheckOSVersion(10, 14) && mac_dark_mode(); -#else - if (wxGetApp().app_config->has("dark_color_mode")) - return wxGetApp().app_config->get("dark_color_mode") == "1"; - return check_dark_mode(); -#endif -} - -const wxColour GUI_App::get_label_default_clr_system() -{ - return dark_mode() ? wxColour(115, 220, 103) : wxColour(26, 132, 57); -} - -const wxColour GUI_App::get_label_default_clr_modified() -{ - return dark_mode() ? wxColour(253, 111, 40) : wxColour(252, 77, 1); -} - -void GUI_App::init_label_colours() -{ - m_color_label_modified = get_label_default_clr_modified(); - m_color_label_sys = get_label_default_clr_system(); - - bool is_dark_mode = dark_mode(); -#ifdef _WIN32 - m_color_label_default = is_dark_mode ? wxColour(250, 250, 250): wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); - m_color_highlight_label_default = is_dark_mode ? wxColour(230, 230, 230): wxSystemSettings::GetColour(/*wxSYS_COLOUR_HIGHLIGHTTEXT*/wxSYS_COLOUR_WINDOWTEXT); - m_color_highlight_default = is_dark_mode ? wxColour(78, 78, 78) : wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT); - m_color_hovered_btn_label = is_dark_mode ? wxColour(253, 111, 40) : wxColour(252, 77, 1); - m_color_default_btn_label = is_dark_mode ? wxColour(255, 181, 100): wxColour(203, 61, 0); - m_color_selected_btn_bg = is_dark_mode ? wxColour(95, 73, 62) : wxColour(228, 220, 216); -#else - m_color_label_default = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); -#endif - m_color_window_default = is_dark_mode ? wxColour(43, 43, 43) : wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); -} - -void GUI_App::update_label_colours_from_appconfig() -{ - if (app_config->has("label_clr_sys")) { - auto str = app_config->get("label_clr_sys"); - if (str != "") - m_color_label_sys = wxColour(str); - } - - if (app_config->has("label_clr_modified")) { - auto str = app_config->get("label_clr_modified"); - if (str != "") - m_color_label_modified = wxColour(str); - } -} - -void GUI_App::update_label_colours() -{ - for (Tab* tab : tabs_list) - tab->update_label_colours(); -} - -#ifdef _WIN32 -static bool is_focused(HWND hWnd) -{ - HWND hFocusedWnd = ::GetFocus(); - return hFocusedWnd && hWnd == hFocusedWnd; -} - -static bool is_default(wxWindow* win) -{ - wxTopLevelWindow* tlw = find_toplevel_parent(win); - if (!tlw) - return false; - - return win == tlw->GetDefaultItem(); -} -#endif - -void GUI_App::UpdateDarkUI(wxWindow* window, bool highlited/* = false*/, bool just_font/* = false*/) -{ -#ifdef _WIN32 - bool is_focused_button = false; - bool is_default_button = false; - if (wxButton* btn = dynamic_cast(window)) { - if (!(btn->GetWindowStyle() & wxNO_BORDER)) { - btn->SetWindowStyle(btn->GetWindowStyle() | wxNO_BORDER); - highlited = true; - } - // button marking - { - auto mark_button = [this, btn, highlited](const bool mark) { - if (btn->GetLabel().IsEmpty()) - btn->SetBackgroundColour(mark ? m_color_selected_btn_bg : highlited ? m_color_highlight_default : m_color_window_default); - else - btn->SetForegroundColour(mark ? m_color_hovered_btn_label : (is_default(btn) ? m_color_default_btn_label : m_color_label_default)); - btn->Refresh(); - btn->Update(); - }; - - // hovering - btn->Bind(wxEVT_ENTER_WINDOW, [mark_button](wxMouseEvent& event) { mark_button(true); event.Skip(); }); - btn->Bind(wxEVT_LEAVE_WINDOW, [mark_button, btn](wxMouseEvent& event) { mark_button(is_focused(btn->GetHWND())); event.Skip(); }); - // focusing - btn->Bind(wxEVT_SET_FOCUS, [mark_button](wxFocusEvent& event) { mark_button(true); event.Skip(); }); - btn->Bind(wxEVT_KILL_FOCUS, [mark_button](wxFocusEvent& event) { mark_button(false); event.Skip(); }); - - is_focused_button = is_focused(btn->GetHWND()); - is_default_button = is_default(btn); - if (is_focused_button || is_default_button) - mark_button(is_focused_button); - } - } - else if (wxTextCtrl* text = dynamic_cast(window)) { - if (text->GetBorder() != wxBORDER_SIMPLE) - text->SetWindowStyle(text->GetWindowStyle() | wxBORDER_SIMPLE); - } - else if (wxCheckListBox* list = dynamic_cast(window)) { - list->SetWindowStyle(list->GetWindowStyle() | wxBORDER_SIMPLE); - list->SetBackgroundColour(highlited ? m_color_highlight_default : m_color_window_default); - for (size_t i = 0; i < list->GetCount(); i++) - if (wxOwnerDrawn* item = list->GetItem(i)) { - item->SetBackgroundColour(highlited ? m_color_highlight_default : m_color_window_default); - item->SetTextColour(m_color_label_default); - } - return; - } - else if (dynamic_cast(window)) - window->SetWindowStyle(window->GetWindowStyle() | wxBORDER_SIMPLE); - - if (!just_font) - window->SetBackgroundColour(highlited ? m_color_highlight_default : m_color_window_default); - if (!is_focused_button && !is_default_button) - window->SetForegroundColour(m_color_label_default); -#endif -} - -// recursive function for scaling fonts for all controls in Window -#ifdef _WIN32 -static void update_dark_children_ui(wxWindow* window, bool just_buttons_update = false) -{ - bool is_btn = dynamic_cast(window) != nullptr; - if (!(just_buttons_update && !is_btn)) - wxGetApp().UpdateDarkUI(window, is_btn); - - auto children = window->GetChildren(); - for (auto child : children) { - update_dark_children_ui(child); - } -} -#endif - -// Note: Don't use this function for Dialog contains ScalableButtons -void GUI_App::UpdateDlgDarkUI(wxDialog* dlg, bool just_buttons_update/* = false*/) -{ -#ifdef _WIN32 - update_dark_children_ui(dlg, just_buttons_update); -#endif -} -void GUI_App::UpdateDVCDarkUI(wxDataViewCtrl* dvc, bool highlited/* = false*/) -{ -#ifdef _WIN32 - UpdateDarkUI(dvc, highlited ? dark_mode() : false); -#ifdef _MSW_DARK_MODE - dvc->RefreshHeaderDarkMode(&m_normal_font); -#endif //_MSW_DARK_MODE - if (dvc->HasFlag(wxDV_ROW_LINES)) - dvc->SetAlternateRowColour(m_color_highlight_default); - if (dvc->GetBorder() != wxBORDER_SIMPLE) - dvc->SetWindowStyle(dvc->GetWindowStyle() | wxBORDER_SIMPLE); -#endif -} - -void GUI_App::UpdateAllStaticTextDarkUI(wxWindow* parent) -{ -#ifdef _WIN32 - wxGetApp().UpdateDarkUI(parent); - - auto children = parent->GetChildren(); - for (auto child : children) { - if (dynamic_cast(child)) - child->SetForegroundColour(m_color_label_default); - } -#endif -} - -void GUI_App::init_fonts() -{ - m_small_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - m_bold_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold(); - m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - -#ifdef __WXMAC__ - m_small_font.SetPointSize(11); - m_bold_font.SetPointSize(13); -#endif /*__WXMAC__*/ - - // wxSYS_OEM_FIXED_FONT and wxSYS_ANSI_FIXED_FONT use the same as - // DEFAULT in wxGtk. Use the TELETYPE family as a work-around - m_code_font = wxFont(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); -} - -void GUI_App::update_fonts(const MainFrame *main_frame) -{ - /* Only normal and bold fonts are used for an application rescale, - * because of under MSW small and normal fonts are the same. - * To avoid same rescaling twice, just fill this values - * from rescaled MainFrame - */ - if (main_frame == nullptr) - main_frame = this->mainframe; - m_normal_font = main_frame->normal_font(); - m_small_font = m_normal_font; - m_bold_font = main_frame->normal_font().Bold(); - m_link_font = m_bold_font.Underlined(); - m_em_unit = main_frame->em_unit(); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); -} - -void GUI_App::set_label_clr_modified(const wxColour& clr) -{ - if (m_color_label_modified == clr) - return; - m_color_label_modified = clr; - const std::string str = encode_color(ColorRGB(clr.Red(), clr.Green(), clr.Blue())); - app_config->set("label_clr_modified", str); - app_config->save(); -} - -void GUI_App::set_label_clr_sys(const wxColour& clr) -{ - if (m_color_label_sys == clr) - return; - m_color_label_sys = clr; - const std::string str = encode_color(ColorRGB(clr.Red(), clr.Green(), clr.Blue())); - app_config->set("label_clr_sys", str); - app_config->save(); -} - -bool GUI_App::tabs_as_menu() const -{ - return app_config->get("tabs_as_menu") == "1"; // || dark_mode(); -} - -wxSize GUI_App::get_min_size() const -{ - return wxSize(76*m_em_unit, 49 * m_em_unit); -} - -float GUI_App::toolbar_icon_scale(const bool is_limited/* = false*/) const -{ -#ifdef __APPLE__ - const float icon_sc = 1.0f; // for Retina display will be used its own scale -#else - const float icon_sc = m_em_unit*0.1f; -#endif // __APPLE__ - - const std::string& use_val = app_config->get("use_custom_toolbar_size"); - const std::string& val = app_config->get("custom_toolbar_size"); - const std::string& auto_val = app_config->get("auto_toolbar_size"); - - if (val.empty() || auto_val.empty() || use_val.empty()) - return icon_sc; - - int int_val = use_val == "0" ? 100 : atoi(val.c_str()); - // correct value in respect to auto_toolbar_size - int_val = std::min(atoi(auto_val.c_str()), int_val); - - if (is_limited && int_val < 50) - int_val = 50; - - return 0.01f * int_val * icon_sc; -} - -void GUI_App::set_auto_toolbar_icon_scale(float scale) const -{ -#ifdef __APPLE__ - const float icon_sc = 1.0f; // for Retina display will be used its own scale -#else - const float icon_sc = m_em_unit * 0.1f; -#endif // __APPLE__ - - long int_val = std::min(int(std::lround(scale / icon_sc * 100)), 100); - std::string val = std::to_string(int_val); - - app_config->set("auto_toolbar_size", val); -} - -// check user printer_presets for the containing information about "Print Host upload" -void GUI_App::check_printer_presets() -{ - std::vector preset_names = PhysicalPrinter::presets_with_print_host_information(preset_bundle->printers); - if (preset_names.empty()) - return; - - wxString msg_text = _L("You have the following presets with saved options for \"Print Host upload\"") + ":"; - for (const std::string& preset_name : preset_names) - msg_text += "\n \"" + from_u8(preset_name) + "\","; - msg_text.RemoveLast(); - msg_text += "\n\n" + _L("But since this version of PrusaSlicer we don't show this information in Printer Settings anymore.\n" - "Settings will be available in physical printers settings.") + "\n\n" + - _L("By default new Printer devices will be named as \"Printer N\" during its creation.\n" - "Note: This name can be changed later from the physical printers settings"); - - //wxMessageDialog(nullptr, msg_text, _L("Information"), wxOK | wxICON_INFORMATION).ShowModal(); - MessageDialog(nullptr, msg_text, _L("Information"), wxOK | wxICON_INFORMATION).ShowModal(); - - preset_bundle->physical_printers.load_printers_from_presets(preset_bundle->printers); -} - -void GUI_App::recreate_GUI(const wxString& msg_name) -{ - m_is_recreating_gui = true; - - mainframe->shutdown(); - - wxProgressDialog dlg(msg_name, msg_name, 100, nullptr, wxPD_AUTO_HIDE); - dlg.Pulse(); - dlg.Update(10, _L("Recreating") + dots); - - MainFrame *old_main_frame = mainframe; - mainframe = new MainFrame(); - if (is_editor()) - // hide settings tabs after first Layout - mainframe->select_tab(size_t(0)); - // Propagate model objects to object list. - sidebar().obj_list()->init_objects(); - SetTopWindow(mainframe); - - dlg.Update(30, _L("Recreating") + dots); - old_main_frame->Destroy(); - - dlg.Update(80, _L("Loading of current presets") + dots); - m_printhost_job_queue.reset(new PrintHostJobQueue(mainframe->printhost_queue_dlg())); - load_current_presets(); - mainframe->Show(true); - - dlg.Update(90, _L("Loading of a mode view") + dots); - - obj_list()->set_min_height(); - update_mode(); - - // #ys_FIXME_delete_after_testing Do we still need this ? -// CallAfter([]() { -// // Run the config wizard, don't offer the "reset user profile" checkbox. -// config_wizard_startup(true); -// }); - - m_is_recreating_gui = false; -} - -void GUI_App::system_info() -{ - SysInfoDialog dlg; - dlg.ShowModal(); -} - -void GUI_App::keyboard_shortcuts() -{ - KBShortcutsDialog dlg; - dlg.ShowModal(); -} - -// static method accepting a wxWindow object as first parameter -bool GUI_App::catch_error(std::function cb, - // wxMessageDialog* message_dialog, - const std::string& err /*= ""*/) -{ - if (!err.empty()) { - if (cb) - cb(); - // if (message_dialog) - // message_dialog->(err, "Error", wxOK | wxICON_ERROR); - show_error(/*this*/nullptr, err); - return true; - } - return false; -} - -// static method accepting a wxWindow object as first parameter -void fatal_error(wxWindow* parent) -{ - show_error(parent, ""); - // exit 1; // #ys_FIXME -} - -#ifdef _WIN32 - -#ifdef _MSW_DARK_MODE -static void update_scrolls(wxWindow* window) -{ - wxWindowList::compatibility_iterator node = window->GetChildren().GetFirst(); - while (node) - { - wxWindow* win = node->GetData(); - if (dynamic_cast(win) || - dynamic_cast(win) || - dynamic_cast(win)) - NppDarkMode::SetDarkExplorerTheme(win->GetHWND()); - - update_scrolls(win); - node = node->GetNext(); - } -} -#endif //_MSW_DARK_MODE - - -#ifdef _MSW_DARK_MODE -void GUI_App::force_menu_update() -{ - NppDarkMode::SetSystemMenuForApp(app_config->get("sys_menu_enabled") == "1"); -} -#endif //_MSW_DARK_MODE - -void GUI_App::force_colors_update() -{ -#ifdef _MSW_DARK_MODE - NppDarkMode::SetDarkMode(app_config->get("dark_color_mode") == "1"); - if (WXHWND wxHWND = wxToolTip::GetToolTipCtrl()) - NppDarkMode::SetDarkExplorerTheme((HWND)wxHWND); - NppDarkMode::SetDarkTitleBar(mainframe->GetHWND()); - NppDarkMode::SetDarkTitleBar(mainframe->m_settings_dialog.GetHWND()); -#endif //_MSW_DARK_MODE - m_force_colors_update = true; -} -#endif //_WIN32 - -// Called after the Preferences dialog is closed and the program settings are saved. -// Update the UI based on the current preferences. -void GUI_App::update_ui_from_settings() -{ - update_label_colours(); -#ifdef _WIN32 - // Upadte UI colors before Update UI from settings - if (m_force_colors_update) { - m_force_colors_update = false; - mainframe->force_color_changed(); - mainframe->diff_dialog.force_color_changed(); - mainframe->preferences_dialog->force_color_changed(); - mainframe->printhost_queue_dlg()->force_color_changed(); -#ifdef _MSW_DARK_MODE - update_scrolls(mainframe); - if (mainframe->is_dlg_layout()) { - // update for tabs bar - UpdateDarkUI(&mainframe->m_settings_dialog); - mainframe->m_settings_dialog.Fit(); - mainframe->m_settings_dialog.Refresh(); - // update scrollbars - update_scrolls(&mainframe->m_settings_dialog); - } -#endif //_MSW_DARK_MODE - } -#endif - mainframe->update_ui_from_settings(); -} - -void GUI_App::persist_window_geometry(wxTopLevelWindow *window, bool default_maximized) -{ - const std::string name = into_u8(window->GetName()); - - window->Bind(wxEVT_CLOSE_WINDOW, [=](wxCloseEvent &event) { - window_pos_save(window, name); - event.Skip(); - }); - - window_pos_restore(window, name, default_maximized); - - on_window_geometry(window, [=]() { - window_pos_sanitize(window); - }); -} - -void GUI_App::load_project(wxWindow *parent, wxString& input_file) const -{ - input_file.Clear(); - wxFileDialog dialog(parent ? parent : GetTopWindow(), - _L("Choose one file (3MF/AMF):"), - app_config->get_last_dir(), "", - file_wildcards(FT_PROJECT), wxFD_OPEN | wxFD_FILE_MUST_EXIST); - - if (dialog.ShowModal() == wxID_OK) - input_file = dialog.GetPath(); -} - -void GUI_App::import_model(wxWindow *parent, wxArrayString& input_files) const -{ - input_files.Clear(); - wxFileDialog dialog(parent ? parent : GetTopWindow(), - _L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"), - from_u8(app_config->get_last_dir()), "", - file_wildcards(FT_MODEL), wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); - - if (dialog.ShowModal() == wxID_OK) - dialog.GetPaths(input_files); -} - -void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const -{ - input_file.Clear(); - wxFileDialog dialog(parent ? parent : GetTopWindow(), - _L("Choose one file (GCODE/.GCO/.G/.ngc/NGC):"), - app_config->get_last_dir(), "", - file_wildcards(FT_GCODE), wxFD_OPEN | wxFD_FILE_MUST_EXIST); - - if (dialog.ShowModal() == wxID_OK) - input_file = dialog.GetPath(); -} - -bool GUI_App::switch_language() -{ - if (select_language()) { - recreate_GUI(_L("Changing of an application language") + dots); - return true; - } else { - return false; - } -} - -#ifdef __linux__ -static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language, - const wxLanguageInfo* system_language) -{ - constexpr size_t max_len = 50; - char path[max_len] = ""; - std::vector locales; - const std::string lang_prefix = into_u8(language->CanonicalName.BeforeFirst('_')); - - // Call locale -a so we can parse the output to get the list of available locales - // We expect lines such as "en_US.utf8". Pick ones starting with the language code - // we are switching to. Lines with different formatting will be removed later. - FILE* fp = popen("locale -a", "r"); - if (fp != NULL) { - while (fgets(path, max_len, fp) != NULL) { - std::string line(path); - line = line.substr(0, line.find('\n')); - if (boost::starts_with(line, lang_prefix)) - locales.push_back(line); - } - pclose(fp); - } - - // locales now contain all candidates for this language. - // Sort them so ones containing anything about UTF-8 are at the end. - std::sort(locales.begin(), locales.end(), [](const std::string& a, const std::string& b) - { - auto has_utf8 = [](const std::string & s) { - auto S = boost::to_upper_copy(s); - return S.find("UTF8") != std::string::npos || S.find("UTF-8") != std::string::npos; - }; - return ! has_utf8(a) && has_utf8(b); - }); - - // Remove the suffix behind a dot, if there is one. - for (std::string& s : locales) - s = s.substr(0, s.find(".")); - - // We just hope that dear Linux "locale -a" returns country codes - // in ISO 3166-1 alpha-2 code (two letter) format. - // https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes - // To be sure, remove anything not looking as expected - // (any number of lowercase letters, underscore, two uppercase letters). - locales.erase(std::remove_if(locales.begin(), - locales.end(), - [](const std::string& s) { - return ! std::regex_match(s, - std::regex("^[a-z]+_[A-Z]{2}$")); - }), - locales.end()); - - if (system_language) { - // Is there a candidate matching a country code of a system language? Move it to the end, - // while maintaining the order of matches, so that the best match ends up at the very end. - std::string system_country = "_" + into_u8(system_language->CanonicalName.AfterFirst('_')).substr(0, 2); - int cnt = locales.size(); - for (int i = 0; i < cnt; ++i) - if (locales[i].find(system_country) != std::string::npos) { - locales.emplace_back(std::move(locales[i])); - locales[i].clear(); - } - } - - // Now try them one by one. - for (auto it = locales.rbegin(); it != locales.rend(); ++ it) - if (! it->empty()) { - const std::string &locale = *it; - const wxLanguageInfo* lang = wxLocale::FindLanguageInfo(from_u8(locale)); - if (wxLocale::IsAvailable(lang->Language)) - return lang; - } - return language; -} -#endif - -int GUI_App::GetSingleChoiceIndex(const wxString& message, - const wxString& caption, - const wxArrayString& choices, - int initialSelection) -{ -#ifdef _WIN32 - wxSingleChoiceDialog dialog(nullptr, message, caption, choices); - wxGetApp().UpdateDlgDarkUI(&dialog); - - dialog.SetSelection(initialSelection); - return dialog.ShowModal() == wxID_OK ? dialog.GetSelection() : -1; -#else - return wxGetSingleChoiceIndex(message, caption, choices, initialSelection); -#endif -} - -// select language from the list of installed languages -bool GUI_App::select_language() -{ - wxArrayString translations = wxTranslations::Get()->GetAvailableTranslations(SLIC3R_APP_KEY); - std::vector language_infos; - language_infos.emplace_back(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH)); - for (size_t i = 0; i < translations.GetCount(); ++ i) { - const wxLanguageInfo *langinfo = wxLocale::FindLanguageInfo(translations[i]); - if (langinfo != nullptr) - language_infos.emplace_back(langinfo); - } - sort_remove_duplicates(language_infos); - std::sort(language_infos.begin(), language_infos.end(), [](const wxLanguageInfo* l, const wxLanguageInfo* r) { return l->Description < r->Description; }); - - wxArrayString names; - names.Alloc(language_infos.size()); - - // Some valid language should be selected since the application start up. - const wxLanguage current_language = wxLanguage(m_wxLocale->GetLanguage()); - int init_selection = -1; - int init_selection_alt = -1; - int init_selection_default = -1; - for (size_t i = 0; i < language_infos.size(); ++ i) { - if (wxLanguage(language_infos[i]->Language) == current_language) - // The dictionary matches the active language and country. - init_selection = i; - else if ((language_infos[i]->CanonicalName.BeforeFirst('_') == m_wxLocale->GetCanonicalName().BeforeFirst('_')) || - // if the active language is Slovak, mark the Czech language as active. - (language_infos[i]->CanonicalName.BeforeFirst('_') == "cs" && m_wxLocale->GetCanonicalName().BeforeFirst('_') == "sk")) - // The dictionary matches the active language, it does not necessarily match the country. - init_selection_alt = i; - if (language_infos[i]->CanonicalName.BeforeFirst('_') == "en") - // This will be the default selection if the active language does not match any dictionary. - init_selection_default = i; - names.Add(language_infos[i]->Description); - } - if (init_selection == -1) - // This is the dictionary matching the active language. - init_selection = init_selection_alt; - if (init_selection != -1) - // This is the language to highlight in the choice dialog initially. - init_selection_default = init_selection; - - const long index = GetSingleChoiceIndex(_L("Select the language"), _L("Language"), names, init_selection_default); - // Try to load a new language. - if (index != -1 && (init_selection == -1 || init_selection != index)) { - const wxLanguageInfo *new_language_info = language_infos[index]; - if (this->load_language(new_language_info->CanonicalName, false)) { - // Save language at application config. - // Which language to save as the selected dictionary language? - // 1) Hopefully the language set to wxTranslations by this->load_language(), but that API is weird and we don't want to rely on its - // stability in the future: - // wxTranslations::Get()->GetBestTranslation(SLIC3R_APP_KEY, wxLANGUAGE_ENGLISH); - // 2) Current locale language may not match the dictionary name, see GH issue #3901 - // m_wxLocale->GetCanonicalName() - // 3) new_language_info->CanonicalName is a safe bet. It points to a valid dictionary name. - app_config->set("translation_language", new_language_info->CanonicalName.ToUTF8().data()); - app_config->save(); - return true; - } - } - - return false; -} - -// Load gettext translation files and activate them at the start of the application, -// based on the "translation_language" key stored in the application config. -bool GUI_App::load_language(wxString language, bool initial) -{ - if (initial) { - // There is a static list of lookup path prefixes in wxWidgets. Add ours. - wxFileTranslationsLoader::AddCatalogLookupPathPrefix(from_u8(localization_dir())); - // Get the active language from PrusaSlicer.ini, or empty string if the key does not exist. - language = app_config->get("translation_language"); - if (! language.empty()) - BOOST_LOG_TRIVIAL(trace) << boost::format("translation_language provided by PrusaSlicer.ini: %1%") % language; - - // Get the system language. - { - const wxLanguage lang_system = wxLanguage(wxLocale::GetSystemLanguage()); - if (lang_system != wxLANGUAGE_UNKNOWN) { - m_language_info_system = wxLocale::GetLanguageInfo(lang_system); - BOOST_LOG_TRIVIAL(trace) << boost::format("System language detected (user locales and such): %1%") % m_language_info_system->CanonicalName.ToUTF8().data(); - } - } - { - // Allocating a temporary locale will switch the default wxTranslations to its internal wxTranslations instance. - wxLocale temp_locale; -#ifdef __WXOSX__ - // ysFIXME - temporary workaround till it isn't fixed in wxWidgets: - // Use English as an initial language, because of under OSX it try to load "inappropriate" language for wxLANGUAGE_DEFAULT. - // For example in our case it's trying to load "en_CZ" and as a result PrusaSlicer catch warning message. - // But wxWidgets guys work on it. - temp_locale.Init(wxLANGUAGE_ENGLISH); -#else - temp_locale.Init(); -#endif // __WXOSX__ - // Set the current translation's language to default, otherwise GetBestTranslation() may not work (see the wxWidgets source code). - wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT); - // Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer - // and try to match them with the system specific "preferred languages". - // There seems to be a support for that on Windows and OSX, while on Linuxes the code just returns wxLocale::GetSystemLanguage(). - // The last parameter gets added to the list of detected dictionaries. This is a workaround - // for not having the English dictionary. Let's hope wxWidgets of various versions process this call the same way. - wxString best_language = wxTranslations::Get()->GetBestTranslation(SLIC3R_APP_KEY, wxLANGUAGE_ENGLISH); - if (! best_language.IsEmpty()) { - m_language_info_best = wxLocale::FindLanguageInfo(best_language); - BOOST_LOG_TRIVIAL(trace) << boost::format("Best translation language detected (may be different from user locales): %1%") % m_language_info_best->CanonicalName.ToUTF8().data(); - } - #ifdef __linux__ - wxString lc_all; - if (wxGetEnv("LC_ALL", &lc_all) && ! lc_all.IsEmpty()) { - // Best language returned by wxWidgets on Linux apparently does not respect LC_ALL. - // Disregard the "best" suggestion in case LC_ALL is provided. - m_language_info_best = nullptr; - } - #endif - } - } - - const wxLanguageInfo *language_info = language.empty() ? nullptr : wxLocale::FindLanguageInfo(language); - if (! language.empty() && (language_info == nullptr || language_info->CanonicalName.empty())) { - // Fix for wxWidgets issue, where the FindLanguageInfo() returns locales with undefined ANSII code (wxLANGUAGE_KONKANI or wxLANGUAGE_MANIPURI). - language_info = nullptr; - BOOST_LOG_TRIVIAL(error) << boost::format("Language code \"%1%\" is not supported") % language.ToUTF8().data(); - } - - if (language_info != nullptr && language_info->LayoutDirection == wxLayout_RightToLeft) { - BOOST_LOG_TRIVIAL(trace) << boost::format("The following language code requires right to left layout, which is not supported by PrusaSlicer: %1%") % language_info->CanonicalName.ToUTF8().data(); - language_info = nullptr; - } - - if (language_info == nullptr) { - // PrusaSlicer does not support the Right to Left languages yet. - if (m_language_info_system != nullptr && m_language_info_system->LayoutDirection != wxLayout_RightToLeft) - language_info = m_language_info_system; - if (m_language_info_best != nullptr && m_language_info_best->LayoutDirection != wxLayout_RightToLeft) - language_info = m_language_info_best; - if (language_info == nullptr) - language_info = wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_US); - } - - BOOST_LOG_TRIVIAL(trace) << boost::format("Switching wxLocales to %1%") % language_info->CanonicalName.ToUTF8().data(); - - // Alternate language code. - wxLanguage language_dict = wxLanguage(language_info->Language); - if (language_info->CanonicalName.BeforeFirst('_') == "sk") { - // Slovaks understand Czech well. Give them the Czech translation. - language_dict = wxLANGUAGE_CZECH; - BOOST_LOG_TRIVIAL(trace) << "Using Czech dictionaries for Slovak language"; - } - - // Select language for locales. This language may be different from the language of the dictionary. - if (language_info == m_language_info_best || language_info == m_language_info_system) { - // The current language matches user's default profile exactly. That's great. - } else if (m_language_info_best != nullptr && language_info->CanonicalName.BeforeFirst('_') == m_language_info_best->CanonicalName.BeforeFirst('_')) { - // Use whatever the operating system recommends, if it the language code of the dictionary matches the recommended language. - // This allows a Swiss guy to use a German dictionary without forcing him to German locales. - language_info = m_language_info_best; - } else if (m_language_info_system != nullptr && language_info->CanonicalName.BeforeFirst('_') == m_language_info_system->CanonicalName.BeforeFirst('_')) - language_info = m_language_info_system; - -#ifdef __linux__ - // If we can't find this locale , try to use different one for the language - // instead of just reporting that it is impossible to switch. - if (! wxLocale::IsAvailable(language_info->Language)) { - std::string original_lang = into_u8(language_info->CanonicalName); - language_info = linux_get_existing_locale_language(language_info, m_language_info_system); - BOOST_LOG_TRIVIAL(trace) << boost::format("Can't switch language to %1% (missing locales). Using %2% instead.") - % original_lang % language_info->CanonicalName.ToUTF8().data(); - } -#endif - - if (! wxLocale::IsAvailable(language_info->Language)) { - // Loading the language dictionary failed. - wxString message = "Switching PrusaSlicer to language " + language_info->CanonicalName + " failed."; -#if !defined(_WIN32) && !defined(__APPLE__) - // likely some linux system - message += "\nYou may need to reconfigure the missing locales, likely by running the \"locale-gen\" and \"dpkg-reconfigure locales\" commands.\n"; -#endif - if (initial) - message + "\n\nApplication will close."; - wxMessageBox(message, "PrusaSlicer - Switching language failed", wxOK | wxICON_ERROR); - if (initial) - std::exit(EXIT_FAILURE); - else - return false; - } - - // Release the old locales, create new locales. - //FIXME wxWidgets cause havoc if the current locale is deleted. We just forget it causing memory leaks for now. - m_wxLocale.release(); - m_wxLocale = Slic3r::make_unique(); - m_wxLocale->Init(language_info->Language); - // Override language at the active wxTranslations class (which is stored in the active m_wxLocale) - // to load possibly different dictionary, for example, load Czech dictionary for Slovak language. - wxTranslations::Get()->SetLanguage(language_dict); - m_wxLocale->AddCatalog(SLIC3R_APP_KEY); - m_imgui->set_language(into_u8(language_info->CanonicalName)); - //FIXME This is a temporary workaround, the correct solution is to switch to "C" locale during file import / export only. - //wxSetlocale(LC_NUMERIC, "C"); - Preset::update_suffix_modified((" (" + _L("modified") + ")").ToUTF8().data()); - return true; -} - -Tab* GUI_App::get_tab(Preset::Type type) -{ - for (Tab* tab: tabs_list) - if (tab->type() == type) - return tab->completed() ? tab : nullptr; // To avoid actions with no-completed Tab - return nullptr; -} - -ConfigOptionMode GUI_App::get_mode() -{ - if (!app_config->has("view_mode")) - return comSimple; - - const auto mode = app_config->get("view_mode"); - return mode == "expert" ? comExpert : - mode == "simple" ? comSimple : comAdvanced; -} - -void GUI_App::save_mode(const /*ConfigOptionMode*/int mode) -{ - const std::string mode_str = mode == comExpert ? "expert" : - mode == comSimple ? "simple" : "advanced"; - app_config->set("view_mode", mode_str); - app_config->save(); - update_mode(); -} - -// Update view mode according to selected menu -void GUI_App::update_mode() -{ - sidebar().update_mode(); - -#ifdef _WIN32 //_MSW_DARK_MODE - if (!wxGetApp().tabs_as_menu()) - dynamic_cast(mainframe->m_tabpanel)->UpdateMode(); -#endif - - for (auto tab : tabs_list) - tab->update_mode(); - - plater()->update_menus(); - plater()->canvas3D()->update_gizmos_on_off_state(); -} - -void GUI_App::add_config_menu(wxMenuBar *menu) -{ - auto local_menu = new wxMenu(); - wxWindowID config_id_base = wxWindow::NewControlId(int(ConfigMenuCnt)); - - const auto config_wizard_name = _(ConfigWizard::name(true)); - const auto config_wizard_tooltip = from_u8((boost::format(_utf8(L("Run %s"))) % config_wizard_name).str()); - // Cmd+, is standard on OS X - what about other operating systems? - if (is_editor()) { - local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip); - local_menu->Append(config_id_base + ConfigMenuSnapshots, _L("&Configuration Snapshots") + dots, _L("Inspect / activate configuration snapshots")); - local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot")); - local_menu->Append(config_id_base + ConfigMenuUpdateConf, _L("Check for Configuration Updates"), _L("Check for configuration updates")); - local_menu->Append(config_id_base + ConfigMenuUpdateApp, _L("Check for Application Updates"), _L("Check for new version of application")); -#if defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION) - //if (DesktopIntegrationDialog::integration_possible()) - local_menu->Append(config_id_base + ConfigMenuDesktopIntegration, _L("Desktop Integration"), _L("Desktop Integration")); -#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION) - local_menu->AppendSeparator(); - } - local_menu->Append(config_id_base + ConfigMenuPreferences, _L("&Preferences") + dots + -#ifdef __APPLE__ - "\tCtrl+,", -#else - "\tCtrl+P", -#endif - _L("Application preferences")); - wxMenu* mode_menu = nullptr; - if (is_editor()) { - local_menu->AppendSeparator(); - mode_menu = new wxMenu(); - mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _L("Simple"), _L("Simple View Mode")); -// mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _L("Advanced"), _L("Advanced View Mode")); - mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _CTX(L_CONTEXT("Advanced", "Mode"), "Mode"), _L("Advanced View Mode")); - mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeExpert, _L("Expert"), _L("Expert View Mode")); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comSimple) evt.Check(true); }, config_id_base + ConfigMenuModeSimple); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comAdvanced) evt.Check(true); }, config_id_base + ConfigMenuModeAdvanced); - Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comExpert) evt.Check(true); }, config_id_base + ConfigMenuModeExpert); - - local_menu->AppendSubMenu(mode_menu, _L("Mode"), wxString::Format(_L("%s View Mode"), SLIC3R_APP_NAME)); - } - local_menu->AppendSeparator(); - local_menu->Append(config_id_base + ConfigMenuLanguage, _L("&Language")); - if (is_editor()) { - local_menu->AppendSeparator(); - local_menu->Append(config_id_base + ConfigMenuFlashFirmware, _L("Flash Printer &Firmware"), _L("Upload a firmware image into an Arduino based printer")); - // TODO: for when we're able to flash dictionaries - // local_menu->Append(config_id_base + FirmwareMenuDict, _L("Flash Language File"), _L("Upload a language dictionary file into a Prusa printer")); - } - - local_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent &event) { - switch (event.GetId() - config_id_base) { - case ConfigMenuWizard: - run_wizard(ConfigWizard::RR_USER); - break; - case ConfigMenuUpdateConf: - check_updates(true); - break; - case ConfigMenuUpdateApp: - app_version_check(true); - break; -#ifdef __linux__ - case ConfigMenuDesktopIntegration: - show_desktop_integration_dialog(); - break; -#endif - case ConfigMenuTakeSnapshot: - // Take a configuration snapshot. - if (wxString action_name = _L("Taking a configuration snapshot"); - check_and_save_current_preset_changes(action_name, _L("Some presets are modified and the unsaved changes will not be captured by the configuration snapshot."), false, true)) { - wxTextEntryDialog dlg(nullptr, action_name, _L("Snapshot name")); - UpdateDlgDarkUI(&dlg); - - // set current normal font for dialog children, - // because of just dlg.SetFont(normal_font()) has no result; - for (auto child : dlg.GetChildren()) - child->SetFont(normal_font()); - - if (dlg.ShowModal() == wxID_OK) - if (const Config::Snapshot *snapshot = Config::take_config_snapshot_report_error( - *app_config, Config::Snapshot::SNAPSHOT_USER, dlg.GetValue().ToUTF8().data()); - snapshot != nullptr) - app_config->set("on_snapshot", snapshot->id); - } - break; - case ConfigMenuSnapshots: - if (check_and_save_current_preset_changes(_L("Loading a configuration snapshot"), "", false)) { - std::string on_snapshot; - if (Config::SnapshotDB::singleton().is_on_snapshot(*app_config)) - on_snapshot = app_config->get("on_snapshot"); - ConfigSnapshotDialog dlg(Slic3r::GUI::Config::SnapshotDB::singleton(), on_snapshot); - dlg.ShowModal(); - if (!dlg.snapshot_to_activate().empty()) { - if (! Config::SnapshotDB::singleton().is_on_snapshot(*app_config) && - ! Config::take_config_snapshot_cancel_on_error(*app_config, Config::Snapshot::SNAPSHOT_BEFORE_ROLLBACK, "", - GUI::format(_L("Continue to activate a configuration snapshot %1%?"), dlg.snapshot_to_activate()))) - break; - try { - app_config->set("on_snapshot", Config::SnapshotDB::singleton().restore_snapshot(dlg.snapshot_to_activate(), *app_config).id); - // Enable substitutions, log both user and system substitutions. There should not be any substitutions performed when loading system - // presets because compatibility of profiles shall be verified using the min_slic3r_version keys in config index, but users - // are known to be creative and mess with the config files in various ways. - if (PresetsConfigSubstitutions all_substitutions = preset_bundle->load_presets(*app_config, ForwardCompatibilitySubstitutionRule::Enable); - ! all_substitutions.empty()) - show_substitutions_info(all_substitutions); - - // Load the currently selected preset into the GUI, update the preset selection box. - load_current_presets(); - } catch (std::exception &ex) { - GUI::show_error(nullptr, _L("Failed to activate configuration snapshot.") + "\n" + into_u8(ex.what())); - } - } - } - break; - case ConfigMenuPreferences: - { - open_preferences(); - break; - } - case ConfigMenuLanguage: - { - /* Before change application language, let's check unsaved changes on 3D-Scene - * and draw user's attention to the application restarting after a language change - */ - { - // the dialog needs to be destroyed before the call to switch_language() - // or sometimes the application crashes into wxDialogBase() destructor - // so we put it into an inner scope - wxString title = is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME); - title += " - " + _L("Language selection"); - //wxMessageDialog dialog(nullptr, - MessageDialog dialog(nullptr, - _L("Switching the language will trigger application restart.\n" - "You will lose content of the plater.") + "\n\n" + - _L("Do you want to proceed?"), - title, - wxICON_QUESTION | wxOK | wxCANCEL); - if (dialog.ShowModal() == wxID_CANCEL) - return; - } - - switch_language(); - break; - } - case ConfigMenuFlashFirmware: - FirmwareDialog::run(mainframe); - break; - default: - break; - } - }); - - using std::placeholders::_1; - - if (mode_menu != nullptr) { - auto modfn = [this](int mode, wxCommandEvent&) { if (get_mode() != mode) save_mode(mode); }; - mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comSimple, _1), config_id_base + ConfigMenuModeSimple); - mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comAdvanced, _1), config_id_base + ConfigMenuModeAdvanced); - mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comExpert, _1), config_id_base + ConfigMenuModeExpert); - } - - menu->Append(local_menu, _L("&Configuration")); -} - -void GUI_App::open_preferences(const std::string& highlight_option /*= std::string()*/, const std::string& tab_name/*= std::string()*/) -{ - mainframe->preferences_dialog->show(highlight_option, tab_name); - - if (mainframe->preferences_dialog->recreate_GUI()) - recreate_GUI(_L("Restart application") + dots); - -#if ENABLE_GCODE_LINES_ID_IN_H_SLIDER - if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) -#else - if (mainframe->preferences_dialog->seq_top_layer_only_changed()) -#endif // ENABLE_GCODE_LINES_ID_IN_H_SLIDER - this->plater_->refresh_print(); - -#ifdef _WIN32 - if (is_editor()) { - if (app_config->get("associate_3mf") == "1") - associate_3mf_files(); - if (app_config->get("associate_stl") == "1") - associate_stl_files(); - } - else { - if (app_config->get("associate_gcode") == "1") - associate_gcode_files(); - } -#endif // _WIN32 - - if (mainframe->preferences_dialog->settings_layout_changed()) { - // hide full main_sizer for mainFrame - mainframe->GetSizer()->Show(false); - mainframe->update_layout(); - mainframe->select_tab(size_t(0)); - } -} - -bool GUI_App::has_unsaved_preset_changes() const -{ - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (const Tab* const tab : tabs_list) { - if (tab->supports_printer_technology(printer_technology) && tab->saved_preset_is_dirty()) - return true; - } - return false; -} - -bool GUI_App::has_current_preset_changes() const -{ - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (const Tab* const tab : tabs_list) { - if (tab->supports_printer_technology(printer_technology) && tab->current_preset_is_dirty()) - return true; - } - return false; -} - -void GUI_App::update_saved_preset_from_current_preset() -{ - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (Tab* tab : tabs_list) { - if (tab->supports_printer_technology(printer_technology)) - tab->update_saved_preset_from_current_preset(); - } -} - -std::vector GUI_App::get_active_preset_collections() const -{ - std::vector ret; - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (const Tab* tab : tabs_list) - if (tab->supports_printer_technology(printer_technology)) - ret.push_back(tab->get_presets()); - return ret; -} - -// To notify the user whether he is aware that some preset changes will be lost, -// UnsavedChangesDialog: "Discard / Save / Cancel" -// This is called when: -// - Close Application & Current project isn't saved -// - Load Project & Current project isn't saved -// - Undo / Redo with change of print technologie -// - Loading snapshot -// - Loading config_file/bundle -// UnsavedChangesDialog: "Don't save / Save / Cancel" -// This is called when: -// - Exporting config_bundle -// - Taking snapshot -bool GUI_App::check_and_save_current_preset_changes(const wxString& caption, const wxString& header, bool remember_choice/* = true*/, bool dont_save_insted_of_discard/* = false*/) -{ - if (has_current_preset_changes()) { - const std::string app_config_key = remember_choice ? "default_action_on_close_application" : ""; - int act_buttons = UnsavedChangesDialog::ActionButtons::SAVE; - if (dont_save_insted_of_discard) - act_buttons |= UnsavedChangesDialog::ActionButtons::DONT_SAVE; - UnsavedChangesDialog dlg(caption, header, app_config_key, act_buttons); - std::string act = app_config_key.empty() ? "none" : wxGetApp().app_config->get(app_config_key); - if (act == "none" && dlg.ShowModal() == wxID_CANCEL) - return false; - - if (dlg.save_preset()) // save selected changes - { - for (const std::pair& nt : dlg.get_names_and_types()) - preset_bundle->save_changes_for_preset(nt.first, nt.second, dlg.get_unselected_options(nt.second)); - - load_current_presets(false); - - // if we saved changes to the new presets, we should to - // synchronize config.ini with the current selections. - preset_bundle->export_selections(*app_config); - - MessageDialog(nullptr, _L_PLURAL("The preset modifications are successfully saved", - "The presets modifications are successfully saved", dlg.get_names_and_types().size())).ShowModal(); - } - } - - return true; -} - -void GUI_App::apply_keeped_preset_modifications() -{ - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (Tab* tab : tabs_list) { - if (tab->supports_printer_technology(printer_technology)) - tab->apply_config_from_cache(); - } - load_current_presets(false); -} - -// This is called when creating new project or load another project -// OR close ConfigWizard -// to ask the user what should we do with unsaved changes for presets. -// New Project => Current project is saved => UnsavedChangesDialog: "Keep / Discard / Cancel" -// => Current project isn't saved => UnsavedChangesDialog: "Keep / Discard / Save / Cancel" -// Close ConfigWizard => Current project is saved => UnsavedChangesDialog: "Keep / Discard / Save / Cancel" -// Note: no_nullptr postponed_apply_of_keeped_changes indicates that thie function is called after ConfigWizard is closed -bool GUI_App::check_and_keep_current_preset_changes(const wxString& caption, const wxString& header, int action_buttons, bool* postponed_apply_of_keeped_changes/* = nullptr*/) -{ - if (has_current_preset_changes()) { - bool is_called_from_configwizard = postponed_apply_of_keeped_changes != nullptr; - - const std::string app_config_key = is_called_from_configwizard ? "" : "default_action_on_new_project"; - UnsavedChangesDialog dlg(caption, header, app_config_key, action_buttons); - std::string act = app_config_key.empty() ? "none" : wxGetApp().app_config->get(app_config_key); - if (act == "none" && dlg.ShowModal() == wxID_CANCEL) - return false; - - auto reset_modifications = [this, is_called_from_configwizard]() { - if (is_called_from_configwizard) - return; // no need to discared changes. It will be done fromConfigWizard closing - - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - for (const Tab* const tab : tabs_list) { - if (tab->supports_printer_technology(printer_technology) && tab->current_preset_is_dirty()) - tab->m_presets->discard_current_changes(); - } - load_current_presets(false); - }; - - if (dlg.discard()) - reset_modifications(); - else // save selected changes - { - const auto& preset_names_and_types = dlg.get_names_and_types(); - if (dlg.save_preset()) { - for (const std::pair& nt : preset_names_and_types) - preset_bundle->save_changes_for_preset(nt.first, nt.second, dlg.get_unselected_options(nt.second)); - - // if we saved changes to the new presets, we should to - // synchronize config.ini with the current selections. - preset_bundle->export_selections(*app_config); - - wxString text = _L_PLURAL("The preset modifications are successfully saved", - "The presets modifications are successfully saved", preset_names_and_types.size()); - if (!is_called_from_configwizard) - text += "\n\n" + _L("For new project all modifications will be reseted"); - - MessageDialog(nullptr, text).ShowModal(); - reset_modifications(); - } - else if (dlg.transfer_changes() && (dlg.has_unselected_options() || is_called_from_configwizard)) { - // execute this part of code only if not all modifications are keeping to the new project - // OR this function is called when ConfigWizard is closed and "Keep modifications" is selected - for (const std::pair& nt : preset_names_and_types) { - Preset::Type type = nt.second; - Tab* tab = get_tab(type); - std::vector selected_options = dlg.get_selected_options(type); - if (type == Preset::TYPE_PRINTER) { - auto it = std::find(selected_options.begin(), selected_options.end(), "extruders_count"); - if (it != selected_options.end()) { - // erase "extruders_count" option from the list - selected_options.erase(it); - // cache the extruders count - static_cast(tab)->cache_extruder_cnt(); - } - } - tab->cache_config_diff(selected_options); - if (!is_called_from_configwizard) - tab->m_presets->discard_current_changes(); - } - if (is_called_from_configwizard) - *postponed_apply_of_keeped_changes = true; - else - apply_keeped_preset_modifications(); - } - } - } - - return true; -} - -bool GUI_App::can_load_project() -{ - int saved_project = plater()->save_project_if_dirty(_L("Loading a new project while the current project is modified.")); - if (saved_project == wxID_CANCEL || - (plater()->is_project_dirty() && saved_project == wxID_NO && - !check_and_save_current_preset_changes(_L("Project is loading"), _L("Opening new project while some presets are unsaved.")))) - return false; - return true; -} - -bool GUI_App::check_print_host_queue() -{ - wxString dirty; - std::vector> jobs; - // Get ongoing jobs from dialog - mainframe->m_printhost_queue_dlg->get_active_jobs(jobs); - if (jobs.empty()) - return true; - // Show dialog - wxString job_string = wxString(); - for (const auto& job : jobs) { - job_string += format_wxstr(" %1% : %2% \n", job.first, job.second); - } - wxString message; - message += _(L("The uploads are still ongoing")) + ":\n\n" + job_string +"\n" + _(L("Stop them and continue anyway?")); - //wxMessageDialog dialog(mainframe, - MessageDialog dialog(mainframe, - message, - wxString(SLIC3R_APP_NAME) + " - " + _(L("Ongoing uploads")), - wxICON_QUESTION | wxYES_NO | wxNO_DEFAULT); - if (dialog.ShowModal() == wxID_YES) - return true; - - // TODO: If already shown, bring forward - mainframe->m_printhost_queue_dlg->Show(); - return false; -} - -bool GUI_App::checked_tab(Tab* tab) -{ - bool ret = true; - if (find(tabs_list.begin(), tabs_list.end(), tab) == tabs_list.end()) - ret = false; - return ret; -} - -// Update UI / Tabs to reflect changes in the currently loaded presets -void GUI_App::load_current_presets(bool check_printer_presets_ /*= true*/) -{ - // check printer_presets for the containing information about "Print Host upload" - // and create physical printer from it, if any exists - if (check_printer_presets_) - check_printer_presets(); - - PrinterTechnology printer_technology = preset_bundle->printers.get_edited_preset().printer_technology(); - this->plater()->set_printer_technology(printer_technology); - for (Tab *tab : tabs_list) - if (tab->supports_printer_technology(printer_technology)) { - if (tab->type() == Preset::TYPE_PRINTER) { - static_cast(tab)->update_pages(); - // Mark the plater to update print bed by tab->load_current_preset() from Plater::on_config_change(). - this->plater()->force_print_bed_update(); - } - tab->load_current_preset(); - } -} - -bool GUI_App::OnExceptionInMainLoop() -{ - generic_exception_handle(); - return false; -} - -#ifdef __APPLE__ -// This callback is called from wxEntry()->wxApp::CallOnInit()->NSApplication run -// that is, before GUI_App::OnInit(), so we have a chance to switch GUI_App -// to a G-code viewer. -void GUI_App::OSXStoreOpenFiles(const wxArrayString &fileNames) -{ - size_t num_gcodes = 0; - for (const wxString &filename : fileNames) - if (is_gcode_file(into_u8(filename))) - ++ num_gcodes; - if (fileNames.size() == num_gcodes) { - // Opening PrusaSlicer by drag & dropping a G-Code onto PrusaSlicer icon in Finder, - // just G-codes were passed. Switch to G-code viewer mode. - m_app_mode = EAppMode::GCodeViewer; - unlock_lockfile(get_instance_hash_string() + ".lock", data_dir() + "/cache/"); - if(app_config != nullptr) - delete app_config; - app_config = nullptr; - init_app_config(); - } - wxApp::OSXStoreOpenFiles(fileNames); -} -// wxWidgets override to get an event on open files. -void GUI_App::MacOpenFiles(const wxArrayString &fileNames) -{ - std::vector files; - std::vector gcode_files; - std::vector non_gcode_files; - for (const auto& filename : fileNames) { - if (is_gcode_file(into_u8(filename))) - gcode_files.emplace_back(filename); - else { - files.emplace_back(into_u8(filename)); - non_gcode_files.emplace_back(filename); - } - } - if (m_app_mode == EAppMode::GCodeViewer) { - // Running in G-code viewer. - // Load the first G-code into the G-code viewer. - // Or if no G-codes, send other files to slicer. - if (! gcode_files.empty()) { - if (m_post_initialized) - this->plater()->load_gcode(gcode_files.front()); - else - this->init_params->input_files = { into_u8(gcode_files.front()) }; - } - if (!non_gcode_files.empty()) - start_new_slicer(non_gcode_files, true); - } else { - if (! files.empty()) { - if (m_post_initialized) { - wxArrayString input_files; - for (size_t i = 0; i < non_gcode_files.size(); ++i) - input_files.push_back(non_gcode_files[i]); - this->plater()->load_files(input_files); - } else { - for (const auto &f : non_gcode_files) - this->init_params->input_files.emplace_back(into_u8(f)); - } - } - for (const wxString &filename : gcode_files) - start_new_gcodeviewer(&filename); - } -} -#endif /* __APPLE */ - -Sidebar& GUI_App::sidebar() -{ - return plater_->sidebar(); -} - -ObjectManipulation* GUI_App::obj_manipul() -{ - // If this method is called before plater_ has been initialized, return nullptr (to avoid a crash) - return (plater_ != nullptr) ? sidebar().obj_manipul() : nullptr; -} - -ObjectSettings* GUI_App::obj_settings() -{ - return sidebar().obj_settings(); -} - -ObjectList* GUI_App::obj_list() -{ - return sidebar().obj_list(); -} - -ObjectLayers* GUI_App::obj_layers() -{ - return sidebar().obj_layers(); -} - -Plater* GUI_App::plater() -{ - return plater_; -} - -const Plater* GUI_App::plater() const -{ - return plater_; -} - -Model& GUI_App::model() -{ - return plater_->model(); -} -wxBookCtrlBase* GUI_App::tab_panel() const -{ - return mainframe->m_tabpanel; -} - -NotificationManager * GUI_App::notification_manager() -{ - return plater_->get_notification_manager(); -} - -// extruders count from selected printer preset -int GUI_App::extruders_cnt() const -{ - const Preset& preset = preset_bundle->printers.get_selected_preset(); - return preset.printer_technology() == ptSLA ? 1 : - preset.config.option("nozzle_diameter")->values.size(); -} - -// extruders count from edited printer preset -int GUI_App::extruders_edited_cnt() const -{ - const Preset& preset = preset_bundle->printers.get_edited_preset(); - return preset.printer_technology() == ptSLA ? 1 : - preset.config.option("nozzle_diameter")->values.size(); -} - -wxString GUI_App::current_language_code_safe() const -{ - // Translate the language code to a code, for which Prusa Research maintains translations. - const std::map mapping { - { "cs", "cs_CZ", }, - { "sk", "cs_CZ", }, - { "de", "de_DE", }, - { "es", "es_ES", }, - { "fr", "fr_FR", }, - { "it", "it_IT", }, - { "ja", "ja_JP", }, - { "ko", "ko_KR", }, - { "pl", "pl_PL", }, - { "uk", "uk_UA", }, - { "zh", "zh_CN", }, - { "ru", "ru_RU", }, - }; - wxString language_code = this->current_language_code().BeforeFirst('_'); - auto it = mapping.find(language_code); - if (it != mapping.end()) - language_code = it->second; - else - language_code = "en_US"; - return language_code; -} - -void GUI_App::open_web_page_localized(const std::string &http_address) -{ - open_browser_with_warning_dialog(http_address + "&lng=" + this->current_language_code_safe(), nullptr, false); -} - -// If we are switching from the FFF-preset to the SLA, we should to control the printed objects if they have a part(s). -// Because of we can't to print the multi-part objects with SLA technology. -bool GUI_App::may_switch_to_SLA_preset(const wxString& caption) -{ - if (model_has_multi_part_objects(model())) { - show_info(nullptr, - _L("It's impossible to print multi-part object(s) with SLA technology.") + "\n\n" + - _L("Please check your object list before preset changing."), - caption); - return false; - } - return true; -} - -bool GUI_App::run_wizard(ConfigWizard::RunReason reason, ConfigWizard::StartPage start_page) -{ - wxCHECK_MSG(mainframe != nullptr, false, "Internal error: Main frame not created / null"); - - if (reason == ConfigWizard::RR_USER) { - if (preset_updater->config_update(app_config->orig_version(), PresetUpdater::UpdateParams::FORCED_BEFORE_WIZARD) == PresetUpdater::R_ALL_CANCELED) - return false; - } - - auto wizard = new ConfigWizard(mainframe); - const bool res = wizard->run(reason, start_page); - - if (res) { - load_current_presets(); - - // #ysFIXME - delete after testing: This part of code looks redundant. All checks are inside ConfigWizard::priv::apply_config() - if (preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA) - may_switch_to_SLA_preset(_L("Configuration is editing from ConfigWizard")); - } - - return res; -} - -void GUI_App::show_desktop_integration_dialog() -{ -#ifdef __linux__ - //wxCHECK_MSG(mainframe != nullptr, false, "Internal error: Main frame not created / null"); - DesktopIntegrationDialog dialog(mainframe); - dialog.ShowModal(); -#endif //__linux__ -} - -#if ENABLE_THUMBNAIL_GENERATOR_DEBUG -void GUI_App::gcode_thumbnails_debug() -{ - const std::string BEGIN_MASK = "; thumbnail begin"; - const std::string END_MASK = "; thumbnail end"; - std::string gcode_line; - bool reading_image = false; - unsigned int width = 0; - unsigned int height = 0; - - wxFileDialog dialog(GetTopWindow(), _L("Select a gcode file:"), "", "", "G-code files (*.gcode)|*.gcode;*.GCODE;", wxFD_OPEN | wxFD_FILE_MUST_EXIST); - if (dialog.ShowModal() != wxID_OK) - return; - - std::string in_filename = into_u8(dialog.GetPath()); - std::string out_path = boost::filesystem::path(in_filename).remove_filename().append(L"thumbnail").string(); - - boost::nowide::ifstream in_file(in_filename.c_str()); - std::vector rows; - std::string row; - if (in_file.good()) - { - while (std::getline(in_file, gcode_line)) - { - if (in_file.good()) - { - if (boost::starts_with(gcode_line, BEGIN_MASK)) - { - reading_image = true; - gcode_line = gcode_line.substr(BEGIN_MASK.length() + 1); - std::string::size_type x_pos = gcode_line.find('x'); - std::string width_str = gcode_line.substr(0, x_pos); - width = (unsigned int)::atoi(width_str.c_str()); - std::string height_str = gcode_line.substr(x_pos + 1); - height = (unsigned int)::atoi(height_str.c_str()); - row.clear(); - } - else if (reading_image && boost::starts_with(gcode_line, END_MASK)) - { - std::string out_filename = out_path + std::to_string(width) + "x" + std::to_string(height) + ".png"; - boost::nowide::ofstream out_file(out_filename.c_str(), std::ios::binary); - if (out_file.good()) - { - std::string decoded; - decoded.resize(boost::beast::detail::base64::decoded_size(row.size())); - decoded.resize(boost::beast::detail::base64::decode((void*)&decoded[0], row.data(), row.size()).first); - - out_file.write(decoded.c_str(), decoded.size()); - out_file.close(); - } - - reading_image = false; - width = 0; - height = 0; - rows.clear(); - } - else if (reading_image) - row += gcode_line.substr(2); - } - } - - in_file.close(); - } -} -#endif // ENABLE_THUMBNAIL_GENERATOR_DEBUG - -void GUI_App::window_pos_save(wxTopLevelWindow* window, const std::string &name) -{ - if (name.empty()) { return; } - const auto config_key = (boost::format("window_%1%") % name).str(); - - WindowMetrics metrics = WindowMetrics::from_window(window); - app_config->set(config_key, metrics.serialize()); - app_config->save(); -} - -void GUI_App::window_pos_restore(wxTopLevelWindow* window, const std::string &name, bool default_maximized) -{ - if (name.empty()) { return; } - const auto config_key = (boost::format("window_%1%") % name).str(); - - if (! app_config->has(config_key)) { - window->Maximize(default_maximized); - return; - } - - auto metrics = WindowMetrics::deserialize(app_config->get(config_key)); - if (! metrics) { - window->Maximize(default_maximized); - return; - } - - const wxRect& rect = metrics->get_rect(); - - if (app_config->get("restore_win_position") == "1") { - // workaround for crash related to the positioning of the window on secondary monitor - app_config->set("restore_win_position", (boost::format("crashed_at_%1%_pos") % name).str()); - app_config->save(); - window->SetPosition(rect.GetPosition()); - - // workaround for crash related to the positioning of the window on secondary monitor - app_config->set("restore_win_position", (boost::format("crashed_at_%1%_size") % name).str()); - app_config->save(); - window->SetSize(rect.GetSize()); - - // revert "restore_win_position" value if application wasn't crashed - app_config->set("restore_win_position", "1"); - app_config->save(); - } - else - window->CenterOnScreen(); - - window->Maximize(metrics->get_maximized()); -} - -void GUI_App::window_pos_sanitize(wxTopLevelWindow* window) -{ - /*unsigned*/int display_idx = wxDisplay::GetFromWindow(window); - wxRect display; - if (display_idx == wxNOT_FOUND) { - display = wxDisplay(0u).GetClientArea(); - window->Move(display.GetTopLeft()); - } else { - display = wxDisplay(display_idx).GetClientArea(); - } - - auto metrics = WindowMetrics::from_window(window); - metrics.sanitize_for_display(display); - if (window->GetScreenRect() != metrics.get_rect()) { - window->SetSize(metrics.get_rect()); - } -} - -bool GUI_App::config_wizard_startup() -{ - if (!m_app_conf_exists || preset_bundle->printers.only_default_printers()) { - run_wizard(ConfigWizard::RR_DATA_EMPTY); - return true; - } else if (get_app_config()->legacy_datadir()) { - // Looks like user has legacy pre-vendorbundle data directory, - // explain what this is and run the wizard - - MsgDataLegacy dlg; - dlg.ShowModal(); - - run_wizard(ConfigWizard::RR_DATA_LEGACY); - return true; - } - return false; -} - -bool GUI_App::check_updates(const bool verbose) -{ - PresetUpdater::UpdateResult updater_result; - try { - updater_result = preset_updater->config_update(app_config->orig_version(), verbose ? PresetUpdater::UpdateParams::SHOW_TEXT_BOX : PresetUpdater::UpdateParams::SHOW_NOTIFICATION); - if (updater_result == PresetUpdater::R_INCOMPAT_EXIT) { - mainframe->Close(); - // Applicaiton is closing. - return false; - } - else if (updater_result == PresetUpdater::R_INCOMPAT_CONFIGURED) { - m_app_conf_exists = true; - } - else if (verbose && updater_result == PresetUpdater::R_NOOP) { - MsgNoUpdates dlg; - dlg.ShowModal(); - } - } - catch (const std::exception & ex) { - show_error(nullptr, ex.what()); - } - // Applicaiton will continue. - return true; -} - -bool GUI_App::open_browser_with_warning_dialog(const wxString& url, wxWindow* parent/* = nullptr*/, bool force_remember_choice /*= true*/, int flags/* = 0*/) -{ - bool launch = true; - - // warning dialog containes a "Remember my choice" checkbox - std::string option_key = "suppress_hyperlinks"; - if (force_remember_choice || app_config->get(option_key).empty()) { - if (app_config->get(option_key).empty()) { - RichMessageDialog dialog(parent, _L("Open hyperlink in default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO); - dialog.ShowCheckBox(_L("Remember my choice")); - auto answer = dialog.ShowModal(); - launch = answer == wxID_YES; - if (dialog.IsCheckBoxChecked()) { - wxString preferences_item = _L("Suppress to open hyperlink in browser"); - wxString msg = - _L("PrusaSlicer will remember your choice.") + "\n\n" + - _L("You will not be asked about it again on hyperlinks hovering.") + "\n\n" + - format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choice."), preferences_item); - - MessageDialog msg_dlg(parent, msg, _L("PrusaSlicer: Don't ask me again"), wxOK | wxCANCEL | wxICON_INFORMATION); - if (msg_dlg.ShowModal() == wxID_CANCEL) - return false; - app_config->set(option_key, answer == wxID_NO ? "1" : "0"); - } - } - if (launch) - launch = app_config->get(option_key) != "1"; - } - // warning dialog doesn't containe a "Remember my choice" checkbox - // and will be shown only when "Suppress to open hyperlink in browser" is ON. - else if (app_config->get(option_key) == "1") { - MessageDialog dialog(parent, _L("Open hyperlink in default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO); - launch = dialog.ShowModal() == wxID_YES; - } - - return launch && wxLaunchDefaultBrowser(url, flags); -} - -// static method accepting a wxWindow object as first parameter -// void warning_catcher{ -// my($self, $message_dialog) = @_; -// return sub{ -// my $message = shift; -// return if $message = ~/ GLUquadricObjPtr | Attempt to free unreferenced scalar / ; -// my @params = ($message, 'Warning', wxOK | wxICON_WARNING); -// $message_dialog -// ? $message_dialog->(@params) -// : Wx::MessageDialog->new($self, @params)->ShowModal; -// }; -// } - -// Do we need this function??? -// void GUI_App::notify(message) { -// auto frame = GetTopWindow(); -// // try harder to attract user attention on OS X -// if (!frame->IsActive()) -// frame->RequestUserAttention(defined(__WXOSX__/*&Wx::wxMAC */)? wxUSER_ATTENTION_ERROR : wxUSER_ATTENTION_INFO); -// -// // There used to be notifier using a Growl application for OSX, but Growl is dead. -// // The notifier also supported the Linux X D - bus notifications, but that support was broken. -// //TODO use wxNotificationMessage ? -// } - - -#ifdef __WXMSW__ -void GUI_App::associate_3mf_files() -{ - associate_file_type(L".3mf", L"Prusa.Slicer.1", L"PrusaSlicer", true); -} - -void GUI_App::associate_stl_files() -{ - associate_file_type(L".stl", L"Prusa.Slicer.1", L"PrusaSlicer", true); -} - -void GUI_App::associate_gcode_files() -{ - associate_file_type(L".gcode", L"PrusaSlicer.GCodeViewer.1", L"PrusaSlicerGCodeViewer", true); -} -#endif // __WXMSW__ - -void GUI_App::on_version_read(wxCommandEvent& evt) -{ - app_config->set("version_online", into_u8(evt.GetString())); - app_config->save(); - std::string opt = app_config->get("notify_release"); - if (this->plater_ == nullptr || (opt != "all" && opt != "release")) { - return; - } - if (*Semver::parse(SLIC3R_VERSION) >= *Semver::parse(into_u8(evt.GetString()))) { - return; - } - // notification - /* - this->plater_->get_notification_manager()->push_notification(NotificationType::NewAppAvailable - , NotificationManager::NotificationLevel::ImportantNotificationLevel - , Slic3r::format(_u8L("New release version %1% is available."), evt.GetString()) - , _u8L("See Download page.") - , [](wxEvtHandler* evnthndlr) {wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); return true; } - ); - */ - // updater - // read triggered_by_user that was set when calling GUI_App::app_version_check - app_updater(m_app_updater->get_triggered_by_user()); -} - -void GUI_App::app_updater(bool from_user) -{ - DownloadAppData app_data = m_app_updater->get_app_data(); - - if (from_user && (!app_data.version || *app_data.version <= *Semver::parse(SLIC3R_VERSION))) - { - BOOST_LOG_TRIVIAL(info) << "There is no newer version online."; - MsgNoAppUpdates no_update_dialog; - no_update_dialog.ShowModal(); - return; - - } - - assert(!app_data.url.empty()); - assert(!app_data.target_path.empty()); - - // dialog with new version info - AppUpdateAvailableDialog dialog(*Semver::parse(SLIC3R_VERSION), *app_data.version); - auto dialog_result = dialog.ShowModal(); - // checkbox "do not show again" - if (dialog.disable_version_check()) { - app_config->set("notify_release", "none"); - } - // Doesn't wish to update - if (dialog_result != wxID_OK) { - return; - } - // dialog with new version download (installer or app dependent on system) including path selection - AppUpdateDownloadDialog dwnld_dlg(*app_data.version, app_data.target_path); - dialog_result = dwnld_dlg.ShowModal(); - // Doesn't wish to download - if (dialog_result != wxID_OK) { - return; - } - app_data.target_path =dwnld_dlg.get_download_path(); - - // start download - this->plater_->get_notification_manager()->push_download_progress_notification(_utf8("Download"), std::bind(&AppUpdater::cancel_callback, this->m_app_updater.get())); - app_data.start_after = dwnld_dlg.run_after_download(); - m_app_updater->set_app_data(std::move(app_data)); - m_app_updater->sync_download(); -} - -void GUI_App::app_version_check(bool from_user) -{ - if (from_user) { - if (m_app_updater->get_download_ongoing()) { - MessageDialog msgdlg(nullptr, _L("Download of new version is already ongoing. Do you wish to continue?"), _L("Notice"), wxYES_NO); - if (msgdlg.ShowModal() != wxID_YES) - return; - } - } - std::string version_check_url = app_config->version_check_url(); - m_app_updater->sync_version(version_check_url, from_user); -} - -} // GUI -} //Slic3r -======= #include "libslic3r/Technologies.hpp" #include "GUI_App.hpp" #include "GUI_Init.hpp" @@ -3275,6 +13,7 @@ void GUI_App::app_version_check(bool from_user) #include #include #include +#include #include #include #include @@ -3306,6 +45,7 @@ void GUI_App::app_version_check(bool from_user) #include "libslic3r/Model.hpp" #include "libslic3r/I18N.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/Color.hpp" #include "GUI.hpp" #include "GUI_Utils.hpp" @@ -3318,6 +58,8 @@ void GUI_App::app_version_check(bool from_user) #include "../Utils/PrintHost.hpp" #include "../Utils/Process.hpp" #include "../Utils/MacDarkMode.hpp" +#include "../Utils/AppUpdater.hpp" +#include "../Utils/WinRegistry.hpp" #include "slic3r/Config/Snapshot.hpp" #include "ConfigSnapshotDialog.hpp" #include "FirmwareDialog.hpp" @@ -3383,13 +125,16 @@ public: int init_dpi = get_dpi_for_window(this); this->SetPosition(pos); + // The size of the SplashScreen can be hanged after its moving to another display + // So, update it from a bitmap size + this->SetClientSize(bitmap.GetWidth(), bitmap.GetHeight()); this->CenterOnScreen(); int new_dpi = get_dpi_for_window(this); - m_scale = (float)(new_dpi) / (float)(init_dpi); +// m_scale = (float)(new_dpi) / (float)(init_dpi); m_main_bitmap = bitmap; - scale_bitmap(m_main_bitmap, m_scale); +// scale_bitmap(m_main_bitmap, m_scale); // init constant texts and scale fonts init_constant_text(); @@ -3524,12 +269,12 @@ private: version = _L("Version") + " " + std::string(SLIC3R_VERSION); // credits infornation - credits = title + " " + - _L("is based on Slic3r by Alessandro Ranellucci and the RepRap community.") + "\n" + - _L("Developed by Prusa Research.")+ "\n\n" + - title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + ".\n\n" + - _L("Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others.") + "\n\n" + - _L("Artwork model by Leslie Ing") + "." ; + credits = title + " " + + _L("is based on Slic3r by Alessandro Ranellucci and the RepRap community.") + "\n" + + _L("Developed by Prusa Research.") + "\n\n" + + title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + ".\n\n" + + _L("Contributions by Vojtech Bubnik, Enrico Turri, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others.") + "\n\n" + + _L("Artwork model by Leslie Ing"); title_font = version_font = credits_font = init_font; } @@ -3589,7 +334,7 @@ private: // See https://github.com/wxWidgets/wxWidgets/blob/master/src/msw/font.cpp // void wxNativeFontInfo::SetFractionalPointSize(float pointSizeNew) wxNativeFontInfo nfi= *font.GetNativeFontInfo(); - float pointSizeNew = scale * font.GetPointSize(); + float pointSizeNew = wxDisplay(this).GetScaleFactor() * scale * font.GetPointSize(); nfi.lf.lfHeight = nfi.GetLogFontHeightAtPPI(pointSizeNew, get_dpi_for_window(this)); nfi.pointSize = pointSizeNew; font = wxFont(nfi); @@ -3691,60 +436,34 @@ bool static check_old_linux_datadir(const wxString& app_name) { } #endif - #ifdef _WIN32 +#if 0 // External Updater is replaced with AppUpdater.cpp static bool run_updater_win() { // find updater exe boost::filesystem::path path_updater = boost::dll::program_location().parent_path() / "prusaslicer-updater.exe"; - if (boost::filesystem::exists(path_updater)) { - // run updater. Original args: /silent -restartapp prusa-slicer.exe -startappfirst - - // Using quoted string as mentioned in CreateProcessW docs, silent execution parameter. - std::wstring wcmd = L"\"" + path_updater.wstring() + L"\" /silent"; - - // additional information - STARTUPINFOW si; - PROCESS_INFORMATION pi; - - // set the size of the structures - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - - // start the program up - if (CreateProcessW(NULL, // the path - wcmd.data(), // Command line - NULL, // Process handle not inheritable - NULL, // Thread handle not inheritable - FALSE, // Set handle inheritance to FALSE - 0, // No creation flags - NULL, // Use parent's environment block - NULL, // Use parent's starting directory - &si, // Pointer to STARTUPINFO structure - &pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses) - )) { - // Close process and thread handles. - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - return true; - } else { - BOOST_LOG_TRIVIAL(error) << "Failed to start prusaslicer-updater.exe with command " << wcmd; - } - } - return false; + // run updater. Original args: /silent -restartapp prusa-slicer.exe -startappfirst + std::string msg; + bool res = create_process(path_updater, L"/silent", msg); + if (!res) + BOOST_LOG_TRIVIAL(error) << msg; + return res; } -#endif //_WIN32 +#endif // 0 +#endif // _WIN32 struct FileWildcards { std::string_view title; std::vector file_extensions; }; + + static const FileWildcards file_wildcards_by_type[FT_SIZE] = { /* FT_STL */ { "STL files"sv, { ".stl"sv } }, /* FT_OBJ */ { "OBJ files"sv, { ".obj"sv } }, - /* FT_STEP */ { "STEP files"sv, { ".stp"sv, ".step"sv } }, + /* FT_OBJECT */ { "Object files"sv, { ".stl"sv, ".obj"sv } }, + /* FT_STEP */ { "STEP files"sv, { ".stp"sv, ".step"sv } }, /* FT_AMF */ { "AMF files"sv, { ".amf"sv, ".zip.amf"sv, ".xml"sv } }, /* FT_3MF */ { "3MF files"sv, { ".3mf"sv } }, /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".gco"sv, ".g"sv, ".ngc"sv } }, @@ -3757,9 +476,47 @@ static const FileWildcards file_wildcards_by_type[FT_SIZE] = { /* FT_TEX */ { "Texture"sv, { ".png"sv, ".svg"sv } }, - /* FT_SL1 */ { "Masked SLA files"sv, { ".sl1"sv, ".sl1s"sv } }, + /* FT_SL1 */ { "Masked SLA files"sv, { ".sl1"sv, ".sl1s"sv, ".pwmx"sv } }, }; +#if ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR +wxString file_wildcards(FileType file_type) +{ + const FileWildcards& data = file_wildcards_by_type[file_type]; + std::string title; + std::string mask; + + // Generate cumulative first item + for (const std::string_view& ext : data.file_extensions) { + if (title.empty()) { + title = "*"; + title += ext; + mask = title; + } + else { + title += ", *"; + title += ext; + mask += ";*"; + mask += ext; + } + mask += ";*"; + mask += boost::to_upper_copy(std::string(ext)); + } + + wxString ret = GUI::format_wxstr("%s (%s)|%s", data.title, title, mask); + + // Adds an item for each of the extensions + if (data.file_extensions.size() > 1) { + for (const std::string_view& ext : data.file_extensions) { + title = "*"; + title += ext; + ret += GUI::format_wxstr("|%s (%s)|%s", data.title, title, title); + } + } + + return ret; +} +#else // This function produces a Win32 file dialog file template mask to be consumed by wxWidgets on all platforms. // The function accepts a custom extension parameter. If the parameter is provided, the custom extension // will be added as a fist to the list. This is important for a "file save" dialog on OSX, which strips @@ -3812,8 +569,10 @@ wxString file_wildcards(FileType file_type, const std::string &custom_extension) mask += ";*"; mask += boost::to_upper_copy(std::string(ext)); } + return GUI::format_wxstr("%s (%s)|%s", data.title, title, mask); } +#endif // ENABLE_ALTERNATIVE_FILE_WILDCARDS_GENERATOR static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); } @@ -4037,18 +796,13 @@ void GUI_App::post_init() CallAfter([this] { bool cw_showed = this->config_wizard_startup(); this->preset_updater->sync(preset_bundle); + this->app_version_check(false); if (! cw_showed) { // The CallAfter is needed as well, without it, GL extensions did not show. // Also, we only want to show this when the wizard does not, so the new user // sees something else than "we want something" on the first start. show_send_system_info_dialog_if_needed(); } - #ifdef _WIN32 - // Run external updater on Windows if version check is enabled. - if (this->preset_updater->version_check_enabled() && ! run_updater_win()) - // "prusaslicer-updater.exe" was not started, run our own update check. - #endif // _WIN32 - this->preset_updater->slic3r_update_notify(); }); } @@ -4074,6 +828,8 @@ GUI_App::GUI_App(EAppMode mode) { //app config initializes early becasuse it is used in instance checking in PrusaSlicer.cpp this->init_app_config(); + // init app downloader after path to datadir is set + m_app_updater = std::make_unique(); } GUI_App::~GUI_App() @@ -4097,7 +853,16 @@ std::string GUI_App::get_gl_info(bool for_github) wxGLContext* GUI_App::init_glcontext(wxGLCanvas& canvas) { +#if ENABLE_GL_CORE_PROFILE +#if ENABLE_OPENGL_DEBUG_OPTION + return m_opengl_mgr.init_glcontext(canvas, init_params != nullptr ? init_params->opengl_version : std::make_pair(0, 0), + init_params != nullptr ? init_params->opengl_debug : false); +#else + return m_opengl_mgr.init_glcontext(canvas, init_params != nullptr ? init_params->opengl_version : std::make_pair(0, 0)); +#endif // ENABLE_OPENGL_DEBUG_OPTION +#else return m_opengl_mgr.init_glcontext(canvas); +#endif // ENABLE_GL_CORE_PROFILE } bool GUI_App::init_opengl() @@ -4132,8 +897,9 @@ void GUI_App::init_app_config() { // Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release. // SetAppName(SLIC3R_APP_KEY); -// SetAppName(SLIC3R_APP_KEY "-alpha"); - SetAppName(SLIC3R_APP_KEY "-beta"); + SetAppName(SLIC3R_APP_KEY "-alpha"); +// SetAppName(SLIC3R_APP_KEY "-beta"); + // SetAppDisplayName(SLIC3R_APP_NAME); @@ -4428,7 +1194,7 @@ bool GUI_App::on_init_inner() } // create splash screen with updated bmp - scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("PrusaSlicer", nullptr, 400), + scrn = new SplashScreen(bmp.IsOk() ? bmp : get_bmp_bundle("PrusaSlicer", 400)->GetPreferredBitmapSizeAtScale(1.0), wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); if (!default_splashscreen_pos) @@ -4460,23 +1226,8 @@ bool GUI_App::on_init_inner() #endif // __WXMSW__ preset_updater = new PresetUpdater(); - Bind(EVT_SLIC3R_VERSION_ONLINE, [this](const wxCommandEvent& evt) { - app_config->set("version_online", into_u8(evt.GetString())); - app_config->save(); - std::string opt = app_config->get("notify_release"); - if (this->plater_ != nullptr && (opt == "all" || opt == "release")) { - if (*Semver::parse(SLIC3R_VERSION) < *Semver::parse(into_u8(evt.GetString()))) { - this->plater_->get_notification_manager()->push_notification(NotificationType::NewAppAvailable - , NotificationManager::NotificationLevel::ImportantNotificationLevel - , Slic3r::format(_u8L("New release version %1% is available."), evt.GetString()) - , _u8L("See Download page.") - , [](wxEvtHandler* evnthndlr) {wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); return true; } - ); - } - } - }); + Bind(EVT_SLIC3R_VERSION_ONLINE, &GUI_App::on_version_read, this); Bind(EVT_SLIC3R_EXPERIMENTAL_VERSION_ONLINE, [this](const wxCommandEvent& evt) { - app_config->save(); if (this->plater_ != nullptr && app_config->get("notify_release") == "all") { std::string evt_string = into_u8(evt.GetString()); if (*Semver::parse(SLIC3R_VERSION) < *Semver::parse(evt_string)) { @@ -4490,6 +1241,22 @@ bool GUI_App::on_init_inner() } } }); + Bind(EVT_SLIC3R_APP_DOWNLOAD_PROGRESS, [this](const wxCommandEvent& evt) { + //lm:This does not force a render. The progress bar only updateswhen the mouse is moved. + if (this->plater_ != nullptr) + this->plater_->get_notification_manager()->set_download_progress_percentage((float)std::stoi(into_u8(evt.GetString())) / 100.f ); + }); + + Bind(EVT_SLIC3R_APP_DOWNLOAD_FAILED, [this](const wxCommandEvent& evt) { + if (this->plater_ != nullptr) + this->plater_->get_notification_manager()->close_notification_of_type(NotificationType::AppDownload); + if(!evt.GetString().IsEmpty()) + show_error(nullptr, evt.GetString()); + }); + + Bind(EVT_SLIC3R_APP_OPEN_FAILED, [](const wxCommandEvent& evt) { + show_error(nullptr, evt.GetString()); + }); } else { #ifdef __WXMSW__ @@ -4646,9 +1413,9 @@ bool GUI_App::dark_mode() // proper dark mode was first introduced. return wxPlatformInfo::Get().CheckOSVersion(10, 14) && mac_dark_mode(); #else - return wxGetApp().app_config->get("dark_color_mode") == "1" ? true : check_dark_mode(); - //const unsigned luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - //return luma < 128; + if (wxGetApp().app_config->has("dark_color_mode")) + return wxGetApp().app_config->get("dark_color_mode") == "1"; + return check_dark_mode(); #endif } @@ -4865,8 +1632,7 @@ void GUI_App::set_label_clr_modified(const wxColour& clr) if (m_color_label_modified == clr) return; m_color_label_modified = clr; - auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); - std::string str = clr_str.ToStdString(); + const std::string str = encode_color(ColorRGB(clr.Red(), clr.Green(), clr.Blue())); app_config->set("label_clr_modified", str); app_config->save(); } @@ -4876,8 +1642,7 @@ void GUI_App::set_label_clr_sys(const wxColour& clr) if (m_color_label_sys == clr) return; m_color_label_sys = clr; - auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue()); - std::string str = clr_str.ToStdString(); + const std::string str = encode_color(ColorRGB(clr.Red(), clr.Green(), clr.Blue())); app_config->set("label_clr_sys", str); app_config->save(); } @@ -5081,6 +1846,7 @@ void GUI_App::update_ui_from_settings() m_force_colors_update = false; mainframe->force_color_changed(); mainframe->diff_dialog.force_color_changed(); + mainframe->preferences_dialog->force_color_changed(); mainframe->printhost_queue_dlg()->force_color_changed(); #ifdef _MSW_DARK_MODE update_scrolls(mainframe); @@ -5211,15 +1977,17 @@ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguage }), locales.end()); - // Is there a candidate matching a country code of a system language? Move it to the end, - // while maintaining the order of matches, so that the best match ends up at the very end. - std::string system_country = "_" + into_u8(system_language->CanonicalName.AfterFirst('_')).substr(0, 2); - int cnt = locales.size(); - for (int i=0; iCanonicalName.AfterFirst('_')).substr(0, 2); + int cnt = locales.size(); + for (int i = 0; i < cnt; ++i) + if (locales[i].find(system_country) != std::string::npos) { + locales.emplace_back(std::move(locales[i])); + locales[i].clear(); + } + } // Now try them one by one. for (auto it = locales.rbegin(); it != locales.rend(); ++ it) @@ -5337,6 +2105,15 @@ bool GUI_App::load_language(wxString language, bool initial) { // Allocating a temporary locale will switch the default wxTranslations to its internal wxTranslations instance. wxLocale temp_locale; +#ifdef __WXOSX__ + // ysFIXME - temporary workaround till it isn't fixed in wxWidgets: + // Use English as an initial language, because of under OSX it try to load "inappropriate" language for wxLANGUAGE_DEFAULT. + // For example in our case it's trying to load "en_CZ" and as a result PrusaSlicer catch warning message. + // But wxWidgets guys work on it. + temp_locale.Init(wxLANGUAGE_ENGLISH); +#else + temp_locale.Init(); +#endif // __WXOSX__ // Set the current translation's language to default, otherwise GetBestTranslation() may not work (see the wxWidgets source code). wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT); // Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer @@ -5477,7 +2254,7 @@ void GUI_App::update_mode() { sidebar().update_mode(); -#ifdef _MSW_DARK_MODE +#ifdef _WIN32 //_MSW_DARK_MODE if (!wxGetApp().tabs_as_menu()) dynamic_cast(mainframe->m_tabpanel)->UpdateMode(); #endif @@ -5501,7 +2278,8 @@ void GUI_App::add_config_menu(wxMenuBar *menu) local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip); local_menu->Append(config_id_base + ConfigMenuSnapshots, _L("&Configuration Snapshots") + dots, _L("Inspect / activate configuration snapshots")); local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot")); - local_menu->Append(config_id_base + ConfigMenuUpdate, _L("Check for Configuration Updates"), _L("Check for configuration updates")); + local_menu->Append(config_id_base + ConfigMenuUpdateConf, _L("Check for Configuration Updates"), _L("Check for configuration updates")); + local_menu->Append(config_id_base + ConfigMenuUpdateApp, _L("Check for Application Updates"), _L("Check for new version of application")); #if defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION) //if (DesktopIntegrationDialog::integration_possible()) local_menu->Append(config_id_base + ConfigMenuDesktopIntegration, _L("Desktop Integration"), _L("Desktop Integration")); @@ -5543,9 +2321,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu) case ConfigMenuWizard: run_wizard(ConfigWizard::RR_USER); break; - case ConfigMenuUpdate: + case ConfigMenuUpdateConf: check_updates(true); break; + case ConfigMenuUpdateApp: + app_version_check(true); + break; #ifdef __linux__ case ConfigMenuDesktopIntegration: show_desktop_integration_dialog(); @@ -5601,40 +2382,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu) break; case ConfigMenuPreferences: { - bool app_layout_changed = false; - { - // the dialog needs to be destroyed before the call to recreate_GUI() - // or sometimes the application crashes into wxDialogBase() destructor - // so we put it into an inner scope - PreferencesDialog dlg(mainframe); - dlg.ShowModal(); - app_layout_changed = dlg.settings_layout_changed(); - if (dlg.seq_top_layer_only_changed()) - this->plater_->refresh_print(); - - if (dlg.recreate_GUI()) { - recreate_GUI(_L("Restart application") + dots); - return; - } -#ifdef _WIN32 - if (is_editor()) { - if (app_config->get("associate_3mf") == "1") - associate_3mf_files(); - if (app_config->get("associate_stl") == "1") - associate_stl_files(); - } - else { - if (app_config->get("associate_gcode") == "1") - associate_gcode_files(); - } -#endif // _WIN32 - } - if (app_layout_changed) { - // hide full main_sizer for mainFrame - mainframe->GetSizer()->Show(false); - mainframe->update_layout(); - mainframe->select_tab(size_t(0)); - } + open_preferences(); break; } case ConfigMenuLanguage: @@ -5682,36 +2430,34 @@ void GUI_App::add_config_menu(wxMenuBar *menu) menu->Append(local_menu, _L("&Configuration")); } -void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) +void GUI_App::open_preferences(const std::string& highlight_option /*= std::string()*/, const std::string& tab_name/*= std::string()*/) { - bool app_layout_changed = false; - { - // the dialog needs to be destroyed before the call to recreate_GUI() - // or sometimes the application crashes into wxDialogBase() destructor - // so we put it into an inner scope - PreferencesDialog dlg(mainframe, open_on_tab, highlight_option); - dlg.ShowModal(); - app_layout_changed = dlg.settings_layout_changed(); + mainframe->preferences_dialog->show(highlight_option, tab_name); + + if (mainframe->preferences_dialog->recreate_GUI()) + recreate_GUI(_L("Restart application") + dots); + #if ENABLE_GCODE_LINES_ID_IN_H_SLIDER - if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) + if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) #else - if (dlg.seq_top_layer_only_changed()) + if (mainframe->preferences_dialog->seq_top_layer_only_changed()) #endif // ENABLE_GCODE_LINES_ID_IN_H_SLIDER - this->plater_->refresh_print(); + this->plater_->refresh_print(); + #ifdef _WIN32 - if (is_editor()) { - if (app_config->get("associate_3mf") == "1") - associate_3mf_files(); - if (app_config->get("associate_stl") == "1") - associate_stl_files(); - } - else { - if (app_config->get("associate_gcode") == "1") - associate_gcode_files(); - } -#endif // _WIN32 + if (is_editor()) { + if (app_config->get("associate_3mf") == "1") + associate_3mf_files(); + if (app_config->get("associate_stl") == "1") + associate_stl_files(); } - if (app_layout_changed) { + else { + if (app_config->get("associate_gcode") == "1") + associate_gcode_files(); + } +#endif // _WIN32 + + if (mainframe->preferences_dialog->settings_layout_changed()) { // hide full main_sizer for mainFrame mainframe->GetSizer()->Show(false); mainframe->update_layout(); @@ -6416,118 +3162,102 @@ bool GUI_App::open_browser_with_warning_dialog(const wxString& url, wxWindow* pa #ifdef __WXMSW__ -static bool set_into_win_registry(HKEY hkeyHive, const wchar_t* pszVar, const wchar_t* pszValue) -{ - // see as reference: https://stackoverflow.com/questions/20245262/c-program-needs-an-file-association - wchar_t szValueCurrent[1000]; - DWORD dwType; - DWORD dwSize = sizeof(szValueCurrent); - - int iRC = ::RegGetValueW(hkeyHive, pszVar, nullptr, RRF_RT_ANY, &dwType, szValueCurrent, &dwSize); - - bool bDidntExist = iRC == ERROR_FILE_NOT_FOUND; - - if ((iRC != ERROR_SUCCESS) && !bDidntExist) - // an error occurred - return false; - - if (!bDidntExist) { - if (dwType != REG_SZ) - // invalid type - return false; - - if (::wcscmp(szValueCurrent, pszValue) == 0) - // value already set - return false; - } - - DWORD dwDisposition; - HKEY hkey; - iRC = ::RegCreateKeyExW(hkeyHive, pszVar, 0, 0, 0, KEY_ALL_ACCESS, nullptr, &hkey, &dwDisposition); - bool ret = false; - if (iRC == ERROR_SUCCESS) { - iRC = ::RegSetValueExW(hkey, L"", 0, REG_SZ, (BYTE*)pszValue, (::wcslen(pszValue) + 1) * sizeof(wchar_t)); - if (iRC == ERROR_SUCCESS) - ret = true; - } - - RegCloseKey(hkey); - return ret; -} - void GUI_App::associate_3mf_files() { - wchar_t app_path[MAX_PATH]; - ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); - - std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; - std::wstring prog_id = L"Prusa.Slicer.1"; - std::wstring prog_desc = L"PrusaSlicer"; - std::wstring prog_command = prog_path + L" \"%1\""; - std::wstring reg_base = L"Software\\Classes"; - std::wstring reg_extension = reg_base + L"\\.3mf"; - std::wstring reg_prog_id = reg_base + L"\\" + prog_id; - std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command"; - - bool is_new = false; - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str()); - - if (is_new) - // notify Windows only when any of the values gets changed - ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); + associate_file_type(L".3mf", L"Prusa.Slicer.1", L"PrusaSlicer", true); } void GUI_App::associate_stl_files() { - wchar_t app_path[MAX_PATH]; - ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); - - std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; - std::wstring prog_id = L"Prusa.Slicer.1"; - std::wstring prog_desc = L"PrusaSlicer"; - std::wstring prog_command = prog_path + L" \"%1\""; - std::wstring reg_base = L"Software\\Classes"; - std::wstring reg_extension = reg_base + L"\\.stl"; - std::wstring reg_prog_id = reg_base + L"\\" + prog_id; - std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command"; - - bool is_new = false; - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str()); - - if (is_new) - // notify Windows only when any of the values gets changed - ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); + associate_file_type(L".stl", L"Prusa.Slicer.1", L"PrusaSlicer", true); } void GUI_App::associate_gcode_files() { - wchar_t app_path[MAX_PATH]; - ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); - - std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; - std::wstring prog_id = L"PrusaSlicer.GCodeViewer.1"; - std::wstring prog_desc = L"PrusaSlicerGCodeViewer"; - std::wstring prog_command = prog_path + L" \"%1\""; - std::wstring reg_base = L"Software\\Classes"; - std::wstring reg_extension = reg_base + L"\\.gcode"; - std::wstring reg_prog_id = reg_base + L"\\" + prog_id; - std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command"; - - bool is_new = false; - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str()); - is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str()); - - if (is_new) - // notify Windows only when any of the values gets changed - ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr); + associate_file_type(L".gcode", L"PrusaSlicer.GCodeViewer.1", L"PrusaSlicerGCodeViewer", true); } #endif // __WXMSW__ +void GUI_App::on_version_read(wxCommandEvent& evt) +{ + app_config->set("version_online", into_u8(evt.GetString())); + app_config->save(); + std::string opt = app_config->get("notify_release"); + if (this->plater_ == nullptr || (opt != "all" && opt != "release")) { + return; + } + if (*Semver::parse(SLIC3R_VERSION) >= *Semver::parse(into_u8(evt.GetString()))) { + return; + } + // notification + /* + this->plater_->get_notification_manager()->push_notification(NotificationType::NewAppAvailable + , NotificationManager::NotificationLevel::ImportantNotificationLevel + , Slic3r::format(_u8L("New release version %1% is available."), evt.GetString()) + , _u8L("See Download page.") + , [](wxEvtHandler* evnthndlr) {wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); return true; } + ); + */ + // updater + // read triggered_by_user that was set when calling GUI_App::app_version_check + app_updater(m_app_updater->get_triggered_by_user()); +} + +void GUI_App::app_updater(bool from_user) +{ + DownloadAppData app_data = m_app_updater->get_app_data(); + + if (from_user && (!app_data.version || *app_data.version <= *Semver::parse(SLIC3R_VERSION))) + { + BOOST_LOG_TRIVIAL(info) << "There is no newer version online."; + MsgNoAppUpdates no_update_dialog; + no_update_dialog.ShowModal(); + return; + + } + + assert(!app_data.url.empty()); + assert(!app_data.target_path.empty()); + + // dialog with new version info + AppUpdateAvailableDialog dialog(*Semver::parse(SLIC3R_VERSION), *app_data.version); + auto dialog_result = dialog.ShowModal(); + // checkbox "do not show again" + if (dialog.disable_version_check()) { + app_config->set("notify_release", "none"); + } + // Doesn't wish to update + if (dialog_result != wxID_OK) { + return; + } + // dialog with new version download (installer or app dependent on system) including path selection + AppUpdateDownloadDialog dwnld_dlg(*app_data.version, app_data.target_path); + dialog_result = dwnld_dlg.ShowModal(); + // Doesn't wish to download + if (dialog_result != wxID_OK) { + return; + } + app_data.target_path =dwnld_dlg.get_download_path(); + + // start download + this->plater_->get_notification_manager()->push_download_progress_notification(_utf8("Download"), std::bind(&AppUpdater::cancel_callback, this->m_app_updater.get())); + app_data.start_after = dwnld_dlg.run_after_download(); + m_app_updater->set_app_data(std::move(app_data)); + m_app_updater->sync_download(); +} + +void GUI_App::app_version_check(bool from_user) +{ + if (from_user) { + if (m_app_updater->get_download_ongoing()) { + MessageDialog msgdlg(nullptr, _L("Download of new version is already ongoing. Do you wish to continue?"), _L("Notice"), wxYES_NO); + if (msgdlg.ShowModal() != wxID_YES) + return; + } + } + std::string version_check_url = app_config->version_check_url(); + m_app_updater->sync_version(version_check_url, from_user); +} + } // GUI } //Slic3r ->>>>>>> master_250 diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 17a8666bf..a5b998fda 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -54,11 +54,8 @@ enum FileType { FT_STL, FT_OBJ, -<<<<<<< HEAD FT_OBJECT, -======= FT_STEP, ->>>>>>> master_250 FT_AMF, FT_3MF, FT_GCODE, diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index 7b23615c9..38f72c613 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -123,8 +123,8 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo s_cone.set_color(render_color); #endif // ENABLE_RAYCAST_PICKING - const Camera& camera = wxGetApp().plater()->get_camera(); - shader->set_uniform("projection_matrix", camera.get_projection_matrix()); + const Camera& camera = wxGetApp().plater()->get_camera(); + shader->set_uniform("projection_matrix", camera.get_projection_matrix()); #if ENABLE_RAYCAST_PICKING const Transform3d& view_matrix = camera.get_view_matrix(); const Matrix3d view_matrix_no_offset = view_matrix.matrix().block(0, 0, 3, 3); @@ -136,15 +136,15 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo const Transform3d model_matrix = matrix * Geometry::assemble_transform(center, angles, 2.0 * half_size * Vec3d::Ones()); const Transform3d view_model_matrix = view_matrix * model_matrix; #endif // ENABLE_RAYCAST_PICKING - - shader->set_uniform("view_model_matrix", view_model_matrix); + + shader->set_uniform("view_model_matrix", view_model_matrix); #if ENABLE_RAYCAST_PICKING - Matrix3d view_normal_matrix = view_matrix_no_offset * elements_matrices[0].matrix().block(0, 0, 3, 3).inverse().transpose(); + Matrix3d view_normal_matrix = view_matrix_no_offset * elements_matrices[0].matrix().block(0, 0, 3, 3).inverse().transpose(); #else - const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); + const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); #endif // ENABLE_RAYCAST_PICKING - shader->set_uniform("view_normal_matrix", view_normal_matrix); -#else + shader->set_uniform("view_normal_matrix", view_normal_matrix); +#else s_cube.set_color(-1, render_color); s_cone.set_color(-1, render_color); glsafe(::glPushMatrix()); @@ -153,14 +153,14 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo glsafe(::glRotated(Geometry::rad2deg(angles.y()), 0.0, 1.0, 0.0)); glsafe(::glRotated(Geometry::rad2deg(angles.x()), 1.0, 0.0, 0.0)); glsafe(::glScaled(2.0 * half_size, 2.0 * half_size, 2.0 * half_size)); -#endif // ENABLE_LEGACY_OPENGL_REMOVAL +#endif // ENABLE_LEGACY_OPENGL_REMOVAL #if ENABLE_RAYCAST_PICKING s_cube.model.render(); auto render_extension = [&view_matrix, &view_matrix_no_offset, shader](const Transform3d& matrix) { const Transform3d view_model_matrix = view_matrix * matrix; shader->set_uniform("view_model_matrix", view_model_matrix); - const Matrix3d view_normal_matrix = view_matrix_no_offset * matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); + const Matrix3d view_normal_matrix = view_matrix_no_offset * matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); shader->set_uniform("view_normal_matrix", view_normal_matrix); s_cone.model.render(); }; @@ -287,13 +287,12 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo if ((int(extensions) & int(GLGizmoBase::EGrabberExtension::NegZ)) != 0) raycasters[6] = canvas.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, picking_id, *s_cone.mesh_raycaster, elements_matrices[6]); } - else { - for (size_t i = 0; i < GRABBER_ELEMENTS_MAX_COUNT; ++i) { + else { + for (size_t i = 0; i < GRABBER_ELEMENTS_MAX_COUNT; ++i) { if (raycasters[i] != nullptr) raycasters[i]->set_transform(elements_matrices[i]); - } - } -<<<<<<< HEAD + } + } #endif // ENABLE_RAYCAST_PICKING } @@ -505,6 +504,8 @@ void GLGizmoBase::set_dirty() { m_dirty = true; } + + void GLGizmoBase::render_input_window(float x, float y, float bottom_limit) { on_render_input_window(x, y, bottom_limit); @@ -533,61 +534,4 @@ std::string GLGizmoBase::get_name(bool include_shortcut) const } // namespace GUI } // namespace Slic3r -======= -} - -std::string GLGizmoBase::format(float value, unsigned int decimals) const -{ - return Slic3r::string_printf("%.*f", decimals, value); -} - -void GLGizmoBase::set_dirty() { - m_dirty = true; -} - -void GLGizmoBase::render_input_window(float x, float y, float bottom_limit) -{ - on_render_input_window(x, y, bottom_limit); - if (m_first_input_window_render) { - // imgui windows that don't have an initial size needs to be processed once to get one - // and are not rendered in the first frame - // so, we forces to render another frame the first time the imgui window is shown - // https://github.com/ocornut/imgui/issues/2949 - m_parent.set_as_dirty(); - m_parent.request_extra_frame(); - m_first_input_window_render = false; - } -} - - - -std::string GLGizmoBase::get_name(bool include_shortcut) const -{ - int key = get_shortcut_key(); - std::string out = on_get_name(); - if (include_shortcut && key >= WXK_CONTROL_A && key <= WXK_CONTROL_Z) - out += std::string(" [") + char(int('A') + key - int(WXK_CONTROL_A)) + "]"; - return out; -} - - - -// Produce an alpha channel checksum for the red green blue components. The alpha channel may then be used to verify, whether the rgb components -// were not interpolated by alpha blending or multi sampling. -unsigned char picking_checksum_alpha_channel(unsigned char red, unsigned char green, unsigned char blue) -{ - // 8 bit hash for the color - unsigned char b = ((((37 * red) + green) & 0x0ff) * 37 + blue) & 0x0ff; - // Increase enthropy by a bit reversal - b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; - b = (b & 0xCC) >> 2 | (b & 0x33) << 2; - b = (b & 0xAA) >> 1 | (b & 0x55) << 1; - // Flip every second bit to increase the enthropy even more. - b ^= 0x55; - return b; -} - - -} // namespace GUI -} // namespace Slic3r ->>>>>>> master_250 + diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index a60770d13..8767fecb2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -420,19 +420,6 @@ void GLGizmoCut::update_contours() for (size_t i = 0; i < model_object->volumes.size(); ++i) { volumes_idxs[i] = model_object->volumes[i]->id(); volumes_trafos[i] = model_object->volumes[i]->get_matrix(); -<<<<<<< HEAD - } - - bool trafos_match = volumes_trafos.size() == m_cut_contours.volumes_trafos.size(); - if (trafos_match) { - for (size_t i = 0; i < model_object->volumes.size(); ++i) { - if (!volumes_trafos[i].isApprox(m_cut_contours.volumes_trafos[i])) { - trafos_match = false; - break; - } - } -======= ->>>>>>> master_250 } bool trafos_match = std::equal(volumes_trafos.begin(), volumes_trafos.end(), diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index c73d3cc52..bd6c5d85a 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -246,14 +246,11 @@ public: GetBtnsListCtrl()->Rescale(); } -<<<<<<< HEAD void OnColorsChanged() { GetBtnsListCtrl()->OnColorsChanged(); } -======= ->>>>>>> master_250 void OnNavigationKey(wxNavigationKeyEvent& event) { if (event.IsWindowChange()) { diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 9f3483fdf..770e990a5 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -4,11 +4,8 @@ add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests.cpp test_3mf.cpp test_aabbindirect.cpp -<<<<<<< HEAD test_kdtreeindirect.cpp -======= test_arachne.cpp ->>>>>>> master_250 test_clipper_offset.cpp test_clipper_utils.cpp test_color.cpp diff --git a/version.inc b/version.inc index 8013897c8..3e1460a0e 100644 --- a/version.inc +++ b/version.inc @@ -3,11 +3,7 @@ set(SLIC3R_APP_NAME "PrusaSlicer") set(SLIC3R_APP_KEY "PrusaSlicer") -<<<<<<< HEAD set(SLIC3R_VERSION "2.6.0-alpha0") -======= -set(SLIC3R_VERSION "2.5.0-beta1") ->>>>>>> master_250 set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN") set(SLIC3R_RC_VERSION "2,6,0,0") set(SLIC3R_RC_VERSION_DOTS "2.6.0.0") From 43315fc1a136f0fb358c812c9448abeeb63f0f30 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Mon, 15 Aug 2022 17:22:45 +0200 Subject: [PATCH 126/131] Fixed missing retractions for travels crossing support islands The bug was introduced in 576c167 (GCode.cpp) --- src/libslic3r/ClipperUtils.cpp | 2 ++ src/libslic3r/ClipperUtils.hpp | 1 + src/libslic3r/GCode.cpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index c6617002a..b2c5bd89e 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -705,6 +705,8 @@ Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::Polygo { return _clipper_pl_open(ClipperLib::ctDifference, ClipperUtils::PolylinesProvider(subject), ClipperUtils::PolygonsProvider(clip)); } Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::ExPolygon &clip) { return _clipper_pl_open(ClipperLib::ctDifference, ClipperUtils::SinglePathProvider(subject.points), ClipperUtils::ExPolygonProvider(clip)); } +Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::ExPolygons &clip) + { return _clipper_pl_open(ClipperLib::ctDifference, ClipperUtils::SinglePathProvider(subject.points), ClipperUtils::ExPolygonsProvider(clip)); } Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::ExPolygon &clip) { return _clipper_pl_open(ClipperLib::ctDifference, ClipperUtils::PolylinesProvider(subject), ClipperUtils::ExPolygonProvider(clip)); } Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::ExPolygons &clip) diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index d913154e0..e585e3011 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -408,6 +408,7 @@ Slic3r::ExPolygons diff_ex(const Slic3r::Surfaces &subject, const Slic3r::Surfac Slic3r::ExPolygons diff_ex(const Slic3r::SurfacesPtr &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset::No); Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::Polygons &clip); Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::ExPolygon &clip); +Slic3r::Polylines diff_pl(const Slic3r::Polyline &subject, const Slic3r::ExPolygons &clip); Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::ExPolygon &clip); Slic3r::Polylines diff_pl(const Slic3r::Polylines &subject, const Slic3r::ExPolygons &clip); Slic3r::Polylines diff_pl(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip); diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d836ac43c..80aac2691 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3137,7 +3137,7 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role) if (role == erSupportMaterial) { const SupportLayer* support_layer = dynamic_cast(m_layer); //FIXME support_layer->support_islands.contains should use some search structure! - if (support_layer != NULL && ! intersection_pl(travel, support_layer->support_islands).empty()) + if (support_layer != NULL && diff_pl(travel, support_layer->support_islands).empty()) // skip retraction if this is a travel move inside a support material island //FIXME not retracting over a long path may cause oozing, which in turn may result in missing material // at the end of the extrusion path! From 161f14c972131f6a8a984d7db98daed0b2a82b05 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 16 Aug 2022 10:25:42 +0200 Subject: [PATCH 127/131] Add missing includes (gcc 9.4 without pchs) --- src/slic3r/GUI/BonjourDialog.cpp | 2 ++ src/slic3r/GUI/BonjourDialog.hpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/slic3r/GUI/BonjourDialog.cpp b/src/slic3r/GUI/BonjourDialog.cpp index 09d8bdb52..9298aa615 100644 --- a/src/slic3r/GUI/BonjourDialog.cpp +++ b/src/slic3r/GUI/BonjourDialog.cpp @@ -5,6 +5,8 @@ #include #include +#include + #include #include #include diff --git a/src/slic3r/GUI/BonjourDialog.hpp b/src/slic3r/GUI/BonjourDialog.hpp index fb177c4b5..8bfc076c4 100644 --- a/src/slic3r/GUI/BonjourDialog.hpp +++ b/src/slic3r/GUI/BonjourDialog.hpp @@ -1,8 +1,11 @@ #ifndef slic3r_BonjourDialog_hpp_ #define slic3r_BonjourDialog_hpp_ +#include #include +#include + #include #include From bbadcf57b2bf5b55ee11f3d4eef0883d9158a817 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 16 Aug 2022 11:09:24 +0200 Subject: [PATCH 128/131] Fixed memory leaks in libslic3r_tests --- tests/libslic3r/test_arachne.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/libslic3r/test_arachne.cpp b/tests/libslic3r/test_arachne.cpp index a675c8f72..e952695e9 100644 --- a/tests/libslic3r/test_arachne.cpp +++ b/tests/libslic3r/test_arachne.cpp @@ -109,9 +109,10 @@ TEST_CASE("Arachne - #8593 - Missing a part of the extrusion", "[ArachneMissingP coord_t inset_count = 3; PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); - print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.315, false)); - print_object_config.wall_transition_angle.set(new ConfigOptionFloat(40.)); - print_object_config.wall_transition_length.set(new ConfigOptionFloatOrPercent(1., false)); + print_object_config.min_bead_width = ConfigOptionFloatOrPercent(0.315, false); + print_object_config.wall_transition_angle = ConfigOptionFloat(40.); + print_object_config.wall_transition_length = ConfigOptionFloatOrPercent(1., false); + // This behavior seems to be related to the rotation of the input polygon. // There are specific angles in which this behavior is always triggered. @@ -155,7 +156,7 @@ TEST_CASE("Arachne - #8573 - A gap in the perimeter - 1", "[ArachneGapInPerimete coord_t inset_count = 2; PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); -// print_object_config.wall_transition_angle.set(new ConfigOptionFloat(20.)); +// print_object_config.wall_transition_angle = ConfigOptionFloat(20.); Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.2, print_object_config, PrintConfig::defaults()); wallToolPaths.generate(); @@ -198,7 +199,7 @@ TEST_CASE("Arachne - #8444 - A gap in the perimeter - 2", "[ArachneGapInPerimete coord_t inset_count = 2; PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); - // print_object_config.wall_transition_angle.set(new ConfigOptionFloat(20.)); + // print_object_config.wall_transition_angle = ConfigOptionFloat(20.); Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.4, print_object_config, PrintConfig::defaults()); wallToolPaths.generate(); @@ -237,10 +238,10 @@ TEST_CASE("Arachne - #8528 - A hole when number of perimeters is changing", "[Ar coord_t inset_count = 5; PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); - print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.68, false)); + print_object_config.min_bead_width = ConfigOptionFloatOrPercent(0.68, false); // Changing min_bead_width to 0.66 seems that resolve this issue, at least in this case. - print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.66, false)); + print_object_config.min_bead_width = ConfigOptionFloatOrPercent(0.66, false); Arachne::WallToolPaths wallToolPaths(polygons, spacing, spacing, inset_count, 0, 0.4, print_object_config, PrintConfig::defaults()); wallToolPaths.generate(); @@ -363,9 +364,9 @@ TEST_CASE("Arachne - #8633 - Shorter open perimeter", "[ArachneShorterOpenPerime coord_t inset_count = 1; PrintObjectConfig print_object_config = PrintObjectConfig::defaults(); - print_object_config.min_bead_width.set(new ConfigOptionFloatOrPercent(0.51, false)); - print_object_config.min_feature_size.set(new ConfigOptionFloatOrPercent(0.15, false)); - print_object_config.wall_transition_length.set(new ConfigOptionFloatOrPercent(0.6, false)); + print_object_config.min_bead_width = ConfigOptionFloatOrPercent(0.51, false); + print_object_config.min_feature_size = ConfigOptionFloatOrPercent(0.15, false); + print_object_config.wall_transition_length = ConfigOptionFloatOrPercent(0.6, false); for (size_t poly_idx = 0; poly_idx < polygons.size(); ++poly_idx) { Polygons input_polygons{polygons[poly_idx]}; @@ -412,4 +413,4 @@ TEST_CASE("Arachne - #8597 - removeSmallAreas", "[ArachneRemoveSmallAreas8597]") #endif REQUIRE(perimeters.size() == 1); -} \ No newline at end of file +} From dc229589bbbfdaa99cb5dd87077b4af7fc2c3df6 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 16 Aug 2022 11:20:31 +0200 Subject: [PATCH 129/131] Fixed compiler warnings --- src/slic3r/GUI/BitmapCache.cpp | 86 ++++++++++++------------- src/slic3r/GUI/GUI_App.cpp | 4 +- src/slic3r/GUI/SendSystemInfoDialog.cpp | 2 +- src/slic3r/GUI/SysInfoDialog.cpp | 2 +- 4 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 147615277..7fb0ce635 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -493,51 +493,51 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ return this->insert_raw_rgba(bitmap_key, width, height, data.data(), grayscale); } -/* + //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap -wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false* /, size_t border_width /*= 0* /, bool dark_mode/* = false* /) -{ - double scale = suppress_scaling ? 1.0f : m_scale; - width *= scale; - height *= scale; +//wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false* /, size_t border_width /*= 0* /, bool dark_mode/* = false* /) +//{ +// double scale = suppress_scaling ? 1.0f : m_scale; +// width *= scale; +// height *= scale; +// +// wxImage image(width, height); +// image.InitAlpha(); +// unsigned char* imgdata = image.GetData(); +// unsigned char* imgalpha = image.GetAlpha(); +// for (size_t i = 0; i < width * height; ++ i) { +// *imgdata ++ = r; +// *imgdata ++ = g; +// *imgdata ++ = b; +// *imgalpha ++ = transparency; +// } +// +// // Add border, make white/light spools easier to see +// if (border_width > 0) { +// +// // Restrict to width of image +// if (border_width > height) border_width = height - 1; +// if (border_width > width) border_width = width - 1; +// +// auto px_data = (uint8_t*)image.GetData(); +// auto a_data = (uint8_t*)image.GetAlpha(); +// +// for (size_t x = 0; x < width; ++x) { +// for (size_t y = 0; y < height; ++y) { +// if (x < border_width || y < border_width || +// x >= (width - border_width) || y >= (height - border_width)) { +// const size_t idx = (x + y * width); +// const size_t idx_rgb = (x + y * width) * 3; +// px_data[idx_rgb] = px_data[idx_rgb + 1] = px_data[idx_rgb + 2] = dark_mode ? 245u : 110u; +// a_data[idx] = 255u; +// } +// } +// } +// } +// +// return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); +//} - wxImage image(width, height); - image.InitAlpha(); - unsigned char* imgdata = image.GetData(); - unsigned char* imgalpha = image.GetAlpha(); - for (size_t i = 0; i < width * height; ++ i) { - *imgdata ++ = r; - *imgdata ++ = g; - *imgdata ++ = b; - *imgalpha ++ = transparency; - } - - // Add border, make white/light spools easier to see - if (border_width > 0) { - - // Restrict to width of image - if (border_width > height) border_width = height - 1; - if (border_width > width) border_width = width - 1; - - auto px_data = (uint8_t*)image.GetData(); - auto a_data = (uint8_t*)image.GetAlpha(); - - for (size_t x = 0; x < width; ++x) { - for (size_t y = 0; y < height; ++y) { - if (x < border_width || y < border_width || - x >= (width - border_width) || y >= (height - border_width)) { - const size_t idx = (x + y * width); - const size_t idx_rgb = (x + y * width) * 3; - px_data[idx_rgb] = px_data[idx_rgb + 1] = px_data[idx_rgb + 2] = dark_mode ? 245u : 110u; - a_data[idx] = 255u; - } - } - } - } - - return wxImage_to_wxBitmap_with_alpha(std::move(image), scale); -} -*/ //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap wxBitmapBundle BitmapCache::mksolid(size_t width_in, size_t height_in, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, size_t border_width /*= 0*/, bool dark_mode/* = false*/) { diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 63b36ae35..ca0b82c9a 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -123,13 +123,13 @@ public: { wxASSERT(bitmap.IsOk()); - int init_dpi = get_dpi_for_window(this); +// int init_dpi = get_dpi_for_window(this); this->SetPosition(pos); // The size of the SplashScreen can be hanged after its moving to another display // So, update it from a bitmap size this->SetClientSize(bitmap.GetWidth(), bitmap.GetHeight()); this->CenterOnScreen(); - int new_dpi = get_dpi_for_window(this); +// int new_dpi = get_dpi_for_window(this); // m_scale = (float)(new_dpi) / (float)(init_dpi); m_main_bitmap = bitmap; diff --git a/src/slic3r/GUI/SendSystemInfoDialog.cpp b/src/slic3r/GUI/SendSystemInfoDialog.cpp index e8b4c3310..298b3242d 100644 --- a/src/slic3r/GUI/SendSystemInfoDialog.cpp +++ b/src/slic3r/GUI/SendSystemInfoDialog.cpp @@ -434,7 +434,7 @@ static std::string generate_system_info_json() pt::ptree hw_node; { - hw_node.put("ArchName", wxPlatformInfo::Get().GetArchName()); + hw_node.put("ArchName", wxPlatformInfo::Get().GetBitnessName()); size_t num = std::round(Slic3r::total_physical_memory()/107374100.); hw_node.put("RAM_GiB", std::to_string(num / 10) + "." + std::to_string(num % 10)); } diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index d4d83dfda..a29c3e977 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -50,7 +50,7 @@ std::string get_main_info(bool format_as_html) out << line_end; out << b_start << "Operating System: " << b_end << wxPlatformInfo::Get().GetOperatingSystemFamilyName() << line_end; - out << b_start << "System Architecture: " << b_end << wxPlatformInfo::Get().GetArchName() << line_end; + out << b_start << "System Architecture: " << b_end << wxPlatformInfo::Get().GetBitnessName() << line_end; out << b_start << #if defined _WIN32 "Windows Version: " From 3395b288c4b44c6c1868eb470a942e3aade33a42 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 17 Aug 2022 11:39:32 +0200 Subject: [PATCH 130/131] Mention OCCT in Copyright dialog --- src/slic3r/GUI/AboutDialog.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index f00259559..bfd6b55dc 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -127,7 +127,9 @@ void CopyrightsDialog::fill_entries() { "fast_float" , "Daniel Lemire, João Paulo Magalhaes and contributors", "https://github.com/fastfloat/fast_float" }, { "CuraEngine (Arachne, etc.)" - , "Ultimaker", "https://github.com/Ultimaker/CuraEngine" } + , "Ultimaker", "https://github.com/Ultimaker/CuraEngine" }, + { "Open CASCADE Technology" + , "Open Cascade SAS", "https://github.com/Open-Cascade-SAS/OCCT" } }; } From a93620621dd12354097ed4e646bdcd249e136630 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Thu, 18 Aug 2022 10:30:20 +0200 Subject: [PATCH 131/131] Performance improvement of GCodeProcessor: Replaced std::string with std::string_view for constant parameters Replaced boost:istarts_with() with boost::starts_with() --- src/libslic3r/GCode/GCodeProcessor.cpp | 9 +++++++-- src/slic3r/GUI/ImGuiWrapper.cpp | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 335a51696..e1341fa98 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -3779,8 +3779,13 @@ void GCodeProcessor::post_process() } auto process_used_filament = [&](std::string& gcode_line) { - auto process_tag = [](std::string& gcode_line, const std::string& tag, const std::vector& values) { - if (boost::algorithm::istarts_with(gcode_line, tag)) { + // Prefilter for parsing speed. + if (gcode_line.size() < 8 || gcode_line[0] != ';' || gcode_line[1] != ' ') + return false; + if (const char c = gcode_line[2]; c != 'f' && c != 't') + return false; + auto process_tag = [](std::string& gcode_line, const std::string_view tag, const std::vector& values) { + if (boost::algorithm::starts_with(gcode_line, tag)) { gcode_line = tag; char buf[1024]; for (size_t i = 0; i < values.size(); ++i) { diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 6f83c5d7c..b5d5ad613 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -542,7 +542,7 @@ bool ImGuiWrapper::slider_float(const char* label, float* v, float v_min, float const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; // let the label string start with "##" to hide the automatic label from ImGui::SliderFloat() - bool label_visible = !boost::algorithm::istarts_with(label, "##"); + bool label_visible = !boost::algorithm::starts_with(label, "##"); std::string str_label = label_visible ? std::string("##") + std::string(label) : std::string(label); // removes 2nd evenience of "##", if present