From 3923b9c846ead30442a33b38f1c23c9c00fab338 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 1 Dec 2023 23:13:26 +0800 Subject: [PATCH 01/93] Improve arc fitting when new overhang slowdown is used (#2942) --- src/libslic3r/GCode.cpp | 70 ++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 6b0c6f632d..b336210cd7 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4818,68 +4818,68 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic && !this->on_first_layer() && (is_bridge(path.role()) || is_perimeter(path.role()))) { - - double out_wall_ref_speed = m_config.get_abs_value("outer_wall_speed"); - ConfigOptionPercents overhang_overlap_levels({75, 50, 25, 13, 12.99, 0}); + bool is_external = is_external_perimeter(path.role()); + double ref_speed = is_external ? m_config.get_abs_value("outer_wall_speed") : m_config.get_abs_value("inner_wall_speed"); + ConfigOptionPercents overhang_overlap_levels({75, 50, 25, 13, 12.99, 0}); if (m_config.slowdown_for_curled_perimeters){ ConfigOptionFloatsOrPercents dynamic_overhang_speeds( - {(m_config.get_abs_value("overhang_1_4_speed") < 0.5) ? + {(m_config.get_abs_value("overhang_1_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_2_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_2_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_3_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_3_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_4_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_4_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_4_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true}}); - if (out_wall_ref_speed == 0) - out_wall_ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm; + FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true}}); + if (ref_speed == 0) + ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm; if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) { - out_wall_ref_speed = std::min(out_wall_ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm); + ref_speed = std::min(ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm); } new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds, - out_wall_ref_speed, speed, m_config.slowdown_for_curled_perimeters); + ref_speed, speed, m_config.slowdown_for_curled_perimeters); }else{ ConfigOptionFloatsOrPercents dynamic_overhang_speeds( - {(m_config.get_abs_value("overhang_1_4_speed") < 0.5) ? + {(m_config.get_abs_value("overhang_1_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_2_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_2_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_3_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_3_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed") * 100 / out_wall_ref_speed, true}, - (m_config.get_abs_value("overhang_4_4_speed") < 0.5) ? + FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed", ref_speed) * 100 / ref_speed, true}, + (m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ? FloatOrPercent{100, true} : - FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true}, - FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / out_wall_ref_speed, true}, - FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / out_wall_ref_speed, true}}); + FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true}, + FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / ref_speed, true}, + FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / ref_speed, true}}); - if (out_wall_ref_speed == 0) - out_wall_ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm; + if (ref_speed == 0) + ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm; if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) { - out_wall_ref_speed = std::min(out_wall_ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm); + ref_speed = std::min(ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm); } new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds, - out_wall_ref_speed, speed, m_config.slowdown_for_curled_perimeters); + ref_speed, speed, m_config.slowdown_for_curled_perimeters); } - variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return p.speed != speed; }); - + variable_speed = std::any_of(new_points.begin(), new_points.end(), + [speed](const ProcessedPoint &p) { return fabs(double(p.speed) - speed) > EPSILON; }); } double F = speed * 60; // convert mm/sec to mm/min From 6ba1e6d6ae6720b5ef9643d217ba3f630ec8a34b Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Fri, 1 Dec 2023 10:32:48 -0500 Subject: [PATCH 02/93] Set PointerAlignment to Left (#2948) A lot of the codebase that I have seen typically uses a left justified pointer character. This would update the formatter to also follow that. --- .clang-format | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-format b/.clang-format index 42ac9f1a07..6376be4d75 100644 --- a/.clang-format +++ b/.clang-format @@ -95,7 +95,7 @@ PenaltyBreakString: 600 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 50 PenaltyReturnTypeOnItsOwnLine: 300 -PointerAlignment: Right +PointerAlignment: Left ReflowComments: true SortIncludes: false SortUsingDeclarations: false From ae9a2d5929d893b632c8414b0f386f754c61bd13 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 1 Dec 2023 15:50:58 +0000 Subject: [PATCH 03/93] Updated internal bridging flow change and reverted bridge PR (#2943) Updated internal bridging flow change & reverted bridge PR --- src/libslic3r/Fill/Fill.cpp | 2 +- src/libslic3r/GCode.cpp | 2 ++ src/libslic3r/Layer.hpp | 2 +- src/libslic3r/LayerRegion.cpp | 6 ++---- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index ea7b24709d..e22109bede 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -487,7 +487,7 @@ std::vector group_fills(const Layer &layer) params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); params.flow = params.bridge ? //BBS: always enable thick bridge for internal bridge - layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges, params.extrusion_role == erInternalBridgeInfill) : + layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); // Calculate flow spacing for infill pattern generation. diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index b336210cd7..cf7b6d6016 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4715,6 +4715,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, _mm3_per_mm *= m_config.top_solid_infill_flow_ratio; else if (path.role() == erBottomSurface) _mm3_per_mm *= m_config.bottom_solid_infill_flow_ratio; + else if (path.role() == erInternalBridgeInfill) + _mm3_per_mm *= m_config.internal_bridge_flow; double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm; diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 6c66579d5a..52c48dfcd2 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -72,7 +72,7 @@ public: Flow flow(FlowRole role) const; Flow flow(FlowRole role, double layer_height) const; - Flow bridging_flow(FlowRole role, bool thick_bridge = false, bool internal_bridge = false) const; + Flow bridging_flow(FlowRole role, bool thick_bridge = false) const; void slices_to_fill_surfaces_clipped(); void prepare_fill_surfaces(); diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index a89dd3cfa7..69ac1824cc 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -32,16 +32,14 @@ Flow LayerRegion::flow(FlowRole role, double layer_height) const return m_region->flow(*m_layer->object(), role, layer_height, m_layer->id() == 0); } -Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge, bool internal_bridge) const +Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge) const { const PrintRegion ®ion = this->region(); const PrintRegionConfig ®ion_config = region.config(); const PrintObject &print_object = *this->layer()->object(); Flow bridge_flow; auto nozzle_diameter = float(print_object.print()->config().nozzle_diameter.get_at(region.extruder(role) - 1)); - if(internal_bridge) { // internal bridge is using the thick bridge logic with the internal bridge flow ratio - bridge_flow = Flow::bridging_flow(float(sqrt(region_config.internal_bridge_flow)) * nozzle_diameter, nozzle_diameter); - } else if (thick_bridge) { + if (thick_bridge) { // The old Slic3r way (different from all other slicers): Use rounded extrusions. // Get the configured nozzle_diameter for the extruder associated to the flow role requested. // Here this->extruder(role) - 1 may underflow to MAX_INT, but then the get_at() will follback to zero'th element, so everything is all right. From f8990253631c38cede38e2fe60a16b4967569029 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 10:24:12 +0800 Subject: [PATCH 04/93] Revert "Adding new nozzle profiles for the Creality Ender-5 Pro (2019) (#2817)" This reverts commit eab8139d3c300d0b9f7f9b9798c963d5be0bca23. --- resources/profiles/Creality.json | 208 +----------------- .../filament/Creality Generic ABS.json | 9 +- .../filament/Creality Generic ASA.json | 9 +- .../filament/Creality Generic PETG.json | 9 +- .../filament/Creality Generic PLA.json | 9 +- ...ality Ender-5 Pro (2019) (0.2 nozzle).json | 32 --- ...lity Ender-5 Pro (2019) (0.25 nozzle).json | 32 --- ...ality Ender-5 Pro (2019) (0.3 nozzle).json | 32 --- ...ality Ender-5 Pro (2019) (0.5 nozzle).json | 32 --- ...ality Ender-5 Pro (2019) (0.6 nozzle).json | 32 --- ...ality Ender-5 Pro (2019) (0.8 nozzle).json | 32 --- ...ality Ender-5 Pro (2019) (1.0 nozzle).json | 32 --- ...eality Ender-5 Pro (2019) 0.4 nozzle.json} | 4 +- .../machine/Creality Ender-5 Pro (2019).json | 2 +- ...reality Ender5Pro (2019) (0.2 nozzle).json | 12 - ...eality Ender5Pro (2019) (0.25 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.3 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.2 nozzle).json | 12 - ...eality Ender5Pro (2019) (0.25 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.3 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.2 nozzle).json | 12 - ...eality Ender5Pro (2019) (0.25 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.3 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.5 nozzle).json | 12 - ...12mm Fine @Creality Ender5Pro (2019).json} | 4 +- ...m Optimal @Creality Ender5Pro (2019).json} | 4 +- ...reality Ender5Pro (2019) (0.2 nozzle).json | 12 - ...eality Ender5Pro (2019) (0.25 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.3 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.5 nozzle).json | 12 - ...reality Ender5Pro (2019) (0.6 nozzle).json | 12 - ...eality Ender5Pro (2019) (0.25 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.3 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.5 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.6 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.8 nozzle).json | 11 - ... Standard @Creality Ender5Pro (2019).json} | 4 +- ...reality Ender5Pro (2019) (0.3 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.5 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.6 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.8 nozzle).json | 11 - ...4mm Draft @Creality Ender5Pro (2019).json} | 4 +- ...reality Ender5Pro (2019) (0.5 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.6 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.8 nozzle).json | 11 - ...reality Ender5Pro (2019) (1.0 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.5 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.6 nozzle).json | 11 - ...reality Ender5Pro (2019) (0.8 nozzle).json | 11 - ...reality Ender5Pro (2019) (1.0 nozzle).json | 11 - .../fdm_process_creality_common_0_2.json | 107 --------- .../fdm_process_creality_common_0_25.json | 107 --------- .../fdm_process_creality_common_0_3.json | 107 --------- .../fdm_process_creality_common_0_5.json | 107 --------- .../fdm_process_creality_common_0_6.json | 107 --------- .../fdm_process_creality_common_0_8.json | 107 --------- .../fdm_process_creality_common_1_0.json | 107 --------- 57 files changed, 27 insertions(+), 1579 deletions(-) delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.2 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.8 nozzle).json delete mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (1.0 nozzle).json rename resources/profiles/Creality/machine/{Creality Ender-5 Pro (2019) (0.4 nozzle).json => Creality Ender-5 Pro (2019) 0.4 nozzle.json} (87%) delete mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle).json rename resources/profiles/Creality/process/{0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle).json => 0.12mm Fine @Creality Ender5Pro (2019).json} (96%) rename resources/profiles/Creality/process/{0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle).json => 0.15mm Optimal @Creality Ender5Pro (2019).json} (96%) delete mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle).json rename resources/profiles/Creality/process/{0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle).json => 0.20mm Standard @Creality Ender5Pro (2019).json} (96%) delete mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle).json rename resources/profiles/Creality/process/{0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle).json => 0.24mm Draft @Creality Ender5Pro (2019).json} (96%) delete mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle).json delete mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle).json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_2.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_25.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_3.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_5.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_6.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_8.json delete mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_1_0.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index a602307d82..7c9e40ea84 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -78,66 +78,14 @@ "name": "fdm_process_creality_common", "sub_path": "process/fdm_process_creality_common.json" }, - { - "name": "fdm_process_creality_common_0_2", - "sub_path": "process/fdm_process_creality_common_0_2.json" - }, - { - "name": "fdm_process_creality_common_0_25", - "sub_path": "process/fdm_process_creality_common_0_25.json" - }, - { - "name": "fdm_process_creality_common_0_3", - "sub_path": "process/fdm_process_creality_common_0_3.json" - }, - { - "name": "fdm_process_creality_common_0_5", - "sub_path": "process/fdm_process_creality_common_0_5.json" - }, - { - "name": "fdm_process_creality_common_0_6", - "sub_path": "process/fdm_process_creality_common_0_6.json" - }, - { - "name": "fdm_process_creality_common_0_8", - "sub_path": "process/fdm_process_creality_common_0_8.json" - }, - { - "name": "fdm_process_creality_common_1_0", - "sub_path": "process/fdm_process_creality_common_1_0.json" - }, { "name": "0.08mm SuperDetail @Creality CR-6 0.2", "sub_path": "process/0.08mm SuperDetail @Creality CR-6 0.2.json" }, - { - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle)", - "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle).json" - }, - { - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle)", - "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle).json" - }, - { - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, { "name": "0.10mm HighDetail @Creality CR-6 0.4.json", "sub_path": "process/0.10mm HighDetail @Creality CR-6 0.4.json" }, - { - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle)", - "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle).json" - }, - { - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle)", - "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle).json" - }, - { - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, { "name": "0.12mm Fine @Creality CR10Max", "sub_path": "process/0.12mm Fine @Creality CR10Max.json" @@ -155,24 +103,8 @@ "sub_path": "process/0.12mm Fine @Creality Ender3V2.json" }, { - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle)", - "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle).json" - }, - { - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle)", - "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle).json" - }, - { - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, - { - "name": "0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle)", - "sub_path": "process/0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle).json" - }, - { - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle).json" + "name": "0.12mm Fine @Creality Ender5Pro (2019)", + "sub_path": "process/0.12mm Fine @Creality Ender5Pro (2019).json" }, { "name": "0.16mm Optimal @Creality CR10V2", @@ -203,28 +135,8 @@ "sub_path": "process/0.16mm Optimal @Creality Ender5Plus.json" }, { - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, - { - "name": "0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle)", - "sub_path": "process/0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle).json" + "name": "0.15mm Optimal @Creality Ender5Pro (2019)", + "sub_path": "process/0.15mm Optimal @Creality Ender5Pro (2019).json" }, { "name": "0.16mm Optimal @Creality Ender5S", @@ -261,8 +173,8 @@ { "name": "0.20mm Standard @Creality CR-6 0.6", "sub_path": "process/0.20mm Standard @Creality CR-6 0.6.json" - }, - { + }, + { "name": "0.20mm Standard @Creality Ender3", "sub_path": "process/0.20mm Standard @Creality Ender3.json" }, @@ -287,28 +199,8 @@ "sub_path": "process/0.20mm Standard @Creality Ender5Plus.json" }, { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle)", - "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle).json" + "name": "0.20mm Standard @Creality Ender5Pro (2019)", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019).json" }, { "name": "0.20mm Standard @Creality Ender5S", @@ -351,24 +243,8 @@ "sub_path": "process/0.24mm Draft @Creality Ender3V2.json" }, { - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle)", - "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle)", - "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle)", - "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle)", - "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle).json" + "name": "0.24mm Draft @Creality Ender5Pro (2019)", + "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019).json" }, { "name": "0.28mm SuperDraft @Creality CR-6 0.4", @@ -378,22 +254,6 @@ "name": "0.28mm SuperDraft @Creality CR-6 0.6", "sub_path": "process/0.28mm SuperDraft @Creality CR-6 0.6.json" }, - { - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle).json" - }, - { - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle)", - "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle).json" - }, - { - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle)", - "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle).json" - }, - { - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle)", - "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle).json" - }, { "name": "0.32mm Chunky @Creality CR-6 0.6", "sub_path": "process/0.32mm Chunky @Creality CR-6 0.6.json" @@ -406,22 +266,6 @@ "name": "0.36mm SuperChunky @Creality CR-6 0.6", "sub_path": "process/0.36mm SuperChunky @Creality CR-6 0.6.json" }, - { - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle)", - "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle).json" - }, - { - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle)", - "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle).json" - }, - { - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle)", - "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle).json" - }, - { - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle)", - "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle).json" - }, { "name": "0.40mm Draft @Creality CR-6 0.8", "sub_path": "process/0.40mm Draft @Creality CR-6 0.8.json" @@ -631,36 +475,8 @@ "sub_path": "machine/Creality Ender-5 Plus 0.4 nozzle.json" }, { - "name": "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.2 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.25 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.3 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.4 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.4 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.5 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.6 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (0.8 nozzle).json" - }, - { - "name": "Creality Ender-5 Pro (2019) (1.0 nozzle)", - "sub_path": "machine/Creality Ender-5 Pro (2019) (1.0 nozzle).json" + "name": "Creality Ender-5 Pro (2019) 0.4 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json" }, { "name": "Creality Ender-5S 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic ABS.json b/resources/profiles/Creality/filament/Creality Generic ABS.json index 88526e3f07..482d180125 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS.json +++ b/resources/profiles/Creality/filament/Creality Generic ABS.json @@ -25,14 +25,7 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", - "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "Creality Ender-5 Pro (2019) (0.4 nozzle)", - "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "Creality Ender-5 Pro (2019) (1.0 nozzle)", + "Creality Ender-5 Pro (2019) 0.4 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic ASA.json b/resources/profiles/Creality/filament/Creality Generic ASA.json index cfc0be665d..97970fc562 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA.json +++ b/resources/profiles/Creality/filament/Creality Generic ASA.json @@ -25,14 +25,7 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", - "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "Creality Ender-5 Pro (2019) (0.4 nozzle)", - "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "Creality Ender-5 Pro (2019) (1.0 nozzle)", + "Creality Ender-5 Pro (2019) 0.4 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PETG.json b/resources/profiles/Creality/filament/Creality Generic PETG.json index 8ef6079e0b..715f4d7607 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG.json @@ -35,14 +35,7 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", - "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "Creality Ender-5 Pro (2019) (0.4 nozzle)", - "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "Creality Ender-5 Pro (2019) (1.0 nozzle)", + "Creality Ender-5 Pro (2019) 0.4 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA.json b/resources/profiles/Creality/filament/Creality Generic PLA.json index 387f57f011..a63a760af2 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA.json @@ -26,14 +26,7 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", - "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "Creality Ender-5 Pro (2019) (0.4 nozzle)", - "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "Creality Ender-5 Pro (2019) (1.0 nozzle)", + "Creality Ender-5 Pro (2019) 0.4 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.2 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.2 nozzle).json deleted file mode 100644 index 7252f3a347..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.2 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.2 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.2", - "default_print_profile": "0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle)", - "max_layer_height": [ - "0.16" - ], - "min_layer_height": [ - "0.05" - ], - "nozzle_diameter": [ - "0.2" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.25 nozzle).json deleted file mode 100644 index 589ae4ef39..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.25", - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle)", - "max_layer_height": [ - "0.2" - ], - "min_layer_height": [ - "0.06" - ], - "nozzle_diameter": [ - "0.25" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.3 nozzle).json deleted file mode 100644 index f9f84d37bf..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.3", - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle)", - "max_layer_height": [ - "0.24" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_diameter": [ - "0.3" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.5 nozzle).json deleted file mode 100644 index 5bd4b6eac7..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.5", - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle)", - "max_layer_height": [ - "0.4" - ], - "min_layer_height": [ - "0.12" - ], - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.6 nozzle).json deleted file mode 100644 index be4951fece..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.6", - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle)", - "max_layer_height": [ - "0.48" - ], - "min_layer_height": [ - "0.16" - ], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.8 nozzle).json deleted file mode 100644 index c1ad60e649..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.8 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.8 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "0.8", - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle)", - "max_layer_height": [ - "0.64" - ], - "min_layer_height": [ - "0.2" - ], - "nozzle_diameter": [ - "0.8" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (1.0 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (1.0 nozzle).json deleted file mode 100644 index d843420ee8..0000000000 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (1.0 nozzle).json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (1.0 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_creality_common", - "printer_model": "Creality Ender-5 Pro (2019)", - "default_filament_profile": [ - "Creality Generic PLA" - ], - "printer_variant": "1.0", - "default_print_profile": "0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle)", - "max_layer_height": [ - "0.80" - ], - "min_layer_height": [ - "0.25" - ], - "nozzle_diameter": [ - "1.0" - ], - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "300", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json similarity index 87% rename from resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.4 nozzle).json rename to resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json index 1babc0db4c..fe029ae8d3 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json @@ -1,7 +1,7 @@ { "type": "machine", "setting_id": "GM001", - "name": "Creality Ender-5 Pro (2019) (0.4 nozzle)", + "name": "Creality Ender-5 Pro (2019) 0.4 nozzle", "from": "system", "instantiation": "true", "inherits": "fdm_creality_common", @@ -9,7 +9,7 @@ "default_filament_profile": [ "Creality Generic PLA" ], - "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle)", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019)", "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json index 3f71b5fbc4..b6d9ee1c97 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Creality Ender-5 Pro (2019)", "model_id": "Creality_Ender_5_Pro_2019", - "nozzle_diameter": "0.2;0.25;0.3;0.4;0.5;0.6;0.8;1.0", + "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "Creality", "bed_model": "creality_ender5pro_buildplate_model.stl", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle).json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle).json deleted file mode 100644 index 8b9f027e3b..0000000000 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.2 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_2", - "bottom_shell_layers": "9", - "top_shell_layers": "11", - "layer_height": "0.08", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle).json deleted file mode 100644 index 80f7962f52..0000000000 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_25", - "bottom_shell_layers": "9", - "top_shell_layers": "11", - "layer_height": "0.08", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index 48a3fb6f48..0000000000 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "9", - "top_shell_layers": "11", - "layer_height": "0.08", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle).json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle).json deleted file mode 100644 index ee580beee3..0000000000 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.2 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_2", - "bottom_shell_layers": "7", - "top_shell_layers": "9", - "layer_height": "0.1", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle).json deleted file mode 100644 index 09e4383061..0000000000 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_25", - "bottom_shell_layers": "7", - "top_shell_layers": "9", - "layer_height": "0.1", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index 3ab61528ae..0000000000 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.10mm HighDetail @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "7", - "top_shell_layers": "9", - "layer_height": "0.1", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle).json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle).json deleted file mode 100644 index c7e669aff1..0000000000 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.2 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_2", - "bottom_shell_layers": "6", - "top_shell_layers": "7", - "layer_height": "0.12", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle).json deleted file mode 100644 index daa30bc87d..0000000000 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_25", - "bottom_shell_layers": "6", - "top_shell_layers": "7", - "layer_height": "0.12", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index a9b9f144a0..0000000000 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "6", - "top_shell_layers": "7", - "layer_height": "0.12", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index 6cfc7f79ff..0000000000 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.12mm Detail @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "6", - "top_shell_layers": "7", - "layer_height": "0.12", - "bridge_flow": "0.7" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle).json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json similarity index 96% rename from resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle).json rename to resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json index a3b3608867..95e24872c8 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @Creality Ender5Pro (2019) (0.4 nozzle)", + "name": "0.12mm Fine @Creality Ender5Pro (2019)", "from": "system", "inherits": "fdm_process_creality_common", "instantiation": "true", @@ -103,6 +103,6 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.4 nozzle)" + "Creality Ender-5 Pro (2019) 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle).json b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json similarity index 96% rename from resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle).json rename to resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json index e6eace18cc..9404f9d2f8 100644 --- a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @Creality Ender5Pro (2019) (0.4 nozzle)", + "name": "0.15mm Optimal @Creality Ender5Pro (2019)", "from": "system", "inherits": "fdm_process_creality_common", "instantiation": "true", @@ -103,6 +103,6 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.4 nozzle)" + "Creality Ender-5 Pro (2019) 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle).json deleted file mode 100644 index 3ae935a983..0000000000 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.2 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_2", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "layer_height": "0.16", - "bridge_flow": "0.85" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle).json deleted file mode 100644 index 4748d4d118..0000000000 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_25", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "layer_height": "0.16", - "bridge_flow": "0.85" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index f6e198e0f3..0000000000 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "layer_height": "0.16", - "bridge_flow": "0.85" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index dc5cab3e6e..0000000000 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "layer_height": "0.16", - "bridge_flow": "0.85" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle).json deleted file mode 100644 index 4ecfa311b6..0000000000 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @Creality Ender5Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_6", - "bottom_shell_layers": "5", - "top_shell_layers": "7", - "bridge_flow": "0.85", - "layer_height": "0.16" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle).json deleted file mode 100644 index 115ebb0b48..0000000000 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.25 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_25", - "bottom_shell_layers": "4", - "top_shell_layers": "5", - "layer_height": "0.20" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index da2b648875..0000000000 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "4", - "top_shell_layers": "5", - "layer_height": "0.20" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index dae5dac6f2..0000000000 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "4", - "top_shell_layers": "5", - "layer_height": "0.20" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle).json deleted file mode 100644 index 0dc39d710a..0000000000 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_6", - "bottom_shell_layers": "4", - "top_shell_layers": "4", - "layer_height": "0.20" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle).json deleted file mode 100644 index 424ce00241..0000000000 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.8 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_8", - "bottom_shell_layers": "4", - "top_shell_layers": "5", - "layer_height": "0.20" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json similarity index 96% rename from resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle).json rename to resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json index 0f363058f0..04b6b36d34 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @Creality Ender5Pro (2019) (0.4 nozzle)", + "name": "0.20mm Standard @Creality Ender5Pro (2019)", "from": "system", "inherits": "fdm_process_creality_common", "instantiation": "true", @@ -103,6 +103,6 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.4 nozzle)" + "Creality Ender-5 Pro (2019) 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle).json deleted file mode 100644 index a6598bd7ac..0000000000 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.3 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_3", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.24" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index 4b69460109..0000000000 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.24" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle).json deleted file mode 100644 index 5fb0dc077c..0000000000 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_6", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.24" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle).json deleted file mode 100644 index d72b9bb75f..0000000000 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.8 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_8", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.24" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json similarity index 96% rename from resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle).json rename to resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json index 0eaf237d7c..d6df736aba 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @Creality Ender5Pro (2019) (0.4 nozzle)", + "name": "0.24mm Draft @Creality Ender5Pro (2019)", "from": "system", "inherits": "fdm_process_creality_common", "instantiation": "true", @@ -103,6 +103,6 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.4 nozzle)" + "Creality Ender-5 Pro (2019) 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index 1bcc1b9375..0000000000 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.28" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle).json deleted file mode 100644 index c2ffcd3a17..0000000000 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_6", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.28" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle).json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle).json deleted file mode 100644 index be0f9dafa0..0000000000 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (0.8 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_8", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.28" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle).json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle).json deleted file mode 100644 index 2dfc5ae38b..0000000000 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) (1.0 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_1_0", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.28" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle).json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle).json deleted file mode 100644 index 6f9756b36e..0000000000 --- a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.5 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_5", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.36" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle).json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle).json deleted file mode 100644 index 9e556a7c53..0000000000 --- a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.6 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_6", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.36" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle).json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle).json deleted file mode 100644 index f682e1a4a9..0000000000 --- a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (0.8 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_0_8", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.36" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle).json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle).json deleted file mode 100644 index 1d565411fb..0000000000 --- a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle).json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.36mm Chunky @Creality Ender5Pro (2019) (1.0 nozzle)", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_creality_common_1_0", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "layer_height": "0.36" -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json deleted file mode 100644 index d93df94b3e..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_2", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.2", - "line_width": "0.22", - "initial_layer_line_width": "0.2", - "sparse_infill_line_width": "0.22", - "inner_wall_line_width": "0.22", - "internal_solid_infill_line_width": "0.22", - "support_line_width": "0.18", - "top_surface_line_width": "0.2", - "initial_layer_print_height": "0.12", - "wall_loops": "6", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.2 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json deleted file mode 100644 index 8040cb846f..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_25", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.26", - "line_width": "0.28", - "initial_layer_line_width": "0.26", - "sparse_infill_line_width": "0.28", - "inner_wall_line_width": "0.28", - "internal_solid_infill_line_width": "0.28", - "support_line_width": "0.23", - "top_surface_line_width": "0.25", - "initial_layer_print_height": "0.12", - "wall_loops": "5", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.25 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json deleted file mode 100644 index 4e50dbc4b9..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_3", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.31", - "line_width": "0.33", - "initial_layer_line_width": "0.31", - "sparse_infill_line_width": "0.33", - "inner_wall_line_width": "0.33", - "internal_solid_infill_line_width": "0.33", - "support_line_width": "0.27", - "top_surface_line_width": "0.3", - "wall_loops": "4", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.3 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json deleted file mode 100644 index 3c1a20b6a1..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_5", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.52", - "line_width": "0.55", - "initial_layer_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "inner_wall_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "support_line_width": "0.45", - "top_surface_line_width": "0.5", - "wall_loops": "3", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.5 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json deleted file mode 100644 index 579aa1fa7b..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_6", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.63", - "line_width": "0.66", - "initial_layer_line_width": "0.63", - "sparse_infill_line_width": "0.66", - "inner_wall_line_width": "0.66", - "internal_solid_infill_line_width": "0.66", - "support_line_width": "0.54", - "top_surface_line_width": "0.6", - "wall_loops": "2", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.6 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json deleted file mode 100644 index 43959bc9dc..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_0_8", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "0.84", - "line_width": "0.88", - "initial_layer_line_width": "0.84", - "sparse_infill_line_width": "0.88", - "inner_wall_line_width": "0.88", - "internal_solid_infill_line_width": "0.88", - "support_line_width": "0.72", - "top_surface_line_width": "0.8", - "initial_layer_print_height": "0.32", - "wall_loops": "2", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (0.8 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json b/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json deleted file mode 100644 index 72a927710d..0000000000 --- a/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "process", - "name": "fdm_process_creality_common_1_0", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_creality_common", - "outer_wall_line_width": "1.05", - "line_width": "1.10", - "initial_layer_line_width": "1.05", - "sparse_infill_line_width": "1.10", - "inner_wall_line_width": "1.10", - "internal_solid_infill_line_width": "1.10", - "support_line_width": "0.9", - "top_surface_line_width": "1.0", - "initial_layer_print_height": "0.32", - "wall_loops": "1", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "500", - "top_surface_acceleration": "500", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "travel_acceleration": "700", - "inner_wall_acceleration": "500", - "infill_combination": "0", - "infill_wall_overlap": "23%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "1", - "minimum_sparse_infill_area": "15", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "default", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "15", - "initial_layer_infill_speed": "20", - "outer_wall_speed": "25", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "50", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "Creality Ender-5 Pro (2019) (1.0 nozzle)" - ] -} \ No newline at end of file From 205bf5db3f2a7502e4642c04ef48e026767a533b Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sat, 2 Dec 2023 04:51:14 +0000 Subject: [PATCH 05/93] Feature Merge: Fix for inner-outer-inner mode post BBS feature merge (#2949) Fix for inner-outer-inner mode post BBS feature merge --- src/libslic3r/PerimeterGenerator.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 1a06c939bd..0a02effd37 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1729,9 +1729,7 @@ void PerimeterGenerator::process_classic() // if brim will be printed, reverse the order of perimeters so that // we continue inwards after having finished the brim // TODO: add test for perimeter order - bool is_outer_wall_first = - this->object_config->wall_sequence == WallSequence::OuterInner || - this->object_config->wall_sequence == WallSequence::InnerOuterInner; + bool is_outer_wall_first = this->object_config->wall_sequence == WallSequence::OuterInner; if (is_outer_wall_first || //BBS: always print outer wall first when there indeed has brim. (this->layer_id == 0 && @@ -2169,7 +2167,7 @@ void PerimeterGenerator::process_arachne() } // printf("New Layer: Layer ID %d\n",layer_id); //debug - new layer - if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill && layer_id > 0) { // only enable inner outer inner algorithm after first layer + if (this->object_config->wall_sequence == WallSequence::InnerOuterInner && layer_id > 0) { // only enable inner outer inner algorithm after first layer if (ordered_extrusions.size() > 2) { // 3 walls minimum needed to do inner outer inner ordering int position = 0; // index to run the re-ordering for multiple external perimeters in a single island. int arr_i, arr_j = 0; // indexes to run through the walls in the for loops From 643476084afa640d08529c384430bf35d69e31d0 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sat, 2 Dec 2023 04:51:28 +0000 Subject: [PATCH 06/93] Feature Merge: Fix missing options on print window (#2951) Fix missing options on print window - Feature merge --- resources/printers/BL-P001.json | 88 +++++++++++++++++++++++++++++++++ resources/printers/BL-P002.json | 88 +++++++++++++++++++++++++++++++++ resources/printers/C11.json | 3 +- resources/printers/C12.json | 3 +- resources/printers/C13.json | 61 +++++++++++++++++++++++ resources/printers/N1.json | 3 +- resources/printers/version.txt | 2 +- 7 files changed, 244 insertions(+), 4 deletions(-) create mode 100644 resources/printers/BL-P001.json create mode 100644 resources/printers/BL-P002.json create mode 100644 resources/printers/C13.json diff --git a/resources/printers/BL-P001.json b/resources/printers/BL-P001.json new file mode 100644 index 0000000000..fbdea5d750 --- /dev/null +++ b/resources/printers/BL-P001.json @@ -0,0 +1,88 @@ +{ + "00.00.00.00": { + "display_name": "Bambu Lab X1 Carbon", + "print": { + "ipcam": { + "resolution_supported": [ "720p", "1080p" ], + "virtual_camera": "enabled", + "liveview": { + "remote": "enabled" + }, + "file": { + "remote": "enabled", + "model_download": "enabled" + } + }, + "support_motor_noise_cali":false, + "support_tunnel_mqtt":false, + "support_mqtt_alive":false, + "support_command_ams_switch":false, + "support_cloud_print_only":false, + "support_1080dpi":false, + "support_prompt_sound":false, + "support_ams_humidity":false, + "support_auto_recovery_step_loss":false, + "support_auto_leveling":true, + "support_update_remain":false, + "support_timelapse":true, + "support_filament_backup":false, + "support_chamber_fan":true, + "support_aux_fan":true, + "support_send_to_sd":false, + "support_print_all":true, + "support_print_without_sd":true, + "support_flow_calibration":true, + "support_build_plate_marker_detect":false, + "support_lidar_calibration":true, + "support_ai_monitoring":false, + "support_first_layer_inspect":true, + "support_chamber_temp_edit":false, + "support_extrusion_cali":false, + "support_user_preset":false + }, + "model_id":"BL-P001", + "compatible_machine":["BL-P002", "C11", "C12", "C13"], + "printer_type":"3DPrinter-X1-Carbon", + "printer_thumbnail_image":"printer_thumbnail", + "printer_connect_help_image":"input_access_code_x1", + "printer_use_ams_image":"ams_icon", + "use_ams_type":"generic", + "printer_arch":"core_xy", + "printer_series":"series_x1", + "has_cali_line":true, + "printer_is_enclosed":true + }, + "01.01.01.00": { + "print": { + "support_1080dpi":true, + "support_ams_humidity":true, + "support_update_remain":true, + "support_auto_recovery_step_loss":true, + "support_filament_backup":true, + "support_send_to_sd":true, + "support_build_plate_marker_detect":true, + "support_ai_monitoring":true + } + }, + "01.05.06.01" : { + "print": { + "support_command_ams_switch":true + } + }, + "01.05.06.05" : { + "engineer":"00.03.10.05", + "print": { + "support_mqtt_alive":true + } + }, + "01.05.06.06": { + "print": { + "support_tunnel_mqtt":true + } + }, + "01.06.06.00": { + "print": { + "support_user_preset":true + } + } +} \ No newline at end of file diff --git a/resources/printers/BL-P002.json b/resources/printers/BL-P002.json new file mode 100644 index 0000000000..286e552716 --- /dev/null +++ b/resources/printers/BL-P002.json @@ -0,0 +1,88 @@ +{ + "00.00.00.00": { + "display_name": "Bambu Lab X1", + "print": { + "ipcam": { + "resolution_supported": [ "720p", "1080p" ], + "virtual_camera": "enabled", + "liveview": { + "remote": "enabled" + }, + "file": { + "remote": "enabled", + "model_download": "enabled" + } + }, + "support_motor_noise_cali":false, + "support_tunnel_mqtt":false, + "support_mqtt_alive":false, + "support_command_ams_switch":false, + "support_cloud_print_only":false, + "support_1080dpi":false, + "support_prompt_sound":false, + "support_ams_humidity":false, + "support_auto_recovery_step_loss":false, + "support_auto_leveling":true, + "support_update_remain":false, + "support_timelapse":true, + "support_filament_backup":false, + "support_chamber_fan":true, + "support_aux_fan":true, + "support_send_to_sd":false, + "support_print_all":true, + "support_print_without_sd":true, + "support_flow_calibration":true, + "support_build_plate_marker_detect":false, + "support_lidar_calibration":true, + "support_ai_monitoring":false, + "support_first_layer_inspect":true, + "support_chamber_temp_edit":false, + "support_extrusion_cali":false, + "support_user_preset":false + }, + "model_id": "BL-P002", + "compatible_machine":["BL-P001", "C11", "C12", "C13"], + "printer_type": "3DPrinter-X1", + "printer_thumbnail_image": "printer_thumbnail", + "printer_connect_help_image": "input_access_code_x1", + "printer_use_ams_image":"ams_icon", + "use_ams_type":"generic", + "printer_arch" : "core_xy", + "printer_series":"series_x1", + "has_cali_line":true, + "printer_is_enclosed":true + }, + "01.01.01.00": { + "print": { + "support_1080dpi":true, + "support_ams_humidity":true, + "support_update_remain":true, + "support_auto_recovery_step_loss":true, + "support_filament_backup":true, + "support_send_to_sd":true, + "support_build_plate_marker_detect":true, + "support_ai_monitoring":true + } + }, + "01.05.06.01" : { + "print": { + "support_command_ams_switch":true + } + }, + "01.05.06.05" : { + "engineer":"00.03.10.05", + "print": { + "support_mqtt_alive":true + } + }, + "01.05.06.06": { + "print": { + "support_tunnel_mqtt":true + } + }, + "01.06.06.00": { + "print": { + "support_user_preset":true + } + } +} \ No newline at end of file diff --git a/resources/printers/C11.json b/resources/printers/C11.json index d008dde8f0..5fb53b3f0f 100644 --- a/resources/printers/C11.json +++ b/resources/printers/C11.json @@ -81,7 +81,8 @@ "file": { "remote": "enabled" } - } + }, + "support_user_preset":true } } } diff --git a/resources/printers/C12.json b/resources/printers/C12.json index 06d50b9476..d3a6c6d995 100644 --- a/resources/printers/C12.json +++ b/resources/printers/C12.json @@ -73,7 +73,8 @@ "file": { "remote": "enabled" } - } + }, + "support_user_preset":true } } } diff --git a/resources/printers/C13.json b/resources/printers/C13.json new file mode 100644 index 0000000000..c8bce2ad6a --- /dev/null +++ b/resources/printers/C13.json @@ -0,0 +1,61 @@ +{ + "00.00.00.00": { + "display_name": "Bambu Lab X1E", + "print": { + "ipcam": { + "resolution_supported": [ "720p", "1080p" ], + "virtual_camera": "enabled", + "liveview": { + "remote": "enabled" + }, + "file": { + "remote": "enabled", + "model_download": "enabled" + } + }, + "support_motor_noise_cali":false, + "support_tunnel_mqtt":true, + "support_mqtt_alive":true, + "support_command_ams_switch":true, + "support_ssl_for_mqtt":true, + "support_cloud_print_only":false, + "support_1080dpi":true, + "support_prompt_sound":false, + "support_ams_humidity":true, + "support_auto_recovery_step_loss":true, + "support_auto_leveling":true, + "support_update_remain":true, + "support_timelapse":true, + "support_filament_backup":true, + "support_chamber_fan":true, + "support_aux_fan":true, + "support_send_to_sd":true, + "support_print_all":true, + "support_print_without_sd":true, + "support_flow_calibration":true, + "support_build_plate_marker_detect":true, + "support_lidar_calibration":true, + "support_ai_monitoring":true, + "support_first_layer_inspect":true, + "support_chamber_temp_edit":true, + "support_extrusion_cali":false, + "support_user_preset":false, + "bed_temperature_limit": 110, + "nozzle_max_temperature": 320 + }, + "model_id": "C13", + "compatible_machine":["BL-P001", "BL-P002", "C11", "C12"], + "printer_type": "C13", + "printer_thumbnail_image": "printer_thumbnail", + "printer_connect_help_image": "input_access_code_x1", + "printer_use_ams_image":"ams_icon", + "use_ams_type":"generic", + "printer_arch" : "core_xy", + "printer_series":"series_x1", + "has_cali_line":true, + "printer_is_enclosed":true + }, + "01.05.06.06": { + "rv2166": "00.00.21.20" + } +} \ No newline at end of file diff --git a/resources/printers/N1.json b/resources/printers/N1.json index 2c6131b678..85da862315 100644 --- a/resources/printers/N1.json +++ b/resources/printers/N1.json @@ -56,7 +56,8 @@ "file": { "remote": "enabled" } - } + }, + "support_user_preset":true } } } \ No newline at end of file diff --git a/resources/printers/version.txt b/resources/printers/version.txt index 8e3f706a56..e22a886294 100644 --- a/resources/printers/version.txt +++ b/resources/printers/version.txt @@ -1 +1 @@ -01.08.00.02 \ No newline at end of file +01.08.00.03 \ No newline at end of file From be91ae6ebedd3a4cce91de82efecb6b81d91a84c Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 01:27:09 +0800 Subject: [PATCH 07/93] disable misleading 3mf version warning (cherry picked from commit b4b98053834be05a79363a4c6f80d927192c982e) --- src/slic3r/GUI/Plater.cpp | 76 +++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f3e05a93c2..97978dc1d1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3421,50 +3421,38 @@ std::vector Plater::priv::load_files(const std::vector& input_ // Is there any modifier or advanced config data? for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset(); } - } else if (load_config && (file_version > app_version)) { - if (config_substitutions.unrecogized_keys.size() > 0) { - wxString text = wxString::Format(_L("This slicer file version %s is newer than %s's version:"), - file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME)); - text += "\n"; - bool first = true; - // std::string context = into_u8(text); - wxString context = text; - if (wxGetApp().app_config->get("user_mode") == "develop") { - for (auto &key : config_substitutions.unrecogized_keys) { - context += " -"; - context += key; - context += ";\n"; - first = false; - } - } - wxString append = _L("Would you like to update your Bambu Studio software to enable all functionality in this slicer file?\n"); - context += "\n\n"; - // context += into_u8(append); - context += append; - MessageDialog msg_window(q, context, wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Newer 3mf version"), wxYES | wxNO | wxICON_INFORMATION); - auto res = msg_window.ShowModal(); - if (res == wxID_YES) { - wxGetApp().check_new_version(true, 1); - } else if (res == wxID_NO) { - show_info(q, _L("you can always update Bambu Studio at your convenience. The slicer file will now be loaded without full functionality.")); - } - } - else { - //if the minor version is not matched - if (file_version.min() != app_version.min()) { - wxString text = wxString::Format(_L("This slicer file version %s is newer than %s's version.\n\nWould you like to update your Bambu Studio software to enable all functionality in this slicer file?"), - file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME)); - text += "\n"; - MessageDialog msg_window(q, text, wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Newer 3mf version"), wxYES | wxNO | wxICON_INFORMATION); - auto res = msg_window.ShowModal(); - if (res == wxID_YES) { - wxGetApp().check_new_version(true, 1); - } else if (res == wxID_NO) { - show_info(q, _L("you can always update Bambu Studio at your convenience. The slicer file will now be loaded without full functionality.")); - } - } - } - } else if (!load_config) { + } + // else if (load_config && (file_version > app_version)) { + // if (config_substitutions.unrecogized_keys.size() > 0) { + // wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"), + // file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); + // text += "\n"; + // bool first = true; + // // std::string context = into_u8(text); + // wxString context = text; + // for (auto &key : config_substitutions.unrecogized_keys) { + // context += " -"; + // context += key; + // context += ";\n"; + // first = false; + // } + // wxString append = _L("You'd better upgrade your software.\n"); + // context += "\n\n"; + // // context += into_u8(append); + // context += append; + // show_info(q, context, _L("Newer 3mf version")); + // } + // else { + // //if the minor version is not matched + // if (file_version.min() != app_version.min()) { + // wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."), + // file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); + // text += "\n"; + // show_info(q, text, _L("Newer 3mf version")); + // } + // } + // } + else if (!load_config) { // reset config except color for (ModelObject *model_object : model.objects) { bool has_extruder = model_object->config.has("extruder"); From cd1be11458eec490f7896498fd2cf5ea78f1db79 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 01:27:43 +0800 Subject: [PATCH 08/93] thick internal bridges (#2954) (cherry picked from commit f2f2ede5d5affe24576f9966e6db6ea31ae28101) --- src/libslic3r/Fill/Fill.cpp | 5 +++-- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 9 +++++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Tab.cpp | 3 ++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index e22109bede..d68c14ce51 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -485,9 +485,10 @@ std::vector group_fills(const Layer &layer) // Calculate the actual flow we'll be using for this infill. params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); + const bool is_thick_bridge = surface.is_bridge() && (surface.is_internal_bridge() ? object_config.thick_internal_bridges : object_config.thick_bridges); params.flow = params.bridge ? - //BBS: always enable thick bridge for internal bridge - layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : + //Orca: enable thick bridge based on config + layerm.bridging_flow(extrusion_role, is_thick_bridge) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); // Calculate flow spacing for infill pattern generation. diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 6e8f86e16d..9221796e2f 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -786,7 +786,7 @@ static std::vector s_Preset_print_options { "independent_support_layer_height", "support_angle", "support_interface_top_layers", "support_interface_bottom_layers", "support_interface_pattern", "support_interface_spacing", "support_interface_loop_pattern", - "support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang", + "support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "thick_internal_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang", "filename_format", "wall_filament", "support_bottom_z_distance", "sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament","support_interface_not_for_body", "ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index bc6321771a..bb6efdaaa3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1202,6 +1202,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("thick_internal_bridges", coBool); + def->label = L("Thick internal bridges"); + def->category = L("Quality"); + def->tooltip = L("If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, " + "consider turning it off if you are using large nozzles."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(true)); + + def = this->add("max_bridge_length", coFloat); def->label = L("Max bridge length"); def->category = L("Support"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index b9f877ac50..d2f961a8bd 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -741,7 +741,9 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionEnum, support_style)) // BBS //((ConfigOptionBool, independent_support_layer_height)) + // Orca internal thick bridge ((ConfigOptionBool, thick_bridges)) + ((ConfigOptionBool, thick_internal_bridges)) // Overhang angle threshold. ((ConfigOptionInt, support_threshold_angle)) ((ConfigOptionFloat, support_object_xy_distance)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 2bb94cfccf..5742d44548 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1949,9 +1949,10 @@ void TabPrint::build() optgroup->append_single_option_line("wall_sequence"); optgroup->append_single_option_line("is_infill_first"); optgroup->append_single_option_line("bridge_flow"); - optgroup->append_single_option_line("internal_bridge_flow"); + optgroup->append_single_option_line("internal_bridge_flow"); optgroup->append_single_option_line("bridge_density"); optgroup->append_single_option_line("thick_bridges"); + optgroup->append_single_option_line("thick_internal_bridges"); optgroup->append_single_option_line("top_solid_infill_flow_ratio"); optgroup->append_single_option_line("bottom_solid_infill_flow_ratio"); optgroup->append_single_option_line("only_one_wall_top"); From bfd8ac6e4038d550910cca1ce921d930f6253b25 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 12:45:02 +0800 Subject: [PATCH 09/93] Improve PA calibration Line method so it works for bed origin not in (0,0) (cherry picked from commit f0522065d8162714c735205af71a35528cb621c8) --- src/libslic3r/calib.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index f392af9eb7..7d279e1895 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -439,11 +439,8 @@ std::string CalibPressureAdvanceLine::generate_test(double start_pa /*= 0*/, dou m_length_long = 40 + std::min(w - 120.0, 0.0); - auto startx = (w - m_length_short * 2 - m_length_long - 20) / 2; - auto starty = (h - count * m_space_y) / 2; - if (is_delta()) { - CalibPressureAdvanceLine::delta_modify_start(startx, starty, count); - } + auto startx = bed_ext.min.x() + (w - m_length_short * 2 - m_length_long - 20) / 2; + auto starty = bed_ext.min.y() + (h - count * m_space_y) / 2; return print_pa_lines(startx, starty, start_pa, step_pa, count); } From c6bf6ec15c96a38ed9b534e5c8edc84241e8241a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 13:03:09 +0800 Subject: [PATCH 10/93] update locale --- localization/i18n/OrcaSlicer.pot | 856 +- localization/i18n/cs/OrcaSlicer_cs.po | 991 ++- localization/i18n/de/OrcaSlicer_de.po | 1056 ++- localization/i18n/en/OrcaSlicer_en.po | 920 +- localization/i18n/es/OrcaSlicer_es.po | 1005 ++- localization/i18n/fr/OrcaSlicer_fr.po | 988 ++- localization/i18n/hu/OrcaSlicer_hu.po | 910 +- localization/i18n/it/OrcaSlicer_it.po | 1000 ++- localization/i18n/ja/OrcaSlicer_ja.po | 909 +- localization/i18n/ko/OrcaSlicer_ko.po | 980 ++- localization/i18n/nl/OrcaSlicer_nl.po | 912 +- localization/i18n/ru/OrcaSlicer_ru.po | 8707 +++++++++++++------ localization/i18n/sv/OrcaSlicer_sv.po | 915 +- localization/i18n/tr/OrcaSlicer_tr.po | 996 ++- localization/i18n/uk/OrcaSlicer_uk.po | 973 ++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 925 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 973 ++- 17 files changed, 19466 insertions(+), 4550 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 50c3cdb284..8e202f5038 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1161,9 +1161,6 @@ msgstr "" msgid "Click the icon to shift this object to the bed" msgstr "" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "" @@ -1661,7 +1658,7 @@ msgstr "" msgid "Orienting" msgstr "" -msgid "Filling bed " +msgid "Filling" msgstr "" msgid "Bed filling canceled." @@ -2427,16 +2424,6 @@ msgid "" "NO - Keep Independent Support Layer Height" msgstr "" -#, possible-boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "" - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2535,6 +2522,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "" @@ -2994,7 +2993,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3362,6 +3361,12 @@ msgstr "" msgid "Use Orthogonal View" msgstr "" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "" @@ -3722,6 +3727,9 @@ msgstr "" msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -3877,7 +3885,9 @@ msgstr "" msgid "Layer: %d/%d" msgstr "" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" msgid "Still unload" @@ -4404,31 +4414,6 @@ msgstr "" msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" -#, possible-c-format, possible-boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, possible-c-format, possible-boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "" @@ -4896,12 +4881,6 @@ msgstr "" msgid "If enabled, useful hints are displayed at startup." msgstr "" -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5266,6 +5245,9 @@ msgstr "" msgid "(LAN)" msgstr "" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "" @@ -5504,6 +5486,12 @@ msgstr "" msgid "The printer does not support sending to printer SD card." msgstr "" +msgid "Slice ok." +msgstr "" + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "" @@ -5654,11 +5642,25 @@ msgid "" "independent support layer height" msgstr "" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -5991,6 +5993,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "" msgstr[1] "" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, possible-boost-format msgid "Are you sure to %1% the selected preset?" msgstr "" @@ -6947,6 +6955,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "" @@ -7008,11 +7035,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7320,6 +7342,15 @@ msgid "" "material for bridge, to improve sag" msgstr "" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -7612,6 +7643,15 @@ msgid "" "shorter bridged distances." msgstr "" +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "" @@ -8043,8 +8083,10 @@ msgstr "" msgid "Sparse infill density" msgstr "" -#, possible-c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, possible-c-format, possible-boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" msgid "Sparse infill pattern" @@ -8242,10 +8284,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8291,6 +8333,12 @@ msgid "" "segment" msgstr "" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -9419,10 +9467,10 @@ msgid "" "filament for support and current filament is used" msgstr "" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -9651,10 +9699,10 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" +msgid "Support wall loops" msgstr "" -msgid "This setting specify the count of walls around tree support" +msgid "This setting specify the count of walls around support" msgstr "" msgid "Tree support with infill" @@ -10013,10 +10061,6 @@ msgstr "" msgid "invalid value " msgstr "" -#, possible-c-format, possible-boost-format -msgid " doesn't work at 100%% density " -msgstr "" - msgid "Invalid value when spiral vase mode is enabled: " msgstr "" @@ -10859,6 +10903,680 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, possible-boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, possible-boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, possible-boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, possible-boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, possible-boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, possible-boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." msgstr "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index b3857c9568..e5509b2ae5 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -1198,9 +1198,6 @@ msgstr "Kliknutím na ikonu upravíte barevnou malbu objektu" msgid "Click the icon to shift this object to the bed" msgstr "Klikněte na ikonu pro přesunutí tohoto objektu na podložku" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Načítání souboru" @@ -1731,8 +1728,8 @@ msgstr "Orientování..." msgid "Orienting" msgstr "Orientování" -msgid "Filling bed " -msgstr "Vyplňování podložky " +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Vyplnění podložky zrušeno." @@ -2621,19 +2618,6 @@ msgstr "" "ANO - Zachovat čistící věž\n" "NE - Zachovat výšku nezávislé podpůrné vrstvy" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% vzor výplně nepodporuje 100%% hustotu." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Přepnout na přímočarý vzor?\n" -"Ano - přepnout na přímočarý vzor automaticky\n" -"Ne - automaticky resetovat hustotu na výchozí ne 100% hodnotu" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2734,6 +2718,18 @@ msgstr "Pozastaveno uživatelem vloženým G-kódem" msgid "Motor noise showoff" msgstr "Předvedení zvuku motoru" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3208,7 +3204,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3586,6 +3582,12 @@ msgstr "Použít perspektivní pohled" msgid "Use Orthogonal View" msgstr "Použít ortogonální zobrazení" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Zobrazit &Popisky" @@ -3971,6 +3973,9 @@ msgstr "Stahování %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4128,8 +4133,10 @@ msgstr "Vrstva: %s" msgid "Layer: %d/%d" msgstr "Vrstva: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Před vložením filamentu zahřejte trysku na více než 170 stupňů." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Stále vysunovat" @@ -4701,31 +4708,6 @@ msgstr "Nelze načíst konfiguraci." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "3mf je generován starým Orca Slicerem, načtěte pouze geometrická data." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Novější verze 3mf" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "V 3mf byly nalezeny neplatné hodnoty:" @@ -5226,12 +5208,6 @@ msgstr "Zobrazovat \"Tip dne\" po spuštění" msgid "If enabled, useful hints are displayed at startup." msgstr "Pokud je povoleno, při spuštění se zobrazí užitečné rady." -msgid "Show g-code window" -msgstr "Zobrazit okno s G-kódem" - -msgid "If enabled, g-code window will be displayed." -msgstr "Pokud je povoleno, zobrazí se okno s G-kódem." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5605,6 +5581,9 @@ msgstr "Úloha zrušena" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Moje zařízení" @@ -5869,6 +5848,12 @@ msgstr "Tiskárna musí být ve stejné síti LAN jako Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "Tiskárna nepodporuje odesílání na SD kartu tiskárny." +msgid "Slice ok." +msgstr "Slicování Dokončeno." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Nepodařilo se vytvořit socket" @@ -6054,11 +6039,25 @@ msgstr "" "0 horní z vzdálenost, 0 rozestup rozhraní, koncentrický vzor a vypnutí " "nezávislé výšky podpůrné vrstvy" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Při nahrávání časosběru bez nástrojové hlavy se doporučuje přidat " "\"Timelapse Wipe Tower\" \n" @@ -6429,6 +6428,12 @@ msgstr[0] "Následující předvolba bude také smazána." msgstr[1] "Následující předvolby budou také smazány." msgstr[2] "" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Opravdu chcete %1% vybrané předvolby?" @@ -7451,6 +7456,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "Variabilní výška vrstvy není podporována s organickými podpěrami." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Čistící Věž není podporován v tisku \"Podle objektu\" ." @@ -7529,11 +7553,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Výška vrstvy nemůže překročit průměr trysky" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7916,6 +7935,15 @@ msgstr "" "Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu " "pro most a zlepšili prověšení" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Poměr průtoku horní vrstvy" @@ -8257,6 +8285,15 @@ msgstr "" "Pokud je zakázáno, mosty vypadají lépe, ale jsou spolehlivé jen pro kratší " "přemostění." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Maximální délka mostu" @@ -8773,9 +8810,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Hustota vnitřní výplně" -#, fuzzy, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Hustota vnitřní výplně, 100% znamená celistvou v celém rozsahu" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "Vzor vnitřní výplně" @@ -9006,10 +9045,10 @@ msgstr "Maximální otáčky ventilátoru ve vrstvě" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Otáčky ventilátoru se lineárně zvýší z nuly ve vrstvě " "\"close_fan_first_layers\" na maximum ve vrstvě \"full_fan_speed_layer\". " @@ -9069,6 +9108,12 @@ msgid "" msgstr "" "Průměrná vzdálenost mezi náhodnými body zavedenými na každém segmentu linky" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Odfiltrujte drobné mezery" @@ -10427,10 +10472,10 @@ msgstr "" "Filament pro tiskové podpěry základen a raftu. \"Výchozí\" znamená, že pro " "podpěry není použit žádný konkrétní filament a je použit aktuální filament" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10699,11 +10744,11 @@ msgstr "" "stabilitě tištěny s dvojitými stěnami. Nastavte tuto hodnotu na nulu, abyste " "zakázali dvojité stěny." -msgid "Tree support wall loops" -msgstr "Stěnové smyčky na podpěry stromů" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Toto nastavení určuje počet stěn kolem podpěry stromu" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Podpěry stromu s výplní" @@ -11170,10 +11215,6 @@ msgstr "" msgid "invalid value " msgstr "neplatná hodnota " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " nefunguje při 100%% hustotě " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Neplatná hodnota, když je povolen režim spirálové vázy: " @@ -12133,6 +12174,691 @@ msgstr "Část 2" msgid "Delete input" msgstr "Smazat vstup" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Je nutné vybrat tiskárnu" + +msgid "The start, end or step is not valid value." +msgstr "Počáteční, koncová nebo kroková hodnota není platná." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Nelze provést kalibraci: možná je rozsah kalibračních hodnot nastaven příliš " +"velký nebo krok je příliš malý" + +msgid "Physical Printer" +msgstr "Fyzická tiskárna" + +msgid "Print Host upload" +msgstr "Nahrávání do tiskového serveru" + +msgid "Could not get a valid Printer Host reference" +msgstr "Nelze získat platný odkaz na tiskový server" + +msgid "Success!" +msgstr "Úspěch!" + +msgid "Refresh Printers" +msgstr "Obnovit tiskárny" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát " +"s vlastním podpisem." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" + +msgid "Open CA certificate file" +msgstr "Otevřít soubor s certifikátem CA" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"V tomto systému používá %s certifikáty HTTPS ze systému Certificate Store " +"nebo Keychain." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate " +"Store / Keychain." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Připojení k tiskárnám připojených prostřednictvím tiskového serveru se " +"nezdařilo." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12193,8 +12919,8 @@ msgid "" msgstr "" "Plochou na podložku\n" "Věděli jste, že můžete rychle nastavit orientaci modelu tak, aby jedna z " -"jeho stěn spočívala na tiskovém podloží? Vyberte funkci \"Plochou na " -"podložku\" nebo stiskněte klávesu F." +"jeho stěn spočívala na tiskovém podloží? Vyberte funkci \"Plochou na podložku" +"\" nebo stiskněte klávesu F." #: resources/data/hints.ini: [hint:Object List] msgid "" @@ -12420,6 +13146,48 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Vyplňování podložky " + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% vzor výplně nepodporuje 100%% hustotu." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Přepnout na přímočarý vzor?\n" +#~ "Ano - přepnout na přímočarý vzor automaticky\n" +#~ "Ne - automaticky resetovat hustotu na výchozí ne 100% hodnotu" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "Před vložením filamentu zahřejte trysku na více než 170 stupňů." + +#~ msgid "Newer 3mf version" +#~ msgstr "Novější verze 3mf" + +#~ msgid "Show g-code window" +#~ msgstr "Zobrazit okno s G-kódem" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Pokud je povoleno, zobrazí se okno s G-kódem." + +#, fuzzy, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "Hustota vnitřní výplně, 100% znamená celistvou v celém rozsahu" + +#~ msgid "Tree support wall loops" +#~ msgstr "Stěnové smyčky na podpěry stromů" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Toto nastavení určuje počet stěn kolem podpěry stromu" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " nefunguje při 100%% hustotě " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12441,9 +13209,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Exportovat všechny objekty jako STL" -#~ msgid "Slice ok." -#~ msgstr "Slicování Dokončeno." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12687,68 +13452,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "Vybraná předvolba: %1% nebyla nalezena." -#~ msgid "Physical Printer" -#~ msgstr "Fyzická tiskárna" - -#~ msgid "Print Host upload" -#~ msgstr "Nahrávání do tiskového serveru" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Nelze získat platný odkaz na tiskový server" - -#~ msgid "Success!" -#~ msgstr "Úspěch!" - -#~ msgid "Refresh Printers" -#~ msgstr "Obnovit tiskárny" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS " -#~ "certifikát s vlastním podpisem." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "" -#~ "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|Všechny soubory|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Otevřít soubor s certifikátem CA" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "V tomto systému používá %s certifikáty HTTPS ze systému Certificate Store " -#~ "nebo Keychain." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate " -#~ "Store / Keychain." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Připojení k tiskárnám připojených prostřednictvím tiskového serveru se " -#~ "nezdařilo." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "Počáteční, koncová nebo kroková hodnota není platná." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "Nelze provést kalibraci: možná je rozsah kalibračních hodnot nastaven " -#~ "příliš velký nebo krok je příliš malý" - -#~ msgid "Need select printer" -#~ msgstr "Je nutné vybrat tiskárnu" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index d08ca4d82e..fdcbcc9730 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -1215,9 +1215,6 @@ msgid "Click the icon to shift this object to the bed" msgstr "" "Klicken Sie auf das Symbol, um dieses Objekt auf das Bett zu verschieben." -msgid " search results" -msgstr " Suchergebnisse" - msgid "Loading file" msgstr "Lade Datei" @@ -1757,8 +1754,8 @@ msgstr "Ausrichten..." msgid "Orienting" msgstr "Ausrichten" -msgid "Filling bed " -msgstr "Bett füllen" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bettfüllung abgebrochen." @@ -2690,19 +2687,6 @@ msgstr "" "JA - Reinigungsturm beibehalten\n" "NEIN - unabhängige Stütz-Schichthöhen beibehalten" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "Das %1% Füllmuster unterstützt keine 100%% Dichte." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Zu geradlinigen Mustern wechseln?\n" -"Ja - Automatisches auf das geradlinige Muster wechseln\n" -"Nein - Dichte automatisch auf den Standardwert unter 100% zurücksetzen" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2805,6 +2789,18 @@ msgstr "Pausiert durch den vom Benutzer eingefügten G-Code" msgid "Motor noise showoff" msgstr "Motorgeräusch-Showoff" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3282,7 +3278,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3664,6 +3660,12 @@ msgstr "Perspektivische Ansicht verwenden" msgid "Use Orthogonal View" msgstr "Orthogonale Ansicht verwenden" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "&Bezeichnung anzeigen" @@ -4054,6 +4056,9 @@ msgstr "%d%% wird heruntergeladen..." msgid "Connection lost. Please retry." msgstr "Verbindung verloren. Bitte versuchen Sie es erneut." +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "Datei existiert nicht." @@ -4214,9 +4219,10 @@ msgstr "Schicht: %s" msgid "Layer: %d/%d" msgstr "Schicht: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Bitte heizen Sie die Düse auf über 170 Grad auf, bevor Sie Filament laden." msgid "Still unload" msgstr "Entlade immer noch" @@ -4795,37 +4801,6 @@ msgstr "" "Die 3mf wurde mit einer alten Version von OrcaSlicer generiert, lade nur die " "Geometriedaten." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "Diese Slicer-Dateiversion %s ist neuer als die Version von %s:" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" -"Möchten Sie Ihre Software aktualisieren, um alle Funktionen in dieser Slicer-" -"Datei zu aktivieren?\n" - -msgid "Newer 3mf version" -msgstr "Neuere 3mf-Version" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" -"Diese Slicer-Dateiversion %s ist neuer als die Version von %s.\n" -"\n" -"Möchten Sie Ihre Software aktualisieren, um alle Funktionen in dieser Slicer-" -"Datei zu aktivieren?" - msgid "Invalid values found in the 3mf:" msgstr "Ungültige Werte in der 3MF-Datei gefunden:" @@ -5349,13 +5324,6 @@ msgstr "Benachrichtigung \"Tipp des Tages\" nach dem Start anzeigen" msgid "If enabled, useful hints are displayed at startup." msgstr "Wenn aktiviert, werden beim Start nützliche Hinweise angezeigt." -msgid "Show g-code window" -msgstr "Zeige G-Code Fenster" - -#, fuzzy -msgid "If enabled, g-code window will be displayed." -msgstr "Wenn aktiviert, werden beim Start nützliche Hinweise angezeigt." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "Reinigungsvolumen: Auto-Berechnung bei jeder Farbänderung." @@ -5733,6 +5701,9 @@ msgstr "Auftrag abgebrochen" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Mein Gerät" @@ -5915,8 +5886,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach " -"Objekt\" eingestellt ist." +"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach Objekt" +"\" eingestellt ist." msgid "Errors" msgstr "Fehler" @@ -6020,6 +5991,12 @@ msgid "The printer does not support sending to printer SD card." msgstr "" "Der Drucker unterstützt nicht das Senden an die MicroSD-Karte des Druckers." +msgid "Slice ok." +msgstr "Slice ok." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Socket konnte nicht erstellt werden" @@ -6219,16 +6196,30 @@ msgstr "" "dieunabhängige Einstellung der Support-Lagenhöhe (independent support layer " "height)." +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste " -"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-" -">\"Timelapse Wischturm\" wählen." +"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->" +"\"Timelapse Wischturm\" wählen." msgid "Line width" msgstr "Breite der Linie" @@ -6599,6 +6590,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "Das folgende Profil wird ebenfalls gelöscht." msgstr[1] "Die folgenden Profile werden ebenfalls gelöscht." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Sind sie sicher, dass sie das ausgewählte Profil %1% wollen?" @@ -7649,6 +7646,25 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "" "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Der Reinigungsturm wird im \"Nach Objekt\"-Druck nicht unterstützt." @@ -7732,13 +7748,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Schichthöhe darf den Düsendurchmesser nicht überschreiten." -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" -"Die Schichthöhe darf das Limit in Druckereinstellungen -> Extruder -> " -"Schichthöhenlimits nicht überschreiten" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -8139,6 +8148,15 @@ msgstr "" "Verringern Sie diesen Wert geringfügig (z. B. 0,9), um die Materialmenge für " "die Brücke zu verringern und den Durchhang zu minimieren" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Durchflussverhältnis obere Fläche" @@ -8514,6 +8532,15 @@ msgstr "" "Wenn deaktiviert, sehen Brücken besser aus, sind aber nur für kürzere " "Entfernungen zuverlässig." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Max Überbrückungslänge" @@ -9051,9 +9078,11 @@ msgstr "Winkel des Füllmusters, das die Richtung der Linien bestimmt." msgid "Sparse infill density" msgstr "Fülldichte" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Dichte der inneren Füllung, 100%% bedeuten eine solide Füllung" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "Füllmuster" @@ -9300,13 +9329,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der " -"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" +"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " @@ -9366,6 +9395,12 @@ msgstr "" "Der durchschnittliche Abstand zwischen den auf jedem Linienabschnitt " "eingeführten Zufallspunkten" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Filtert winzige Lücken aus" @@ -10772,13 +10807,11 @@ msgstr "" "kein spezielles Filament für die Stützen verwendet wird, sondern das " "aktuelle Filament." -msgid "No interface filament for body" -msgstr "Kein Filament für die Schnittstelle des Körpers" - -msgid "Don't use support interface filament to print support body" +msgid "Reduce interface filament for base" +msgstr "" + +msgid "Avoid using support interface filament to print support base" msgstr "" -"verwende kein Filament für die Stützstruktur-Schnittstelle um den Körper zu " -"drucken" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -11059,11 +11092,11 @@ msgstr "" "diesem Durchmesser, werden mit doppelten Wänden für die Stabilität gedruckt. " "Setzen Sie diesen Wert auf Null, um keine doppelten Wände zu erhalten." -msgid "Tree support wall loops" -msgstr "Wandschleifen für Baumstützen" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Diese Einstellung gibt die Anzahl der Wände um die Baumstütze an." +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Baumsupport mit Füllung" @@ -11546,10 +11579,6 @@ msgstr "" msgid "invalid value " msgstr "Ungültiger Wert" -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " doesn't work at 100%% density " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Ungültiger Wert, wenn der Spiral-Vase-Modus aktiviert ist: " @@ -12539,6 +12568,691 @@ msgstr "Teil 2" msgid "Delete input" msgstr "Eingabe löschen" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Drucker auswählen" + +msgid "The start, end or step is not valid value." +msgstr "Der Start, das Ende oder der Schritt ist kein gültiger Wert." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Kalibrierung nicht möglich: Möglicherweise, weil der eingestellte " +"Kalibrierungswertebereich zu groß ist oder der Schritt zu klein ist" + +#, fuzzy +msgid "Physical Printer" +msgstr "Drucker" + +msgid "Print Host upload" +msgstr "Hochladen zum Druck-Host" + +msgid "Could not get a valid Printer Host reference" +msgstr "Konnte keine gültige Referenz zum Druck-Host erhalten" + +msgid "Success!" +msgstr "Erfolgreich!" + +msgid "Refresh Printers" +msgstr "Drucker aktualisieren" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Die HTTPS-CA-Datei ist optional. Sie wird nur benötigt, wenn Sie HTTPS mit " +"einem selbstsignierten Zertifikat verwenden." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Zertifikatdateien (*.crt, *.pem)|*.crt;*.pem|Alle Dateien|*.*" + +msgid "Open CA certificate file" +msgstr "Öffnen Sie die CA-Zertifikatsdatei." + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Auf diesem System verwendet %s HTTPS-Zertifikate aus dem " +"Systemzertifikatspeicher oder dem Schlüsselbund." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Um eine benutzerdefinierte CA-Datei zu verwenden, importieren Sie bitte Ihre " +"CA-Datei in den Zertifikatspeicher / das Schlüsselbund." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Die Verbindung zu den über den Druck-Host verbundenen Druckern ist " +"fehlgeschlagen." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12830,6 +13544,91 @@ msgid "" "probability of warping." msgstr "" +#~ msgid " search results" +#~ msgstr " Suchergebnisse" + +#~ msgid "Filling bed " +#~ msgstr "Bett füllen" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "Das %1% Füllmuster unterstützt keine 100%% Dichte." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Zu geradlinigen Mustern wechseln?\n" +#~ "Ja - Automatisches auf das geradlinige Muster wechseln\n" +#~ "Nein - Dichte automatisch auf den Standardwert unter 100% zurücksetzen" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Bitte heizen Sie die Düse auf über 170 Grad auf, bevor Sie Filament laden." + +#, c-format, boost-format +#~ msgid "This slicer file version %s is newer than %s's version:" +#~ msgstr "Diese Slicer-Dateiversion %s ist neuer als die Version von %s:" + +#~ msgid "" +#~ "Would you like to update your Bambu Studio software to enable all " +#~ "functionality in this slicer file?\n" +#~ msgstr "" +#~ "Möchten Sie Ihre Software aktualisieren, um alle Funktionen in dieser " +#~ "Slicer-Datei zu aktivieren?\n" + +#~ msgid "Newer 3mf version" +#~ msgstr "Neuere 3mf-Version" + +#, c-format, boost-format +#~ msgid "" +#~ "This slicer file version %s is newer than %s's version.\n" +#~ "\n" +#~ "Would you like to update your Bambu Studio software to enable all " +#~ "functionality in this slicer file?" +#~ msgstr "" +#~ "Diese Slicer-Dateiversion %s ist neuer als die Version von %s.\n" +#~ "\n" +#~ "Möchten Sie Ihre Software aktualisieren, um alle Funktionen in dieser " +#~ "Slicer-Datei zu aktivieren?" + +#~ msgid "Show g-code window" +#~ msgstr "Zeige G-Code Fenster" + +#, fuzzy +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Wenn aktiviert, werden beim Start nützliche Hinweise angezeigt." + +#~ msgid "" +#~ "Layer height cannot exceed the limit in Printer Settings -> Extruder -> " +#~ "Layer height limits" +#~ msgstr "" +#~ "Die Schichthöhe darf das Limit in Druckereinstellungen -> Extruder -> " +#~ "Schichthöhenlimits nicht überschreiten" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "Dichte der inneren Füllung, 100%% bedeuten eine solide Füllung" + +#~ msgid "No interface filament for body" +#~ msgstr "Kein Filament für die Schnittstelle des Körpers" + +#~ msgid "Don't use support interface filament to print support body" +#~ msgstr "" +#~ "verwende kein Filament für die Stützstruktur-Schnittstelle um den Körper " +#~ "zu drucken" + +#~ msgid "Tree support wall loops" +#~ msgstr "Wandschleifen für Baumstützen" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Diese Einstellung gibt die Anzahl der Wände um die Baumstütze an." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " doesn't work at 100%% density " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Strg + Umschalt + Eingabetaste" @@ -12854,9 +13653,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Alle Objekte als STL exportieren" -#~ msgid "Slice ok." -#~ msgstr "Slice ok." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -13105,68 +13901,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "Die ausgewählte Voreinstellung: %1% wurde nicht gefunden." -#, fuzzy -#~ msgid "Physical Printer" -#~ msgstr "Drucker" - -#~ msgid "Print Host upload" -#~ msgstr "Hochladen zum Druck-Host" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Konnte keine gültige Referenz zum Druck-Host erhalten" - -#~ msgid "Success!" -#~ msgstr "Erfolgreich!" - -#~ msgid "Refresh Printers" -#~ msgstr "Drucker aktualisieren" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "Die HTTPS-CA-Datei ist optional. Sie wird nur benötigt, wenn Sie HTTPS " -#~ "mit einem selbstsignierten Zertifikat verwenden." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "Zertifikatdateien (*.crt, *.pem)|*.crt;*.pem|Alle Dateien|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Öffnen Sie die CA-Zertifikatsdatei." - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "Auf diesem System verwendet %s HTTPS-Zertifikate aus dem " -#~ "Systemzertifikatspeicher oder dem Schlüsselbund." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Um eine benutzerdefinierte CA-Datei zu verwenden, importieren Sie bitte " -#~ "Ihre CA-Datei in den Zertifikatspeicher / das Schlüsselbund." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Die Verbindung zu den über den Druck-Host verbundenen Druckern ist " -#~ "fehlgeschlagen." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "Der Start, das Ende oder der Schritt ist kein gültiger Wert." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "Kalibrierung nicht möglich: Möglicherweise, weil der eingestellte " -#~ "Kalibrierungswertebereich zu groß ist oder der Schritt zu klein ist" - -#~ msgid "Need select printer" -#~ msgstr "Drucker auswählen" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 56406cf96d..085b74d452 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1171,9 +1171,6 @@ msgstr "Click the icon to edit color painting for the object" msgid "Click the icon to shift this object to the bed" msgstr "Click the icon to shift this object to the bed" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Loading file" @@ -1700,8 +1697,8 @@ msgstr "Orienting..." msgid "Orienting" msgstr "Orienting" -msgid "Filling bed " -msgstr "Filling bed" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -2576,19 +2573,6 @@ msgstr "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% infill pattern doesn't support 100%% density." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Switch to rectilinear pattern?\n" -"Yes - Switch to rectilinear pattern automatically\n" -"No - Reset density to default non 100% value automatically" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2689,6 +2673,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3151,7 +3147,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Size:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3528,6 +3524,12 @@ msgstr "Use Perspective View" msgid "Use Orthogonal View" msgstr "Use Orthogonal View" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Show &Labels" @@ -3898,6 +3900,9 @@ msgstr "Downloading %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4053,8 +4058,10 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Please heat the nozzle to above 170 degrees before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Still unload" @@ -4599,31 +4606,6 @@ msgstr "The Config cannot be loaded." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Newer 3mf version" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -5120,12 +5102,6 @@ msgstr "Show \"Tip of the day\" notification after start" msgid "If enabled, useful hints are displayed at startup." msgstr "If enabled, useful hints are displayed at startup." -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5499,6 +5475,9 @@ msgstr "Task canceled" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "My Device" @@ -5760,6 +5739,12 @@ msgstr "The printer is required to be on the same LAN as Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "The printer does not support sending to printer MicroSD card." +msgid "Slice ok." +msgstr "Slice complete" + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Failed to create socket" @@ -5944,16 +5929,30 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgid "Line width" msgstr "Line width" @@ -6306,6 +6305,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "The following preset will be deleted too:" msgstr[1] "The following presets will be deleted too:" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Are you sure you want to %1% the selected preset?" @@ -7313,6 +7318,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "A prime tower is not supported in “By object” print." @@ -7385,11 +7409,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Layer height cannot exceed nozzle diameter." -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7763,6 +7782,15 @@ msgstr "" "Decrease this value slightly (for example 0.9) to reduce the amount of " "material extruded for bridges to avoid sagging." +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -8079,6 +8107,15 @@ msgstr "" "may look worse. If disabled, bridges look better but are reliable only for " "shorter distances." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Max bridge length" @@ -8551,11 +8588,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Sparse infill density" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"This is the density of internal sparse infill. 100% means that the object " -"will be solid throughout." msgid "Sparse infill pattern" msgstr "Sparse infill pattern" @@ -8760,10 +8797,10 @@ msgstr "Full fan speed at layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8816,6 +8853,12 @@ msgstr "" "The average distance between the random points introduced on each line " "segment" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -10034,10 +10077,10 @@ msgstr "" "Filament to print support bases and rafts. \"Default\" means no specific " "filament for support, and current filament is used" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10283,11 +10326,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Tree support wall loops" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "This setting specifies the wall count around tree support." +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Tree support with infill" @@ -10719,10 +10762,6 @@ msgstr "" msgid "invalid value " msgstr "invalid value " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " doesn't work at 100%% density " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Invalid value when spiral vase mode is enabled: " @@ -11574,6 +11613,681 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +#, fuzzy +msgid "Physical Printer" +msgstr "Printer" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -11782,6 +12496,45 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Filling bed" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% infill pattern doesn't support 100%% density." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - Switch to rectilinear pattern automatically\n" +#~ "No - Reset density to default non 100% value automatically" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Please heat the nozzle to above 170 degrees before loading filament." + +#~ msgid "Newer 3mf version" +#~ msgstr "Newer 3mf version" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "This is the density of internal sparse infill. 100% means that the object " +#~ "will be solid throughout." + +#~ msgid "Tree support wall loops" +#~ msgstr "Tree support wall loops" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "This setting specifies the wall count around tree support." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " doesn't work at 100%% density " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -11803,9 +12556,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Export All Objects as STL" -#~ msgid "Slice ok." -#~ msgstr "Slice complete" - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -11983,10 +12733,6 @@ msgstr "" #~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" #~ "trace\n" -#, fuzzy -#~ msgid "Physical Printer" -#~ msgstr "Printer" - #~ msgid "Embeded" #~ msgstr "Embedded" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e757da3b2d..28e998e2c1 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -1209,9 +1209,6 @@ msgstr "Haga clic en el icono para editar la pintura de color del objeto" msgid "Click the icon to shift this object to the bed" msgstr "Presionar el icono para desplazar este objeto a la cama" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Cargando archivo" @@ -1744,8 +1741,8 @@ msgstr "Orientando..." msgid "Orienting" msgstr "Orientación" -msgid "Filling bed " -msgstr "Rellenando cama " +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -2660,19 +2657,6 @@ msgstr "" "SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de la capa de soporte independiente" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "El patrón de relleno %1% no soporta el 100%% de densidad." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"¿Cambiar a patrón rectilíneo?\n" -"Sí - cambiar a patrón rectilíneo automaticamente\n" -"No - reiniciar a valor de densidad no 100% por defecto automáticamente" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2777,6 +2761,18 @@ msgstr "Pausado debido a un G-Code de usuario" msgid "Motor noise showoff" msgstr "Ruido notable del motor" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3254,7 +3250,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3633,6 +3629,12 @@ msgstr "Utilizar Vista en Perspectiva" msgid "Use Orthogonal View" msgstr "Utilizar Vista Octogonal" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Mostrar &Etiquetas" @@ -4015,6 +4017,9 @@ msgstr "Descargando %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4174,8 +4179,10 @@ msgstr "Capa: %s" msgid "Layer: %d/%d" msgstr "Capa: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Caliente la boquilla a más de 170 grados antes de cargar el filamento." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Aún descargado" @@ -4750,31 +4757,6 @@ msgstr "" "El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de " "geometría." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Nueva versión 3mf" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Valores inválidos encontrados en el 3mf:" @@ -5292,12 +5274,6 @@ msgstr "Mostrar la notificación \"Consejo del Día\" después de empezar" msgid "If enabled, useful hints are displayed at startup." msgstr "Si está activado, las sugerencias útiles serán mostradas al inicio." -msgid "Show g-code window" -msgstr "Mostrar la ventana de G-Code" - -msgid "If enabled, g-code window will be displayed." -msgstr "Si está activado, se mostrará la ventana de G-Code." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5677,6 +5653,9 @@ msgstr "Tarea cancelada" msgid "(LAN)" msgstr "(Red local)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Mi dispositivo" @@ -5955,6 +5934,12 @@ msgstr "" msgid "The printer does not support sending to printer SD card." msgstr "La impresora no soporta el envio directo a la tarjeta SD." +msgid "Slice ok." +msgstr "Laminado correcto." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Failed to create socket" @@ -6143,11 +6128,25 @@ msgstr "" "distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar " "altura de soporte independiente de altura de capa" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir " "un \"Torre de Purga de Intervalo\" \n" @@ -6521,6 +6520,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "El siguiente preajuste también se eliminará." msgstr[1] "Los siguientes preajustes también se eliminarán." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "¿Está seguro de %1% el preajuste seleccionado?" @@ -7558,6 +7563,25 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "" "La altura de capa variable no es compatible con los soportes orgánicos." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "La torre de purga no es compatible con la impresión \"Por objeto\"." @@ -7641,11 +7665,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "La altura de la capa no puede superar el diámetro de la boquilla" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -8042,6 +8061,15 @@ msgstr "" "Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad " "de material para el puente, para mejorar el hundimiento" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Ratio de caudal en superficie superior" @@ -8398,6 +8426,15 @@ msgstr "" "más largas, pero pueden tener peor aspecto. Si están desactivados, los " "puentes se ven mejor pero son fiables sólo para distancias más cortas." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Distancia máxima de puentes" @@ -8934,10 +8971,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Densidad de relleno" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Densidad del relleno interno, el 100%% significa sólido en toda la superficie" msgid "Sparse infill pattern" msgstr "Patrón de relleno de baja densidad" @@ -9177,10 +9215,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -9240,6 +9278,12 @@ msgstr "" "La diatancia media entre los puntos aleatorios introducidos en cada segmento " "de línea" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Filtrar pequeños huecos" @@ -10649,10 +10693,10 @@ msgstr "" "defecto\" significa que no hay filamento específico para el soporte y se " "utiliza el filamento actual" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10932,13 +10976,11 @@ msgstr "" "imprimirán con doble pared para mayor estabilidad. Establezca este valor en " "cero para no tener doble pared." -msgid "Tree support wall loops" -msgstr "Perímetros de las ramas" - -msgid "This setting specify the count of walls around tree support" +msgid "Support wall loops" +msgstr "" + +msgid "This setting specify the count of walls around support" msgstr "" -"Este ajuste especifica el número de perímetros alrededor del soporte del " -"árbol" msgid "Tree support with infill" msgstr "Soporte para árboles con relleno" @@ -11422,10 +11464,6 @@ msgstr "" msgid "invalid value " msgstr "valor inválido " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " no funciona con una densidad del 100%% " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Valor no válido cuando está activado el modo jarrón espiral: " @@ -11810,12 +11848,12 @@ msgstr "" "wiki.\n" "\n" "Normalmente la calibración es innecesaria. Cuando se inicia una impresión de " -"un solo color/material, con la opción \"Calibración de la dinámica de " -"caudal\" marcada en el menú de inicio de impresión, la impresora seguirá el " -"método antiguo, calibrar el filamento antes de la impresión; Cuando se " -"inicia una impresión de varios colores/materiales, la impresora utilizará el " -"parámetro de compensación por defecto para el filamento durante cada cambio " -"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"Calibración de la dinámica de caudal" +"\" marcada en el menú de inicio de impresión, la impresora seguirá el método " +"antiguo, calibrar el filamento antes de la impresión; Cuando se inicia una " +"impresión de varios colores/materiales, la impresora utilizará el parámetro " +"de compensación por defecto para el filamento durante cada cambio de " +"filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos en los que el resultado de la " "calibración no es fiable: el uso de una placa de textura para hacer la " @@ -12413,6 +12451,691 @@ msgstr "Parte 2" msgid "Delete input" msgstr "Borrado de entrada" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Necesario seleccionar impresora" + +msgid "The start, end or step is not valid value." +msgstr "El inicio, el final o el paso no tienen un valor válido." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"No es posible calibrar debido a que el valor del rango de calibración es muy " +"grande, o el paso es muy pequeño" + +msgid "Physical Printer" +msgstr "Impresora física" + +msgid "Print Host upload" +msgstr "Carga de Host de Impresión" + +msgid "Could not get a valid Printer Host reference" +msgstr "No se ha podido obtener una referencia de host de impresora válida" + +msgid "Success!" +msgstr "¡Exitoso!" + +msgid "Refresh Printers" +msgstr "Refrescar Impresoras" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con un " +"certificado autofirmado." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" +"Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" + +msgid "Open CA certificate file" +msgstr "Abrir archivo de certificado CA" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"En este sistema, %s utiliza certificados HTTPS del almacén de certificados o " +"llavero del sistema." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Para utilizar un archivo de CA personalizado, importe su archivo de CA a " +"Almacén de certificados / Llavero." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Ha fallado la conexión a impresoras conectadas a través del host de " +"impresión." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12701,6 +13424,53 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Rellenando cama " + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "El patrón de relleno %1% no soporta el 100%% de densidad." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "¿Cambiar a patrón rectilíneo?\n" +#~ "Sí - cambiar a patrón rectilíneo automaticamente\n" +#~ "No - reiniciar a valor de densidad no 100% por defecto automáticamente" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Caliente la boquilla a más de 170 grados antes de cargar el filamento." + +#~ msgid "Newer 3mf version" +#~ msgstr "Nueva versión 3mf" + +#~ msgid "Show g-code window" +#~ msgstr "Mostrar la ventana de G-Code" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Si está activado, se mostrará la ventana de G-Code." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Densidad del relleno interno, el 100%% significa sólido en toda la " +#~ "superficie" + +#~ msgid "Tree support wall loops" +#~ msgstr "Perímetros de las ramas" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "" +#~ "Este ajuste especifica el número de perímetros alrededor del soporte del " +#~ "árbol" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " no funciona con una densidad del 100%% " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12722,9 +13492,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Exportar todos los objetos como STL" -#~ msgid "Slice ok." -#~ msgstr "Laminado correcto." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12971,68 +13738,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "El ajuste seleccionado: %1% no encontrado." -#~ msgid "Physical Printer" -#~ msgstr "Impresora física" - -#~ msgid "Print Host upload" -#~ msgstr "Carga de Host de Impresión" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "No se ha podido obtener una referencia de host de impresora válida" - -#~ msgid "Success!" -#~ msgstr "¡Exitoso!" - -#~ msgid "Refresh Printers" -#~ msgstr "Refrescar Impresoras" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con " -#~ "un certificado autofirmado." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "" -#~ "Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Abrir archivo de certificado CA" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "En este sistema, %s utiliza certificados HTTPS del almacén de " -#~ "certificados o llavero del sistema." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Para utilizar un archivo de CA personalizado, importe su archivo de CA a " -#~ "Almacén de certificados / Llavero." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Ha fallado la conexión a impresoras conectadas a través del host de " -#~ "impresión." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "El inicio, el final o el paso no tienen un valor válido." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "No es posible calibrar debido a que el valor del rango de calibración es " -#~ "muy grande, o el paso es muy pequeño" - -#~ msgid "Need select printer" -#~ msgstr "Necesario seleccionar impresora" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 25f36128a7..1579ee8202 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -1203,9 +1203,6 @@ msgstr "Cliquez sur l'icône pour modifier la couleur de peinture de l'objet" msgid "Click the icon to shift this object to the bed" msgstr "Cliquez sur l’icône pour déplacer cet objet vers le plateau" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Chargement du fichier" @@ -1742,8 +1739,8 @@ msgstr "Orientation…" msgid "Orienting" msgstr "Orienter" -msgid "Filling bed " -msgstr "Remplir le plateau" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Remplissage de plateau annulé." @@ -2669,20 +2666,6 @@ msgstr "" "OUI - Conserver la tour de purge\n" "NON - Conserver la hauteur de la couche de support indépendante" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "" -"Le motif de remplissage %1% ne prend pas en charge une densité de 100%%." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Basculer vers le motif rectiligne ?\n" -"Oui - Basculer vers le motif rectiligne\n" -"Non - Réinitialiser automatiquement la densité par défaut" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2790,6 +2773,18 @@ msgstr "Mise en pause par le Gcode inséré par l'utilisateur" msgid "Motor noise showoff" msgstr "Exposition du bruit du moteur" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3255,7 +3250,7 @@ msgstr "Volume :" msgid "Size:" msgstr "Taille :" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3635,6 +3630,12 @@ msgstr "Utiliser la vue en perspective" msgid "Use Orthogonal View" msgstr "Utiliser la vue orthogonale" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Afficher les étiquettes" @@ -4020,6 +4021,9 @@ msgstr "Téléchargement %d%%…" msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4175,9 +4179,10 @@ msgstr "Couche: %s" msgid "Layer: %d/%d" msgstr "Couche: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Veuillez chauffer la buse à plus de 170 degrés avant de charger le filament." msgid "Still unload" msgstr "Toujours en train de décharger" @@ -4734,31 +4739,6 @@ msgstr "" "Le fichier 3mf a été généré par une ancienne version de Orca Slicer, " "chargement des données de géométrie uniquement." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Nouvelle version 3mf" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Valeurs non valides trouvées dans le 3mf :" @@ -5279,12 +5259,6 @@ msgstr "Afficher la notification \"Astuce du jour\" au démarrage" msgid "If enabled, useful hints are displayed at startup." msgstr "Si activé, des conseils utiles sont affichés au démarrage." -msgid "Show g-code window" -msgstr "Afficher la fenêtre G-code" - -msgid "If enabled, g-code window will be displayed." -msgstr "Si activé, la fenêtre avec les commandes G-code sera affichée." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5666,6 +5640,9 @@ msgstr "Tâche annulée" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Mon Imprimante" @@ -5946,6 +5923,12 @@ msgid "The printer does not support sending to printer SD card." msgstr "" "L'imprimante ne prend pas en charge l'envoi vers la carte SD de l'imprimante." +msgid "Slice ok." +msgstr "Découpage terminé." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Échec de la création du socket" @@ -6155,11 +6138,25 @@ msgstr "" "motif d’interface Concentrique et la désactivation de la hauteur de couche " "indépendante des supports" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Lors de l'enregistrement d'un Timelapse sans tête d'outil, il est recommandé " "d'ajouter une \"Tour d’essuyage Timelapse\"\n" @@ -6529,6 +6526,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "Le préréglage suivant sera également supprimé." msgstr[1] "Les préréglages suivants seront également supprimés." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Êtes-vous sûr de %1% le préréglage sélectionné ?" @@ -7574,6 +7577,25 @@ msgstr "" "La hauteur variable des couches n'est pas prise en charge par les supports " "organiques." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "" "La tour de purge n'est pas prise en charge avec la séquence d’impression " @@ -7654,11 +7676,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "La hauteur de la couche ne peut pas dépasser le diamètre de la buse" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -8045,6 +8062,15 @@ msgstr "" "Diminuez légèrement cette valeur (par exemple 0.9) pour réduire la quantité " "de matériaux pour le pont, pour améliorer l'affaissement" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Débit des surfaces supérieures" @@ -8379,6 +8405,15 @@ msgstr "" "les ponts ont une meilleure apparence mais ne sont fiables que pour des " "distances plus courtes." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Longueur maximale des ponts" @@ -8883,10 +8918,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Densité de remplissage" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Densité du remplissage interne, Une valeur à 100%% signifie solide partout" msgid "Sparse infill pattern" msgstr "Motif de remplissage" @@ -9125,10 +9161,10 @@ msgstr "Vitesse maximale du ventilateur à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -9191,6 +9227,12 @@ msgstr "" "Distance moyenne entre les points aléatoires introduits sur chaque segment " "de ligne" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Filtrer les petits espaces" @@ -10499,10 +10541,10 @@ msgstr "" "signifie qu'aucun filament spécifique n'est utilisé pour les supports et que " "le filament actuel est utilisé" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10758,11 +10800,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Nombre de parois des branches" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Ce paramètre spécifie le nombre de parois des branches de support" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Supports arborescents avec remplissage" @@ -11213,10 +11255,6 @@ msgstr "" msgid "invalid value " msgstr "valeur invalide " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " ne fonctionne pas à une densité de 100%% " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Valeur invalide lorsque le mode vase est activé : " @@ -12080,6 +12118,690 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Besoin de sélectionner l'imprimante" + +msgid "The start, end or step is not valid value." +msgstr "Le début, la fin ou le pas n'est pas une valeur valide." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Impossible d'étalonner : peut-être parce que la plage de valeurs " +"d'étalonnage est trop grande ou que le pas est trop petit." + +msgid "Physical Printer" +msgstr "Imprimante Physique" + +msgid "Print Host upload" +msgstr "Envoi vers l’imprimante hôte" + +msgid "Could not get a valid Printer Host reference" +msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" + +msgid "Success!" +msgstr "Succès !" + +msgid "Refresh Printers" +msgstr "Actualiser les imprimantes" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Le fichier CA HTTPS est facultatif. Il n'est nécessaire que si vous utilisez " +"HTTPS avec un certificat auto-signé." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" +"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" + +msgid "Open CA certificate file" +msgstr "Ouvrir le fichier de certificat CA" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Sur ce système, %s utilise les certificats HTTPS du magasin de certificats " +"du système ou du trousseau." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Pour utiliser un certificat personnalisé, veuillez importer votre fichier " +"dans magasin de certificats / trousseau." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"La connexion aux imprimantes connectées via l’hôte d’impression a échoué." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12370,6 +13092,52 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Remplir le plateau" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "" +#~ "Le motif de remplissage %1% ne prend pas en charge une densité de 100%%." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Basculer vers le motif rectiligne ?\n" +#~ "Oui - Basculer vers le motif rectiligne\n" +#~ "Non - Réinitialiser automatiquement la densité par défaut" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Veuillez chauffer la buse à plus de 170 degrés avant de charger le " +#~ "filament." + +#~ msgid "Newer 3mf version" +#~ msgstr "Nouvelle version 3mf" + +#~ msgid "Show g-code window" +#~ msgstr "Afficher la fenêtre G-code" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Si activé, la fenêtre avec les commandes G-code sera affichée." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Densité du remplissage interne, Une valeur à 100%% signifie solide partout" + +#~ msgid "Tree support wall loops" +#~ msgstr "Nombre de parois des branches" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Ce paramètre spécifie le nombre de parois des branches de support" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " ne fonctionne pas à une densité de 100%% " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Maj + Entrée" @@ -12393,9 +13161,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Exporter tous les objets au format STL" -#~ msgid "Slice ok." -#~ msgstr "Découpage terminé." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12581,67 +13346,6 @@ msgstr "" #~ "Définit le niveau de journalisation du déboggage. 0:fatal, 1:erreur, 2:" #~ "avertissement, 3:info, 4:déboggage, 5:tracer\n" -#~ msgid "Physical Printer" -#~ msgstr "Imprimante Physique" - -#~ msgid "Print Host upload" -#~ msgstr "Envoi vers l’imprimante hôte" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" - -#~ msgid "Success!" -#~ msgstr "Succès !" - -#~ msgid "Refresh Printers" -#~ msgstr "Actualiser les imprimantes" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "Le fichier CA HTTPS est facultatif. Il n'est nécessaire que si vous " -#~ "utilisez HTTPS avec un certificat auto-signé." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "" -#~ "Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Ouvrir le fichier de certificat CA" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "Sur ce système, %s utilise les certificats HTTPS du magasin de " -#~ "certificats du système ou du trousseau." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Pour utiliser un certificat personnalisé, veuillez importer votre fichier " -#~ "dans magasin de certificats / trousseau." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "La connexion aux imprimantes connectées via l’hôte d’impression a échoué." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "Le début, la fin ou le pas n'est pas une valeur valide." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "Impossible d'étalonner : peut-être parce que la plage de valeurs " -#~ "d'étalonnage est trop grande ou que le pas est trop petit." - -#~ msgid "Need select printer" -#~ msgstr "Besoin de sélectionner l'imprimante" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 2131044d82..40fab7f373 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1178,9 +1178,6 @@ msgstr "Kattints az ikonra az objektum színfestésének szerkesztéséhez" msgid "Click the icon to shift this object to the bed" msgstr "Click the icon to shift this object to the bed" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Fájl betöltése" @@ -1716,8 +1713,8 @@ msgstr "Orientáció folyamatban..." msgid "Orienting" msgstr "Orientáció" -msgid "Filling bed " -msgstr "Filling bed" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -2600,19 +2597,6 @@ msgstr "" "IGEN - Törlő torony megtartása\n" "NEM - Független támasz rétegmagasság megtartása" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% kitöltési mintázat nem támogatja a 100%%-os kitöltés." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Átváltasz vonalak mintázatra?\n" -"Igen - Váltás a vonalak mintázatra\n" -"Nem - Sűrűség visszaállítása az alapértelmezett, nem 100%-os értékre" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2713,6 +2697,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3175,7 +3171,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3552,6 +3548,12 @@ msgstr "Perspektivikus nézet használata" msgid "Use Orthogonal View" msgstr "Ortogonális nézet használata" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Címkék megjelenítése" @@ -3924,6 +3926,9 @@ msgstr "Letöltés %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4079,8 +4084,10 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "A filament betöltése előtt melegítsd fel a fúvókát 170 fok fölé." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Még kitöltődik" @@ -4626,31 +4633,6 @@ msgstr "A konfiguráció nem tölthető be." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Újabb 3mf verzió" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -5151,12 +5133,6 @@ msgstr "A nap tippje értesítés megjelenítése indítás után" msgid "If enabled, useful hints are displayed at startup." msgstr "Ha engedélyezve van, hasznos tippek jelennek meg indításkor." -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5531,6 +5507,9 @@ msgstr "Feladat törölve" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Saját eszköz" @@ -5801,6 +5780,12 @@ msgstr "" msgid "The printer does not support sending to printer SD card." msgstr "A nyomtató nem támogatja a MicroSD kártyára küldést." +msgid "Slice ok." +msgstr "Szeletelés kész." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Failed to create socket" @@ -5986,11 +5971,25 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Ha a nyomtatófej nélküli timelapse engedélyezve van, javasoljuk, hogy " "helyezz el a tálcán egy „Timelapse törlőtornyot“. Ehhez kattints jobb " @@ -6352,6 +6351,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "A következő beállítás szintén törlődni fog." msgstr[1] "A következő beállítások szintén törlődni fognak." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Biztos, hogy %1% a kiválasztott beállítást?" @@ -7380,6 +7385,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "A prime tower is not supported in “By object” print." @@ -7453,11 +7477,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "A rétegmagasság nem lehet nagyobb a fúvóka átmérőjénél." -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7834,6 +7853,15 @@ msgstr "" "Csökkentsd kicsit ezt az értéket (például 0,9-re), hogy ezzel csökkentsd az " "áthidaláshoz használt anyag mennyiségét, és a megereszkedést" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -8149,6 +8177,15 @@ msgstr "" "Ha ki van kapcsolva, az áthidalások jobban néznek ki, de csak a rövidebb " "áthidalt távolságokon megbízhatóak." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Maximum áthidalás hossza" @@ -8624,11 +8661,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Kitöltés sűrűsége" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Ez a belső ritkás kitöltés sűrűsége. A 100%% azt jelenti, hogy az objektum " -"végig tömör lesz." msgid "Sparse infill pattern" msgstr "Kitöltési mintázat" @@ -8833,10 +8870,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8887,6 +8924,12 @@ msgid "" msgstr "" "Az egyes vonalszakaszokon használt véletlen pontok közötti átlagos távolság" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -10122,10 +10165,10 @@ msgstr "" "„Alapértelmezett“ beállítás választásakor a jelenleg használt filament kerül " "felhasználásra." -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10373,11 +10416,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Fa támasz falak száma" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Ez a beállítás határozza meg a falak számát a fa támasz körül." +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Fa támasz kitöltéssel" @@ -10812,10 +10855,6 @@ msgstr "" msgid "invalid value " msgstr "invalid value " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " doesn't work at 100%% density " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Invalid value when spiral vase mode is enabled: " @@ -11667,6 +11706,680 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -11943,6 +12656,44 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Filling bed" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% kitöltési mintázat nem támogatja a 100%%-os kitöltés." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Átváltasz vonalak mintázatra?\n" +#~ "Igen - Váltás a vonalak mintázatra\n" +#~ "Nem - Sűrűség visszaállítása az alapértelmezett, nem 100%-os értékre" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "A filament betöltése előtt melegítsd fel a fúvókát 170 fok fölé." + +#~ msgid "Newer 3mf version" +#~ msgstr "Újabb 3mf verzió" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Ez a belső ritkás kitöltés sűrűsége. A 100%% azt jelenti, hogy az " +#~ "objektum végig tömör lesz." + +#~ msgid "Tree support wall loops" +#~ msgstr "Fa támasz falak száma" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Ez a beállítás határozza meg a falak számát a fa támasz körül." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " doesn't work at 100%% density " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -11964,9 +12715,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Összes objektum exportálása STL-ként" -#~ msgid "Slice ok." -#~ msgstr "Szeletelés kész." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 60ed6affb9..5c9320aedd 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1193,9 +1193,6 @@ msgstr "Clicca sull'icona per modificare i colori dell'oggetto" msgid "Click the icon to shift this object to the bed" msgstr "Fare clic sull'icona per spostare l'oggetto sul piano" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Caricamento file" @@ -1731,8 +1728,8 @@ msgstr "Orientamento..." msgid "Orienting" msgstr "Orientamento" -msgid "Filling bed " -msgstr "Riempi piano" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Riempimento del piano annullato." @@ -2646,19 +2643,6 @@ msgstr "" "SÌ - Mantieni Prime Tower\n" "NO - Mantieni Altezza Supporto Layer indipendente" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "La trama riempimento %1% non supporta il 100%% di densità." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Passare alla trama rettilinea?\n" -"Sì - passa automaticamente alla trama rettilinea\n" -"No - ripristina automaticamente la densità al valore predefinito non 100%" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2759,6 +2743,18 @@ msgstr "Messo in pausa dal Gcode inserito dall'utente" msgid "Motor noise showoff" msgstr "Messa in mostra del rumore del motore" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3236,7 +3232,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3615,6 +3611,12 @@ msgstr "Usa vista prospettica" msgid "Use Orthogonal View" msgstr "Usa vista ortogonale" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Mostra &Etichette" @@ -3999,6 +4001,9 @@ msgstr "Scaricamento %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4159,10 +4164,10 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di " -"caricare il filamento." msgid "Still unload" msgstr "Scarica ancora" @@ -4735,31 +4740,6 @@ msgstr "" "Il 3mf è stato generato da una vecchia versione di Orca Slicer, caricando \n" "solo i dati geometrici." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Versione 3mf più recente" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Valori non validi trovati in 3mf:" @@ -5271,12 +5251,6 @@ msgstr "Mostra \"Suggerimento del giorno\" dopo l'avvio" msgid "If enabled, useful hints are displayed at startup." msgstr "Se abilitato, all'avvio vengono visualizzati suggerimenti utili." -msgid "Show g-code window" -msgstr "Mostra la finestra del codice g" - -msgid "If enabled, g-code window will be displayed." -msgstr "Se abilitato, verrà visualizzata la finestra del codice g." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5656,6 +5630,9 @@ msgstr "Attività annullata" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Mio dispositivo" @@ -5931,6 +5908,12 @@ msgstr "La stampante deve essere sulla stessa LAN di Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "La stampante non supporta l'invio alla scheda microSD della stampante." +msgid "Slice ok." +msgstr "Slice completo" + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Impossibile creare il socket" @@ -6122,11 +6105,25 @@ msgstr "" "0 distanza z superiore , 0 spaziatura interfaccia, trama concentrico e " "disabilita altezza layer di supporto indipendente" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Quando si registra un timelapse senza testa di satmpa, si consiglia di " "aggiungere un \"Timelapse Torre di pulizia\"\n" @@ -6495,6 +6492,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "Verrà eliminato anche il seguente preset:" msgstr[1] "The following presets will be deleted too:" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Sei sicuro di voler %1% il preset selezionato?" @@ -7190,8 +7193,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " -"firmware\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" +"\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -7546,6 +7549,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "Layer ad altezza variabile non è compatibile con i Supporti Organici." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "La Prime Tower non è supportata nella stampa \"Per oggetto\"." @@ -7629,11 +7651,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "L'altezza del layer non può superare il diametro del nozzle." -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -8030,6 +8047,15 @@ msgstr "" "Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità " "di materiale per il ponte e migliorare l'abbassamento dello stesso" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Rapporto di portata superficiale superiore" @@ -8388,6 +8414,15 @@ msgstr "" "maggiori, ma potrebbero avere un aspetto peggiore. Se disattivato, i ponti " "hanno un aspetto migliore ma sono affidabili solo per distanze più brevi." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Lunghezza massima Bridge" @@ -8928,11 +8963,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Densità riempimento" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Questa è la densità del riempimento interno. 100%% significa che l'oggetto " -"sarà in ogni sua parte." msgid "Sparse infill pattern" msgstr "Trama riempimento" @@ -9174,17 +9209,16 @@ msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà linearmente da zero al livello " -"\"close_fan_the_first_x_layers\" al massimo al livello " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" verrà ignorato se " -"inferiore a \"close_fan_the_first_x_layers\", nel qual caso la ventola " -"funzionerà alla massima velocità consentita al livello " -"\"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a " +"\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla " +"massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" msgstr "Supporta la velocità della ventola dell'interfaccia" @@ -9240,6 +9274,12 @@ msgid "" msgstr "" "La distanza media tra i punti casuali introdotti su ogni segmento di linea" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Filtra i piccoli spazi vuoti" @@ -10647,10 +10687,10 @@ msgstr "" "non viene utilizzato alcun filamento specifico per il supporto e viene " "utilizzato il filamento corrente" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10930,11 +10970,11 @@ msgstr "" "diametro verranno stampate con pareti doppie per garantire la stabilità. " "Imposta questo valore a zero per non avere pareti doppie." -msgid "Tree support wall loops" -msgstr "Loop parete supporto ad albero" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Questa specifica il numero di pareti attorno al supporto ad albero." +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Riempimento supporti ad albero" @@ -11423,10 +11463,6 @@ msgstr "" msgid "invalid value " msgstr "Valore non valido" -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " Non funziona con una densità del 100%%" - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Valore non valido quando la modalità vaso a spirale è abilitata:" @@ -12416,6 +12452,689 @@ msgstr "Partita #2" msgid "Delete input" msgstr "Eliminare l'input" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Hai bisogno di selezionare la stampante" + +msgid "The start, end or step is not valid value." +msgstr "L'inizio, la fine o il passo non sono valori validi." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Impossibile calibrare: forse perché l'intervallo di valori di calibrazione " +"impostato è troppo ampio o il passo è troppo piccolo" + +msgid "Physical Printer" +msgstr "Stampante Fisica" + +msgid "Print Host upload" +msgstr "Caricamento Host di stampa" + +msgid "Could not get a valid Printer Host reference" +msgstr "Impossibile ottenere un riferimento Host Stampante valido" + +msgid "Success!" +msgstr "Successo!" + +msgid "Refresh Printers" +msgstr "Aggiorna Stampanti" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS con " +"certificato autofirmato." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "File di certificato (*.crt, *.pem)|*.crt;*.pem|All files|*.*" + +msgid "Open CA certificate file" +msgstr "Apri file di certificato CA" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema " +"Certificate Store o da Keychain." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Per utilizzare un file CA personalizzato, importa il tuo file CA sul " +"Certificate Store / Keychain." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Collegamento alle stampanti collegate tramite l'host di stampa fallito." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12703,6 +13422,52 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Riempi piano" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "La trama riempimento %1% non supporta il 100%% di densità." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Passare alla trama rettilinea?\n" +#~ "Sì - passa automaticamente alla trama rettilinea\n" +#~ "No - ripristina automaticamente la densità al valore predefinito non 100%" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Riscaldare il nozzle a una temperatura superiore a 170 gradi prima di " +#~ "caricare il filamento." + +#~ msgid "Newer 3mf version" +#~ msgstr "Versione 3mf più recente" + +#~ msgid "Show g-code window" +#~ msgstr "Mostra la finestra del codice g" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Se abilitato, verrà visualizzata la finestra del codice g." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Questa è la densità del riempimento interno. 100%% significa che " +#~ "l'oggetto sarà in ogni sua parte." + +#~ msgid "Tree support wall loops" +#~ msgstr "Loop parete supporto ad albero" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Questa specifica il numero di pareti attorno al supporto ad albero." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " Non funziona con una densità del 100%%" + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Invio" @@ -12724,9 +13489,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Esporta tutti gli oggetti come STL" -#~ msgid "Slice ok." -#~ msgstr "Slice completo" - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12976,66 +13738,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "Il preset selezionato: %1% non è stato trovato." -#~ msgid "Physical Printer" -#~ msgstr "Stampante Fisica" - -#~ msgid "Print Host upload" -#~ msgstr "Caricamento Host di stampa" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Impossibile ottenere un riferimento Host Stampante valido" - -#~ msgid "Success!" -#~ msgstr "Successo!" - -#~ msgid "Refresh Printers" -#~ msgstr "Aggiorna Stampanti" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "File HTTPS CA opzionale. È necessario solo se si intende usare un HTTPS " -#~ "con certificato autofirmato." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "File di certificato (*.crt, *.pem)|*.crt;*.pem|All files|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Apri file di certificato CA" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "Su questo sistema, %s utilizza certificati HTTPS provenienti dal sistema " -#~ "Certificate Store o da Keychain." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Per utilizzare un file CA personalizzato, importa il tuo file CA sul " -#~ "Certificate Store / Keychain." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Collegamento alle stampanti collegate tramite l'host di stampa fallito." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "L'inizio, la fine o il passo non sono valori validi." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "Impossibile calibrare: forse perché l'intervallo di valori di " -#~ "calibrazione impostato è troppo ampio o il passo è troppo piccolo" - -#~ msgid "Need select printer" -#~ msgstr "Hai bisogno di selezionare la stampante" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 080a316054..f3db87c2af 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1162,9 +1162,6 @@ msgstr "オブジェクトに色塗りをします" msgid "Click the icon to shift this object to the bed" msgstr "Click the icon to shift this object to the bed" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "ファイルを読み込み中" @@ -1685,8 +1682,8 @@ msgstr "向き調整中" msgid "Orienting" msgstr "向き調整中" -msgid "Filling bed " -msgstr "Filling bed" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -2519,19 +2516,6 @@ msgstr "" "はい - プライムタワーを有効にする\n" "いいえ - 「独立サポート積層ピッチ」を有効にする" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% のインフィル パターンは 100%% の密度をサポートしません。" - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"直線パターンに切り替えますか?\n" -"はい - 直線パターンに切り替えます\n" -"いいえ - 充填密度をリセットします" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2632,6 +2616,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3093,7 +3089,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3466,6 +3462,12 @@ msgstr "パースペクティブを使用" msgid "Use Orthogonal View" msgstr "直交投影を使用" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "ラベルを表示" @@ -3829,6 +3831,9 @@ msgstr "ダウンロード中 %d%%" msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -3984,8 +3989,10 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "フィラメントをロードする前に、ノズル温度を170℃以上に加熱してください" +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "アンロード" @@ -4523,31 +4530,6 @@ msgstr "" "3mfは古いバージョンのOrca Slicerで作成されています、ジオメトリーデータのみ読" "込みます。" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "新3mfバージョン" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -5042,12 +5024,6 @@ msgstr "起動後「毎日のヒント」を表示" msgid "If enabled, useful hints are displayed at startup." msgstr "有効になる場合、起動時にヒントを表示されます。" -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5414,6 +5390,9 @@ msgstr "タスクを取消しました" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "私のデバイス" @@ -5661,6 +5640,12 @@ msgstr "" msgid "The printer does not support sending to printer SD card." msgstr "このプリンターはSDカードに送信することができません" +msgid "Slice ok." +msgstr "スライス完了" + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Failed to create socket" @@ -5840,11 +5825,25 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -6191,6 +6190,12 @@ msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "以下のプリセットも削除されます: " +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "選択したプリセットを %1% しますか?" @@ -7169,6 +7174,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "オブジェクト順で造形する場合、プライムタワーを利用できません" @@ -7244,11 +7268,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "積層ピッチはノズルの直径を超える為設定できません" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7593,6 +7612,15 @@ msgstr "" "この値を少し (例えば 0.9) 小さくし、ブリッジ用に押出し量を減らし、たるみを防" "ぎます。" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -7898,6 +7926,15 @@ msgstr "" "有効になる場合、より長いブリッジを造形できますが、仕上がりが劣る可能性があり" "ます。" +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "最大ブリッジ長さ" @@ -8352,9 +8389,11 @@ msgstr "スパース インフィル パターンの角度です" msgid "Sparse infill density" msgstr "充填密度" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "スパース インフィルの密度です。100%%に設定する場合ソリッドになります。" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "充填パターン" @@ -8554,10 +8593,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8605,6 +8644,12 @@ msgid "" "segment" msgstr "ポイント間の平均距離" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -9783,10 +9828,10 @@ msgstr "" "サポートとラフトを造形用のフィラメント。「デフォルト」では当時のフィラメント" "を使用する意味です。" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10026,11 +10071,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "ツリーサポート壁層数" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "ツリーサポートの壁面層数です。" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "ツリーサポートインフィル使用" @@ -10437,10 +10482,6 @@ msgstr "" msgid "invalid value " msgstr "invalid value " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " doesn't work at 100%% density " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Invalid value when spiral vase mode is enabled: " @@ -11292,6 +11333,679 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -11546,6 +12260,44 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Filling bed" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% のインフィル パターンは 100%% の密度をサポートしません。" + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "直線パターンに切り替えますか?\n" +#~ "はい - 直線パターンに切り替えます\n" +#~ "いいえ - 充填密度をリセットします" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "フィラメントをロードする前に、ノズル温度を170℃以上に加熱してください" + +#~ msgid "Newer 3mf version" +#~ msgstr "新3mfバージョン" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "スパース インフィルの密度です。100%%に設定する場合ソリッドになります。" + +#~ msgid "Tree support wall loops" +#~ msgstr "ツリーサポート壁層数" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "ツリーサポートの壁面層数です。" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " doesn't work at 100%% density " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -11567,9 +12319,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "全てのオブジェクト (STL)" -#~ msgid "Slice ok." -#~ msgstr "スライス完了" - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 39b76accd5..3c13b2c871 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-11-19 11:26+0900\n" "Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." "github.com>, crwusiz \n" @@ -1186,9 +1186,6 @@ msgstr "아이콘을 클릭하여 개체의 색상 칠하기를 편집합니다" msgid "Click the icon to shift this object to the bed" msgstr "아이콘을 클릭하여 이 개체를 베드로 옮깁니다" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "파일 로딩 중" @@ -1707,8 +1704,8 @@ msgstr "방향 지정 중..." msgid "Orienting" msgstr "방향 지정 중" -msgid "Filling bed " -msgstr "베드 채움 " +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "베드 채움 취소됨." @@ -2574,19 +2571,6 @@ msgstr "" "예 - 프라임 타워 유지\n" "아니요 - 독립적 지지대 레이어 높이 유지" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% 내부 채움 패턴은 100%% 밀도를 지원하지 않습니다." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"직선 패턴으로 전환하시겠습니까?\n" -"예 - 자동으로 직선 패턴으로 전환합니다\n" -"아니요 - 밀도를 기본값(100%가 아닌 값)으로 자동 재설정합니다" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2687,6 +2671,18 @@ msgstr "사용자가 삽입한 G코드로 인해 일시중지됨" msgid "Motor noise showoff" msgstr "모터 소음 표시" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3159,7 +3155,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3536,6 +3532,12 @@ msgstr "원근법 보기 사용" msgid "Use Orthogonal View" msgstr "평행 투영 보기 사용" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "이름표 &보기" @@ -3905,6 +3907,9 @@ msgstr "다운로드 중 %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4063,8 +4068,10 @@ msgstr "레이어: %s" msgid "Layer: %d/%d" msgstr "레이어: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "필라멘트를 로드하기 전에 노즐을 170도 이상으로 가열하십시오." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "빼는중" @@ -4625,31 +4632,6 @@ msgstr "구성을 로드할 수 없습니다." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "이 3mf는 이전 Orca Slicer에서 생성되었으며, 형상 데이터만 로드합니다." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "최신 3mf 버전" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "3mf에서 잘못된 값이 발견됨:" @@ -5146,12 +5128,6 @@ msgstr "시작 후 \"오늘의 팁\" 알림 표시" msgid "If enabled, useful hints are displayed at startup." msgstr "활성화된 경우 시작 시 유용한 힌트가 표시됩니다." -msgid "Show g-code window" -msgstr "G코드 창 표시" - -msgid "If enabled, g-code window will be displayed." -msgstr "활성화된 경우 G코드 창이 표시됩니다." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5520,6 +5496,9 @@ msgstr "작업이 취소됨" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "내 장치" @@ -5778,6 +5757,12 @@ msgstr "프린터는 Orca Slicer와 동일한 LAN에 있어야 합니다." msgid "The printer does not support sending to printer SD card." msgstr "프린터는 프린터 SD 카드로의 전송을 지원하지 않습니다." +msgid "Slice ok." +msgstr "슬라이스 완료." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "소켓 생성 실패" @@ -5957,11 +5942,25 @@ msgstr "" "지지대 접점에 지지대 재료를 사용하는 경우 다음 설정을 권장합니다:\n" "상단 Z 거리 0, 접점 간격 0, 접점 패턴 동심원 및 독립적 지지대 높이 비활성화" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -6316,6 +6315,12 @@ msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "다음 사전 설정도 삭제됩니다." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "선택한 사전 설정을 %1%로 설정하시겠습니까?" @@ -7331,6 +7336,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "유기체 지지대에서는 가변 레이어 높이가 지원되지 않습니다." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "프라임 타워는 \"개체별\" 출력에서 지원되지 않습니다." @@ -7400,11 +7424,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "레이어 높이는 노즐 직경을 초과할 수 없습니다" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7775,6 +7794,15 @@ msgid "" "material for bridge, to improve sag" msgstr "이 값을 약간(예: 0.9) 줄여 다리의 압출량을 줄여 처짐을 개선합니다" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "상단 표면 유량 비율" @@ -8111,6 +8139,15 @@ msgstr "" "습니다. 비활성화하면 다리가 더 좋아 보이지만 짧은 브리지 거리에 대해서만 안정" "적입니다." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "최대 다리 거리" @@ -8600,9 +8637,11 @@ msgstr "선의 시작 또는 주 방향을 제어하는 드문 내부 채움 패 msgid "Sparse infill density" msgstr "드문 내부 채움 밀도" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "내부 드문 내부 채움 밀도, 100은 전체가 꽉찬 내부 채움임을 의미합니다" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "드문 내부 채움 패턴" @@ -8828,10 +8867,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -8887,6 +8926,12 @@ msgid "" "segment" msgstr "각 선의 분절에 도입된 임의의 지점간 평균 거리" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "작은 갭 필터링" @@ -10218,10 +10263,10 @@ msgstr "" "기본 지지대 및 라프트를 출력하기 위한 필라멘트. \"기본값\"은 지원을 위한 특" "정 필라멘트가 없으며 현재 필라멘트가 사용됨을 의미합니다" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10480,11 +10525,11 @@ msgstr "" "이 직경의 원 면적보다 더 큰 면적을 가진 가지는 안정성을 위해 이중벽으로 출력" "됩니다. 이중벽을 허용하지 않으려면 이 값을 0으로 설정합니다." -msgid "Tree support wall loops" -msgstr "나무 지지대 벽 루프" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "이 설정은 나무 지지대의 벽 수를 지정합니다" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "내부 채움이 있는 나무 지지대" @@ -10932,10 +10977,6 @@ msgstr "" msgid "invalid value " msgstr "잘못된 값 " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " 100%% 밀도에서 작동하지 않음 " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "나선 꽃병 모드가 활성화된 경우 유효하지 않은 값: " @@ -11879,6 +11920,686 @@ msgstr "요소 2" msgid "Delete input" msgstr "입력개체 삭제" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "프린터 선택 필요" + +msgid "The start, end or step is not valid value." +msgstr "시작, 끝 또는 단계가 유효한 값이 아닙니다." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"교정할 수 없음: 설정된 교정 값 범위가 너무 크거나 단계가 너무 작기 때문일 수 " +"있습니다" + +msgid "Physical Printer" +msgstr "물리 프린터" + +msgid "Print Host upload" +msgstr "출력 호스트 업로드" + +msgid "Could not get a valid Printer Host reference" +msgstr "유효한 프린터 호스트 참조를 가져올 수 없습니다" + +msgid "Success!" +msgstr "성공!" + +msgid "Refresh Printers" +msgstr "프린터 새로 고침" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"HTTPS CA 파일은 선택 사항입니다. 자체 서명된 인증서와 함께 HTTPS를 사용하는 " +"경우에만 필요합니다." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "인증서 파일 (*.crt, *.pem)|*.crt;*.pem|All files|*.*" + +msgid "Open CA certificate file" +msgstr "CA 인증서 파일 열기" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"이 시스템에서 %s는 시스템 인증서 저장소나 키체인의 HTTPS 인증서를 사용합니다." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"사용자 지정 CA 파일을 사용하려면 CA 파일을 인증서 저장소/키체인으로 가져오십" +"시오." + +msgid "Connection to printers connected via the print host failed." +msgstr "출력 호스트를 통해 연결된 프린터에 연결하지 못했습니다." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12161,6 +12882,49 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "베드 채움 " + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% 내부 채움 패턴은 100%% 밀도를 지원하지 않습니다." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "직선 패턴으로 전환하시겠습니까?\n" +#~ "예 - 자동으로 직선 패턴으로 전환합니다\n" +#~ "아니요 - 밀도를 기본값(100%가 아닌 값)으로 자동 재설정합니다" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "필라멘트를 로드하기 전에 노즐을 170도 이상으로 가열하십시오." + +#~ msgid "Newer 3mf version" +#~ msgstr "최신 3mf 버전" + +#~ msgid "Show g-code window" +#~ msgstr "G코드 창 표시" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "활성화된 경우 G코드 창이 표시됩니다." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "내부 드문 내부 채움 밀도, 100은 전체가 꽉찬 내부 채움임을 의미합니다" + +#~ msgid "Tree support wall loops" +#~ msgstr "나무 지지대 벽 루프" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "이 설정은 나무 지지대의 벽 수를 지정합니다" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " 100%% 밀도에서 작동하지 않음 " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12182,9 +12946,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "모든 개체를 STL로 내보내기" -#~ msgid "Slice ok." -#~ msgstr "슬라이스 완료." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12427,65 +13188,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "선택한 사전 설정: %1%을(를) 찾을 수 없습니다." -#~ msgid "Physical Printer" -#~ msgstr "물리 프린터" - -#~ msgid "Print Host upload" -#~ msgstr "출력 호스트 업로드" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "유효한 프린터 호스트 참조를 가져올 수 없습니다" - -#~ msgid "Success!" -#~ msgstr "성공!" - -#~ msgid "Refresh Printers" -#~ msgstr "프린터 새로 고침" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "HTTPS CA 파일은 선택 사항입니다. 자체 서명된 인증서와 함께 HTTPS를 사용하" -#~ "는 경우에만 필요합니다." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "인증서 파일 (*.crt, *.pem)|*.crt;*.pem|All files|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "CA 인증서 파일 열기" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "이 시스템에서 %s는 시스템 인증서 저장소나 키체인의 HTTPS 인증서를 사용합니" -#~ "다." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "사용자 지정 CA 파일을 사용하려면 CA 파일을 인증서 저장소/키체인으로 가져오" -#~ "십시오." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "출력 호스트를 통해 연결된 프린터에 연결하지 못했습니다." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "시작, 끝 또는 단계가 유효한 값이 아닙니다." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "교정할 수 없음: 설정된 교정 값 범위가 너무 크거나 단계가 너무 작기 때문일 " -#~ "수 있습니다" - -#~ msgid "Need select printer" -#~ msgstr "프린터 선택 필요" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 10a9862387..238eb19e6d 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1191,9 +1191,6 @@ msgstr "Klik op het pictogram om de kleur van het object te bewerken" msgid "Click the icon to shift this object to the bed" msgstr "Klik op het pictogram om dit object te verschuiven op het printbed" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Bestand laden" @@ -1734,8 +1731,8 @@ msgstr "Oriënteren " msgid "Orienting" msgstr "Oriënteren " -msgid "Filling bed " -msgstr "Filling bed" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Bed filling canceled." @@ -2630,19 +2627,6 @@ msgstr "" "JA - laat de prime-tower aan staan\n" "NO - laat onafhankelijke support-laag-hoogte ingeschakeld" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% het gekozen vulling patroon ondersteund geen 100%% dichtheid." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Overschakelen naar rechtlijnig patroon?\n" -"Ja - Automatisch overschakelen naar rechtlijnig patroon\n" -"Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% waarde" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2743,6 +2727,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3205,7 +3201,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Maat:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3582,6 +3578,12 @@ msgstr "Perspectiefweergave gebruiken" msgid "Use Orthogonal View" msgstr "Orthogonale weergave gebruiken" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Toon &Labels" @@ -3953,6 +3955,9 @@ msgstr "%d%% downloaden..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4108,9 +4113,10 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." msgid "Still unload" msgstr "Nog steeds aan het ontladen" @@ -4668,31 +4674,6 @@ msgstr "De configuratie kan niet worden geladen." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Nieuwere versie 3mf" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -5205,12 +5186,6 @@ msgid "If enabled, useful hints are displayed at startup." msgstr "" "Indien ingeschakeld, worden bij het opstarten nuttige tips weergegeven." -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5593,6 +5568,9 @@ msgstr "Taak geannuleerd" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Mijn apparaat" @@ -5863,6 +5841,12 @@ msgstr "" "De printer biedt geen ondersteuning voor het verzenden naar de microSD-kaart " "van de printer." +msgid "Slice ok." +msgstr "Slice gelukt" + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Failed to create socket" @@ -6053,11 +6037,25 @@ msgstr "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Bij het opnemen van timelapse zonder toolhead is het aan te raden om een " "„Timelapse Wipe Tower” toe te voegen \n" @@ -6421,6 +6419,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "De volgende voorinstelling zal ook verwijderd worden@" msgstr[1] "De volgende voorinstelling zal ook verwijderd worden@" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Weet u zeker dat u de geselecteerde preset wilt %1%?" @@ -7458,6 +7462,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Een prime-toren wordt niet ondersteund bij het \"per object\" printen." @@ -7533,11 +7556,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "De laaghoogte kan niet groter zijn dan de diameter van de nozzle" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7918,6 +7936,15 @@ msgstr "" "Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor " "bruggen te verminderen, dit om doorzakken te voorkomen." +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -8237,6 +8264,15 @@ msgstr "" "uitgeschakeld, zien bruggen er beter uit, maar zijn ze alleen betrouwbaar " "voor kortere afstanden." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Maximale bruglengte" @@ -8716,11 +8752,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Vulling percentage" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Dit is de dichtheid van de interne vulling. 100%% betekent dat het object " -"geheel solide zal zijn." msgid "Sparse infill pattern" msgstr "Vulpatroon" @@ -8928,10 +8964,10 @@ msgstr "Volledige snelheid op laag" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8984,6 +9020,12 @@ msgstr "" "De gemiddelde afstand tussen de willekeurige punten die op ieder lijnsegment " "zijn geïntroduceerd" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -10226,10 +10268,10 @@ msgstr "" "betekent geen specifiek filament voor ondersteuning (support) en het " "huidige filament wordt gebruikt." -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10481,11 +10523,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Tree support wand lussen" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Deze instelling specificeert het aantal wanden rond de tree support." +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Tree support met vulling" @@ -10928,10 +10970,6 @@ msgstr "" msgid "invalid value " msgstr "invalid value " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " doesn't work at 100%% density " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Invalid value when spiral vase mode is enabled: " @@ -11783,6 +11821,680 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12059,6 +12771,47 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Filling bed" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% het gekozen vulling patroon ondersteund geen 100%% dichtheid." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Overschakelen naar rechtlijnig patroon?\n" +#~ "Ja - Automatisch overschakelen naar rechtlijnig patroon\n" +#~ "Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% " +#~ "waarde" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." + +#~ msgid "Newer 3mf version" +#~ msgstr "Nieuwere versie 3mf" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Dit is de dichtheid van de interne vulling. 100%% betekent dat het object " +#~ "geheel solide zal zijn." + +#~ msgid "Tree support wall loops" +#~ msgstr "Tree support wand lussen" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "" +#~ "Deze instelling specificeert het aantal wanden rond de tree support." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " doesn't work at 100%% density " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12080,9 +12833,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Exporteer alle objecten als STL" -#~ msgid "Slice ok." -#~ msgstr "Slice gelukt" - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index ee6a578f89..27a1b03f2a 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V1.8.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 19:45+0800\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-11-20 01:07+0700\n" "Last-Translator: Andylg \n" "Language-Team: \n" @@ -15,7 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.1\n" msgid "Supports Painting" @@ -106,12 +107,20 @@ msgstr "Откл. автоподдержку" msgid "Support Generated" msgstr "Поддержка сгенерирована" +msgid "Gizmo-Place on Face" +msgstr "" + msgid "Lay on face" msgstr "Поверхностью на стол" #, boost-format -msgid "Filament count exceeds the maximum number that painting tool supports. only the first %1% filaments will be available in painting tool." -msgstr "Количество пластиковых нитей превышает максимальное количество поддерживаемое инструментом рисования. Только первые %1% материала будут доступны в инструменте для рисования." +msgid "" +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." +msgstr "" +"Количество пластиковых нитей превышает максимальное количество " +"поддерживаемое инструментом рисования. Только первые %1% материала будут " +"доступны в инструменте для рисования." msgid "Color Painting" msgstr "Покраска" @@ -149,8 +158,8 @@ msgstr "Заливка" msgid "Height range" msgstr "Диапазон высоты слоёв" -msgid "Ctrl + Shift + Enter" -msgstr "Ctrl + Shift + Enter" +msgid "Alt + Shift + Enter" +msgstr "" msgid "Toggle Wireframe" msgstr "Показать/скрыть каркас" @@ -166,6 +175,13 @@ msgstr "" "Диапазон \n" "высоты слоёв" +# +++++++++++++++++++++ +msgid "Vertical" +msgstr "Вертикальная линия" + +msgid "Horizontal" +msgstr "Горизонтальная линия" + msgid "Remove painted color" msgstr "Удаление окрашенного участка" @@ -176,9 +192,15 @@ msgstr "Окрашено с использованием прутка %1%" msgid "Move" msgstr "Перемещение" +msgid "Gizmo-Move" +msgstr "" + msgid "Rotate" msgstr "Поворот" +msgid "Gizmo-Rotate" +msgstr "" + msgid "Optimize orientation" msgstr "Оптимизация положения модели" @@ -188,12 +210,12 @@ msgstr "Применить" msgid "Scale" msgstr "Масштаб" +msgid "Gizmo-Scale" +msgstr "" + msgid "Error: Please close all toolbar menus first" msgstr "Ошибка: пожалуйста, сначала закройте все меню панели инструментов." -msgid "Tool-Lay on Face" -msgstr "Поверхностью на стол" - msgid "in" msgstr "дюйм" @@ -412,8 +434,12 @@ msgid "Decimate ratio" msgstr "Коэффициент упрощения" #, boost-format -msgid "Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended to simplify the model." -msgstr "Обработка модели '%1%' с более чем 1 млн. треугольников может быть медленной. Настоятельно рекомендуется упростить модель." +msgid "" +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." +msgstr "" +"Обработка модели '%1%' с более чем 1 млн. треугольников может быть " +"медленной. Настоятельно рекомендуется упростить модель." msgid "Simplify model" msgstr "Упростить полигональную сетку" @@ -483,14 +509,14 @@ msgstr "Рисование шва" msgid "Remove selection" msgstr "Удаление выделенного" -msgid "Shift + Mouse move up or dowm" -msgstr "Shift + Мышь вверх или вниз" +msgid "Entering Seam painting" +msgstr "" -msgid "Rotate text" -msgstr "Поворот текста" +msgid "Leaving Seam painting" +msgstr "" -msgid "Text shape" -msgstr "Форма текста" +msgid "Paint-on seam editing" +msgstr "" msgid "Font" msgstr "Шрифт" @@ -498,12 +524,6 @@ msgstr "Шрифт" msgid "Thickness" msgstr "Толщина" -msgid "Input text" -msgstr "Введите текст" - -msgid "Embeded" -msgstr "Проникновение" - msgid "Text Gap" msgstr "" "Межбуквенный \n" @@ -519,12 +539,24 @@ msgstr "" "Глубина\n" "проникновения" +msgid "Input text" +msgstr "Введите текст" + msgid "Surface" msgstr "На поверхности" msgid "Horizontal text" msgstr "Горизонтальный текст" +msgid "Shift + Mouse move up or dowm" +msgstr "Shift + Мышь вверх или вниз" + +msgid "Rotate text" +msgstr "Поворот текста" + +msgid "Text shape" +msgstr "Форма текста" + msgid "Ctrl+" msgstr "Ctrl+" @@ -554,23 +586,35 @@ msgid "Machine" msgstr "Принтер" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "Пакет конфигурации был загружен, но некоторые значения не были распознаны." +msgstr "" +"Пакет конфигурации был загружен, но некоторые значения не были распознаны." #, boost-format -msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "Файл конфигурации \"%1%\" был загружен, но некоторые значения не были распознаны." +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "" +"Файл конфигурации \"%1%\" был загружен, но некоторые значения не были " +"распознаны." msgid "V" msgstr "V" -msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." -msgstr "OrcaSlicer завершает работу из-за нехватки памяти. Возможно, это баг программы. Будем признательны, если вы сообщите о проблеме нашей команде." +msgid "" +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." +msgstr "" +"OrcaSlicer завершает работу из-за нехватки памяти. Возможно, это баг " +"программы. Будем признательны, если вы сообщите о проблеме нашей команде." msgid "Fatal error" msgstr "Критическая ошибка" -msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." -msgstr "OrcaSlicer завершит работу из-за ошибки локализации. Будем признательны, если вы сообщите о конкретном сценарии возникновения этой проблемы." +msgid "" +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." +msgstr "" +"OrcaSlicer завершит работу из-за ошибки локализации. Будем признательны, " +"если вы сообщите о конкретном сценарии возникновения этой проблемы." msgid "Critical error" msgstr "Критическая ошибка" @@ -593,22 +637,16 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Сбой подключения к %s! [Серийный №:%s, код=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " +"features.\n" "Click Yes to install it now." -msgstr "Для работы некоторых функций Orca Slicer требуется Microsoft WebView2 Runtime.Нажмите Да, чтобы установить." +msgstr "" +"Для работы некоторых функций Orca Slicer требуется Microsoft WebView2 " +"Runtime.Нажмите Да, чтобы установить." msgid "WebView2 Runtime" msgstr "WebView2 Runtime" -msgid "" -"The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" -"OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will not be affected." -msgstr "" -"Возможно, файл конфигурации OrcaSlicer повреждён и не может быть обработан.\n" -"OrcaSlicer попытался воссоздать файл конфигурации.\n" -"Обратите внимание, что настройки приложения будут потеряны, но профили принтера не будут затронуты." - #, c-format, boost-format msgid "" "%s\n" @@ -625,7 +663,8 @@ msgstr "Загрузка настроек" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "Нажмите OK, чтобы загрузить последнюю версию в браузере по умолчанию: %s" +msgstr "" +"Нажмите OK, чтобы загрузить последнюю версию в браузере по умолчанию: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slice нуждается в обновлении." @@ -636,6 +675,17 @@ msgstr "У вас стоит самая последняя версия." msgid "Info" msgstr "Информация" +msgid "" +"The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" +"OrcaSlicer has attempted to recreate the configuration file.\n" +"Please note, application settings will be lost, but printer profiles will " +"not be affected." +msgstr "" +"Возможно, файл конфигурации OrcaSlicer повреждён и не может быть обработан.\n" +"OrcaSlicer попытался воссоздать файл конфигурации.\n" +"Обратите внимание, что настройки приложения будут потеряны, но профили " +"принтера не будут затронуты." + msgid "Rebuild" msgstr "Пересоздание" @@ -648,6 +698,10 @@ msgstr "Загрузка режима отображения" msgid "Choose one file (3mf):" msgstr "Выберите один файл (3mf):" +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" +"Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" + msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf):" @@ -657,8 +711,12 @@ msgstr "Выберите один файл (gcode/3mf):" msgid "Some presets are modified." msgstr "В некоторых профилях имеются изменения." -msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." -msgstr "Вы можете сохранить изменённые профили в новом проекте, отменить или сохранить изменения в новые профили." +msgid "" +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." +msgstr "" +"Вы можете сохранить изменённые профили в новом проекте, отменить или " +"сохранить изменения в новые профили." msgid "User logged out" msgstr "Пользователь вышел из системы" @@ -669,12 +727,24 @@ msgstr "Создание или открытие файла проекта во msgid "Open Project" msgstr "Открыть проект" -msgid "The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally" -msgstr "Слишком старая версия Orca Slicer. Для корректной работы обновите программу до последней версии." +msgid "" +"The version of Orca Slicer is too low and needs to be updated to the latest " +"version before it can be used normally" +msgstr "" +"Слишком старая версия Orca Slicer. Для корректной работы обновите программу " +"до последней версии." msgid "Privacy Policy Update" msgstr "Обновление политики конфиденциальности" +msgid "" +"The number of user presets cached in the cloud has exceeded the upper limit, " +"newly created user presets can only be used locally." +msgstr "" + +msgid "Sync user presets" +msgstr "" + msgid "Loading" msgstr "Загрузка" @@ -868,8 +938,11 @@ msgstr "Для печати" msgid "Fix model" msgstr "Починить модель" -msgid "Export as STL" -msgstr "Экспорт в STL" +msgid "Export as one STL" +msgstr "" + +msgid "Export as STLs" +msgstr "" msgid "Reload from disk" msgstr "Перезагрузить с диска" @@ -936,7 +1009,8 @@ msgid "Assemble" msgstr "Объединить в сборку" msgid "Assemble the selected objects to an object with multiple parts" -msgstr "Объединение выбранных объектов в модель, состоящую из несколько частей." +msgstr "" +"Объединение выбранных объектов в модель, состоящую из несколько частей." msgid "Assemble the selected objects to an object with single part" msgstr "Объединение выбранных моделей в единую." @@ -1113,7 +1187,9 @@ msgid "Click the icon to reset all settings of the object" msgstr "Нажмите на значок, чтобы сбросить все настройки модели" msgid "Right button click the icon to drop the object printable property" -msgstr "Нажмите правой кнопкой мыши на значок, чтобы разрешить/запретить печать модели" +msgstr "" +"Нажмите правой кнопкой мыши на значок, чтобы разрешить/запретить печать " +"модели" msgid "Click the icon to toggle printable property of the object" msgstr "Нажмите на значок, чтобы разрешить/запретить печать модели" @@ -1143,33 +1219,45 @@ msgid "Add Modifier" msgstr "Добавление модификатора" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "Переключение в режим редактирования настроек печати каждой модели для изменения настроек модификатора." +msgstr "" +"Переключение в режим редактирования настроек печати каждой модели для " +"изменения настроек модификатора." -msgid "Switch to per-object setting mode to edit process settings of selected objects." +msgid "" +"Switch to per-object setting mode to edit process settings of selected " +"objects." msgstr "Переключение в режим редактирования настроек печати каждой модели." msgid "Delete connector from object which is a part of cut" msgstr "Удаление соединения из модели, которое является частью разреза" msgid "Delete solid part from object which is a part of cut" -msgstr "Удаление твердотельной части из модели, которая является частью разреза" +msgstr "" +"Удаление твердотельной части из модели, которая является частью разреза" msgid "Delete negative volume from object which is a part of cut" -msgstr "Удаление объёма для вычитания из модели, которая является частью разреза" +msgstr "" +"Удаление объёма для вычитания из модели, которая является частью разреза" -msgid "To save cut correspondence you can delete all connectors from all related objects." -msgstr "Для сохранения информации о разрезе, вы можете удалить все соединения из всех связанных объектов." +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." +msgstr "" +"Для сохранения информации о разрезе, вы можете удалить все соединения из " +"всех связанных объектов." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "Это действие приведёт к удалению информации о разрезе.\n" "После этого согласованность модели не может быть гарантирована.\n" "\n" -"Чтобы манипулировать с твердотельными частями или объёмами для вычитания, необходимо сначала удалить информацию о сделанном разрезе." +"Чтобы манипулировать с твердотельными частями или объёмами для вычитания, " +"необходимо сначала удалить информацию о сделанном разрезе." msgid "Delete all connectors" msgstr "Удалить все соединения" @@ -1225,11 +1313,18 @@ msgstr "Слой" msgid "Selection conflicts" msgstr "Конфликты при выборе" -msgid "If first selected item is an object, the second one should also be object." -msgstr "Если первый выбранный элемент является моделью, то второй также должен быть моделью." +msgid "" +"If first selected item is an object, the second one should also be object." +msgstr "" +"Если первый выбранный элемент является моделью, то второй также должен быть " +"моделью." -msgid "If first selected item is a part, the second one should be part in the same object." -msgstr "Если первый выбранный элемент является частью, то второй должен быть частью той же модели." +msgid "" +"If first selected item is a part, the second one should be part in the same " +"object." +msgstr "" +"Если первый выбранный элемент является частью, то второй должен быть частью " +"той же модели." msgid "The type of the last solid object part is not to be changed." msgstr "Вы не можете изменить тип последнего твердотельного элемента модели." @@ -1296,7 +1391,9 @@ msgid "Invalid numeric." msgstr "Неправильное числовое значение." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "Одна ячейка может быть скопирована только в одну или несколько ячеек одного и того же столбца." +msgstr "" +"Одна ячейка может быть скопирована только в одну или несколько ячеек одного " +"и того же столбца." msgid "multiple cells copy is not supported" msgstr "копирование нескольких ячеек не поддерживается" @@ -1370,6 +1467,18 @@ msgstr "Следующий совет." msgid "Open Documentation in web browser." msgstr "Открыть документацию в браузере." +msgid "Color" +msgstr "Цвет" + +msgid "Pause" +msgstr "Пауза" + +msgid "Template" +msgstr "" + +msgid "Custom" +msgstr "Пользовательский" + msgid "Pause:" msgstr "Пауза:" @@ -1445,8 +1554,8 @@ msgstr "..." msgid "Failed to connect to the server" msgstr "Не удалось подключиться к серверу" -msgid "Check cloud service status" -msgstr "Проверка статуса облачного сервиса" +msgid "Check the status of current system services" +msgstr "Проверка состояния текущих системных служб" msgid "code" msgstr "код" @@ -1455,7 +1564,8 @@ msgid "Failed to connect to cloud service" msgstr "Не удалось подключиться к облачному сервису" msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "Для просмотра состояния статуса сервиса нажмите на вышерасположенную ссылку" +msgstr "" +"Для просмотра состояния статуса сервиса нажмите на вышерасположенную ссылку" msgid "Failed to connect to the printer" msgstr "Не удалось подключиться к принтеру." @@ -1472,27 +1582,21 @@ msgstr "Подключение..." msgid "?" msgstr "?" +msgid "/" +msgstr "/" + msgid "Empty" msgstr "Пусто" msgid "AMS" msgstr "АСПП" -msgid "AMS %s" -msgstr "АСПП №%s" - msgid "Auto Refill" msgstr "Дозаправка" msgid "AMS not connected" msgstr "АСПП не подключена" -msgid "Cali" -msgstr "Калиб." - -msgid "Calibration of extrusion" -msgstr "Калибровка экструзии" - msgid "Load Filament" msgstr "Загрузить" @@ -1515,7 +1619,8 @@ msgid "Calibrating AMS..." msgstr "Калибровка АСПП..." msgid "A problem occured during calibration. Click to view the solution." -msgstr "Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." +msgstr "" +"Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." msgid "Calibrate again" msgstr "Повторить калибровку" @@ -1543,9 +1648,6 @@ msgstr "Вставка нового прутка в экструдер" msgid "Purge old filament" msgstr "Очистка от старого материала" -msgid "Push new filament into the extruder" -msgstr "Вставка нового прутка в экструдер" - msgid "Feed Filament" msgstr "Подача прутка" @@ -1559,11 +1661,12 @@ msgstr "Проверка расположения прутка" msgid "Grab new filament" msgstr "Загрузка нового прутка" -msgid "Confirm whether the filament has been extruded" -msgstr "Подтвердите, что пластиковая нить была выдавлена" - -msgid "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament." -msgstr "Выберите слот АСПП, затем нажмите кнопку «Загрузить» или «Выгрузить» для автоматической загрузки или выгрузки прутка." +msgid "" +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filiament." +msgstr "" +"Выберите слот АСПП, затем нажмите кнопку «Загрузить» или «Выгрузить» для " +"автоматической загрузки или выгрузки прутка." msgid "Edit" msgstr "Правка" @@ -1588,8 +1691,11 @@ msgstr "" msgid "Arranging..." msgstr "Расстановка..." -msgid "Arrange failed. Found some exceptions when processing object geometries." -msgstr "Ошибка расстановки. Обнаружены некоторые исключения при обработке геометрии моделей." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." +msgstr "" +"Ошибка расстановки. Обнаружены некоторые исключения при обработке геометрии " +"моделей." msgid "Arranging" msgstr "Расстановка" @@ -1597,18 +1703,23 @@ msgstr "Расстановка" msgid "Arranging canceled." msgstr "Расстановка отменена." -msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "Расстановка завершена, но не всё уместилось на столе. Уменьшите интервал расстановки и повторите попытку." +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "" +"Расстановка завершена, но не всё уместилось на столе. Уменьшите интервал " +"расстановки и повторите попытку." msgid "Arranging done." msgstr "Расстановка выполнена." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" -"При расстановке были проигнорированы следующие модели, которые не помещаются на одном столе:\n" +"При расстановке были проигнорированы следующие модели, которые не помещаются " +"на одном столе:\n" "%s" msgid "" @@ -1631,8 +1742,8 @@ msgstr "Ориентация..." msgid "Orienting" msgstr "Ориентация" -msgid "Filling bed " -msgstr "Заполнение стола" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Заполнение стола отменено." @@ -1652,21 +1763,6 @@ msgstr "Авторизация" msgid "Login failed" msgstr "Ошибка авторизации" -msgid "The region parameter is incorrrect" -msgstr "Неправильная региональная настройка" - -msgid "Failure of printer login" -msgstr "Не удалось подключиться к принтеру." - -msgid "Failed to get ticket" -msgstr "Не удалось получить заявку" - -msgid "User authorization timeout" -msgstr "Таймаут авторизации пользователя" - -msgid "Failure of bind" -msgstr "Ошибка привязки" - msgid "Please check the printer network connection." msgstr "Пожалуйста, проверьте сетевое подключение принтера." @@ -1677,49 +1773,55 @@ msgid "Task canceled." msgstr "Задание отменено." msgid "Upload task timed out. Please check the network status and try again." -msgstr "Истекло время ожидания отправки задания. Проверьте сетевое подключение и повторите попытку." +msgstr "" +"Истекло время ожидания отправки задания. Проверьте сетевое подключение и " +"повторите попытку." msgid "Cloud service connection failed. Please try again." -msgstr "Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте ещё раз." +msgstr "" +"Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте ещё раз." msgid "Print file not found. please slice again." msgstr "Файл для печати не найден, нарежьте ещё раз." -msgid "Print file not found, please slice again" -msgstr "Файл для печати не найден, нарежьте ещё раз." - -msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." -msgstr "Файл для печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, упростите модель и нарежьте ещё раз." - -msgid "Failed uploading print file" -msgstr "Не удалось передать файл на печать." - -msgid "Wrong Access code" -msgstr "Неправильный код доступа" +msgid "" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." +msgstr "" +"Файл для печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, " +"упростите модель и нарежьте ещё раз." msgid "Failed to send the print job. Please try again." -msgstr "Не удалось отправить задание на печать. Пожалуйста, попробуйте ещё раз." - -msgid "Send to Printer failed. Please try again." -msgstr "Ошибка отправки на принтер. Пожалуйста, попробуйте ещё раз." - -msgid "No space left on Printer SD card" -msgstr "На SD-карте принтера недостаточно места" +msgstr "" +"Не удалось отправить задание на печать. Пожалуйста, попробуйте ещё раз." msgid "Failed to upload file to ftp. Please try again." msgstr "Не удалось загрузить файл на FTP. Пожалуйста, попробуйте ещё раз." -msgid "Check the current status of the bambu server by clicking on the link above." -msgstr "Проверить текущий статус сервера Bambu можно перейдя по указанной выше ссылке." +msgid "" +"Check the current status of the bambu server by clicking on the link above." +msgstr "" +"Проверить текущий статус сервера Bambu можно перейдя по указанной выше " +"ссылке." -msgid "The size of the print file is too large. Please adjust the file size and try again." -msgstr "Размер файла для печати слишком велик. Пожалуйста, уменьшите размер файла и повторите попытку." +msgid "" +"The size of the print file is too large. Please adjust the file size and try " +"again." +msgstr "" +"Размер файла для печати слишком велик. Пожалуйста, уменьшите размер файла и " +"повторите попытку." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Файл печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на печать." +msgstr "" +"Файл печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на " +"печать." -msgid "Failed to upload print file to FTP. Please check the network status and try again." -msgstr "Не удалось загрузить файл печати на FTP. Проверьте состояние сети и повторите попытку." +msgid "" +"Failed to upload print file to FTP. Please check the network status and try " +"again." +msgstr "" +"Не удалось загрузить файл печати на FTP. Проверьте состояние сети и " +"повторите попытку." msgid "Sending print job over LAN" msgstr "Отправка задания на печать по локальной сети" @@ -1727,6 +1829,14 @@ msgstr "Отправка задания на печать по локально msgid "Sending print job through cloud service" msgstr "Отправка задания на печать через облачную службу" +msgid "Print task sending times out." +msgstr "" + +msgid "" +"The printer timed out while receiving a print job. Please check if the " +"network is functioning properly and send the print again." +msgstr "" + msgid "Service Unavailable" msgstr "Сервис недоступен" @@ -1738,11 +1848,13 @@ msgstr "Отправка конфигурации печати" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "Успешно отправлено. Автоматический переход на страницу устройства через %s с." +msgstr "" +"Успешно отправлено. Автоматический переход на страницу устройства через %s с." #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "Успешно отправлено. Автоматический переход на следующую страницу через %s с." +msgstr "" +"Успешно отправлено. Автоматический переход на следующую страницу через %s с." msgid "An SD card needs to be inserted before printing via LAN." msgstr "Перед печатью через локальную сеть необходимо вставить SD-карту." @@ -1750,9 +1862,6 @@ msgstr "Перед печатью через локальную сеть нео msgid "Sending gcode file over LAN" msgstr "Отправка файла G-кода по локальной сети" -msgid "Sending gcode file through cloud service" -msgstr "Отправка файла G-кода через облачный сервис" - msgid "Sending gcode file to sdcard" msgstr "Отправка файла G-кода на SD-карту" @@ -1763,9 +1872,6 @@ msgstr "Успешно отправлено. Закрытие текущей с msgid "An SD card needs to be inserted before sending to printer." msgstr "Перед отправкой на принтер необходимо вставить SD-карту." -msgid "Please log out and login to the printer again." -msgstr "Пожалуйста, выйдите и снова войдите в принтер." - msgid "Choose SLA archive:" msgstr "Выберите SLA архив:" @@ -1793,8 +1899,12 @@ msgstr "Скорость" msgid "Importing SLA archive" msgstr "Импорт SLA архива" -msgid "The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before importing that SLA archive." -msgstr "Архив SLA не содержит никаких профилей. Пожалуйста, сначала активируйте какой-нибудь профиль SLA принтера, прежде чем импортировать этот SLA архив." +msgid "" +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." +msgstr "" +"Архив SLA не содержит никаких профилей. Пожалуйста, сначала активируйте " +"какой-нибудь профиль SLA принтера, прежде чем импортировать этот SLA архив." msgid "Importing canceled." msgstr "Импорт отменен." @@ -1802,8 +1912,12 @@ msgstr "Импорт отменен." msgid "Importing done." msgstr "Импорт завершён." -msgid "The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." -msgstr "Импортированный SLA архив не содержит никаких профилей. Текущие SLA профили использовались в качестве резервных." +msgid "" +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." +msgstr "" +"Импортированный SLA архив не содержит никаких профилей. Текущие SLA профили " +"использовались в качестве резервных." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "Вы не можете загрузить SLA проект с составной моделью на столе" @@ -1847,14 +1961,25 @@ msgstr "Orca Slicer распространяется под лицензией " msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public третьей версии" -msgid "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" -msgstr "Orca Slicer основан на BambuStudio от компании Bambulab, которая взяла за основу PrusaSlicer от компании Prusa Research. PrusaSlicer же основан на Slic3r от Alessandro Ranellucci и разработках сообщества RepRap." +msgid "" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " +"the RepRap community" +msgstr "" +"Orca Slicer основан на BambuStudio от компании Bambulab, которая взяла за " +"основу PrusaSlicer от компании Prusa Research. PrusaSlicer же основан на " +"Slic3r от Alessandro Ranellucci и разработках сообщества RepRap." msgid "Libraries" msgstr "Библиотеки" -msgid "This software uses open source components whose copyright and other proprietary rights belong to their respective owners" -msgstr "В данном программном обеспечении используются компоненты с открытым исходным кодом, авторские и иные права на которые принадлежат их соответствующим владельцам." +msgid "" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" +msgstr "" +"В данном программном обеспечении используются компоненты с открытым исходным " +"кодом, авторские и иные права на которые принадлежат их соответствующим " +"владельцам." #, c-format, boost-format msgid "About %s" @@ -1867,13 +1992,18 @@ msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." msgstr "OrcaSlicer основан на проектах BambuStudio, PrusaSlicer и SuperSlicer." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "BambuStudio изначально основан на PrusaSlicer от компании PrusaResearch." +msgstr "" +"BambuStudio изначально основан на PrusaSlicer от компании PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer основан на проекте Slic3r от Alessandro Ranellucci." -msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." -msgstr "Slic3r был создан Alessandro Ranellucci совместно с многими другими участниками сообщества." +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r был создан Alessandro Ranellucci совместно с многими другими " +"участниками сообщества." msgid "Version" msgstr "Версия" @@ -1913,9 +2043,6 @@ msgstr "Серийный №" msgid "Setting AMS slot information while printing is not supported" msgstr "Изменение информации о слотах АСПП во время печати не поддерживается" -msgid "Factors of dynamic flow cali" -msgstr "Коэф. калиб. динам. потока" - msgid "Factors of Flow Dynamics Calibration" msgstr "Коэф. калиб. динам. потока" @@ -1929,7 +2056,8 @@ msgid "Factor N" msgstr "Коэф. N" msgid "Setting Virtual slot information while printing is not supported" -msgstr "Настройка информации виртуального слота во время печати не поддерживается" +msgstr "" +"Настройка информации виртуального слота во время печати не поддерживается" msgid "Are you sure you want to clear the filament information?" msgstr "Вы уверены, что хотите удалить информацию о пластиковой нити?" @@ -1937,11 +2065,11 @@ msgstr "Вы уверены, что хотите удалить информац msgid "You need to select the material type and color first." msgstr "Сначала необходимо выбрать тип материала и цвет." -msgid "Please input a valid value (K in 0~0.5)" -msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0.5)" +msgid "Please input a valid value (K in 0~0.3)" +msgstr "" -msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0.5, N в диапазоне 0.6~2.0)" +msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" +msgstr "" msgid "Other Color" msgstr "Другой цвет" @@ -1952,8 +2080,15 @@ msgstr "Пользовательский цвет" msgid "Dynamic flow calibration" msgstr "Калибровка динамики потока" -msgid "The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same values as the actual printing. They can be auto-filled by selecting a filament preset." -msgstr "Температура сопла и максимальная объёмная скорость влияют на результаты калибровки. Введите те же значения, которые вы используете при фактической печати. Их можно заполнить автоматически, выбрав существующий профиль пластиковой нити." +msgid "" +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." +msgstr "" +"Температура сопла и максимальная объёмная скорость влияют на результаты " +"калибровки. Введите те же значения, которые вы используете при фактической " +"печати. Их можно заполнить автоматически, выбрав существующий профиль " +"пластиковой нити." msgid "Nozzle Diameter" msgstr "Диаметр сопла" @@ -1985,8 +2120,14 @@ msgstr "Запустить калибровку" msgid "Next" msgstr "Далее" -msgid "Calibration completed. Please find the most uniform extrusion line on your hot bed like the picture below, and fill the value on its left side into the factor K input box." -msgstr "Калибровка завершена. Теперь найдите на столе наиболее равномерно экструдированную линию, как показано на рисунке ниже, и введите это значение в поле ввода коэффициента K." +msgid "" +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." +msgstr "" +"Калибровка завершена. Теперь найдите на столе наиболее равномерно " +"экструдированную линию, как показано на рисунке ниже, и введите это значение " +"в поле ввода коэффициента K." msgid "Save" msgstr "Сохранить" @@ -2018,8 +2159,10 @@ msgid "AMS Slots" msgstr "Слоты АСПП" # ??? Замечание: разрешён выбор только слотов АСПП с одинаковым типом материала. -msgid "Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "Замечание: можно выбирать только слоты АСПП с одинаковым типом материала." +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "" +"Замечание: можно выбирать только слоты АСПП с одинаковым типом материала." msgid "Enable AMS" msgstr "Включить АСПП" @@ -2036,20 +2179,40 @@ msgstr "Печать материалом, установленным на за msgid "Cabin humidity" msgstr "Влажность внутри" -msgid "Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is too high.(Hygrometer: lower the better.)" -msgstr "Зелёный цвет означает, что влажность в системе АСПП нормальная, оранжевый - высокая, красный - слишком высокая. Чем ниже значение гигрометра, тем лучше." +msgid "" +"Green means that AMS humidity is normal, orange represent humidity is high, " +"red represent humidity is too high.(Hygrometer: lower the better.)" +msgstr "" +"Зелёный цвет означает, что влажность в системе АСПП нормальная, оранжевый - " +"высокая, красный - слишком высокая. Чем ниже значение гигрометра, тем лучше." msgid "Desiccant status" msgstr "Состояние влагопоглотителя" -msgid "A desiccant status lower than two bars indicates that desiccant may be inactive. Please change the desiccant.(The bars: higher the better.)" -msgstr "Состояние влагопоглотителя (силикагеля) ниже двух делений указывает на то, что он может уже не выполнять свою функцию. Пожалуйста, замените его. Чем больше делений на индикаторе, тем лучше." +msgid "" +"A desiccant status lower than two bars indicates that desiccant may be " +"inactive. Please change the desiccant.(The bars: higher the better.)" +msgstr "" +"Состояние влагопоглотителя (силикагеля) ниже двух делений указывает на то, " +"что он может уже не выполнять свою функцию. Пожалуйста, замените его. Чем " +"больше делений на индикаторе, тем лучше." -msgid "Note: When the lid is open or the desiccant pack is changed, it can take hours or a night to absorb the moisture. Low temperatures also slow down the process. During this time, the indicator may not represent the chamber accurately." -msgstr "Примечание: при открытой крышке или заменённом влагопоглотителе, может потребоваться несколько часов или ночь для поглощения влаги. Кроме того, процесс может замедлиться из-за низкой температуры окружающей среды. В течение этого времени значения индикатора могут быть неточными." +msgid "" +"Note: When the lid is open or the desiccant pack is changed, it can take " +"hours or a night to absorb the moisture. Low temperatures also slow down the " +"process. During this time, the indicator may not represent the chamber " +"accurately." +msgstr "" +"Примечание: при открытой крышке или заменённом влагопоглотителе, может " +"потребоваться несколько часов или ночь для поглощения влаги. Кроме того, " +"процесс может замедлиться из-за низкой температуры окружающей среды. В " +"течение этого времени значения индикатора могут быть неточными." -msgid "Config which AMS slot should be used for a filament used in the print job" -msgstr "Задайте слот АСПП, который должен использоваться для прутка, используемого в текущем задании." +msgid "" +"Config which AMS slot should be used for a filament used in the print job" +msgstr "" +"Задайте слот АСПП, который должен использоваться для прутка, используемого в " +"текущем задании." msgid "Filament used in this print job" msgstr "Пруток используемый в этом задании" @@ -2064,7 +2227,8 @@ msgid "Do not Enable AMS" msgstr "Не включать АСПП" msgid "Print using materials mounted on the back of the case" -msgstr "Печать с использованием материала, установленного на задней части корпуса" +msgstr "" +"Печать с использованием материала, установленного на задней части корпуса" msgid "Print with filaments in ams" msgstr "" @@ -2074,18 +2238,35 @@ msgstr "" msgid "Print with filaments mounted on the back of the chassis" msgstr "Печать материалами, установленными на задней части корпуса." -msgid "When the current material run out, the printer will continue to print in the following order." -msgstr "Когда текущий материал закончится, принтер продолжит печать в указанном порядке." +msgid "" +"When the current material run out, the printer will continue to print in the " +"following order." +msgstr "" +"Когда текущий материал закончится, принтер продолжит печать в указанном " +"порядке." msgid "Group" msgstr "Группа" +msgid "The printer does not currently support auto refill." +msgstr "В настоящее время принтер не поддерживает функцию автодозаправки." + msgid "" -"There are currently no identical spare consumables available, and automatic replenishment is currently not possible. \n" -"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" +"AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" -"В настоящее время одинаковые материалы отсутствуют, поэтому функция резервирования материала (автодозаправка) недоступна. \n" -"(В настоящее время поддерживается автоматическая дозаправка материала только одного производителя, типа и цвета)" +"Резервирование материала АСПП не включено, пожалуйста, включите его в " +"настройках АСПП." + +msgid "" +"If there are two identical filaments in AMS, AMS filament backup will be " +"enabled. \n" +"(Currently supporting automatic supply of consumables with the same brand, " +"material type, and color)" +msgstr "" +"При наличии в АСПП двух одинаковых материалов включается функция " +"резервирования материала (автодозаправка). \n" +"(В настоящее время поддерживается автоматическая дозаправка материала только " +"одного производителя, типа и цвета)" msgid "AMS Settings" msgstr "Настройки АСПП" @@ -2093,35 +2274,70 @@ msgstr "Настройки АСПП" msgid "Insertion update" msgstr "Обновление при вставке материала" -msgid "The AMS will automatically read the filament information when inserting a new Bambu Lab filament. This takes about 20 seconds." -msgstr "АСПП автоматически считывает информацию о материале при установке новой катушки Bambu. Это занимает около 20 секунд." +msgid "" +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." +msgstr "" +"АСПП автоматически считывает информацию о материале при установке новой " +"катушки Bambu. Это занимает около 20 секунд." -msgid "Note: if new filament is inserted during printing, the AMS will not automatically read any information until printing is completed." -msgstr "Примечание: если во время печати вставляется новая пластиковая нить, АСПП автоматически считает информацию о ней только по завершению печати." +msgid "" +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." +msgstr "" +"Примечание: если во время печати вставляется новая пластиковая нить, АСПП " +"автоматически считает информацию о ней только по завершению печати." -msgid "When inserting a new filament, the AMS will not automatically read its information, leaving it blank for you to enter manually." -msgstr "При вставке новой пластиковой нити, АСПП не будет автоматически считывать информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные о ней вручную." +msgid "" +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." +msgstr "" +"При вставке новой пластиковой нити, АСПП не будет автоматически считывать " +"информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные " +"о ней вручную." msgid "Power on update" msgstr "Обновление при включении принтера" -msgid "The AMS will automatically read the information of inserted filament on start-up. It will take about 1 minute.The reading process will roll filament spools." -msgstr "При каждом включении принтера АСПП будет автоматически считывать информация о вставленных материалах. Это занимает приблизительно одну минуту. В процессе считывания информации о материале катушка вращается." +msgid "" +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." +msgstr "" +"При каждом включении принтера АСПП будет автоматически считывать информация " +"о вставленных материалах. Это занимает приблизительно одну минуту. В " +"процессе считывания информации о материале катушка вращается." -msgid "The AMS will not automatically read information from inserted filament during startup and will continue to use the information recorded before the last shutdown." -msgstr "При каждом включении принтера, считывание информации о вставленных материалах АСПП будет отключено. Будет использоваться информация, полученная перед последним выключением." +msgid "" +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." +msgstr "" +"При каждом включении принтера, считывание информации о вставленных " +"материалах АСПП будет отключено. Будет использоваться информация, полученная " +"перед последним выключением." msgid "Update remaining capacity" msgstr "Обновлять оставшуюся ёмкость катушки" -msgid "The AMS will estimate Bambu filament's remaining capacity after the filament info is updated. During printing, remaining capacity will be updated automatically." -msgstr "АСПП считывает информацию о расходуемом материале Bambu и рассчитывает его остаточную ёмкость на катушке. Остаточная ёмкость обновляется автоматически в процессе печати." +msgid "" +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." +msgstr "" +"АСПП считывает информацию о расходуемом материале Bambu и рассчитывает его " +"остаточную ёмкость на катушке. Остаточная ёмкость обновляется автоматически " +"в процессе печати." msgid "AMS filament backup" msgstr "Резервирование материала АСПП" -msgid "AMS will continue to another spool with the same properties of filament automatically when current filament runs out" -msgstr "АСПП автоматически переключится на другую катушку с тем же типом материала, когда текущий закончится." +msgid "" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" +msgstr "" +"АСПП автоматически переключится на другую катушку с тем же типом материала, " +"когда текущий закончится." msgid "File" msgstr "Файл" @@ -2129,11 +2345,19 @@ msgstr "Файл" msgid "Calibration" msgstr "Калибровка" -msgid "Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry." -msgstr "Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и vpn, и повторите попытку." +msgid "" +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." +msgstr "" +"Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и " +"vpn, и повторите попытку." -msgid "Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software." -msgstr "Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он или не удалён антивирусом." +msgid "" +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." +msgstr "" +"Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он " +"или не удалён антивирусом." msgid "click here to see more info" msgstr "нажмите здесь, чтобы увидеть больше информации" @@ -2141,14 +2365,22 @@ msgstr "нажмите здесь, чтобы увидеть больше инф msgid "Please home all axes (click " msgstr "Пожалуйста, припаркуйте все оси в начало координат (нажав " -msgid ") to locate the toolhead's position. This prevents device moving beyond the printable boundary and causing equipment wear." -msgstr ") для определения положения печатной головы. Это предотвращает перемещение за пределы области печати и износ оборудования." +msgid "" +") to locate the toolhead's position. This prevents device moving beyond the " +"printable boundary and causing equipment wear." +msgstr "" +") для определения положения печатной головы. Это предотвращает перемещение " +"за пределы области печати и износ оборудования." msgid "Go Home" msgstr "На главную" -msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" -msgstr "Произошла ошибка. Возможно, недостаточно системной памяти или это баг программы." +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" +msgstr "" +"Произошла ошибка. Возможно, недостаточно системной памяти или это баг " +"программы." msgid "Please save project and restart the program. " msgstr "Пожалуйста, сохраните проект и перезапустите программу. " @@ -2201,11 +2433,15 @@ msgid "Running post-processing scripts" msgstr "Запуск скриптов постобработки" msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "Не удалось скопировать временный G-код в местонахождение выходного файла G-кода" +msgstr "" +"Не удалось скопировать временный G-код в местонахождение выходного файла G-" +"кода" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "Планирование загрузки на `%1%`. Смотрите Окна -> Очередь загрузки на хост печати" +msgstr "" +"Планирование загрузки на `%1%`. Смотрите Окна -> Очередь загрузки на хост " +"печати" msgid "Origin" msgstr "Начало координат" @@ -2216,11 +2452,18 @@ msgstr "Диаметр" msgid "Size in X and Y of the rectangular plate." msgstr "Размеры прямоугольного стола в XY координатах." -msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." -msgstr "Расстояние до точки начало координат. Отсчёт от левого переднего угла прямоугольного стола." +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "" +"Расстояние до точки начало координат. Отсчёт от левого переднего угла " +"прямоугольного стола." -msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." -msgstr "Диаметр стола. Предполагается, что начало координат (0,0) находится в центре." +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." +msgstr "" +"Диаметр стола. Предполагается, что начало координат (0,0) находится в центре." msgid "Rectangular" msgstr "Прямоугольная" @@ -2228,9 +2471,6 @@ msgstr "Прямоугольная" msgid "Circular" msgstr "Круглая" -msgid "Custom" -msgstr "Пользовательский" - msgid "Load shape from STL..." msgstr "Загрузка формы стола из STL файла..." @@ -2261,8 +2501,11 @@ msgstr "Ошибка! Недопустимая модель" msgid "The selected file contains no geometry." msgstr "Выбранный файл не содержит геометрии." -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "Выбранный файл содержит несколько не пересекающихся областей. Такие файлы не поддерживаются." +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "" +"Выбранный файл содержит несколько не пересекающихся областей. Такие файлы не " +"поддерживаются." msgid "Choose a file to import bed texture from (PNG/SVG):" msgstr "Выберите файл для импорта текстуры стола из PNG/SVG:" @@ -2282,26 +2525,13 @@ msgstr "" "Пожалуйста, убедитесь, что вы задали нужную температуру для печати.\n" "\n" -#, c-format, boost-format -msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" -msgstr "Рекомендуемая температура сопла для данного типа пластиковой нити составляет [%d, %d] градусов Цельсия." - #, c-format, boost-format msgid "" -"Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree centigrade.\n" -"This may cause model broken free from build plate during printing" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" msgstr "" -"Температура стола для последующих слоёв слишком низкая по сравнению с температурой первого слоя, более чем на %d градусов Цельсия.\n" -"Это может привести к отрыву модели от стола во время печати." - -msgid "" -"Bed temperature is higher than vitrification temperature of this filament.\n" -"This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air circulation or reduce the temperature of the hot bed" -msgstr "" -"Температура стола выше температуры стеклования этой пластиковой нити.\n" -"Это может привести к засорению сопла и сбою печати.\n" -"Пожалуйста, держите принтер открытым во время печати, чтобы обеспечить циркуляцию воздуха или снизить температуру стола." +"Рекомендуемая температура сопла для данного типа пластиковой нити составляет " +"[%d, %d] градусов Цельсия." msgid "" "Too small max volumetric speed.\n" @@ -2310,6 +2540,16 @@ msgstr "" "Слишком маленькая максимальная объёмная скорость.\n" "Сбросьте до 0,5." +#, c-format, boost-format +msgid "" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" +msgstr "" +"Текущая температура в камере превышает безопасную температуру для этого " +"материала, что может привести к размягчению материала или засорению " +"экструдера. Безопасная температура текущего материала составляет %d." + msgid "" "Too small layer height.\n" "Reset to 0.2" @@ -2334,15 +2574,19 @@ msgstr "" "Высота первого слоя будет сброшена до 0,2." msgid "" -"This setting is only used for model size tunning with small value in some cases.\n" +"This setting is only used for model size tunning with small value in some " +"cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Этот параметр используется только для точной корректировки размера модели в определенных случаях.\n" -"Например, когда есть небольшая погрешность в размерах модели и её трудно собрать.\n" -"Для более значительной корректировки размеров используйте функцию масштабирования модели.\n" +"Этот параметр используется только для точной корректировки размера модели в " +"определенных случаях.\n" +"Например, когда есть небольшая погрешность в размерах модели и её трудно " +"собрать.\n" +"Для более значительной корректировки размеров используйте функцию " +"масштабирования модели.\n" "\n" "Это значение будет сброшено на 0." @@ -2354,14 +2598,18 @@ msgid "" "The value will be reset to 0." msgstr "" "Слишком большая компенсация слоновьей ноги нецелесообразна.\n" -"Если имеется серьёзный эффект слоновьей ноги, проверьте другие настройки печати.\n" +"Если имеется серьёзный эффект слоновьей ноги, проверьте другие настройки " +"печати.\n" "Например, не слишком ли высокая температура стола.\n" "\n" "Значение будет сброшено на 0." -msgid "Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgid "" +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" -"Для режима печати «Спиральная ваза» необходимо чтобы соблюдались следующие условия:\n" +"Для режима печати «Спиральная ваза» необходимо чтобы соблюдались следующие " +"условия:\n" "- одностеночный периметр\n" "- отсутствие поддержки\n" "- отсутствие верхних сплошных слоёв\n" @@ -2369,6 +2617,9 @@ msgstr "" "- отключено «Обнаружение тонких стенок»\n" "- Режим записи таймлапсов - обычный режим" +msgid " But machines with I3 structure will not generate timelapse videos." +msgstr " Но принтеры с кинематикой I3 не будут писать таймлапс." + msgid "" "Change these settings automatically? \n" "Yes - Change these settings and enable spiral mode automatically\n" @@ -2379,12 +2630,14 @@ msgstr "" "Нет - Отказаться от использования режима «Спиральная ваза»" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Черновая башня не работает, когда включена функция «Переменная высота слоёв» или «Независимая высота слоя поддержки»\n" +"Черновая башня не работает, когда включена функция «Переменная высота слоёв» " +"или «Независимая высота слоя поддержки»\n" "Что вы хотите сохранить?\n" "ДА - Сохранить черновую башню\n" "НЕТ - Сохранить переменную высоту слоя и независимую высоту слоя поддержки" @@ -2395,7 +2648,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"Черновая башня не работает, когда включена функция «Переменная высота слоёв».\n" +"Черновая башня не работает, когда включена функция «Переменная высота " +"слоёв».\n" "Что вы хотите сохранить?\n" "Да - Сохранить черновую башню\n" "Нет - Сохранить переменную высоту слоёв" @@ -2406,24 +2660,12 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Черновая башня не работает, если включена функция «Независимая высота слоя поддержки»\n" +"Черновая башня не работает, если включена функция «Независимая высота слоя " +"поддержки»\n" "Что вы хотите сохранить?\n" "ДА - Сохранить черновую башню\n" "НЕТ - Сохранить независимую высоту слоя поддержки" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "Шаблон заполнения «%1%» не поддерживает 100%% заполнение." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Переключиться на прямолинейный (rectilinear) шаблон?\n" -"Да - переключиться на прямолинейный шаблон\n" -"Нет - сбросить плотность заполнения до значения по умолчанию (отличного от 100%)" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2494,6 +2736,51 @@ msgstr "Пауза при неисправности температуры со msgid "Paused due to heat bed temperature malfunction" msgstr "Пауза при неисправности температуры стола" +msgid "Filament unloading" +msgstr "Выгрузка прутка" + +# ??? +msgid "Skip step pause" +msgstr "Пропуск команды паузы" + +msgid "Filament loading" +msgstr "Загрузка прутка" + +msgid "Motor noise calibration" +msgstr "Калибровка шума двигателя" + +msgid "Paused due to AMS lost" +msgstr "Печать приостановлена из-за потери связи с АСПП" + +msgid "Paused due to low speed of the heat break fan" +msgstr "" +"Печать приостановлена из-за низкой скорости вращения вентилятора головы" + +msgid "Paused due to chamber temperature control error" +msgstr "Печать приостановлена из-за ошибки контроля температуры в камере" + +msgid "Cooling chamber" +msgstr "Охлаждение камеры" + +msgid "Paused by the Gcode inserted by user" +msgstr "Печать приостановлена G-кодом, вставленным пользователем" + +# Демонстрация шума двигателя +msgid "Motor noise showoff" +msgstr "Результат калибровки шума двигателя" + +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "Плата управления" @@ -2530,11 +2817,48 @@ msgstr "Ошибка идентификации." msgid "Update failed." msgstr "Сбой обновления." +msgid "" +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." +msgstr "" +"Текущая температура в камере или целевая температура в камере превышает 45℃. " +"Чтобы избежать засорения экструдера, запрещается загрузка низкотемпературной " +"печатной нити (PLA/PETG/TPU)." + +msgid "" +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." +msgstr "" +"В экструдер загружается низкотемпературная пластиковая нить (PLA/PETG/TPU). " +"Чтобы избежать засорения экструдера, запрещается устанавливать температуру в " +"камере выше 45℃." + +msgid "" +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." +msgstr "" +"Если вы установили температура в камере ниже 40℃, то контроль температуры в " +"камере не запустится, а целевая температура в ней будет автоматически " +"установлена на 0℃." + msgid "Failed to start printing job" msgstr "Не удалось запустить задание на печать." -msgid "Invalid nozzle diameter" -msgstr "Недопустимый диаметр сопла" +msgid "" +"This calibration does not support the currently selected nozzle diameter" +msgstr "Данная калибровка не поддерживает выбранный диаметр сопла" + +msgid "Current flowrate cali param is invalid" +msgstr "Текущая величина калибровки скорости потока недопустима" + +msgid "Selected diameter and machine diameter do not match" +msgstr "Выбранный диаметр и диаметр профиля принтера не совпадают" + +msgid "Failed to generate cali gcode" +msgstr "Не удалось сгенерировать калибровочный G-код" msgid "Calibration error" msgstr "Ошибка калибровки" @@ -2545,11 +2869,19 @@ msgstr "Печать TPU с помощью АСПП не поддерживае msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Печать Bambu PET-CF/PA6-CF с помощью АСПП не поддерживается." -msgid "Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before use." -msgstr "Влажный PVA становится гибким и застревает внутри АСПП, поэтому перед использованием его необходимо просушить." +msgid "" +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." +msgstr "" +"Влажный PVA становится гибким и застревает внутри АСПП, поэтому перед " +"использованием его необходимо просушить." -msgid "CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use with caution." -msgstr "CF/GF пластиковые нити твердые и хрупкие, легко ломаются или застревают в АСПП, поэтому используйте их с осторожностью." +msgid "" +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." +msgstr "" +"CF/GF пластиковые нити твердые и хрупкие, легко ломаются или застревают в " +"АСПП, поэтому используйте их с осторожностью." msgid "default" msgstr "По ум." @@ -2627,9 +2959,6 @@ msgstr "Поток: " msgid "Layer Time: " msgstr "Время печати слоя: " -msgid "Fan Speed: " -msgstr "Скорость вентилятора: " - msgid "Fan: " msgstr "Скорость вентилятора: " @@ -2657,8 +2986,12 @@ msgstr "Очищено" msgid "Total" msgstr "Общее" -msgid "Total Time Estimation" -msgstr "Оценка общего времени" +msgid "Tower" +msgstr "" + +# ++++++++++++++++++++++++++++ beta2 +msgid "Total Estimation" +msgstr "Общая оценка" msgid "Total time" msgstr "Общее время печати" @@ -2744,15 +3077,18 @@ msgstr "Смена цвета" msgid "Print" msgstr "Печать" -msgid "Pause" -msgstr "Пауза" - msgid "Printer" msgstr "Профиль принтера" msgid "Print settings" msgstr "Настройки печати" +msgid "Custom g-code" +msgstr "" + +msgid "ToolChange" +msgstr "" + msgid "Time Estimation" msgstr "Оценка времени" @@ -2861,6 +3197,9 @@ msgstr "Разрешить использование нескольких ма msgid "Avoid extrusion calibration region" msgstr "Избегать зону калибровки экструзии" +msgid "Align to Y axis" +msgstr "Выравнивать по оси Y" + msgid "Add" msgstr "Добавить" @@ -2919,8 +3258,12 @@ msgid "Size:" msgstr "Размер:" #, c-format, boost-format -msgid "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted objects farther (%s <-> %s)." -msgstr "В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, разместите конфликтующие модели дальше друг от друга (%s <-> %s)." +msgid "" +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." +msgstr "" +"В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, " +"разместите конфликтующие модели дальше друг от друга (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Модель выходить за границы печатного стола." @@ -2936,10 +3279,13 @@ msgstr "При редактировании, те модели с которым msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." msgstr "" "Модель выходит за границы стола или превышает высоту печати.\n" -"Пожалуйста, устраните проблему, уместив всю модель в границы стола (или за пределы стола) и убедитесь, что высота модели находится в пределах область построения." +"Пожалуйста, устраните проблему, уместив всю модель в границы стола (или за " +"пределы стола) и убедитесь, что высота модели находится в пределах область " +"построения." msgid "Calibration step selection" msgstr "Выбор шага калибровки" @@ -2950,17 +3296,22 @@ msgstr "Калибровка микролидаром" msgid "Bed leveling" msgstr "Выравнивание стола" -msgid "Resonance frequency identification" -msgstr "Идентификация резонансной частоты" +msgid "Vibration compensation" +msgstr "Компенсация вибрации" + +msgid "Motor noise cancellation" +msgstr "Шумоподавление двигателя" msgid "Calibration program" msgstr "Программа калибровки" msgid "" -"The calibration program detects the status of your device automatically to minimize deviation.\n" +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Программа калибровки автоматически определяет состояние вашего принтера, чтобы свести к минимуму ошибки оборудования.\n" +"Программа калибровки автоматически определяет состояние вашего принтера, " +"чтобы свести к минимуму ошибки оборудования.\n" "Это обеспечивает оптимальную работу устройства." msgid "Calibration Flow" @@ -2975,6 +3326,9 @@ msgstr "Завершено" msgid "Calibrating" msgstr "Калибровка" +msgid "No step selected" +msgstr "Шаг не задан" + msgid "Auto-record Monitoring" msgstr "Автозапись мониторинга" @@ -3002,7 +3356,9 @@ msgstr "Пожалуйста, введите код доступа к принт msgid "" "You can find it in \"Settings > Network > Connection code\"\n" "on the printer, as shown in the figure:" -msgstr "Вы можете найти его на принтере в разделе Настройки > Сеть > Код подключения, как показано на рисунке:" +msgstr "" +"Вы можете найти его на принтере в разделе Настройки > Сеть > Код " +"подключения, как показано на рисунке:" msgid "Invalid input." msgstr "Неверный ввод." @@ -3187,8 +3543,11 @@ msgstr "Загрузка настроек" msgid "Import" msgstr "Импорт" -msgid "Export all objects as STL" -msgstr "Экспортировать все модели в STL" +msgid "Export all objects as one STL" +msgstr "" + +msgid "Export all objects as STLs" +msgstr "" msgid "Export Generic 3MF" msgstr "Экспорт в общий 3MF" @@ -3277,6 +3636,12 @@ msgstr "Вид в перспективе" msgid "Use Orthogonal View" msgstr "Ортогональный вид" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Показать &имена файлов" @@ -3418,7 +3783,8 @@ msgstr "Выберите профиль для загрузки:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" msgstr[0] "Импортирована %d конфигурация (только не системная и совместимая)." msgstr[1] "Импортировано %d конфигурации (только не системные и совместимые)." msgstr[2] "Импортировано %d конфигураций (только не системные и совместимые)." @@ -3463,12 +3829,6 @@ msgstr "Ошибка инициализации (камера не обнару msgid "Printer is busy downloading, Please wait for the downloading to finish." msgstr "Принтер занят загрузкой. Дождитесь завершения загрузки." -msgid "Loading..." -msgstr "Загрузка..." - -msgid "Initialize failed (Not supported with LAN-only mode)!" -msgstr "Ошибка инициализации (не поддерживается в режиме «Только LAN»)!" - msgid "Initialize failed (Not supported on the current printer version)!" msgstr "Ошибка инициализации (не поддерживается в текущей версии принтера)!" @@ -3478,9 +3838,6 @@ msgstr "Ошибка инициализации (Недоступно в реж msgid "Initialize failed (Missing LAN ip of printer)!" msgstr "Ошибка инициализации (отсутствует IP-адрес принтера в локальной сети)!" -msgid "Initialize failed (Not supported by printer)!" -msgstr "Ошибка инициализации (не поддерживается принтером)!" - msgid "Initializing..." msgstr "Инициализация..." @@ -3499,7 +3856,9 @@ msgid "Stopped." msgstr "Остановлено." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "Сбой подключения к локальной сети (не удалось запустить просмотр в реальном времени)" +msgstr "" +"Сбой подключения к локальной сети (не удалось запустить просмотр в реальном " +"времени)" msgid "" "Virtual Camera Tools is required for this task!\n" @@ -3513,11 +3872,11 @@ msgstr "Загрузка Virtual Camera Tools" msgid "" "Another virtual camera is running.\n" -"Bambu Studio supports only a single virtual camera.\n" +"Orca Slicer supports only a single virtual camera.\n" "Do you want to stop this virtual camera?" msgstr "" "Уже работает одна виртуальная камера.\n" -"Bambu Studio поддерживает только одну виртуальную камеру.\n" +"Orca Slicer поддерживает только одну виртуальную камеру.\n" "Хотите остановить эту виртуальную камеру?" #, c-format, boost-format @@ -3534,6 +3893,9 @@ msgstr "Воспроизведение..." msgid "Load failed [%d]!" msgstr "Ошибка загрузки [%d]!" +msgid "Loading..." +msgstr "Загрузка..." + msgid "Year" msgstr "Год" @@ -3585,9 +3947,6 @@ msgstr "Пакетное управление файлами." msgid "No printers." msgstr "Принтеры отсутствуют." -msgid "Not supported by this model of printer!" -msgstr "Не поддерживается этой моделью принтера!" - #, c-format, boost-format msgid "Connect failed [%d]!" msgstr "Ошибка подключения [%d]!" @@ -3595,19 +3954,6 @@ msgstr "Ошибка подключения [%d]!" msgid "Loading file list..." msgstr "Загрузка списка файлов..." -msgid "No files" -msgstr "Файлы отсутствуют" - -msgid "Not accessible in LAN-only mode!" -msgstr "Недоступно в режиме «Только LAN»!" - -msgid "Missing LAN ip of printer!" -msgstr "Отсутствует сетевой адрес принтера!" - -#, c-format, boost-format -msgid "You are going to delete %u files. Are you sure to continue?" -msgstr "Вы собираетесь удалить файлы: %u шт. Вы уверены, что хотите это сделать?" - #, c-format, boost-format msgid "No files [%d]" msgstr "Файлы отсутствуют [%d]" @@ -3618,10 +3964,17 @@ msgstr "Ошибка загрузки [%d]" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "Вы собираетесь удалить %u файл с принтера. Вы уверены, что хотите это сделать?" -msgstr[1] "Вы собираетесь удалить %u файла с принтера. Вы уверены, что хотите это сделать?" -msgstr[2] "Вы собираетесь удалить %u файлов с принтера. Вы уверены, что хотите это сделать?" +msgid_plural "" +"You are going to delete %u files from printer. Are you sure to continue?" +msgstr[0] "" +"Вы собираетесь удалить %u файл с принтера. Вы уверены, что хотите это " +"сделать?" +msgstr[1] "" +"Вы собираетесь удалить %u файла с принтера. Вы уверены, что хотите это " +"сделать?" +msgstr[2] "" +"Вы собираетесь удалить %u файлов с принтера. Вы уверены, что хотите это " +"сделать?" msgid "Delete files" msgstr "Удалить файлы" @@ -3642,8 +3995,12 @@ msgstr "Не удалось получить информацию о модел msgid "Failed to parse model infomations." msgstr "Не удалось проанализировать информацию о модели." -msgid "The .gcode.3mf file contains no G-code data.Please slice it whthBambu Studio and export a new .gcode.3mf file." -msgstr "Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе Bambu Studio и экспортируйте новый файл .gcode.3mf." +msgid "" +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " +"and export a new .gcode.3mf file." +msgstr "" +"Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе " +"Orca Slicer и экспортируйте новый файл .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -3665,12 +4022,28 @@ msgstr "Загрузка завершена" msgid "Downloading %d%%..." msgstr "Загрузка %d%%..." +msgid "Connection lost. Please retry." +msgstr "" + +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + +msgid "File not exists." +msgstr "" + +msgid "File checksum error. Please retry." +msgstr "" + msgid "Not supported on the current printer version." msgstr "Не поддерживается в текущей версии принтера." msgid "Storage unavailable, insert SD card." msgstr "Накопитель недоступен, вставьте SD-карту." +#, c-format, boost-format +msgid "Error code: %d" +msgstr "" + msgid "Speed:" msgstr "Скорость:" @@ -3728,12 +4101,27 @@ msgstr "0" msgid "Layer: N/A" msgstr "Слой: Н/Д" -msgid "Immediately score" -msgstr "Оценить сейчас" - msgid "Clear" msgstr "Очистить" +msgid "" +"You have completed printing the mall model, \n" +"but the synchronization of rating information has failed." +msgstr "" +"Вы завершили печать модели торгового центра, \n" +"но не удалось синхронизировать информацию о рейтинге." + +msgid "How do you like this printing file?" +msgstr "На сколько вы оцениваете этот напечатанный файл?" + +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "(Модели уже присвоен рейтинг. Ваш рейтинг перезапишет предыдущий.)" + +msgid "Rate" +msgstr "Оценка" + msgid "Camera" msgstr "Камера" @@ -3782,17 +4170,6 @@ msgstr "Отмена печати" msgid "Are you sure you want to cancel this print?" msgstr "Вы уверены, что хотите отменить эту печать?" -#, c-format, boost-format -msgid "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by logging in with your user account." -msgstr "Соединение с принтером [%s] разорвано из-за отключения режима «Только LAN». Повторно подключитесь к принтеру, войдя в свою учётную запись." - -#, c-format, boost-format -msgid "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the printer by inputting Access Code which can be gotten from printer screen." -msgstr "Соединение с принтером [%s] разорвано из-за включения режима «Только LAN». Повторно подключитесь к принтеру, введя код доступа, который можно получить на экране принтера." - -msgid "Done" -msgstr "Готово" - msgid "Downloading..." msgstr "Загрузка..." @@ -3807,18 +4184,14 @@ msgstr "Количество заданий в очереди на облачн msgid "Layer: %s" msgstr "Слой: %s" -msgid "Please give a score for your favorite Bambu Market model." -msgstr "Пожалуйста, поставьте оценку вашей любимой модели в магазине Bambu Market." - -msgid "Score" -msgstr "Рейтинг" - #, c-format, boost-format msgid "Layer: %d/%d" msgstr "Слой: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Пожалуйста, перед загрузкой нити, нагрейте сопло до температуры выше 170 градусов." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Ещё выгружается" @@ -3829,8 +4202,12 @@ msgstr "Ещё загружается" msgid "Please select an AMS slot before calibration" msgstr "Пожалуйста, выберите слот АСПП перед калибровкой" -msgid "Cannot read filament info: the filament is loaded to the tool head,please unload the filament and try again." -msgstr "Не удаётся считать информацию о пластиковой нити. Пластиковая нить загружена в голову, пожалуйста, выгрузите её и повторите попытку." +msgid "" +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." +msgstr "" +"Не удаётся считать информацию о пластиковой нити. Пластиковая нить загружена " +"в голову, пожалуйста, выгрузите её и повторите попытку." msgid "This only takes effect during printing" msgstr "Применимо только во время печати" @@ -3850,6 +4227,115 @@ msgstr "Сумасшедший" msgid "Can't start this without SD card." msgstr "Невозможно запустить без SD-карты." +msgid "Rate the Print Profile" +msgstr "Оценить профиль печати" + +msgid "Comment" +msgstr "Комментарий" + +msgid "Rate this print" +msgstr "Оценить эту печать" + +msgid "Add Photo" +msgstr "Добавить фото" + +msgid "Delete Photo" +msgstr "Удалить фото" + +msgid "Submit" +msgstr "Отправить" + +msgid "Please click on the star first." +msgstr "Пожалуйста, сначала нажмите на звездочку." + +msgid "InFo" +msgstr "Информация" + +msgid "Get oss config failed." +msgstr "" +"Не удалось получить конфигурацию OSS.\n" +"\n" +"Ошибка получения конфигурации OSS." + +msgid "Upload Pictrues" +msgstr "Отправка изображений" + +msgid "Number of images successfully uploaded" +msgstr "Количество успешно загруженных изображений" + +msgid " upload failed" +msgstr " ошибка отправки" + +msgid " upload config prase failed\n" +msgstr " ошибка обработки конфигурации при отправке\n" + +# ??? +msgid " No corresponding storage bucket\n" +msgstr " Отсутствует хранилище данных\n" + +msgid " can not be opened\n" +msgstr " не удаётся открыть\n" + +msgid "" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" +"\n" +msgstr "" +"В процессе загрузки изображений возникли следующие проблемы. Игнорировать " +"их?\n" +"\n" + +msgid "info" +msgstr "Информация" + +msgid "Synchronizing the printing results. Please retry a few seconds later." +msgstr "" +"Синхронизация результатов печати. Повторите попытку через несколько секунд." + +msgid "Upload failed\n" +msgstr "Ошибка отправки\n" + +msgid "obtaining instance_id failed\n" +msgstr "не удалось получить instance_id\n" + +msgid "" +"Your comment result cannot be uploaded due to some reasons. As follows:\n" +"\n" +" error code: " +msgstr "" +"Ваш комментарий не может быть отправлен по некоторым причинам. Причины:\n" +"\n" +"Код ошибки: " + +msgid "error message: " +msgstr "сообщение об ошибке: " + +msgid "" +"\n" +"\n" +"Would you like to redirect to the webpage for rating?" +msgstr "" +"\n" +"\n" +"Хотите перейти на страницу для выставления оценки?" + +msgid "" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" +msgstr "" +"Некоторые из ваших изображений не удалось загрузить. Хотите перейти на " +"страницу для выставления оценки?" + +msgid "You can select up to 16 images." +msgstr "Допускается выбор до 16 изображений." + +msgid "" +"At least one successful print record of this print profile is required \n" +"to give a positive rating(4 or 5stars)." +msgstr "" +"Для выставления положительной оценки (4 или 5 звезд) требуется хотя бы одна " +"успешная запись о печати данным профилем печати." + msgid "Status" msgstr "Статус" @@ -3913,6 +4399,12 @@ msgstr "Доступно обновление сетевого плагина." msgid "Details" msgstr "Подробности" +msgid "New printer config available." +msgstr "" + +msgid "Wiki" +msgstr "Вики-сайт" + msgid "Undo integration failed." msgstr "Не удалось отменить интеграцию." @@ -3964,9 +4456,6 @@ msgstr "ЗАВЕРШЕНО" msgid "Cancel upload" msgstr "Отменить отправку" -msgid "Slice ok." -msgstr "Нарезка завершена." - msgid "Jump to" msgstr "Перейти к" @@ -3979,6 +4468,9 @@ msgstr "Предупреждение:" msgid "Export successfully." msgstr "Успешно экспортировано." +msgid "Model file downloaded." +msgstr "Файл модели скачан." + msgid "Serious warning:" msgstr "Серьезное предупреждение:" @@ -4012,8 +4504,11 @@ msgstr "Слои" msgid "Range" msgstr "Диапазон" -msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" -msgstr "Приложение не может работать нормально, так как версия OpenGL ниже 2.0.\n" +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" +msgstr "" +"Приложение не может работать нормально, так как версия OpenGL ниже 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Пожалуйста, обновите драйвер вашей видеокарты." @@ -4049,8 +4544,12 @@ msgstr "Чувствительность" msgid "Enable detection of build plate position" msgstr "Определение положения печатной пластины" -msgid "The localization tag of build plate is detected, and printing is paused if the tag is not in predefined range." -msgstr "Функция обнаружения метки (QR-кода) печатной пластины. Печать приостанавливается, если метка находится не в том месте." +msgid "" +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." +msgstr "" +"Функция обнаружения метки (QR-кода) печатной пластины. Печать " +"приостанавливается, если метка находится не в том месте." msgid "First Layer Inspection" msgstr "Проверка первого слоя" @@ -4058,6 +4557,12 @@ msgstr "Проверка первого слоя" msgid "Auto-recovery from step loss" msgstr "Автовосстановление после потери шагов" +msgid "Allow Prompt Sound" +msgstr "Разрешить звуковые уведомления" + +msgid "Fliament Tangle Detect" +msgstr "" + msgid "Global" msgstr "Общие" @@ -4079,6 +4584,24 @@ msgstr "Настройки прутка" msgid "Printer settings" msgstr "Настройки принтера" +msgid "Remove current plate (if not last one)" +msgstr "Удалить текущую печатную пластину (кроме последней)" + +msgid "Auto orient objects on current plate" +msgstr "Автоориентация моделей на текущей печатной пластине" + +msgid "Arrange objects on current plate" +msgstr "Расставить модели на текущей печатной пластине" + +msgid "Unlock current plate" +msgstr "Разблокировать текущую печатную пластину" + +msgid "Lock current plate" +msgstr "Заблокировать текущую печатную пластину" + +msgid "Customize current plate" +msgstr "Настроить текущую печатную пластину" + msgid "Untitled" msgstr "Без названия" @@ -4134,7 +4657,11 @@ msgstr "Синхронизировать список материалов из msgid "Set filaments to use" msgstr "Выбор пластиковой нити" -msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "Search plate, object and part." +msgstr "" + +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" "АСПП недоступна. Пожалуйста, выберите принтер \n" "на странице «Принтер», чтобы загрузить информацию о АСПП." @@ -4142,11 +4669,19 @@ msgstr "" msgid "Sync filaments with AMS" msgstr "Синхронизация прутка с АСПП" -msgid "Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to continue?" -msgstr "При синхронизации пластиковых нитей с АСПП все текущие выбранные профили прутков и цвета будут сброшены. Продолжить?" +msgid "" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" +msgstr "" +"При синхронизации пластиковых нитей с АСПП все текущие выбранные профили " +"прутков и цвета будут сброшены. Продолжить?" -msgid "Already did a synchronization, do you want to sync only changes or resync all?" -msgstr "Синхронизация уже выполнена. Хотите синхронизировать только изменения или заново синхронизировать всё?" +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Синхронизация уже выполнена. Хотите синхронизировать только изменения или " +"заново синхронизировать всё?" msgid "Sync" msgstr "Только изменения" @@ -4155,18 +4690,29 @@ msgid "Resync" msgstr "Всё" msgid "There are no compatible filaments, and sync is not performed." -msgstr "Синхронизация не выполнена, ввиду отсутствия совместимых пластиковых нитей." +msgstr "" +"Синхронизация не выполнена, ввиду отсутствия совместимых пластиковых нитей." -msgid "There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets." -msgstr "Имеются несколько неизвестных материалов, сопоставленных с общим профилем. Обновите или перезапустите Orca Slicer, чтобы проверить наличие обновлений системных профилей." +msgid "" +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." +msgstr "" +"Имеются несколько неизвестных материалов, сопоставленных с общим профилем. " +"Обновите или перезапустите Orca Slicer, чтобы проверить наличие обновлений " +"системных профилей." #, boost-format msgid "Do you want to save changes to \"%1%\"?" msgstr "Вы хотите сохранить изменения в \"%1%\"?" #, c-format, boost-format -msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." -msgstr "Размонтирование прошло успешно. Теперь устройство %s(%s) может быть безопасно извлечено из компьютера." +msgid "" +"Successfully unmounted. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Размонтирование прошло успешно. Теперь устройство %s(%s) может быть " +"безопасно извлечено из компьютера." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -4178,21 +4724,38 @@ msgstr "Обнаружен предыдущий несохраненный пр msgid "Restore" msgstr "Восстановить" -msgid "The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer before printing to avoid nozzle clog." -msgstr "Температура стола превышает температуру стеклования пластиковой нити. Пожалуйста, откройте переднюю дверцу принтера перед печатью, чтобы избежать засорения сопла." +msgid "" +"The current hot bed temperature is relatively high. The nozzle may be " +"clogged when printing this filament in a closed enclosure. Please open the " +"front door and/or remove the upper glass." +msgstr "" +"Текущая температура стола довольно высока. При печати этим материалом в " +"закрытом корпусе возможно засорение сопла. Откройте переднюю дверцу и/или " +"верхнюю крышку принтера." -msgid "The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged." -msgstr "Твердость сопла, установленного по умолчанию, не достаточна для печати данной пластиковой нитью. Замените сопло на закаленное или смените пластиковую нить. В противном случае сопло будет изношено или повреждено." +msgid "" +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." +msgstr "" +"Твердость сопла, установленного по умолчанию, не достаточна для печати " +"данной пластиковой нитью. Замените сопло на закаленное или смените " +"пластиковую нить. В противном случае сопло будет изношено или повреждено." + +msgid "" +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." +msgstr "" +"Включение обычного режима таймлапса может привести к появлению дефектов " +"поверхности, поэтому рекомендуется изменить режим на плавный." #, c-format, boost-format msgid "Loading file: %s" msgstr "Загрузка файла: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "Этот 3mf создан не в OrcaSlicer, поэтому загрузятся только данные геометрии." - -msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "Этот 3mf создан не в Bambu Lab, поэтому загрузятся только данные геометрии." +msgstr "" +"Этот 3mf создан не в OrcaSlicer, поэтому загрузятся только данные геометрии." msgid "Load 3mf" msgstr "Загрузка 3mf" @@ -4201,24 +4764,9 @@ msgid "The Config can not be loaded." msgstr "Конфигурация не может быть загружена." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -msgstr "Этот 3mf создан в старой версии Orca Slicer, поэтому загрузятся только данные геометрии." - -msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" msgstr "" -"Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" -"Обнаружены следующие нераспознанные ключи:" - -msgid "You'd better upgrade your software.\n" -msgstr "Рекомендуем вам обновить программу.\n" - -msgid "Newer 3mf version" -msgstr "Новая версия 3mf" - -#, c-format, boost-format -msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." -msgstr "" -"Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" -"Рекомендуется обновить программу." +"Этот 3mf создан в старой версии Orca Slicer, поэтому загрузятся только " +"данные геометрии." msgid "Invalid values found in the 3mf:" msgstr "В файле 3mf найдены недопустимые значения:" @@ -4226,11 +4774,27 @@ msgstr "В файле 3mf найдены недопустимые значени msgid "Please correct them in the param tabs" msgstr "Пожалуйста, исправьте их на вкладках параметров" -msgid "The 3mf is not compatible, load geometry data only!" -msgstr "Этот 3mf несовместим, поэтому загрузятся только данные геометрии!" +msgid "The 3mf has following modified G-codes in filament or printer presets:" +msgstr "" -msgid "Incompatible 3mf" -msgstr "Несовместимый 3mf" +msgid "" +"Please confirm that these modified G-codes are safe to prevent any damage to " +"the machine!" +msgstr "" + +msgid "Modified G-codes" +msgstr "" + +msgid "The 3mf has following customized filament or printer presets:" +msgstr "" + +msgid "" +"Please confirm that the G-codes within these presets are safe to prevent any " +"damage to the machine!" +msgstr "" + +msgid "Customized Preset" +msgstr "" msgid "Name of components inside step file is not UTF8 format!" msgstr "Имена компонентов внутри step файла не в формате UTF8!" @@ -4240,7 +4804,8 @@ msgstr "В названии могут присутствовать ненужн #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "Не удалось загрузить файл \"%1%\". Обнаружена недопустимая конфигурация." +msgstr "" +"Не удалось загрузить файл \"%1%\". Обнаружена недопустимая конфигурация." msgid "Objects with zero volume removed" msgstr "Модели с нулевым объёмом удалены" @@ -4273,7 +4838,8 @@ msgid "Multi-part object detected" msgstr "Обнаружена модель, состоящая из нескольких частей" msgid "Load these files as a single object with multiple parts?\n" -msgstr "Загрузить эти файлы как единую модель состоящую из нескольких частей?\n" +msgstr "" +"Загрузить эти файлы как единую модель состоящую из нескольких частей?\n" msgid "Object with multiple parts was detected" msgstr "Обнаружена модель, состоящая из нескольких частей" @@ -4281,7 +4847,9 @@ msgstr "Обнаружена модель, состоящая из нескол msgid "The file does not contain any geometry data." msgstr "Файл не содержит никаких геометрических данных." -msgid "Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" "Похоже, ваша модель слишком большая. \n" "Хотите автоматически уменьшить её масштаб, \n" @@ -4302,6 +4870,15 @@ msgstr "Сохранить файл как:" msgid "Export OBJ file:" msgstr "Экспорт в OBJ файл:" +#, c-format, boost-format +msgid "" +"The file %s already exists\n" +"Do you want to replace it?" +msgstr "" + +msgid "Comfirm Save As" +msgstr "" + msgid "Delete object which is a part of cut object" msgstr "Удаление детали, являющейся частью разрезанной модели" @@ -4320,18 +4897,39 @@ msgstr "Выбранная модель не может быть разделе msgid "Another export job is running." msgstr "Уже идёт другой процесс экспорта." +msgid "Unable to replace with more than one volume" +msgstr "Невозможно заменить более чем одним объём" + +msgid "Error during replace" +msgstr "Ошибка при выполнении замены" + +msgid "Replace from:" +msgstr "Заменить из:" + msgid "Select a new file" msgstr "Выберите новый файл" msgid "File for the replace wasn't selected" msgstr "Файл для замены не выбран" -msgid "Error during replace" -msgstr "Ошибка при выполнении замены" - msgid "Please select a file" msgstr "Пожалуйста, выберите файл" +msgid "Do you want to replace it" +msgstr "Хотите заменить его" + +msgid "Message" +msgstr "Сообщение" + +msgid "Reload from:" +msgstr "Перезагрузка из:" + +msgid "Unable to reload:" +msgstr "Не удалось перезагрузить:" + +msgid "Error during reload" +msgstr "Ошибка во время перезагрузки" + msgid "Slicing" msgstr "Нарезка" @@ -4354,7 +4952,8 @@ msgstr "Нарезка стола %d" msgid "Please resolve the slicing errors and publish again." msgstr "Пожалуйста, устраните ошибки нарезки и попробуйте опубликовать снова." -msgid "Network Plug-in is not detected. Network related features are unavailable." +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." msgstr "Сетевой плагин не обнаружен. Функции, связанные с сетью, недоступны." msgid "" @@ -4362,7 +4961,8 @@ msgid "" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Режим только предпросмотра:\n" -"Загруженный файл содержит только G-код, поэтому переход на страницу «Подготовка» невозможен." +"Загруженный файл содержит только G-код, поэтому переход на страницу " +"«Подготовка» невозможен." msgid "You can keep the modified presets to the new project or discard them" msgstr "Изменённые профили можно сохранить в новом проекте или отказаться." @@ -4375,10 +4975,12 @@ msgstr "Загрузить проект" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the project file." +"Please check whether the folder exists online or if other programs open the " +"project file." msgstr "" "Не удалось сохранить проект.\n" -"Убедитесь, что папка существует и что файл проекта не открыт в другой программе." +"Убедитесь, что папка существует и что файл проекта не открыт в другой " +"программе." msgid "Save project" msgstr "Сохранение проекта" @@ -4396,6 +4998,13 @@ msgstr "скачивание проекта..." msgid "Project downloaded %d%%" msgstr "Проект загружен %d%%" +msgid "" +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." +msgstr "" +"Не удалось импортировать в Orca Slicer. Загрузите файл и импортируйте его " +"вручную." + msgid "The selected file" msgstr "В выбранном файле" @@ -4452,15 +5061,30 @@ msgstr "Количество копий выбранной модели" msgid "Save G-code file as:" msgstr "Сохранить файл G-кода как:" +msgid "Save SLA file as:" +msgstr "Сохранить SLA файл как:" + +msgid "The provided file name is not valid." +msgstr "Указано недопустимое имя файла." + +msgid "The following characters are not allowed by a FAT file system:" +msgstr "Следующие символы не разрешены файловой системой FAT:" + msgid "Save Sliced file as:" msgstr "Сохранить нарезанный файл как:" #, c-format, boost-format -msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." +msgid "" +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." -msgid "Unable to perform boolean operation on model meshes. Only positive parts will be exported." -msgstr "Невозможно выполнить булевы операции над сетками модели. Будут экспортированы только положительные части." +msgid "" +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be exported." +msgstr "" +"Невозможно выполнить булевы операции над сетками модели. Будут " +"экспортированы только положительные части." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "Готов ли 3D-принтер? Печатная пластина на месте, пустая и чистая?" @@ -4473,7 +5097,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Печать по очереди: \n" -"Рекомендуется использовать автоматическую расстановку, чтобы избежать столкновений при печати." +"Рекомендуется использовать автоматическую расстановку, чтобы избежать " +"столкновений при печати." msgid "Send G-code" msgstr "Отправить G-код" @@ -4531,12 +5156,23 @@ msgstr "Треугольников: %1%\n" msgid "Tips:" msgstr "Подсказки:" -msgid "\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca Slicer(windows) or CAD softwares." -msgstr "Функция «Починить модель» в настоящее время доступна только в Windows. Пожалуйста, почините модель с помощью Bambu Studio (Windows) или другой CAD программой." +msgid "" +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." +msgstr "" +"Функция «Починить модель» в настоящее время доступна только в Windows. " +"Пожалуйста, почините модель с помощью Bambu Studio (Windows) или другой CAD " +"программой." #, c-format, boost-format -msgid "Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do this printing, please set this filament's bed temperature to non zero." -msgstr "Не рекомендуется использовать печатную пластину% d (%s) для печати прутком %s (%s). Если вы всё же хотите сделать это, то установите температуру стола для этого прутка на ненулевое значение." +msgid "" +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." +msgstr "" +"Не рекомендуется использовать печатную пластину% d (%s) для печати прутком " +"%s (%s). Если вы всё же хотите сделать это, то установите температуру стола " +"для этого прутка на ненулевое значение." msgid "Switching the language requires application restart.\n" msgstr "Для смены языка требуется перезапуск приложения.\n" @@ -4603,23 +5239,54 @@ msgstr "" "Единицы \n" "измерения" +msgid "Home" +msgstr "Домашняя страница" + +msgid "Default Page" +msgstr "" +"Страница \n" +"по умолчанию" + +msgid "Set the page opened on startup." +msgstr "Задание страницы, открываемой при запуске приложения." + msgid "Zoom to mouse position" msgstr "Приближать к положению курсор" -msgid "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center." -msgstr "Увеличивать масштаб по направлению к курсору в 3D-виде, а не к центру 2D-окна." +msgid "" +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." +msgstr "" +"Увеличивать масштаб по направлению к курсору в 3D-виде, а не к центру 2D-" +"окна." + +msgid "Use free camera" +msgstr "Использовать свободную камеру" + +msgid "If enabled, use free camera. If not enabled, use constrained camera." +msgstr "" +"Если включено, используется свободное вращение камеры. Если выключено, " +"используется вращение камера с ограничениями." + +msgid "Show splash screen" +msgstr "Показывать окно приветствия" + +msgid "Show the splash screen during startup." +msgstr "Показывать окно приветствия при запуске приложения." msgid "Show \"Tip of the day\" notification after start" msgstr "Показывать уведомление с полезным советом при запуске приложения" msgid "If enabled, useful hints are displayed at startup." -msgstr "Если включено, будут показываться уведомления с полезном советом при запуске приложения." +msgstr "" +"Если включено, будут показываться уведомления с полезном советом при запуске " +"приложения." -msgid "Show g-code window" -msgstr "Показать окно G-кода" +msgid "Flushing volumes: Auto-calculate everytime the color changed." +msgstr "" -msgid "If enabled, g-code window will be displayed." -msgstr "Если включено, будет отображено окно G-кода." +msgid "If enabled, auto-calculate everytime the color changed." +msgstr "" msgid "Presets" msgstr "Профили" @@ -4646,40 +5313,47 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Ассоциировать файлы .3mf с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .3mf файлов." +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .3mf файлов." msgid "Associate .stl files to OrcaSlicer" msgstr "Ассоциировать файлы .stl с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .stl файлов." +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .stl файлов." msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Ассоциировать файлы .step/.stp с OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для открытия .step файлов." - -msgid "Online Models" -msgstr "Онлайн-модели" - -msgid "Show online staff-picked models on the home page" -msgstr "Показывать отобранные сотрудниками модели на главной странице" +msgstr "" +"Если включено, назначает OrcaSlicer в качестве приложения по умолчанию для " +"открытия .step файлов." msgid "Maximum recent projects" msgstr "Максимальное количество недавних проектов" msgid "Maximum count of recent projects" -msgstr "Максимальное количество проектов, отображаемое в списке недавних проектов." +msgstr "" +"Максимальное количество проектов, отображаемое в списке недавних проектов." msgid "Clear my choice on the unsaved projects." msgstr "Очистить мой выбор от несохранённых проектов." +msgid "No warnings when loading 3MF with modified G-codes" +msgstr "" + msgid "Auto-Backup" msgstr "Автосоздание резервной копии" -msgid "Backup your project periodically for restoring from the occasional crash." -msgstr "Периодическое создание резервной копии проекта для восстановления после непредвиденного сбоя программы." +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Периодическое создание резервной копии проекта для восстановления после " +"непредвиденного сбоя программы." msgid "every" msgstr "каждые" @@ -4759,9 +5433,6 @@ msgstr "ошибка" msgid "warning" msgstr "предупреждение" -msgid "info" -msgstr "Информация" - msgid "debug" msgstr "отладка" @@ -4828,8 +5499,11 @@ msgstr "Добавить/удалить пруток" msgid "Add/Remove materials" msgstr "Добавить/удалить материал" -msgid "Add/Remove printers" -msgstr "Добавить/удалить принтер" +msgid "Select/Remove printers(system presets)" +msgstr "" + +msgid "Create printer" +msgstr "" msgid "Incompatible" msgstr "Несовместимы" @@ -4871,7 +5545,9 @@ msgid "Log Out" msgstr "Выход" msgid "Slice all plate to obtain time and filament estimation" -msgstr "Нарезка всех столов для получения примерного времени печати и расчёта необходимого количества материала." +msgstr "" +"Нарезка всех столов для получения примерного времени печати и расчёта " +"необходимого количества материала." msgid "Packing project data into 3mf file" msgstr "Упаковка данных проекта в файл формата 3mf" @@ -4883,7 +5559,9 @@ msgid "Jump to model publish web page" msgstr "Перейти на веб-страницу публикации модели" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения." +msgstr "" +"Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь " +"терпения." msgid "Publish" msgstr "Опубликовать" @@ -4934,7 +5612,8 @@ msgid "Preset \"%1%\" already exists and is incompatible with current printer." msgstr "Профиль \"%1%\" уже существует и несовместим с текущим принтером." msgid "Please note that saving action will replace this preset" -msgstr "Обратите внимание, что при сохранении произойдёт замена текущего профиля." +msgstr "" +"Обратите внимание, что при сохранении произойдёт замена текущего профиля." msgid "The name is not allowed to be empty." msgstr "Имя не может быть пустым." @@ -4978,12 +5657,12 @@ msgstr "Просто переключиться на \"%1%\"" msgid "Task canceled" msgstr "Задание отменено" -msgid "Upload task timed out. Please check the network problem and try again" -msgstr "Истекло время ожидания отправки задания. Проверьте сетевое подключение и повторите попытку." - msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Мой принтер" @@ -5014,6 +5693,18 @@ msgstr "Не нагреваемая пластина Bambu" msgid "PLA Plate" msgstr "PLA пластина" +msgid "Bamabu Engineering Plate" +msgstr "" + +msgid "Bamabu Smooth PEI Plate" +msgstr "" + +msgid "High temperature Plate" +msgstr "Высокотемпературная пластина" + +msgid "Bamabu Textured PEI Plate" +msgstr "" + msgid "Send print job to" msgstr "Отправка задания на печать" @@ -5030,8 +5721,8 @@ msgstr "" "Калибровка\n" "динамики потока" -msgid "Can't connect to the printer" -msgstr "Не удаётся подключиться к принтеру" +msgid "Click here if you can't connect to the printer" +msgstr "Не удаётся подключиться к принтеру?" msgid "send completed" msgstr "отправка завершена" @@ -5039,11 +5730,9 @@ msgstr "отправка завершена" msgid "Error code" msgstr "Код ошибки" -msgid "Check the status of current system services" -msgstr "Проверка состояния текущих системных служб" - msgid "Printer local connection failed, please try again." -msgstr "Не удалось установить локальное соединение с принтером, попробуйте ещё раз." +msgstr "" +"Не удалось установить локальное соединение с принтером, попробуйте ещё раз." msgid "No login account, only printers in LAN mode are displayed" msgstr "" @@ -5060,36 +5749,70 @@ msgid "Synchronizing device information time out" msgstr "Время ожидания синхронизации информации об устройстве истекло" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "Невозможно отправить задание на печать, при обновлении прошивки принтера." +msgstr "" +"Невозможно отправить задание на печать, при обновлении прошивки принтера." -msgid "The printer is executing instructions. Please restart printing after it ends" -msgstr "Принтер выполняет инструкции. Пожалуйста, перезапустите печать после их завершения." +msgid "" +"The printer is executing instructions. Please restart printing after it ends" +msgstr "" +"Принтер выполняет инструкции. Пожалуйста, перезапустите печать после их " +"завершения." msgid "The printer is busy on other print job" msgstr "Принтер занят другим заданием" #, c-format, boost-format -msgid "Filament %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." -msgstr "Количество пластиковых нитей - %s, что превышает количество слотов АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Количество пластиковых нитей - %s, что превышает количество слотов АСПП. " +"Обновите прошивку принтера, чтобы получить поддержку функции назначения " +"слотов АСПП." -msgid "Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." -msgstr "Количество пластиковых нитей превышает количество слотов АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." +msgstr "" +"Количество пластиковых нитей превышает количество слотов АСПП. Обновите " +"прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "Filaments to AMS slots mappings have been established. You can click a filament above to change its mapping AMS slot" -msgstr "Соответствия между материалами и слотами АСПП были установлены. Вы можете нажать на пластиковую нить выше, чтобы вручную задать для неё нужный слот АСПП." +msgid "" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" +msgstr "" +"Соответствия между материалами и слотами АСПП были установлены. Вы можете " +"нажать на пластиковую нить выше, чтобы вручную задать для неё нужный слот " +"АСПП." -msgid "Please click each filament above to specify its mapping AMS slot before sending the print job" -msgstr "Перед отправкой задания на печать, нажмите на каждую пластиковую нить, чтобы вручную задать для неё нужный слот АСПП." +msgid "" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" +msgstr "" +"Перед отправкой задания на печать, нажмите на каждую пластиковую нить, чтобы " +"вручную задать для неё нужный слот АСПП." #, c-format, boost-format -msgid "Filament %s does not match the filament in AMS slot %s. Please update the printer firmware to support AMS slot assignment." -msgstr "Материал %s не соответствует материалу в слоте %s АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." +msgstr "" +"Материал %s не соответствует материалу в слоте %s АСПП. Обновите прошивку " +"принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "Filament does not match the filament in AMS slot. Please update the printer firmware to support AMS slot assignment." -msgstr "Материал не соответствует материалу в слоте АСПП. Обновите прошивку принтера, чтобы получить поддержку функции назначения слотов АСПП." +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Материал не соответствует материалу в слоте АСПП. Обновите прошивку " +"принтера, чтобы получить поддержку функции назначения слотов АСПП." -msgid "The printer firmware only supports sequential mapping of filament => AMS slot." -msgstr "Текущая прошивка принтера поддерживает только последовательное сопоставление пластиковых нитей => слот АСПП." +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." +msgstr "" +"Текущая прошивка принтера поддерживает только последовательное сопоставление " +"пластиковых нитей => слот АСПП." msgid "An SD card needs to be inserted before printing." msgstr "Перед печатью необходимо вставить SD-карту." @@ -5100,8 +5823,12 @@ msgstr "Выбранный принтер несовместим с выбран msgid "An SD card needs to be inserted to record timelapse." msgstr "Для записи таймлапсов необходимо вставить SD-карту." -msgid "Cannot send the print job to a printer whose firmware is required to get updated." -msgstr "Невозможно отправить задание печати на принтер, прошивка которого нуждается в обновлении." +msgid "" +"Cannot send the print job to a printer whose firmware is required to get " +"updated." +msgstr "" +"Невозможно отправить задание печати на принтер, прошивка которого нуждается " +"в обновлении." msgid "Cannot send the print job for empty plate" msgstr "Невозможно отправить задание на печать, так как стол пуст." @@ -5109,27 +5836,71 @@ msgstr "Невозможно отправить задание на печать msgid "This printer does not support printing all plates" msgstr "Данный принтер не поддерживает печать на всех типах печатных пластин." +msgid "" +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." +msgstr "" +"При включении режима «Спиральная ваза» принтеры с кинематикой I3 не будут " +"писать таймлапс." + +msgid "" +"Timelapse is not supported because Print sequence is set to \"By object\"." +msgstr "" + msgid "Errors" msgstr "Ошибок" msgid "Please check the following:" msgstr "Пожалуйста, проверьте следующую информацию:" -msgid "The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing." -msgstr "Выбранный профиль принтера в настройках слайсера не совпадает с фактическим принтером. Для нарезки рекомендуется использовать тот же профиль принтера." +msgid "" +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." +msgstr "" +"Выбранный профиль принтера в настройках слайсера не совпадает с фактическим " +"принтером. Для нарезки рекомендуется использовать тот же профиль принтера." + +msgid "" +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." +msgstr "" +"В АСПП установлены неизвестные пластиковые нити. Убедитесь, что стоят именно " +"те, что вам нужны. Если всё в порядке, нажмите «Подтвердить», чтобы начать " +"печать." #, c-format, boost-format -msgid "%s is not supported by AMS." -msgstr "%s не поддерживается АСПП." +msgid "nozzle in preset: %s %s" +msgstr "" -msgid "There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing." -msgstr "В АСПП установлены неизвестные пластиковые нити. Убедитесь, что стоят именно те, что вам нужны. Если всё в порядке, нажмите «Подтвердить», чтобы начать печать." +#, c-format, boost-format +msgid "nozzle memorized: %.1f %s" +msgstr "" -msgid "Please click the confirm button if you still want to proceed with printing." +msgid "" +"Your nozzle diameter in preset is not consistent with memorized nozzle " +"diameter. Did you change your nozzle lately?" +msgstr "" + +#, c-format, boost-format +msgid "*Printing %s material with %s may cause nozzle damage" +msgstr "" + +msgid "" +"Please click the confirm button if you still want to proceed with printing." msgstr "Нажмите кнопку подтверждения, если всё ещё хотите продолжить печать." -msgid "Connecting to the printer. Unable to cancel during the connection process." -msgstr "Подключение к принтеру. Невозможно отменить во время процесса подключения." +msgid "Hardened Steel" +msgstr "" + +msgid "Stainless Steel" +msgstr "" + +msgid "" +"Connecting to the printer. Unable to cancel during the connection process." +msgstr "" +"Подключение к принтеру. Невозможно отменить во время процесса подключения." msgid "Preparing print job" msgstr "Подготовка задания на печать" @@ -5140,8 +5911,12 @@ msgstr "Неправильные данные файла печати. Пожа msgid "The name length exceeds the limit." msgstr "Длина имени превышает установленное ограничение." -msgid "Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered surface." -msgstr "Внимание! Калибровка потока на текстурированной пластине с PEI покрытием может быть неудачной из-за шероховатой поверхности." +msgid "" +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " +"scattered surface." +msgstr "" +"Внимание! Калибровка потока на текстурированной пластине с PEI покрытием " +"может быть неудачной из-за шероховатой поверхности." msgid "Automatic flow calibration using Micro Lidar" msgstr "Автокалибровка потока с помощью микролидара" @@ -5158,12 +5933,18 @@ msgstr "Во время обновления невозможно отправи msgid "An SD card needs to be inserted before send to printer SD card." msgstr "Перед отправкой на SD-карту, сначала вставьте её в принтер." -msgid "The printer is required to be in the same LAN as Bambu Studio." -msgstr "Принтер должен находиться в одной локальной сети с Bambu Studio." +msgid "The printer is required to be in the same LAN as Orca Slicer." +msgstr "Принтер должен находиться в одной локальной сети с Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "Принтер не поддерживает отправку на SD-карту." +msgid "Slice ok." +msgstr "Нарезка завершена." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Не удалось создать сокет" @@ -5206,9 +5987,19 @@ msgstr "Прочитать и принять" msgid "Terms and Conditions" msgstr "Условия использования" -msgid "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgid "" +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the termsand conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " +"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Перед использованием устройства Bambu Lab ознакомьтесь с правилами и условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu Lab\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь оборудованием и услугами Bambu Lab." +"Перед использованием устройства Bambu Lab ознакомьтесь с правилами и " +"условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu Lab" +"\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия " +"использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с " +"Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь " +"оборудованием и услугами Bambu Lab." msgid "and" msgstr "и" @@ -5224,12 +6015,30 @@ msgstr "Заявление о программе улучшения пользо #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. %s follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training %s to be smarter by feeding them the real-world data. If you are willing, this service will " -"access information from your error logs and usage logs, which may include information described in Privacy Policy. We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" -"В сообществе 3D-печатников мы учимся на успехах и неудачах друг друга, чтобы корректировать свои собственные параметры и настройки нарезки. Система %s работает по тому же принципу и использует машинное обучение для улучшения своей работы на основе успехов и неудач огромного количества отпечатков наших пользователей. Мы обучаем %s быть умнее, предоставляя ему данные из реального мира. По вашему " -"желанию эта служба получит доступ к информации из журналу ошибок и журналу использования, которая может включать информацию, описанную в Политике конфиденциальности. Мы не будем собирать никаких персональных данных, по которым можно прямо или косвенно идентифицировать физическое лицо, включая, помимо прочего, имена, адреса, платежную информацию или номера телефонов. Включая данную услугу, вы " -"соглашаетесь с данными условиями и заявлением о Политике конфиденциальности." +"В сообществе 3D-печатников мы учимся на успехах и неудачах друг друга, чтобы " +"корректировать свои собственные параметры и настройки нарезки. Система %s " +"работает по тому же принципу и использует машинное обучение для улучшения " +"своей работы на основе успехов и неудач огромного количества отпечатков " +"наших пользователей. Мы обучаем %s быть умнее, предоставляя ему данные из " +"реального мира. По вашему желанию эта служба получит доступ к информации из " +"журналу ошибок и журналу использования, которая может включать информацию, " +"описанную в Политике конфиденциальности. Мы не будем собирать никаких " +"персональных данных, по которым можно прямо или косвенно идентифицировать " +"физическое лицо, включая, помимо прочего, имена, адреса, платежную " +"информацию или номера телефонов. Включая данную услугу, вы соглашаетесь с " +"данными условиями и заявлением о Политике конфиденциальности." msgid "Statement on User Experience Improvement Plan" msgstr "Заявление о плане улучшения взаимодействия с пользователем" @@ -5247,7 +6056,8 @@ msgid "Please log in first." msgstr "Пожалуйста, сначала авторизуйтесь." msgid "There was a problem connecting to the printer. Please try again." -msgstr "Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте ещё раз." +msgstr "" +"Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте ещё раз." msgid "Failed to log out." msgstr "Не удалось выйти." @@ -5264,18 +6074,36 @@ msgid "Search in preset" msgstr "Поиск в профиле" msgid "Click to reset all settings to the last saved preset." -msgstr "Нажмите, чтобы сбросить все настройки до последнего сохраненного профиля." - -msgid "Prime tower is required for smooth timeplase. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" -msgstr "Для плавного таймлапса требуется черновая башня. На модели без использования черновой башни могут быть дефекты. Вы уверены, что хотите отключить черновую башню?" - -msgid "Prime tower is required for smooth timelapse. There may be flaws on the model without prime tower. Do you want to enable prime tower?" -msgstr "Для плавного таймлапса требуется черновая башня. На модели без использования черновой башни могут быть дефекты. Вы хотите включить черновую башню?" +msgstr "" +"Нажмите, чтобы сбросить все настройки до последнего сохраненного профиля." msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller support volume but weaker strength.\n" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" +msgstr "" +"Для плавного таймлапса требуется черновая башня. На модели без использования " +"черновой башни могут быть дефекты. Вы уверены, что хотите отключить черновую " +"башню?" + +msgid "" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" +msgstr "" +"Для плавного таймлапса требуется черновая башня. На модели без использования " +"черновой башни могут быть дефекты. Вы хотите включить черновую башню?" + +msgid "Still print by object?" +msgstr "" + +msgid "" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." -msgstr "Мы добавили экспериментальный стиль «Стройный (древ. поддержка)», который отличается меньшим объёмом поддержки, а следовательно, и меньшей прочностью. Мы рекомендуем использовать его со следующими параметрами: количество связующих слоёв - 0, зазор поддержки сверху - 0, периметров - 2." +msgstr "" +"Мы добавили экспериментальный стиль «Стройный (древ. поддержка)», который " +"отличается меньшим объёмом поддержки, а следовательно, и меньшей прочностью. " +"Мы рекомендуем использовать его со следующими параметрами: количество " +"связующих слоёв - 0, зазор поддержки сверху - 0, периметров - 2." msgid "" "Change these settings automatically? \n" @@ -5286,7 +6114,10 @@ msgstr "" "Да - Изменить эти настройки автоматически\n" "Нет - Не изменять эти настройки" -msgid "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at least 2 interface layers, at least 0.1mm top z distance or using support materials on interface." +msgid "" +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" "Для стилей «Крепкий (древ. поддержка)» и «Гибридный (древ. поддержка)» \n" "мы рекомендуем следующие параметры: \n" @@ -5295,8 +6126,10 @@ msgstr "" "или использование «материалов для поддержек» в качестве связующего слоя." msgid "" -"When using support material for the support interface, We recommend the following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable independent support layer height" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" msgstr "" "При использовании «материалов для поддержек» в качестве связующего \n" "слоя поддержки, мы рекомендуем следующие параметры:\n" @@ -5306,11 +6139,29 @@ msgstr "" "отключение независимой высоты слоя поддержки." msgid "" -"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." msgstr "" -"При записи таймлапса без видимости головы рекомендуется добавить «Черновая башня таймлапса». \n" -"Щелкните правой кнопкой мыши на пустом месте стола и выберите «Добавить примитив» -> «Черновая башня таймлапса»." + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + +msgid "" +"When recording timelapse without toolhead, it is recommended to add a " +"\"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." +msgstr "" +"При записи таймлапса без видимости головы рекомендуется добавить «Черновая " +"башня таймлапса». \n" +"Щелкните правой кнопкой мыши на пустом месте стола и выберите «Добавить " +"примитив» -> «Черновая башня таймлапса»." msgid "Line width" msgstr "Ширина экструзии" @@ -5339,8 +6190,16 @@ msgstr "Скорость печати других слоёв" msgid "Overhang speed" msgstr "Скорость печати нависаний" -msgid "This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used" -msgstr "Скорость печати нависаний разной степени свеса. Размер этого свеса выражается в процентах от ширины линии. Скорость 0 означает, что для данного диапазона нависаний замедление отсутствует и используется скорость периметра. Скорость для промежуточных значений рассчитывается с помощью линейной интерполяции." +msgid "" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" +msgstr "" +"Скорость печати нависаний разной степени свеса. Размер этого свеса " +"выражается в процентах от ширины линии. Скорость 0 означает, что для данного " +"диапазона нависаний замедление отсутствует и используется скорость " +"периметра. Скорость для промежуточных значений рассчитывается с помощью " +"линейной интерполяции." msgid "Bridge" msgstr "Мосты" @@ -5363,6 +6222,9 @@ msgstr "Подложка" msgid "Support filament" msgstr "Пруток для поддержки" +msgid "Tree supports" +msgstr "Древовидная поддержка" + msgid "Prime tower" msgstr "Черновая башня" @@ -5384,19 +6246,24 @@ msgstr "Частые" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time estimation." +"Please remove it, or will beat G-code visualization and printing time " +"estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time estimation." +"Please remove them, or will beat G-code visualization and printing time " +"estimation." msgstr[0] "" "Следующая строка %s содержит зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgstr[1] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgstr[2] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка времени печати." +"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"времени печати." msgid "Reserved keywords found" msgstr "Найдены зарезервированные ключевые слова" @@ -5414,10 +6281,12 @@ msgid "Recommended nozzle temperature" msgstr "Рекомендуемая температура сопла" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 значит не задано." +msgstr "" +"Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 " +"значит не задано." -msgid "Recommended temperature range" -msgstr "Рекомендуемый диапазон температур" +msgid "Print chamber temperature" +msgstr "Температура в термокамере" msgid "Print temperature" msgstr "Температура печати" @@ -5431,26 +6300,46 @@ msgstr "Температура сопла при печати" msgid "Cool plate" msgstr "Не нагреваемая пластина" -msgid "Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура не подогреваемого стола. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" +msgstr "" +"Температура не подогреваемого стола. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." msgid "Engineering plate" msgstr "Инженерная пластина" -msgid "Bed temperature when engineering plate is installed. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола при установленной инженерной печатной пластине. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура стола при установленной инженерной печатной пластине. 0 " +"означает, что пластиковая нить не поддерживает печать на этой печатной " +"пластине." -msgid "High Temp Plate" -msgstr "Высокотемпературная пластина" +msgid "Smooth PEI Plate / High Temp Plate" +msgstr "Гладкая PEI/высокотемпер. пластина" -msgid "Bed temperature when high temperature plate is installed. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола при установленной высокотемпературной печатной пластине. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" +msgstr "" +"Температура стола при установленной гладкой PEI/высокотемпературный печатной " +"пластине. 0 означает, что пластиковая нить не поддерживает печать на этой " +"печатной пластине." msgid "Textured PEI Plate" msgstr "Текстурированная PEI пластина" -msgid "Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола при установленной текстурированной пластите с PEI покрытием. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура стола при установленной текстурированной пластите с PEI " +"покрытием. 0 означает, что пластиковая нить не поддерживает печать на этой " +"печатной пластине." msgid "Volumetric speed limitation" msgstr "Ограничение объёмной скорости" @@ -5467,24 +6356,63 @@ msgstr "Вентилятор обдува модели" msgid "Min fan speed threshold" msgstr "Порог мин. скорости вентилятора" -msgid "Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time" -msgstr "Вентилятор для охлаждения моделей начнет работать с минимальной скоростью, когда расчётное время печати слоя не превышает заданное время печати слоя. Если время печати слоя меньше порогового значения, скорость вентилятора интерполируется между минимальной и максимальной скоростью вентилятора в зависимости от времени печати слоя." +msgid "" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" +msgstr "" +"Вентилятор для охлаждения моделей начнет работать с минимальной скоростью, " +"когда расчётное время печати слоя не превышает заданное время печати слоя. " +"Если время печати слоя меньше порогового значения, скорость вентилятора " +"интерполируется между минимальной и максимальной скоростью вентилятора в " +"зависимости от времени печати слоя." msgid "Max fan speed threshold" msgstr "Порог макс. скорости вентилятора" -msgid "Part cooling fan speed will be max when the estimated layer time is shorter than the setting value" -msgstr "Скорость вентилятора для охлаждения детали будет максимальной, если расчётное время печати слоя меньше установленного значения." +msgid "" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" +msgstr "" +"Скорость вентилятора для охлаждения детали будет максимальной, если " +"расчётное время печати слоя меньше установленного значения." msgid "Auxiliary part cooling fan" msgstr "Вспомогательный вентилятор для охлаждения моделей" +msgid "Exhaust fan" +msgstr "Вытяжной вентилятор" + +msgid "During print" +msgstr "Во время печати" + +msgid "Complete print" +msgstr "После завершения печати" + msgid "Filament start G-code" msgstr "Стартовый G-код прутка" msgid "Filament end G-code" msgstr "Завершающий G-код прутка" +msgid "Multimaterial" +msgstr "Экструдер ММ" + +msgid "Wipe tower parameters" +msgstr "Параметры черновой башни" + +msgid "Toolchange parameters with single extruder MM printers" +msgstr "" +"Параметры смены инструмента в одноэкструдерных мультиматериальных принтерах" + +msgid "Ramming settings" +msgstr "Настройки рэмминга" + +msgid "Toolchange parameters with multi extruder MM printers" +msgstr "" +"Параметры смены инструмента в мультиэкструдерных мультиматериальных принтерах" + msgid "Printable space" msgstr "Область печати" @@ -5509,12 +6437,18 @@ msgstr "Стартовый G-код принтера" msgid "Machine end G-code" msgstr "Завершающий G-код принтера" +msgid "Printing by object G-code" +msgstr "" + msgid "Before layer change G-code" msgstr "G-код выполняемый перед сменой слоя" msgid "Layer change G-code" msgstr "G-код выполняемый при смене слоя" +msgid "Time lapse G-code" +msgstr "G-код таймлапса" + msgid "Change filament G-code" msgstr "G-код выполняемый при смене прутка" @@ -5542,6 +6476,15 @@ msgstr "Ограничение ускорений" msgid "Jerk limitation" msgstr "Ограничение рывка" +msgid "Single extruder multimaterial setup" +msgstr "Мультиматериальный одиночный экструдер" + +msgid "Wipe tower" +msgstr "Черновая башня" + +msgid "Single extruder multimaterial parameters" +msgstr "Параметры мультиматериального одиночного экструдера" + msgid "Layer height limits" msgstr "Ограничение высоты слоя" @@ -5566,21 +6509,42 @@ msgstr "Откат из прошивки" msgid "Detached" msgstr "Отсоединён" +#, c-format, boost-format +msgid "" +"%d Filament Preset and %d Process Preset is attached to this printer. Those " +"presets would be deleted if the printer is deleted." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted!" +msgstr "" + +msgid "The following presets inherit this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#. TRN Remove/Delete +#, boost-format +msgid "%1% Preset" +msgstr "%1% профиль" + msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "Следующий профиль также будет удалён." msgstr[1] "Следующие профили также будут удалены." msgstr[2] "Следующие профили также будут удалены." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "%1% выбранный профиль?" -#. TRN Remove/Delete -#, boost-format -msgid "%1% Preset" -msgstr "%1% профиль" - msgid "All" msgstr "Все" @@ -5659,24 +6623,34 @@ msgid "Preset \"%1%\" contains the following unsaved changes:" msgstr "Профиль \"%1%\" имеет следующие несохранённые изменения:" #, boost-format -msgid "Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved changes:" -msgstr "Профиль \"%1%\" несовместим с новым профилем принтера, и имеет следующие несохранённые изменения:" +msgid "" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" +msgstr "" +"Профиль \"%1%\" несовместим с новым профилем принтера, и имеет следующие " +"несохранённые изменения:" #, boost-format -msgid "Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved changes:" -msgstr "Профиль \"%1%\" несовместим с новым профилем процесса, и имеет следующие несохранённые изменения:" +msgid "" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" +msgstr "" +"Профиль \"%1%\" несовместим с новым профилем процесса, и имеет следующие " +"несохранённые изменения:" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Вы изменили некоторые параметры профиля \"%1%\". \n" "Хотите сохранить эти изменения (новые значения)?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching preset?" +"Would you like to keep these changed settings (new value) after switching " +"preset?" msgstr "" "Вы изменили некоторые параметры профиля.\n" "Хотите сохранить эти изменения (новые значения)?" @@ -5776,14 +6750,58 @@ msgstr "Текущая конфигурация не требует обновл msgid "Ramming customization" msgstr "Настройки рэмминга" +msgid "" +"Ramming denotes the rapid extrusion just before a tool change in a single-" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" +"\n" +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." +msgstr "" +"Рэмминг (ramming, дословно утрамбовка) означает быстрое экструдирование " +"непосредственно перед сменой инструмента в одноэкструдерном " +"мультиматериальном принтере. Цель процесса состоит в том, чтобы правильно " +"сформировать конец выгружаемого прутка, чтобы он не препятствовал вставке " +"нового прутка или этого же прутка, вставленного позже. Эта фаза важна и " +"разные материалы могут потребовать разных скоростей экструзии, чтобы " +"получить хорошую форму. По этой причине скорость экструзии во время рэмминга " +"регулируется.\n" +"\n" +"Эта опция для опытных пользователей, неправильная настройка может привести к " +"замятию, протиранию прутка приводом экструдера и т.д." + +msgid "Total ramming time" +msgstr "Общее время рэмминга" + +msgid "s" +msgstr "с" + +msgid "Total rammed volume" +msgstr "Общий объём при рэмминге" + +msgid "Ramming line width" +msgstr "Ширина линии при рэмминге" + +msgid "Ramming line spacing" +msgstr "Расстояние между линиями при рэмминге" + msgid "Auto-Calc" msgstr "Авторасчёт" +msgid "Re-calculate" +msgstr "" + msgid "Flushing volumes for filament change" msgstr "Объёмы очистки при смене пластиковой нити" -msgid "Multiplier" -msgstr "Множитель" +msgid "" +"Studio would re-calculate your flushing volumes everytime the filaments " +"color changed. You could disable the auto-calculate in Bambu Studio > " +"Preferences" +msgstr "" msgid "Flushing volume (mm³) for each filament pair." msgstr "" @@ -5798,6 +6816,9 @@ msgstr "Рекомендуемый объём очистки в диапазон msgid "The multiplier should be in range [%.2f, %.2f]." msgstr "Множитель должен находиться в диапазоне [%.2f - %.2f]." +msgid "Multiplier" +msgstr "Множитель" + msgid "unloaded" msgstr "выгрузку" @@ -5813,11 +6834,18 @@ msgstr "С" msgid "To" msgstr "На" +msgid "Bambu Network plug-in not detected." +msgstr "" + +msgid "Click here to download it." +msgstr "" + msgid "Login" msgstr "Войти" msgid "The configuration package is changed in previous Config Guide" -msgstr "Пакет конфигурации был изменён при предыдущем запуске мастера настройки." +msgstr "" +"Пакет конфигурации был изменён при предыдущем запуске мастера настройки." msgid "Configuration package changed" msgstr "Пакет конфигурации изменён" @@ -5848,6 +6876,9 @@ msgstr "" "Показать/Скрыть диалоговое окно настроек \n" "устройств 3Dconnexion" +msgid "Switch table page" +msgstr "" + msgid "Show keyboard shortcuts list" msgstr "Показать список сочетаний клавиш" @@ -5872,8 +6903,14 @@ msgstr "Shift+A" msgid "Shift+R" msgstr "Shift+R" -msgid "Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk." -msgstr "Автоориентация выбранных или всех моделей. При выбранных моделях, ориентируются только они, противном случае ориентируются все модели на текущем столе." +msgid "" +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." +msgstr "" +"Автоориентация выбранных или всех моделей. При выбранных моделях, " +"ориентируются только они, противном случае ориентируются все модели на " +"текущем столе." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -5998,9 +7035,6 @@ msgstr "Гизмо рисования шва (FDM)" msgid "Swtich between Prepare/Prewview" msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" -msgid "Switch between Prepare/Prewview" -msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" - msgid "Plater" msgstr "Печатная пластина" @@ -6062,7 +7096,8 @@ msgid "Horizontal slider - Move active thumb Right" msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок вправо" msgid "On/Off one layer mode of the vertical slider" -msgstr "Включение/Отключение функции «Режим одного слоя» у вертикального ползунка" +msgstr "" +"Включение/Отключение функции «Режим одного слоя» у вертикального ползунка" msgid "On/Off g-code window" msgstr "Показать/скрыть окно отображения G-кода" @@ -6083,27 +7118,42 @@ msgstr "Информация об обновлении версии %s:" msgid "Network plug-in update" msgstr "Обновление сетевого плагина" -msgid "Click OK to update the Network plug-in when Bambu Studio launches next time." -msgstr "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu Studio." +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "" +"Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Orca Slicer." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" msgstr "Доступен новый сетевой плагин (%s). Хотите установить?" -msgid "New version of Bambu Studio" -msgstr "Доступна новая версия Bambu Studio" +msgid "New version of Orca Slicer" +msgstr "Доступна новая версия Orca Slicer" -msgid "Don't remind me of this version again" -msgstr "Больше не напоминай об этой версии" +msgid "Skip this Version" +msgstr "" + +msgid "Done" +msgstr "Готово" + +msgid "Confirm and Update Nozzle" +msgstr "" msgid "LAN Connection Failed (Sending print file)" msgstr "Сбой подключения к локальной сети (отправка файла на печать)" -msgid "Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в одной локальной сети." +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Шаг 1. Пожалуйста, убедитесь, что Orca Slicer и ваш принтер находятся в " +"одной локальной сети." -msgid "Step 2, if the IP and Access Code below are different from the actual values on your printer, please correct them." -msgstr "Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от фактических значений на вашем принтере, пожалуйста, исправьте их." +msgid "" +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." +msgstr "" +"Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от " +"фактических значений на вашем принтере, пожалуйста, исправьте их." msgid "IP" msgstr "IP" @@ -6114,8 +7164,22 @@ msgstr "Код доступа" msgid "Where to find your printer's IP and Access Code?" msgstr "Где найти IP-адрес и код доступа к вашему принтеру?" -msgid "Error: IP or Access Code are not correct" -msgstr "Ошибка: неверный IP-адрес или код доступа" +msgid "Step 3: Ping the IP address to check for packet loss and latency." +msgstr "" + +msgid "Test" +msgstr "Тест" + +msgid "IP and Access Code Verified! You may close the window" +msgstr "" + +msgid "Connection failed, please double check IP and Access Code" +msgstr "" + +msgid "" +"Connection failed! If your IP and Access Code is correct, \n" +"please move to step 3 for troubleshooting network issues" +msgstr "" msgid "Model:" msgstr "Модель:" @@ -6147,14 +7211,30 @@ msgstr "Сбой при обновлении" msgid "Updating successful" msgstr "Обновление успешно выполнено" -msgid "Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating." -msgstr "Вы уверены, что хотите обновить? Это займёт около 10 минут. Не выключайте питание во время обновления принтера." +msgid "" +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." +msgstr "" +"Вы уверены, что хотите обновить? Это займёт около 10 минут. Не выключайте " +"питание во время обновления принтера." -msgid "An important update was detected and needs to be run before printing can continue. Do you want to update now? You can also update later from 'Upgrade firmware'." -msgstr "Было обнаружено важное обновление, которое необходимо установить перед продолжением печати. Хотите обновиться сейчас? Обновление можно выполнить и позже, нажав «Обновить прошивку»." +msgid "" +"An important update was detected and needs to be run before printing can " +"continue. Do you want to update now? You can also update later from 'Upgrade " +"firmware'." +msgstr "" +"Было обнаружено важное обновление, которое необходимо установить перед " +"продолжением печати. Хотите обновиться сейчас? Обновление можно выполнить и " +"позже, нажав «Обновить прошивку»." -msgid "The firmware version is abnormal. Repairing and updating are required before printing. Do you want to update now? You can also update later on printer or update next time starting the studio." -msgstr "Ошибка в версии прошивки. Перед печатью её необходимо исправить и обновить. Хотите обновить сейчас? Вы можете сделать это позже с принтера или при следующем запуске программы." +msgid "" +"The firmware version is abnormal. Repairing and updating are required before " +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting the studio." +msgstr "" +"Ошибка в версии прошивки. Перед печатью её необходимо исправить и обновить. " +"Хотите обновить сейчас? Вы можете сделать это позже с принтера или при " +"следующем запуске программы." msgid "Extension Board" msgstr "Плата расширения" @@ -6212,7 +7292,8 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Не удалось скопировать файл %1% в %2%: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "Перед обновлением конфигурации необходимо проверить несохранённые изменения." +msgstr "" +"Перед обновлением конфигурации необходимо проверить несохранённые изменения." msgid "Configuration package updated to " msgstr "Пакет конфигурации обновлён до " @@ -6220,8 +7301,12 @@ msgstr "Пакет конфигурации обновлён до " msgid "Open G-code file:" msgstr "Выберите G-код файл:" -msgid "One object has empty initial layer and can't be printed. Please Cut the bottom or enable supports." -msgstr "Одна модель имеет пустой начальный слой и не может быть напечатана. Пожалуйста, обрежьте нижнюю часть или включите поддержки." +msgid "" +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." +msgstr "" +"Одна модель имеет пустой начальный слой и не может быть напечатана. " +"Пожалуйста, обрежьте нижнюю часть или включите поддержки." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -6231,8 +7316,12 @@ msgstr "Модель не может быть напечатан из-за пу msgid "Object: %1%" msgstr "Модель: %1%" -msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" -msgstr "Возможно, части модели на этой высоте слишком тонкие, или она имеет дефектную сетку." +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" +msgstr "" +"Возможно, части модели на этой высоте слишком тонкие, или она имеет " +"дефектную сетку." msgid "No object can be printed. Maybe too small" msgstr "Печать моделей невозможна. Возможно, они слишком маленькие." @@ -6240,10 +7329,14 @@ msgstr "Печать моделей невозможна. Возможно, он msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" -msgstr "Не удалось сгенерировать G-код из-за недопустимого пользовательского G-кода.\n" +msgstr "" +"Не удалось сгенерировать G-код из-за недопустимого пользовательского G-" +"кода.\n" msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Пожалуйста, проверьте пользовательский G-код или используйте пользовательский G-код по умолчанию." +msgstr "" +"Пожалуйста, проверьте пользовательский G-код или используйте " +"пользовательский G-код по умолчанию." #, boost-format msgid "Generating G-code: layer %1%" @@ -6290,7 +7383,15 @@ msgstr "Множитель" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\". " +msgstr "" +"Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\". " + +msgid "" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" +msgstr "" +"Для Flow::with_spacing () был указан недопустимый интервал. Проверьте высоту " +"слоя и ширину экструзии." msgid "undefined error" msgstr "неопределённая ошибка" @@ -6386,67 +7487,158 @@ msgid "write callback failed" msgstr "ошибка записи функции обратного вызова" #, boost-format -msgid "%1% is too close to exclusion area, there may be collisions when printing." -msgstr "%1% находится слишком близко к области исключения, что может привести к столкновению при печати." +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." +msgstr "" +"%1% находится слишком близко к области исключения, что может привести к " +"столкновению при печати." #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "%1% находится слишком близко к другим, что может привести к столкновению." +msgstr "" +"%1% находится слишком близко к другим, что может привести к столкновению." #, boost-format msgid "%1% is too tall, and collisions will be caused." msgstr "%1% слишком высокий, что может привести к столкновению." msgid " is too close to others, there may be collisions when printing." -msgstr " находится слишком близко к другим моделям, что может привести к столкновению при печати." +msgstr "" +" находится слишком близко к другим моделям, что может привести к " +"столкновению при печати." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr " находится слишком близко к области исключения, что может привести к столкновению при печати." +msgstr "" +" находится слишком близко к области исключения, что может привести к " +"столкновению при печати." msgid "Prime Tower" msgstr "Черновая башня" msgid " is too close to others, and collisions may be caused.\n" -msgstr " находится слишком близко к другим моделям, что может привести к столкновению.\n" +msgstr "" +" находится слишком близко к другим моделям, что может привести к " +"столкновению.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr " находится слишком близко к области исключения, что может привести к столкновению.\n" +msgstr "" +" находится слишком близко к области исключения, что может привести к " +"столкновению.\n" -msgid "Can not print multiple filaments which have large difference of temperature together. Otherwise, the extruder and nozzle may be blocked or damaged during printing" -msgstr "Не допускается совместная печать несколькими материалами, имеющими большую разницу в температуре печати. Это может привести к засорению и повреждению сопла и экструдера." +msgid "" +"Can not print multiple filaments which have large difference of temperature " +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" +msgstr "" +"Не допускается совместная печать несколькими материалами, имеющими большую " +"разницу в температуре печати. Это может привести к засорению и повреждению " +"сопла и экструдера." msgid "No extrusions under current settings." msgstr "При текущих настройках экструзия отсутствует." -msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." -msgstr "Плавный режим таймлапса не поддерживается, когда включена последовательность печати моделей по очереди." +msgid "" +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." +msgstr "" +"Плавный режим таймлапса не поддерживается, когда включена последовательность " +"печати моделей по очереди." -msgid "Please select \"By object\" print sequence to print multiple objects in spiral vase mode." -msgstr "Выберите последовательность печати «По очереди», для поддержки печати несколько моделей в режиме спиральной вазы." +msgid "" +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." +msgstr "" +"Выберите последовательность печати «По очереди», для поддержки печати " +"несколько моделей в режиме спиральной вазы." -msgid "The spiral vase mode does not work when an object contains more than one materials." -msgstr "Режим «Спиральная ваза» не работает, когда модель печатается несколькими материалами." +msgid "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +msgstr "" +"Режим «Спиральная ваза» не работает, когда модель печатается несколькими " +"материалами." + +#, boost-format +msgid "The object %1% exceeds the maximum build volume height." +msgstr "Высота модели %1% превышает максимально допустимую." + +#, boost-format +msgid "" +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." +msgstr "" +"Хотя сама модель %1% вписывается в область построения, её последний слой " +"превышает максимальную высоту области построения." + +msgid "" +"You might want to reduce the size of your model or change current print " +"settings and retry." +msgstr "" +"Попробуйте уменьшить размер модели или изменить текущие настройки печати и " +"повторить попытку." + +msgid "Variable layer height is not supported with Organic supports." +msgstr "" +"Функция переменной высоты слоя не совместима органическими поддержками." + +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" msgid "The prime tower is not supported in \"By object\" print." msgstr "Черновая башня не поддерживается при печати в режиме «По очереди»." -msgid "The prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." -msgstr "Черновой башни не поддерживается, когда включена функция переменной высоты слоя. Требуется, чтобы все модели имели одинаковую высоту слоя." +msgid "" +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." +msgstr "" +"Черновой башни не поддерживается, когда включена функция переменной высоты " +"слоя. Требуется, чтобы все модели имели одинаковую высоту слоя." msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "Для черновой башни требуется, чтобы зазор поддержки был кратен высоте слоя." +msgstr "" +"Для черновой башни требуется, чтобы зазор поддержки был кратен высоте слоя." msgid "The prime tower requires that all objects have the same layer heights" -msgstr "Для использования черновой башни требуется, чтобы у всех моделей была одинаковая высота слоя." +msgstr "" +"Для использования черновой башни требуется, чтобы у всех моделей была " +"одинаковая высота слоя." -msgid "The prime tower requires that all objects are printed over the same number of raft layers" -msgstr "Для черновой башни требуется, чтобы все модели были напечатаны на одинаковом количестве слоёв подложки." +msgid "" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" +msgstr "" +"Для черновой башни требуется, чтобы все модели были напечатаны на одинаковом " +"количестве слоёв подложки." -msgid "The prime tower requires that all objects are sliced with the same layer heights." -msgstr "Для использования черновой башни требуется, чтобы все модели были нарезаны с одинаковой высотой слоя." +msgid "" +"The prime tower requires that all objects are sliced with the same layer " +"heights." +msgstr "" +"Для использования черновой башни требуется, чтобы все модели были нарезаны с " +"одинаковой высотой слоя." -msgid "The prime tower is only supported if all objects have the same variable layer height" -msgstr "Для черновой башни требуется, чтобы все модели имели одинаковую переменную высоту слоя." +msgid "" +"The prime tower is only supported if all objects have the same variable " +"layer height" +msgstr "" +"Для черновой башни требуется, чтобы все модели имели одинаковую переменную " +"высоту слоя." msgid "Too small line width" msgstr "Слишком маленькая ширина экструзии" @@ -6454,38 +7646,67 @@ msgstr "Слишком маленькая ширина экструзии" msgid "Too large line width" msgstr "Слишком большая ширина экструзии" -msgid "The prime tower requires that support has the same layer height with object." -msgstr "Для черновой башни требуется, чтобы поддержка и модель имели одинаковую высоту слоя." - -msgid "Tree supports" -msgstr "Древовидная поддержка" +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Для черновой башни требуется, чтобы поддержка и модель имели одинаковую " +"высоту слоя." # ??? -msgid "Organic support tree tip diameter must not be smaller than support material extrusion width." -msgstr "Диаметр кончика ветки органической поддержки не должен быть меньше значения ширины экструзии поддержки." +msgid "" +"Organic support tree tip diameter must not be smaller than support material " +"extrusion width." +msgstr "" +"Диаметр кончика ветки органической поддержки не должен быть меньше значения " +"ширины экструзии поддержки." # ??? -msgid "Organic support branch diameter must not be smaller than 2x support material extrusion width." -msgstr "Диаметр ветки органической поддержки должен быть хотя бы в два раза больше значения ширины экструзии поддержки." +msgid "" +"Organic support branch diameter must not be smaller than 2x support material " +"extrusion width." +msgstr "" +"Диаметр ветки органической поддержки должен быть хотя бы в два раза больше " +"значения ширины экструзии поддержки." # ??? -msgid "Organic support branch diameter must not be smaller than support tree tip diameter." -msgstr "Диаметр ветвей органической поддержки должен быть больше диаметра кончика ветки." +msgid "" +"Organic support branch diameter must not be smaller than support tree tip " +"diameter." +msgstr "" +"Диаметр ветвей органической поддержки должен быть больше диаметра кончика " +"ветки." -msgid "Support enforcers are used but support is not enabled. Please enable support." -msgstr "Используется принудительная поддержка, но её генерация не включена. Пожалуйста, включите генерацию поддержки в настройках слайсера." +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Используется принудительная поддержка, но её генерация не включена. " +"Пожалуйста, включите генерацию поддержки в настройках слайсера." msgid "Layer height cannot exceed nozzle diameter" msgstr "Высота слоя не может быть больше диаметра сопла" -msgid "Relative extruder addressing requires resetting the extruder position at each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." -msgstr "При относительной адресации экструдера его положение необходимо корректировать на каждом слое, чтобы предотвратить потерю точности с плавающей запятой. Добавьте \"G92 E0\" в layer_gcode." +msgid "" +"Relative extruder addressing requires resetting the extruder position at " +"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"layer_gcode." +msgstr "" +"При относительной адресации экструдера его положение необходимо " +"корректировать на каждом слое, чтобы предотвратить потерю точности с " +"плавающей запятой. Добавьте \"G92 E0\" в layer_gcode." -msgid "\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder addressing." -msgstr "В before_layer_gcode была найдена команда \"G92 E0\", которая несовместима с абсолютной адресацией экструдера." +msgid "" +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." +msgstr "" +"В before_layer_gcode была найдена команда \"G92 E0\", которая несовместима с " +"абсолютной адресацией экструдера." -msgid "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder addressing." -msgstr "В layer_gcode была найдена команда \"G92 E0\", которая несовместима с абсолютной адресацией экструдера." +msgid "" +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." +msgstr "" +"В layer_gcode была найдена команда \"G92 E0\", которая несовместима с " +"абсолютной адресацией экструдера." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -6509,8 +7730,15 @@ msgstr "Область печати" msgid "Bed exclude area" msgstr "Область исключения" -msgid "Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament during filament change. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" -msgstr "Непечатаемая область в плоскости XY. Например, в принтерах серии X1 передний левый угол используется для обрезания материала при его замене. Область выражается в виде многоугольника по точкам в следующем формате: \"XxY, XxY, ...\"" +msgid "" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "" +"Непечатаемая область в плоскости XY. Например, в принтерах серии X1 передний " +"левый угол используется для обрезания материала при его замене. Область " +"выражается в виде многоугольника по точкам в следующем формате: \"XxY, " +"XxY, ...\"" msgid "Bed custom texture" msgstr "Пользовательская текстура стола" @@ -6521,11 +7749,35 @@ msgstr "Пользовательская модель стола" msgid "Elephant foot compensation" msgstr "Компенсация «слоновьей ноги»" -msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" -msgstr "Уменьшение первого слоя в плоскости XY на заданное значение, чтобы компенсировать эффект слоновьей ноги." +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "" +"Уменьшение первого слоя в плоскости XY на заданное значение, чтобы " +"компенсировать эффект слоновьей ноги." -msgid "Slicing height for each layer. Smaller layer height means more accurate and more printing time" -msgstr "Высота каждого слоя. Чем меньше значение, тем лучше качество, но требуется больше времени для печати, и наоборот." +msgid "Elephant foot compensation layers" +msgstr "Компенсирующих слоёв «слоновьей ноги»" + +msgid "" +"The number of layers on which the elephant foot compensation will be active. " +"The first layer will be shrunk by the elephant foot compensation value, then " +"the next layers will be linearly shrunk less, up to the layer indicated by " +"this value." +msgstr "" +"Количество слоёв, на которые будет распространяться компенсация слоновьей " +"ноги. Первый слой будет уменьшен на величину компенсации слоновьей ноги с " +"последующим линейным уменьшением до слоя, указанного здесь." + +msgid "layers" +msgstr "слой(-я)" + +msgid "" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" +msgstr "" +"Высота каждого слоя. Чем меньше значение, тем лучше качество, но требуется " +"больше времени для печати, и наоборот." msgid "Printable height" msgstr "Высота печати" @@ -6539,20 +7791,37 @@ msgstr "Имена профиля принтера" msgid "Hostname, IP or URL" msgstr "Имя хоста, IP/URL-адрес" -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" -msgstr "Slic3r может загружать файл G-кода на хост принтера. В этом поле нужно указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к узлу печати на основе HAProxy с включенной базовой аутентификацией можно получить, указав имя пользователя и пароль в поле URL-адрес в следующем формате: https://username:password@your-octopi-address" +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance. Print host " +"behind HAProxy with basic auth enabled can be accessed by putting the user " +"name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. В этом поле нужно " +"указать имя хоста, IP-адрес или URL-адрес хост-экземпляра печати. Доступ к " +"узлу печати на основе HAProxy с включенной базовой аутентификацией можно " +"получить, указав имя пользователя и пароль в поле URL-адрес в следующем " +"формате: https://username:password@your-octopi-address" msgid "Device UI" msgstr "URL-адрес хоста" -msgid "Specify the URL of your device user interface if it's not same as print_host" -msgstr "Укажите URL-адрес пользовательского интерфейса вашего устройства, если он не совпадает с print_host" +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" +msgstr "" +"Укажите URL-адрес пользовательского интерфейса вашего устройства, если он не " +"совпадает с print_host" msgid "API Key / Password" msgstr "API-ключ/Пароль" -msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." -msgstr "Slic3r может загружать файл G-кода на хост принтера. Это поле должно содержать API ключ или пароль, необходимые для проверки подлинности." +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"содержать API ключ или пароль, необходимые для проверки подлинности." msgid "Name of the printer" msgstr "Название принтера" @@ -6560,8 +7829,14 @@ msgstr "Название принтера" msgid "HTTPS CA File" msgstr "Файл корневого сертификата HTTPS" -msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." -msgstr "Для подключений по HTTPS к OctoPrint укажите пользовательский файл корневого сертификата в формате crt/pem. Если оставить поле пустым, будет использоваться хранилище сертификатов ОС по умолчанию." +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" +"Для подключений по HTTPS к OctoPrint укажите пользовательский файл корневого " +"сертификата в формате crt/pem. Если оставить поле пустым, будет " +"использоваться хранилище сертификатов ОС по умолчанию." msgid "User" msgstr "Пользователь" @@ -6572,8 +7847,14 @@ msgstr "Пароль" msgid "Ignore HTTPS certificate revocation checks" msgstr "Игнорировать проверки отзыва HTTPS сертификата" -msgid "Ignore HTTPS certificate revocation checks in case of missing or offline distribution points. One may want to enable this option for self signed certificates if connection fails." -msgstr "Игнорировать проверки отзыва HTTPS сертификата в случае его отсутствия или автономности точек распространения. Можно включить эту опцию для самоподписанных сертификатов в случае сбоя подключения." +msgid "" +"Ignore HTTPS certificate revocation checks in case of missing or offline " +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." +msgstr "" +"Игнорировать проверки отзыва HTTPS сертификата в случае его отсутствия или " +"автономности точек распространения. Можно включить эту опцию для " +"самоподписанных сертификатов в случае сбоя подключения." msgid "Names of presets related to the physical printer" msgstr "Имена профилей, связанных с физическим принтером" @@ -6591,13 +7872,24 @@ msgid "Avoid crossing wall" msgstr "Избегать пересечения периметров" msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "Объезжать и избегать пересечения периметров, для предотвращения образования дефектов на поверхности модели." +msgstr "" +"Объезжать и избегать пересечения периметров, для предотвращения образования " +"дефектов на поверхности модели." msgid "Avoid crossing wall - Max detour length" msgstr "Избегать пересечения периметров - Макс. длина обхода" -msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable" -msgstr "Максимальное расстояние обхода сопла от модели во избежание пересечения периметров при движении. Если расстояние обхода превышает это значение, то для данного маршрута эта опция не применяется. Длина обхода может быть задана как в абсолютном значении, так и в процентах (например, 50%) от прямого пути перемещения. 0 - отключено." +msgid "" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" +msgstr "" +"Максимальное расстояние обхода сопла от модели во избежание пересечения " +"периметров при движении. Если расстояние обхода превышает это значение, то " +"для данного маршрута эта опция не применяется. Длина обхода может быть " +"задана как в абсолютном значении, так и в процентах (например, 50%) от " +"прямого пути перемещения. 0 - отключено." msgid "mm or %" msgstr "мм или %" @@ -6605,20 +7897,36 @@ msgstr "мм или %" msgid "Other layers" msgstr "Последующие слои" -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." msgid "°C" msgstr "°C" -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." -msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." msgid "Initial layer" msgstr "Первый слой" @@ -6626,17 +7934,33 @@ msgstr "Первый слой" msgid "Initial layer bed temperature" msgstr "Температура стола для первого слоя" -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Cool Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Engineering Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the High Temp Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." -msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Textured PEI Plate" -msgstr "Температура стола для первого слоя. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." msgid "Bed types supported by the printer" msgstr "Типы столов, поддерживаемые принтером" @@ -6651,104 +7975,253 @@ msgid "First layer print sequence" msgstr "Последовательность печати первого слоя" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "Этот G-код вставляется при каждой смене слоя, непосредственно перед перемещения оси Z." +msgstr "" +"Этот G-код вставляется при каждой смене слоя, непосредственно перед " +"перемещения оси Z." msgid "Bottom shell layers" msgstr "Сплошных слоёв снизу" -msgid "This is the number of solid layers of bottom shell, including the bottom surface layer. When the thickness calculated by this value is thinner than bottom shell thickness, the bottom shell layers will be increased" -msgstr "Количество сплошных слоёв при печати нижней поверхности модели, включая нижний поверхностный слой. Если толщина, рассчитанная с помощью этого значения, меньше толщины оболочки снизу, количество слоёв оболочки снизу будет увеличено." +msgid "" +"This is the number of solid layers of bottom shell, including the bottom " +"surface layer. When the thickness calculated by this value is thinner than " +"bottom shell thickness, the bottom shell layers will be increased" +msgstr "" +"Количество сплошных слоёв при печати нижней поверхности модели, включая " +"нижний поверхностный слой. Если толщина, рассчитанная с помощью этого " +"значения, меньше толщины оболочки снизу, количество слоёв оболочки снизу " +"будет увеличено." msgid "Bottom shell thickness" msgstr "Толщина оболочки снизу" -msgid "The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers" +msgid "" +"The number of bottom solid layers is increased when slicing if the thickness " +"calculated by bottom shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" -"Минимальная толщина оболочки снизу в мм. Если толщина оболочки, рассчитанная по количеству сплошных слоёв снизу, меньше этого значения, количество сплошных слоёв снизу будет автоматически увеличено при нарезке, для удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр отключён, а толщина оболочки " -"снизу полностью задаётся количеством сплошных слоёв снизу." +"Минимальная толщина оболочки снизу в мм. Если толщина оболочки, рассчитанная " +"по количеству сплошных слоёв снизу, меньше этого значения, количество " +"сплошных слоёв снизу будет автоматически увеличено при нарезке, для " +"удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком " +"тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр " +"отключён, а толщина оболочки снизу полностью задаётся количеством сплошных " +"слоёв снизу." msgid "Force cooling for overhang and bridge" msgstr "Принудительный обдув навесов и мостов" -msgid "Enable this option to optimize part cooling fan speed for overhang and bridge to get better cooling" -msgstr "Включите, чтобы оптимизировать скорость вентилятора охлаждения моделей для нависаний и мостов для обеспечения лучшего их охлаждения." +msgid "" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" +msgstr "" +"Включите, чтобы оптимизировать скорость вентилятора охлаждения моделей для " +"нависаний и мостов для обеспечения лучшего их охлаждения." msgid "Fan speed for overhang" msgstr "Скорость вентилятора на нависанияx" -msgid "Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang degree. Forcing cooling for overhang and bridge can get better quality for these part" -msgstr "Заставляет вентилятор обдува модели работать на этой скорости при печати мостов или нависающих периметров, имеющих большую степень свеса. Принудительное охлаждение позволяет повысить качество печати этих частей." +msgid "" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" +msgstr "" +"Заставляет вентилятор обдува модели работать на этой скорости при печати " +"мостов или нависающих периметров, имеющих большую степень свеса. " +"Принудительное охлаждение позволяет повысить качество печати этих частей." msgid "Cooling overhang threshold" msgstr "Порог включения обдува на нависаниях" -msgid "Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. Expressed as percentage which indicides how much width of the line without support from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang degree" -msgstr "Принудительное включение вентилятора обдува модели на определенную скорость, если степень нависания печатаемой части превышает данное значение. Выражается в процентах и показывает, насколько велика ширина периметра без поддержки со стороны нижнего слоя. 0% означает принудительное охлаждение всего внешнего периметра независимо от величина свеса." +#, fuzzy, c-format +msgid "" +"Force cooling fan to be specific speed when overhang degree of printed part " +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" +msgstr "" +"Принудительное включение вентилятора обдува модели на определенную скорость, " +"если степень нависания печатаемой части превышает данное значение. " +"Выражается в процентах и показывает, насколько велика ширина периметра без " +"поддержки со стороны нижнего слоя. 0% означает принудительное охлаждение " +"всего внешнего периметра независимо от величина свеса." msgid "Bridge infill direction" msgstr "Угол печати мостов" -msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for external bridges. Use 180°for zero angle." -msgstr "Переопределение угла печати мостов. Если задано 0, угол печати мостов рассчитывается автоматически. В противном случае заданный угол будет использоваться для наружных мостов. Для нулевого угла установите 180°." +msgid "" +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." +msgstr "" +"Переопределение угла печати мостов. Если задано 0, угол печати мостов " +"рассчитывается автоматически. В противном случае заданный угол будет " +"использоваться для наружных мостов. Для нулевого угла установите 180°." msgid "Bridge density" msgstr "Плотность мостов" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "Плотность наружных мостов. 100% - сплошной мост. По умолчанию задано 100%." +msgstr "" +"Плотность наружных мостов. 100% - сплошной мост. По умолчанию задано 100%." msgid "Bridge flow" msgstr "Поток при печати мостов" -msgid "Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag" -msgstr "Параметр задаёт количество пластика, затрачиваемое для построения мостов. В большинстве случаев настроек по умолчанию достаточно, тем не менее, при печати некоторых моделей уменьшение параметра может сократить провисание пластика при печати мостов." +msgid "" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag" +msgstr "" +"Параметр задаёт количество пластика, затрачиваемое для построения мостов. В " +"большинстве случаев настроек по умолчанию достаточно, тем не менее, при " +"печати некоторых моделей уменьшение параметра может сократить провисание " +"пластика при печати мостов." + +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" msgid "Top surface flow ratio" msgstr "Коэффициент потока на верхней поверхности" -msgid "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish" -msgstr "Этот параметр задаёт количество выдавливаемого материала для верхнего сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить более гладкую поверхность." +msgid "" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish" +msgstr "" +"Этот параметр задаёт количество выдавливаемого материала для верхнего " +"сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить " +"более гладкую поверхность." msgid "Bottom surface flow ratio" msgstr "Коэффициент потока на нижней поверхности" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "Этот параметр задаёт количество выдавливаемого материала для нижнего сплошного слоя заполнения." +msgstr "" +"Этот параметр задаёт количество выдавливаемого материала для нижнего " +"сплошного слоя заполнения." msgid "Precise wall(experimental)" msgstr "Точные периметры (экспериментально)" -msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency." -msgstr "Повышение точности оболочки за счет регулировки расстояния между внешними стенками. Это также позволяет уменьшить расслоение слоёв." +msgid "" +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." +msgstr "" +"Повышение точности оболочки за счет регулировки расстояния между внешними " +"стенками. Это также позволяет уменьшить расслоение слоёв." msgid "Only one wall on top surfaces" msgstr "Только один периметр на верхней поверхности" -msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" -msgstr "Печатать только один периметр на верхней поверхности, чтобы оставить больше пространства для верхнего шаблона заполнения." +msgid "" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" +msgstr "" +"Печатать только один периметр на верхней поверхности, чтобы оставить больше " +"пространства для верхнего шаблона заполнения." msgid "One wall threshold" msgstr "Порог одного периметра" +#, fuzzy, c-format, boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created is you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts." +"If a top surface has to be printed and it's partially covered by another " +"layer, it won't be considered at a top layer where its width is below this " +"value. This can be useful to not let the 'one perimeter on top' trigger on " +"surface that should be covered only by perimeters. This value can be a mm or " +"a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created is you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." msgstr "" -"Если должна быть напечатана верхняя поверхность и частично покрыта другим слоем, она не будет рассматриваться как верхний слой, ширина которого ниже этого значения. Это может быть полезно, чтобы не допустить срабатывания функции «Только один периметр на верхней поверхности» на поверхности, которая должна быть покрыта только периметрами. Это значение может быть задано в мм или % от ширины " -"экструзии периметра.\n" -"Предупреждение: если этот параметр включён, то могут возникнуть артефакты, если у вас на следующем слое имеются какие-то тонкие элементы, например, буквы. Установите значение 0, чтобы убрать эти артефакты." +"Если должна быть напечатана верхняя поверхность и частично покрыта другим " +"слоем, она не будет рассматриваться как верхний слой, ширина которого ниже " +"этого значения. Это может быть полезно, чтобы не допустить срабатывания " +"функции «Только один периметр на верхней поверхности» на поверхности, " +"которая должна быть покрыта только периметрами. Это значение может быть " +"задано в мм или % от ширины экструзии периметра.\n" +"Предупреждение: если этот параметр включён, то могут возникнуть артефакты, " +"если у вас на следующем слое имеются какие-то тонкие элементы, например, " +"буквы. Установите значение 0, чтобы убрать эти артефакты." msgid "Only one wall on first layer" msgstr "Только один периметр на первом слое" -msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" -msgstr "Печатать только один периметр на первом слое, чтобы оставить больше пространства для нижнего шаблона заполнения." +msgid "" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" +msgstr "" +"Печатать только один периметр на первом слое, чтобы оставить больше " +"пространства для нижнего шаблона заполнения." msgid "Extra perimeters on overhangs" msgstr "Дополнительные периметры на нависаниях" -msgid "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored. " -msgstr "Создание дополнительных дорожек по периметру над крутыми нависаниями и участками, где мосты не могут быть закреплены." +msgid "" +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " +msgstr "" +"Создание дополнительных дорожек по периметру над крутыми нависаниями и " +"участками, где мосты не могут быть закреплены." + +# от Overhang reversal +# Реверс на нечётных слоях +msgid "Reverse on odd" +msgstr "Реверс на нависаниях" + +msgid "Overhang reversal" +msgstr "Реверс на нависаниях" + +msgid "" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on odd layers. This alternating pattern can drastically improve " +"steep overhangs.\n" +"\n" +"This setting can also help reduce part warping due to the reduction of " +"stresses in the part walls." +msgstr "" + +msgid "Reverse only internal perimeters" +msgstr "" + +msgid "" +"Apply the reverse perimeters logic only on internal perimeters. \n" +"\n" +"This setting greatly reduces part stresses as they are now distributed in " +"alternating directions. This should reduce part warping while also " +"maintaining external wall quality. This feature can be very useful for warp " +"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " +"Silk PLA. It can also help reduce warping on floating regions over " +"supports.\n" +"\n" +"For this setting to be the most effective, it is recomended to set the " +"Reverse Threshold to 0 so that all internal walls print in alternating " +"directions on odd layers irrespective of their overhang degree." +msgstr "" + +# от Overhang reversal threshold +msgid "Reverse threshold" +msgstr "Порог для реверса" + +msgid "Overhang reversal threshold" +msgstr "Порог разворота на свесах" + +#, fuzzy, c-format, boost-format +msgid "" +"Number of mm the overhang need to be for the reversal to be considered " +"useful. Can be a % of the perimeter width.\n" +"Value 0 enables reversal on every odd layers regardless." +msgstr "" +"Величина свеса периметра при которой она считается достаточной для активации " +"функции реверса печати нависаний.\n" +"Может быть задано как в процентах, так и в миллиметрах от ширины периметра." msgid "Classic mode" msgstr "Классический режим" @@ -6762,6 +8235,17 @@ msgstr "Замедляться при печати нависаний" msgid "Enable this option to slow printing down for different overhang degree" msgstr "Включение динамического управления скоростью печати нависаний." +# ??? Замедление печати на изогнутых периметров +msgid "Slow down for curled perimeters" +msgstr "Снижение скорости на изогнутых периметрах" + +msgid "" +"Enable this option to slow printing down in areas where potential curled " +"perimeters may exist" +msgstr "" +"Включите эту опцию для замедления печати в тех областях, где потенциально " +"могут возникать изогнутые периметры." + msgid "mm/s or %" msgstr "мм/с или %" @@ -6777,8 +8261,12 @@ msgstr "мм/с" msgid "Internal" msgstr "Внутренние" -msgid "Speed of internal bridge. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." -msgstr "Скорость печати внутреннего моста. Если задано в процентах, то значение вычисляться относительно bridge_speed. Значение по умолчанию равно 150%." +msgid "" +"Speed of internal bridge. If the value is expressed as a percentage, it will " +"be calculated based on the bridge_speed. Default value is 150%." +msgstr "" +"Скорость печати внутреннего моста. Если задано в процентах, то значение " +"вычисляться относительно bridge_speed. Значение по умолчанию равно 150%." msgid "Brim width" msgstr "Ширина каймы" @@ -6789,13 +8277,20 @@ msgstr "Расстояние от модели до внешней линии к msgid "Brim type" msgstr "Тип каймы" -msgid "This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width is analysed and calculated automatically." -msgstr "Этот параметр управляет формированием каймы на внешней/внутренней стороне моделей. Авто означает, что ширина каймы анализируется и рассчитывается автоматически." +msgid "" +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." +msgstr "" +"Этот параметр управляет формированием каймы на внешней/внутренней стороне " +"моделей. Авто означает, что ширина каймы анализируется и рассчитывается " +"автоматически." msgid "Brim-object gap" msgstr "Смещение каймы" -msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" msgstr "Смещение каймы от печатаемой модели, может облегчить её удаление." msgid "Brim ears" @@ -6820,10 +8315,12 @@ msgid "Brim ear detection radius" msgstr "Радиус обнаружения ушек каймы" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"Геометрия модели будет упрощена перед обнаружением острых углов. Этот параметр задаёт минимальную длину отклонения для её упрощения.\n" +"Геометрия модели будет упрощена перед обнаружением острых углов. Этот " +"параметр задаёт минимальную длину отклонения для её упрощения.\n" "Установите 0 для отключения." msgid "Compatible machine" @@ -6853,14 +8350,24 @@ msgstr "По очереди" msgid "Slow printing down for better layer cooling" msgstr "Замедлять печать для лучшего охлаждения слоёв" -msgid "Enable this option to slow printing speed down to make the final layer time not shorter than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. This can improve the cooling quality for needle and small details" -msgstr "Включите эту опцию для разрешения замедления скорости печати в зависимости от времени печати слоя, чтобы слой мог охлаждаться дольше. Это позволяет улучшить качество охлаждения острых концов и мелких деталей." +msgid "" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" +msgstr "" +"Включите эту опцию для разрешения замедления скорости печати в зависимости " +"от времени печати слоя, чтобы слой мог охлаждаться дольше. Это позволяет " +"улучшить качество охлаждения острых концов и мелких деталей." msgid "Normal printing" msgstr "Ускорение по умолчанию" -msgid "The default acceleration of both normal printing and travel except initial layer" -msgstr "Ускорение по умолчанию для обычной печати и перемещения, кроме первого слоя." +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" +msgstr "" +"Ускорение по умолчанию для обычной печати и перемещения, кроме первого слоя." msgid "mm/s²" msgstr "мм/с²" @@ -6869,40 +8376,90 @@ msgid "Default filament profile" msgstr "Профиль прутка по умолчанию" msgid "Default filament profile when switch to this machine profile" -msgstr "Профиль пластиковой нити по умолчанию при переключении на этот профиль принтера." +msgstr "" +"Профиль пластиковой нити по умолчанию при переключении на этот профиль " +"принтера." msgid "Default process profile" msgstr "Профиль процесса по умолчанию" msgid "Default process profile when switch to this machine profile" -msgstr "Профиль процесса по умолчанию при переключении на этот профиль принтера." +msgstr "" +"Профиль процесса по умолчанию при переключении на этот профиль принтера." + +msgid "Activate air filtration" +msgstr "Вкл. фильтрацию воздуха" + +msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" +msgstr "" +"Активировать для лучшей фильтрации воздуха. G-код команда: M106 P3 S(0-255)" + +msgid "Fan speed" +msgstr "Скорость вентилятора" + +msgid "" +"Speed of exhuast fan during printing.This speed will overwrite the speed in " +"filament custom gcode" +msgstr "" +"Скорость вытяжного вентилятора во время печати. Эта скорость будет " +"переопределять скорость в пользовательском стартовом G-коде материала" + +msgid "Speed of exhuast fan after printing completes" +msgstr "Скорость вытяжного вентилятора после завершения печати" msgid "No cooling for the first" msgstr "Не включать вентилятор на первых" -msgid "Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed to get better build plate adhesion" -msgstr "Вы можете задать положительное значение, чтобы отключить все вентиляторы охлаждения модели при печати первых нескольких слоёв, чтобы не ухудшить адгезию к столу." - -msgid "layers" -msgstr "слой(-я)" +msgid "" +"Close all cooling fan for the first certain layers. Cooling fan of the first " +"layer used to be closed to get better build plate adhesion" +msgstr "" +"Вы можете задать положительное значение, чтобы отключить все вентиляторы " +"охлаждения модели при печати первых нескольких слоёв, чтобы не ухудшить " +"адгезию к столу." msgid "Don't support bridges" msgstr "Не печатать поддержки под мостами" -msgid "Don't support the whole bridge area which make support very large. Bridge usually can be printing directly without support if not very long" -msgstr "Опция, препятствующая печати поддержки под мостами. Мост обычно можно печатать без поддержки, если он не очень длинный." +msgid "" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" +msgstr "" +"Опция, препятствующая печати поддержки под мостами. Мост обычно можно " +"печатать без поддержки, если он не очень длинный." msgid "Thick bridges" msgstr "Толстые мосты" -msgid "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances." -msgstr "Если включено, мосты печатаются более надежные и на большие расстояния. Если отключено, мосты выглядят лучше, но они надежны только на коротких расстояниях." +msgid "" +"If enabled, bridges are more reliable, can bridge longer distances, but may " +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." +msgstr "" +"Если включено, мосты печатаются более надежные и на большие расстояния. Если " +"отключено, мосты выглядят лучше, но они надежны только на коротких " +"расстояниях." + +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" msgid "Max bridge length" msgstr "Максимальная длина моста" -msgid "Max length of bridges that don't need support. Set it to 0 if you want all bridges to be supported, and set it to a very large value if you don't want any bridges to be supported." -msgstr "Максимальная длина мостов, не нуждающихся в поддержке. Установите 0, если требуется поддержка всех мостов, или очень большое значение, если поддержка мостов не требуется." +msgid "" +"Max length of bridges that don't need support. Set it to 0 if you want all " +"bridges to be supported, and set it to a very large value if you don't want " +"any bridges to be supported." +msgstr "" +"Максимальная длина мостов, не нуждающихся в поддержке. Установите 0, если " +"требуется поддержка всех мостов, или очень большое значение, если поддержка " +"мостов не требуется." msgid "End G-code" msgstr "Завершающий G-код" @@ -6910,20 +8467,26 @@ msgstr "Завершающий G-код" msgid "End G-code when finish the whole printing" msgstr "Завершающий G-код при окончании всей печати." +msgid "Between Object Gcode" +msgstr "" + +msgid "" +"Insert Gcode between objects. This parameter will only come into effect when " +"you print your models object by object" +msgstr "" + msgid "End G-code when finish the printing of this filament" msgstr "Завершающий G-код при окончании печати этой пластиковой нитью." msgid "Ensure vertical shell thickness" msgstr "Обеспечивать верт. толщину оболочки" -msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)" -msgstr "Добавление сплошного заполнения вблизи наклонных поверхностей для обеспечения вертикальной толщины оболочки (верхний+нижний сплошные слои)." - -msgid "Internal bridge support thickness" -msgstr "Толщина поддержки внутреннего моста" - -msgid "If enabled, support loops will be generated under the contours of internal bridges.These support loops could prevent internal bridges from extruding over the air and improve the top surface quality, especially when the sparse infill density is low.This value determines the thickness of the support loops. 0 means disable this feature" -msgstr "Если включено, под контурами внутренних мостов будут создаваться петли поддержки. Эти петли поддержки могут препятствовать выдавливанию внутренних мостов в воздух и улучшить качество поверхности сверху, особенно при низкой плотности заполнения. Это значение определяет толщину петель поддержки. Установите 0 для отключения." +msgid "" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)" +msgstr "" +"Добавление сплошного заполнения вблизи наклонных поверхностей для " +"обеспечения вертикальной толщины оболочки (верхний+нижний сплошные слои)." msgid "Top surface pattern" msgstr "Шаблон заполнения верхней поверхности" @@ -6964,68 +8527,105 @@ msgstr "Шаблон заполнения нижней поверхности, msgid "Internal solid infill pattern" msgstr "Шаблон сплошного заполнения" -msgid "Line pattern of internal solid infill. if the detect nattow internal solid infill be enabled, the concentric pattern will be used for the small area." -msgstr "Шаблон печати внутреннего сплошного заполнения. Если включена функция «Обнаруживать узкую область сплошного заполнения», то для небольшой области будет использоваться концентрический шаблон заполнения." +msgid "" +"Line pattern of internal solid infill. if the detect nattow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." +msgstr "" +"Шаблон печати внутреннего сплошного заполнения. Если включена функция " +"«Обнаруживать узкую область сплошного заполнения», то для небольшой области " +"будет использоваться концентрический шаблон заполнения." -msgid "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для внешнего периметра. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of outer wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии для внешнего периметра. Если задано в процентах, то " +"значение вычисляться относительно диаметра сопла." -msgid "Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality." -msgstr "Скорость печати внешнего периметра (видимого). Для улучшения качества, эту скорость делают ниже скорости внутренних периметров." +msgid "" +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." +msgstr "" +"Скорость печати внешнего периметра (видимого). Для улучшения качества, эту " +"скорость делают ниже скорости внутренних периметров." msgid "Small perimeters" msgstr "Маленькие периметры" -msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." -msgstr "Этот параметр влияет на скорость печати периметров, имеющих радиус <= значению порога маленьких периметров (обычно это отверстия). Если задано в процентах, параметр вычисляется относительно скорости печати внешнего периметра указанного выше. Установите 0 для автонастройки." +msgid "" +"This separate setting will affect the speed of perimeters having radius <= " +"small_perimeter_threshold (usually holes). If expressed as percentage (for " +"example: 80%) it will be calculated on the outer wall speed setting above. " +"Set to zero for auto." +msgstr "" +"Этот параметр влияет на скорость печати периметров, имеющих радиус <= " +"значению порога маленьких периметров (обычно это отверстия). Если задано в " +"процентах, параметр вычисляется относительно скорости печати внешнего " +"периметра указанного выше. Установите 0 для автонастройки." msgid "Small perimeters threshold" msgstr "Порог маленьких периметров" -msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "Пороговое значение длины маленьких периметров. Значение по умолчанию - 0 мм." +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "" +"Пороговое значение длины маленьких периметров. Значение по умолчанию - 0 мм." -msgid "Order of inner wall/outer wall/infil" -msgstr "Порядок печати периметров/заполнения" +msgid "Order of walls" +msgstr "" -msgid "Print sequence of inner wall, outer wall and infill. " -msgstr "Последовательность печати внутреннего/внешнего периметров и заполнения. " +msgid "Print sequence of inner wall and outer wall. " +msgstr "" -msgid "inner/outer/infill" -msgstr "внутренний/внешний/заполнение" +msgid "inner/outer" +msgstr "" -msgid "outer/inner/infill" -msgstr "внешний/внутренний/заполнение" +msgid "outer/inner" +msgstr "" -msgid "infill/inner/outer" -msgstr "заполнение/внутренний/внешний" +msgid "inner wall/outer wall/inner wall" +msgstr "" -msgid "infill/outer/inner" -msgstr "заполнение/внешний/внутренний" +msgid "Print infill first" +msgstr "" -msgid "inner-outer-inner/infill" -msgstr "внутренний-внешний-внутренний/заполнение" +msgid "Order of wall/infill. false means print wall first. " +msgstr "" msgid "Height to rod" msgstr "Высота до вала" -msgid "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing." -msgstr "Расстояние от кончика сопла до нижнего вала. Значение важно при печати моделей «По очереди» для предотвращения столкновений." +msgid "" +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." +msgstr "" +"Расстояние от кончика сопла до нижнего вала. Значение важно при печати " +"моделей «По очереди» для предотвращения столкновений." msgid "Height to lid" msgstr "Высота до крышки" -msgid "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." -msgstr "Расстояние от кончика сопла до крышки. Значение важно при печати моделей «По очереди» для предотвращения столкновений." +msgid "" +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." +msgstr "" +"Расстояние от кончика сопла до крышки. Значение важно при печати моделей «По " +"очереди» для предотвращения столкновений." -msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." -msgstr "Безопасное расстояние вокруг экструдера. Используется для предотвращения столкновений при печати отдельно стоящих моделей." +msgid "" +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." +msgstr "" +"Безопасное расстояние вокруг экструдера. Используется для предотвращения " +"столкновений при печати отдельно стоящих моделей." msgid "Extruder Color" msgstr "Цвет экструдера" msgid "Only used as a visual help on UI" -msgstr "Используется только в качестве визуальной помощи в пользовательском интерфейсе" +msgstr "" +"Используется только в качестве визуальной помощи в пользовательском " +"интерфейсе" msgid "Extruder offset" msgstr "Смещение экструдера по осям X/Y" @@ -7033,37 +8633,64 @@ msgstr "Смещение экструдера по осям X/Y" msgid "Flow ratio" msgstr "Коэффициент потока" -msgid "The material may have volumetric change after switching between molten state and crystalline state. This setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" msgstr "" -"Коэффициент пропорционального изменения величины потока подаваемого пластика. Рекомендуемый диапазон значений от 0,95 до 1,05.\n" -"При небольшом переливе или недоливе на поверхности, корректировка этого параметра поможет получить хорошую гладкую поверхность." +"Коэффициент пропорционального изменения величины потока подаваемого " +"пластика. Рекомендуемый диапазон значений от 0,95 до 1,05.\n" +"При небольшом переливе или недоливе на поверхности, корректировка этого " +"параметра поможет получить хорошую гладкую поверхность." msgid "Enable pressure advance" msgstr "Включить Pressure advance" -msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." -msgstr "Включить Pressure advance (Прогнозирование давления). Результат автокалибровки будет перезаписан после включения." +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." +msgstr "" +"Включить Pressure advance (Прогнозирование давления). Результат " +"автокалибровки будет перезаписан после включения." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и тоже что Linear advance в прошивке Marlin." +msgstr "" +"Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и " +"тоже что Linear advance в прошивке Marlin." -msgid "Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии по умолчанию, если какие-либо из значений ширины экструзии установлены равные нулю. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." +msgstr "" +"Ширина экструзии по умолчанию, если какие-либо из значений ширины экструзии " +"установлены равные нулю. Если задано в процентах, то значение вычисляться " +"относительно диаметра сопла." msgid "Keep fan always on" msgstr "Вентилятор включён всегда" -msgid "If enable this setting, part cooling fan will never be stoped and will run at least at minimum speed to reduce the frequency of starting and stoping" -msgstr "Если включено, вентилятор охлаждения модели никогда не будет останавливаться и будет работать на минимальной скорости, чтобы сократить частоту его запуска и остановки." +msgid "" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "" +"Если включено, вентилятор охлаждения модели никогда не будет останавливаться " +"и будет работать на минимальной скорости, чтобы сократить частоту его " +"запуска и остановки." msgid "Layer time" msgstr "Время слоя" -msgid "Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time" -msgstr "Вентилятор охлаждения моделей будет включён для слоёв, расчётное время которых меньше этого значения. Скорость вентилятора интерполируется между минимальной и максимальной скоростями вентилятора зависимости от времени печати слоя." - -msgid "s" -msgstr "с" +msgid "" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" +msgstr "" +"Вентилятор охлаждения моделей будет включён для слоёв, расчётное время " +"которых меньше этого значения. Скорость вентилятора интерполируется между " +"минимальной и максимальной скоростями вентилятора зависимости от времени " +"печати слоя." msgid "Default color" msgstr "Цвет по умолчанию" @@ -7071,9 +8698,6 @@ msgstr "Цвет по умолчанию" msgid "Default filament color" msgstr "Цвет пластиковой нити по умолчанию" -msgid "Color" -msgstr "Цвет" - msgid "Filament notes" msgstr "Примечание о прутке" @@ -7083,45 +8707,201 @@ msgstr "Здесь вы можете написать свои замечани msgid "Required nozzle HRC" msgstr "Необходимая твёрдость сопла" -msgid "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC." -msgstr "Минимальная твёрдость материала сопла (HRC), необходимая для печати пластиковой нитью. 0 - отключение контроля сопел на твёрдость." +msgid "" +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." +msgstr "" +"Минимальная твёрдость материала сопла (HRC), необходимая для печати " +"пластиковой нитью. 0 - отключение контроля сопел на твёрдость." -msgid "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be zero" -msgstr "Этот параметр определяет, какой объём материала может быть расплавлен и выдавлен в секунду. Скорость печати ограничена максимальной объёмной скоростью в случае слишком высокой и необоснованной установки скорости. Параметр не может быть нулевым." +msgid "" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" +msgstr "" +"Этот параметр определяет, какой объём материала может быть расплавлен и " +"выдавлен в секунду. Скорость печати ограничена максимальной объёмной " +"скоростью в случае слишком высокой и необоснованной установки скорости. " +"Параметр не может быть нулевым." msgid "mm³/s" msgstr "мм³/с" -msgid "Minimal purge on wipe tower" -msgstr "Мин. объём сброса на черновой башне" - -msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "После смены инструмента, точное положение вновь загруженного прутка внутри него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» модель Slic3r всегда будет выдавливать это количество материала на черновую башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." - msgid "Filament load time" msgstr "Время загрузки прутка" msgid "Time to load new filament when switch filament. For statistics only" -msgstr "Время загрузки новой пластиковой нити при её смене. Только для статистики." +msgstr "" +"Время загрузки новой пластиковой нити при её смене. Только для статистики." msgid "Filament unload time" msgstr "Время выгрузки прутка" msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "Время выгрузки старой пластиковой нити при её смене. Только для статистики." +msgstr "" +"Время выгрузки старой пластиковой нити при её смене. Только для статистики." -msgid "Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate" -msgstr "Диаметр пластиковой нити используется для расчёта экструзии, поэтому он важен и должен быть точным" +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Диаметр пластиковой нити используется для расчёта экструзии, поэтому он " +"важен и должен быть точным" msgid "Shrinkage" msgstr "Усадка материала" +#, fuzzy, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done after the checks." +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." msgstr "" -"Введите процент усадки пластиковой нити, которую получит она после охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для компенсации усадки деталь будет отмасштабированна по оси XY. При этом учитывается только пластиковая нить, используемая для печати внешнего периметра.\n" -"Убедитесь, что между моделями достаточно места, так как эта компенсация выполняется после проверок." +"Введите процент усадки пластиковой нити, которую получит она после " +"охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для " +"компенсации усадки деталь будет отмасштабированна по оси XY. При этом " +"учитывается только пластиковая нить, используемая для печати внешнего " +"периметра.\n" +"Убедитесь, что между моделями достаточно места, так как эта компенсация " +"выполняется после проверок." + +msgid "Loading speed" +msgstr "Скорость загрузки" + +msgid "Speed used for loading the filament on the wipe tower." +msgstr "Скорость загрузки прутка при печати черновой башни." + +msgid "Loading speed at the start" +msgstr "Начальная скорость загрузки" + +msgid "Speed used at the very beginning of loading phase." +msgstr "Скорость в начальной фазе загрузки прутка." + +msgid "Unloading speed" +msgstr "Скорость выгрузки" + +msgid "" +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." +msgstr "" +"Скорость выгрузки прутка на черновую башню. (не влияет на начальную фазу " +"выгрузки сразу после рэмминга)." + +msgid "Unloading speed at the start" +msgstr "Начальная скорость выгрузки" + +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Скорость выгрузки кончика прутка сразу после рэмминга." + +msgid "Delay after unloading" +msgstr "Задержка после выгрузки" + +msgid "" +"Time to wait after the filament is unloaded. May help to get reliable " +"toolchanges with flexible materials that may need more time to shrink to " +"original dimensions." +msgstr "" +"Время ожидания после выгрузки прутка. Это может помочь вам легко сменить " +"сопло при печати гибкими материалами, которым требуется больше времени, " +"чтобы вернуться к своим первоначальным размерам." + +msgid "Number of cooling moves" +msgstr "Количество охлаждающих движений" + +msgid "" +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." +msgstr "" +"Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. " +"Укажите желаемое количество таких движений." + +msgid "Speed of the first cooling move" +msgstr "Скорость первого охлаждающего движения" + +msgid "Cooling moves are gradually accelerating beginning at this speed." +msgstr "Охлаждающие движения постепенно ускоряются, начиная с этой скорости." + +msgid "Minimal purge on wipe tower" +msgstr "Мин. объём сброса на черновой башне" + +msgid "" +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Slic3r will always prime this amount of material into the wipe tower " +"to produce successive infill or sacrificial object extrusions reliably." +msgstr "" +"После смены инструмента, точное положение вновь загруженного прутка внутри " +"него может быть неизвестно, и давление прутка, вероятно, ещё не стабильно. " +"Перед тем, как очистить печатающую головку в заполнение или в «жертвенную» " +"модель Slic3r всегда будет выдавливать это количество материала на черновую " +"башню, чтобы обеспечить надёжную печать заполнения или «жертвенной» модели." + +msgid "Speed of the last cooling move" +msgstr "Скорость последнего охлаждающего движения" + +msgid "Cooling moves are gradually accelerating towards this speed." +msgstr "Охлаждающие движения постепенно ускоряют до этой скорости." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " +"пруток во время смены инструмента (при выполнении кода Т). Это время " +"добавляется к общему времени печати с помощью алгоритма оценки времени " +"выполнения G-кода." + +msgid "Ramming parameters" +msgstr "Параметры рэмминга" + +msgid "" +"This string is edited by RammingDialog and contains ramming specific " +"parameters." +msgstr "" +"Эта строка редактируется диалоговым окном рэмминга и содержит его конкретные " +"параметры." + +msgid "" +"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " +"filament during a tool change (when executing the T code). This time is " +"added to the total print time by the G-code time estimator." +msgstr "" +"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " +"пруток во время смены инструмента (при выполнении кода Т). Это время " +"добавляется к общему времени печати с помощью алгоритма оценки времени " +"выполнения G-кода." + +msgid "Enable ramming for multitool setups" +msgstr "Включить рэмминг для мультиинструментальных устройств" + +msgid "" +"Perform ramming when using multitool printer (i.e. when the 'Single Extruder " +"Multimaterial' in Printer Settings is unchecked). When checked, a small " +"amount of filament is rapidly extruded on the wipe tower just before the " +"toolchange. This option is only used when the wipe tower is enabled." +msgstr "" +"Выполнять рэмминг при использовании мультиинструментального принтера (т. е. " +"когда в настройках принтера снят флажок «Мультиматериальный одиночный " +"экструдер»). При включении этой опции, небольшое количество материала быстро " +"выдавливается на черновую башню непосредственно перед сменой инструмента. " +"Эта опция используется только в том случае, если включена черновая башня." + +msgid "Multitool ramming volume" +msgstr "Объём рэмминга мультиинструмента" + +msgid "The volume to be rammed before the toolchange." +msgstr "Объём рэмминга перед сменой инструмента." + +msgid "Multitool ramming flow" +msgstr "Поток рэмминга мультиинструмента" + +msgid "Flow used for ramming the filament before the toolchange." +msgstr "Поток рэмминга пластиковой нити перед сменой инструмента." msgid "Density" msgstr "Плотность" @@ -7138,20 +8918,32 @@ msgstr "Тип материала пластиковой нити." msgid "Soluble material" msgstr "Растворимый материал" -msgid "Soluble material is commonly used to print support and support interface" -msgstr "Растворимый материал обычно используется для печати поддержки и связующего слоя поддержки." +msgid "" +"Soluble material is commonly used to print support and support interface" +msgstr "" +"Растворимый материал обычно используется для печати поддержки и связующего " +"слоя поддержки." msgid "Support material" msgstr "Поддержка" -msgid "Support material is commonly used to print support and support interface" -msgstr "«Материал для поддержки» обычно используется для печати поддержки и связующего слоя поддержки." +msgid "" +"Support material is commonly used to print support and support interface" +msgstr "" +"«Материал для поддержки» обычно используется для печати поддержки и " +"связующего слоя поддержки." -msgid "Temperature of vitrificaiton" -msgstr "Температура стеклования" +msgid "Softening temperature" +msgstr "Температура размягчения" -msgid "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this tempature" -msgstr "При этой температуре материал становится мягким. Таким образом, подогреваемый стол не может быть горячее этой температуры." +msgid "" +"The material softens at this temperature, so when the bed temperature is " +"equal to or greater than it, it's highly recommended to open the front door " +"and/or remove the upper glass to avoid cloggings." +msgstr "" +"При этой температуре материал размягчается, поэтому, когда температура стола " +"равна или превышает её, настоятельно рекомендуется открыть переднюю дверцу и/" +"или верхнюю крышку принтера, чтобы избежать засорения сопла." msgid "Price" msgstr "Стоимость" @@ -7174,14 +8966,21 @@ msgstr "(Не указано)" msgid "Infill direction" msgstr "Угол печати заполнения" -msgid "Angle for sparse infill pattern, which controls the start or main direction of line" -msgstr "Базовый угол для ориентации шаблона заполнения, который определяет начало или основное направление линий." +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Базовый угол для ориентации шаблона заполнения, который определяет начало " +"или основное направление линий." msgid "Sparse infill density" msgstr "Плотность заполнения" -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Плотность внутреннего заполнения, выраженная в процентах. 100% означает сплошное заполнение." +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "Шаблон заполнения" @@ -7223,13 +9022,27 @@ msgid "Sparse infill anchor length" msgstr "Длина привязок разреженного заполнения" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one " -"side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a single infill line." +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." msgstr "" -"Соединять линию заполнения с внутренним периметром с помощью короткого отрезка дополнительного периметра (привязок). Если выражено в процентах, то она вычисляется по ширине экструзии заполнения. Программа пытается соединить две ближайшие линии заполнения с коротким отрезком периметра. Если не найдено такого отрезка периметра короче «Максимальной длины привязок разреженного " -"заполнения» (anchor_length_max), то линия заполнения соединяется с отрезком периметра только с одной стороны, а длина отрезка периметра ограничена этим параметром, но не больше «Максимальной длины привязок разреженного заполнения» (anchor_length_max). \n" -"Установите этот параметр равным нулю для отключения привязок периметров, соединённых с одной линии заполнения." +"Соединять линию заполнения с внутренним периметром с помощью короткого " +"отрезка дополнительного периметра (привязок). Если выражено в процентах, то " +"она вычисляется по ширине экструзии заполнения. Программа пытается соединить " +"две ближайшие линии заполнения с коротким отрезком периметра. Если не " +"найдено такого отрезка периметра короче «Максимальной длины привязок " +"разреженного заполнения» (anchor_length_max), то линия заполнения " +"соединяется с отрезком периметра только с одной стороны, а длина отрезка " +"периметра ограничена этим параметром, но не больше «Максимальной длины " +"привязок разреженного заполнения» (anchor_length_max). \n" +"Установите этот параметр равным нулю для отключения привязок периметров, " +"соединённых с одной линии заполнения." msgid "0 (no open anchors)" msgstr "0 (нет открытых привязок)" @@ -7241,13 +9054,26 @@ msgid "Maximum length of the infill anchor" msgstr "Максимальная длина привязок разреженного заполнения" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " -"and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0." +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." msgstr "" -"Соединять линию заполнения с внутренним периметром с помощью короткого отрезка дополнительного периметра (привязок). Если выражено в процентах, то она вычисляется по ширине экструзии заполнения. Slic3r пытается соединить две ближайшие линии заполнения с коротким отрезком периметра. Если не найдено такого отрезка периметра короче этого параметра, линия заполнения соединяется с отрезком периметра " -"только с одной стороны, а длина отрезка периметра ограничена значением «Длина привязок разреженного заполнения» (infill_anchor), но не больше этого параметра. \n" -"Если установить 0, то будет использоваться старый алгоритм для соединения заполнения, который даёт такой же результат, как и при значениях 1000 и 0." +"Соединять линию заполнения с внутренним периметром с помощью короткого " +"отрезка дополнительного периметра (привязок). Если выражено в процентах, то " +"она вычисляется по ширине экструзии заполнения. Slic3r пытается соединить " +"две ближайшие линии заполнения с коротким отрезком периметра. Если не " +"найдено такого отрезка периметра короче этого параметра, линия заполнения " +"соединяется с отрезком периметра только с одной стороны, а длина отрезка " +"периметра ограничена значением «Длина привязок разреженного " +"заполнения» (infill_anchor), но не больше этого параметра. \n" +"Если установить 0, то будет использоваться старый алгоритм для соединения " +"заполнения, который даёт такой же результат, как и при значениях 1000 и 0." msgid "0 (Simple connect)" msgstr "0 (без привязок)" @@ -7261,38 +9087,67 @@ msgstr "Ускорение на внутренних периметрах." msgid "Acceleration of travel moves" msgstr "Ускорение холостого перемещения." -msgid "Acceleration of top surface infill. Using a lower value may improve top surface quality" -msgstr "Ускорение на верхней поверхности. Использование меньшего значения может улучшить качество верхней поверхности." +msgid "" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" +msgstr "" +"Ускорение на верхней поверхности. Использование меньшего значения может " +"улучшить качество верхней поверхности." msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "Ускорение на внешнем периметре. Использование более низкого значения может улучшить качество." +msgstr "" +"Ускорение на внешнем периметре. Использование более низкого значения может " +"улучшить качество." -msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration." -msgstr "Ускорение на мостах. Если задано в процентах, то значение вычисляться относительно ускорения внешнего периметра." +msgid "" +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." +msgstr "" +"Ускорение на мостах. Если задано в процентах, то значение вычисляться " +"относительно ускорения внешнего периметра." msgid "mm/s² or %" msgstr "мм/с² или %" -msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." -msgstr "Ускорение на разреженном заполнении. Если задано в процентах, то значение вычисляться относительно ускорения по умолчанию." +msgid "" +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." +msgstr "" +"Ускорение на разреженном заполнении. Если задано в процентах, то значение " +"вычисляться относительно ускорения по умолчанию." -msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." -msgstr "Ускорение на внутреннем сплошном заполнении. Если задано в процентах, то значение вычисляться относительно ускорения по умолчанию." +msgid "" +"Acceleration of internal solid infill. If the value is expressed as a " +"percentage (e.g. 100%), it will be calculated based on the default " +"acceleration." +msgstr "" +"Ускорение на внутреннем сплошном заполнении. Если задано в процентах, то " +"значение вычисляться относительно ускорения по умолчанию." -msgid "Acceleration of initial layer. Using a lower value can improve build plate adhensive" -msgstr "Ускорение на первом слое. Использование более низкого значения может улучшить адгезию к столу." +msgid "" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhesive" +msgstr "" +"Ускорение на первом слое. Использование более низкого значения может " +"улучшить адгезию к столу." msgid "Enable accel_to_decel" msgstr "Вкл. ограничение ускорения зигзагов" msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет скорректировано автоматически." +msgstr "" +"Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет " +"скорректировано автоматически." msgid "accel_to_decel" msgstr "Ограничение ускорение зигзагов" -msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет скорректировано на заданный процент ускорения." +#, c-format, boost-format +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "" +"Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет " +"скорректировано на заданный процент ускорения." msgid "Jerk of outer walls" msgstr "Рывок для внешних периметров." @@ -7312,14 +9167,22 @@ msgstr "Рывок для первого слоя." msgid "Jerk for travel" msgstr "Рывок при перемещении." -msgid "Line width of initial layer. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для первого слоя. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"Ширина экструзии для первого слоя. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Initial layer height" msgstr "Высота первого слоя" -msgid "Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhension" -msgstr "Высота первого слоя. Незначительное увеличение толщины первого слоя может улучшить сцепление со столом." +msgid "" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhension" +msgstr "" +"Высота первого слоя. Незначительное увеличение толщины первого слоя может " +"улучшить сцепление со столом." msgid "Speed of initial layer except the solid infill part" msgstr "Скорость печати первого слоя, кроме сплошного заполнения." @@ -7339,35 +9202,59 @@ msgstr "Скорость перемещения на первом слое." msgid "Number of slow layers" msgstr "Количество медленных слоёв" -msgid "The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers." -msgstr "Первые несколько слоёв печатаются медленнее, чем обычно. Скорость постепенно линейно увеличивается в течение заданного количества слоёв." +msgid "" +"The first few layers are printed slower than normal. The speed is gradually " +"increased in a linear fashion over the specified number of layers." +msgstr "" +"Первые несколько слоёв печатаются медленнее, чем обычно. Скорость постепенно " +"линейно увеличивается в течение заданного количества слоёв." msgid "Initial layer nozzle temperature" msgstr "Температура сопла на первом слое" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Температура сопла для печати первого слоя при использовании данной пластиковой нити." +msgstr "" +"Температура сопла для печати первого слоя при использовании данной " +"пластиковой нити." msgid "Full fan speed at layer" msgstr "Полная скорость вентилятора на слое" -msgid "Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." -msgstr "Скорость вентилятора будет нарастать линейно от нуля на слое \"close_fan_the_first_x_layers\" до максимума на слое \"full_fan_speed_layer\". Значение \"full_fan_speed_layer\" будет игнорироваться, если оно меньше значения \"close_fan_the_first_x_layers\", в этом случае вентилятор будет работать на максимально допустимой скорости на слое \"close_fan_the_first_x_layers\" + 1." +msgid "" +"Fan speed will be ramped up linearly from zero at layer " +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +msgstr "" +"Скорость вентилятора будет нарастать линейно от нуля на слое " +"\"close_fan_the_first_x_layers\" до максимума на слое \"full_fan_speed_layer" +"\". Значение \"full_fan_speed_layer\" будет игнорироваться, если оно меньше " +"значения \"close_fan_the_first_x_layers\", в этом случае вентилятор будет " +"работать на максимально допустимой скорости на слое " +"\"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" msgstr "Скорость вентилятора на связующем слое" msgid "" -"This fan speed is enforced during all support interfaces, to be able to weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" -"Скорость, применяемая ко всем связующим слоях, чтобы высокой скоростью вентилятора ослабить сцепление между слоями.\n" +"Скорость, применяемая ко всем связующим слоях, чтобы высокой скоростью " +"вентилятора ослабить сцепление между слоями.\n" "Установите значение -1, чтобы запретить переопределять этот параметр.\n" "Может быть отменено только командой disable_fan_first_layers." -msgid "Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position" -msgstr "Случайное дрожание сопла при печати внешнего периметра для создания эффекта шероховатой поверхности. Эта настройка определяет положение нечетной оболочки." +msgid "" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" +msgstr "" +"Случайное дрожание сопла при печати внешнего периметра для создания эффекта " +"шероховатой поверхности. Эта настройка определяет положение нечетной " +"оболочки." msgid "None" msgstr "Нет" @@ -7384,14 +9271,28 @@ msgstr "Все периметры" msgid "Fuzzy skin thickness" msgstr "Толщина нечёткой оболочки" -msgid "The width within which to jitter. It's adversed to be below outer wall line width" -msgstr "Ширина, в пределах которой будет происходить дрожание. Желательно, чтобы она была меньше ширины линии внешнего периметра." +msgid "" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" +msgstr "" +"Ширина, в пределах которой будет происходить дрожание. Желательно, чтобы она " +"была меньше ширины линии внешнего периметра." msgid "Fuzzy skin point distance" msgstr "Расстояние «дрожания» при печати нечёткой оболочки" -msgid "The average diatance between the random points introducded on each line segment" -msgstr "Среднее расстояние между случайно вставленными точками при генерации нечётной оболочки." +msgid "" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"Среднее расстояние между случайно вставленными точками при генерации " +"нечётной оболочки." + +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" msgid "Filter out tiny gaps" msgstr "Игнорировать небольшие пробелы" @@ -7399,35 +9300,52 @@ msgstr "Игнорировать небольшие пробелы" msgid "Layers and Perimeters" msgstr "Слои и периметры" -msgid "Filter out gaps smaller than the threshold specified. This setting won't affect top/bottom layers" -msgstr "Небольшие промежутки меньше указанного порога не будут заполняться. Этот параметр не влияет на верхнюю/нижнюю поверхность." +msgid "Filter out gaps smaller than the threshold specified" +msgstr "Небольшие промежутки меньше указанного порога не будут заполняться." -msgid "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" -msgstr "Скорость заполнения пробелов. Пробелы обычно имеют неравномерную ширину линии и должен печататься медленнее." +msgid "" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" +msgstr "" +"Скорость заполнения пробелов. Пробелы обычно имеют неравномерную ширину " +"линии и должен печататься медленнее." msgid "Arc fitting" msgstr "Поддержка движения по дуге окружности" -msgid "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is same with resolution" -msgstr "Включите, если хотите использовать в G-коде команды перемещения по дуге окружности G2/G3. Значение допуска траектории такое же как разрешение G-кода выше." +msgid "" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " +"tolerance is same with resolution" +msgstr "" +"Включите, если хотите использовать в G-коде команды перемещения по дуге " +"окружности G2/G3. Значение допуска траектории такое же как разрешение G-кода " +"выше." msgid "Add line number" msgstr "Добавить номер строки" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "При включении, в начало каждой строки G-кода, будет добавляться номер строки (Nx)." +msgstr "" +"При включении, в начало каждой строки G-кода, будет добавляться номер строки " +"(Nx)." msgid "Scan first layer" msgstr "Проверка первого слоя" -msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgid "" +"Enable this to enable the camera on printer to check the quality of first " +"layer" msgstr "При включении, камера принтера будет проверять качество первого слоя." msgid "Nozzle type" msgstr "Тип сопла" -msgid "The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of filament can be printed" -msgstr "Материал сопла. Определяет абразивную стойкость сопла, а также то, каким материалом можно печатать." +msgid "" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" +msgstr "" +"Материал сопла. Определяет абразивную стойкость сопла, а также то, каким " +"материалом можно печатать." msgid "Undefine" msgstr "Не задано" @@ -7444,24 +9362,68 @@ msgstr "Латунь" msgid "Nozzle HRC" msgstr "Твердость сопла (HRC)" -msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." -msgstr "Твёрдость сопел. 0 - отключение контроля сопел на твёрдость во время нарезки." +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." +msgstr "" +"Твёрдость сопел. 0 - отключение контроля сопел на твёрдость во время нарезки." msgid "HRC" msgstr "HRC" -msgid "Enable this option if machine has auxiliary part cooling fan" -msgstr "Включите, если в принтере имеет вспомогательный вентилятор для охлаждения моделей." +msgid "Printer structure" +msgstr "Кинематика принтера" + +msgid "The physical arrangement and components of a printing device" +msgstr "Конструкция физического принтера" + +msgid "CoreXY" +msgstr "CoreXY" + +msgid "I3" +msgstr "I3" + +msgid "Hbot" +msgstr "Hbot" + +msgid "Delta" +msgstr "Delta" + +msgid "Best object position" +msgstr "Наилучшее расположение модели" + +msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." +msgstr "" +"Наилучшее расположение модели при авторасстановке в диапазоне [0,1] " +"относительно формы стола." msgid "" -"Start the fan this number of seconds earlier than its target start time (you can use fractional seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting is unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start gcode' is activated.\n" +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." +msgstr "" +"Если в принтере имеет вспомогательный вентилятор для охлаждения моделей, " +"можете включить эту опцию. \n" +"G-код команда: M106 P2 S(0-255)." + +msgid "" +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " +"estimation, and will only take into account G1 and G0 moves (arc fitting is " +"unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Запуск вентилятора на указанное количество секунд раньше целевого времени запуска (поддерживаются доли секунды). При этом предполагается бесконечное ускорение для оценки этого времени, и учёт только перемещений G1 и G0 (Поддержка движения по дуге окружности не поддерживается).\n" -"Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов (они действуют как своего рода барьер).\n" -"Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если активировано «только пользовательский стартовый G-код».\n" +"Запуск вентилятора на указанное количество секунд раньше целевого времени " +"запуска (поддерживаются доли секунды). При этом предполагается бесконечное " +"ускорение для оценки этого времени, и учёт только перемещений G1 и G0 " +"(Поддержка движения по дуге окружности не поддерживается).\n" +"Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов (они " +"действуют как своего рода барьер).\n" +"Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если " +"активировано «только пользовательский стартовый G-код».\n" "Установите 0 для отключения." msgid "Only overhangs" @@ -7474,13 +9436,50 @@ msgid "Fan kick-start time" msgstr "Продолжительность принудительного запуска вентилятора" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" -"Время принудительного запуска (kick-start) вентилятора на максимальной скорости, после чего скорость снижается до целевой. Это необходимо для вентиляторов у которых низкое значение уровня ШИМ/мощности может быть недостаточен для запуска вентилятора после остановки или для более быстрого увеличения скорости его вращения.\n" +"Время принудительного запуска (kick-start) вентилятора на максимальной " +"скорости, после чего скорость снижается до целевой. Это необходимо для " +"вентиляторов у которых низкое значение уровня ШИМ/мощности может быть " +"недостаточен для запуска вентилятора после остановки или для более быстрого " +"увеличения скорости его вращения.\n" "Установите 0 для отключения." +msgid "Time cost" +msgstr "Цена печати" + +msgid "The printer cost per hour" +msgstr "Стоимость печати в час." + +msgid "money/h" +msgstr "цена/ч" + +msgid "Support control chamber temperature" +msgstr "Контроль температуры в термокамере" + +msgid "" +"This option is enabled if machine support controlling chamber temperature\n" +"G-code command: M141 S(0-255)" +msgstr "" +"Если принтер поддерживает контроль температуры в камере, включите эту " +"опцию.\n" +"G-код команда: M141 S(0-255)" + +msgid "Support air filtration" +msgstr "Фильтрация выдуваемого воздуха" + +msgid "" +"Enable this if printer support air filtration\n" +"G-code command: M106 P3 S(0-255)" +msgstr "" +"Если принтер поддерживает фильтрацию выдуваемого воздуха, включите эту " +"опцию. \n" +"G-код команда: M106 P3 S(0-255)" + msgid "G-code flavor" msgstr "Тип G-кода" @@ -7493,40 +9492,67 @@ msgstr "Klipper" msgid "Label objects" msgstr "Название моделей" -msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." -msgstr "Включите эту опцию, чтобы добавить комментарии в G-код с указанием того, к какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. Эта настройка не совместима с настройкой «Мультиматериальный одиночный экструдер» и «Очистка в модель» / «Очистка в заполнение модели»." +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" +"Включите эту опцию, чтобы добавить комментарии в G-код с указанием того, к " +"какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. " +"Эта настройка не совместима с настройкой «Мультиматериальный одиночный " +"экструдер» и «Очистка в модель» / «Очистка в заполнение модели»." msgid "Exclude objects" msgstr "Исключить модели" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения моделей) в G-код." +msgstr "" +"Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения " +"моделей) в G-код." msgid "Verbose G-code" msgstr "Подробный G-код" -msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." -msgstr "Включите эту опцию, чтобы в каждой строке файла G-кода, присутствовал комментарий с поясняющим текстом. При печати с SD-карты, скорость чтение данных вашей прошивкой может снизится за счёт увеличения размера файла." +msgid "" +"Enable this to get a commented G-code file, with each line explained by a " +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." +msgstr "" +"Включите эту опцию, чтобы в каждой строке файла G-кода, присутствовал " +"комментарий с поясняющим текстом. При печати с SD-карты, скорость чтение " +"данных вашей прошивкой может снизится за счёт увеличения размера файла." msgid "Infill combination" msgstr "Комбинированное заполнение" -msgid "Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height." +msgid "" +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." msgstr "" -"Для сокращения времени печати есть возможность печатать заполнение не на каждом слое, а на двух слоях сразу. \n" +"Для сокращения времени печати есть возможность печатать заполнение не на " +"каждом слое, а на двух слоях сразу. \n" "Периметры по-прежнему печатаются с исходной высотой слоя." msgid "Filament to print internal sparse infill." msgstr "Пластиковая нить для печати заполнения." -msgid "Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для заполнения. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"Ширина экструзии для заполнения. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Infill/Wall overlap" msgstr "Перекрытие линий заполнения с линиями периметра" -msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill" -msgstr "Параметр указывает на сколько процентов заполнение будет перекрываться с периметром для лучшего соединения друг с другом." +msgid "" +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill" +msgstr "" +"Параметр указывает на сколько процентов заполнение будет перекрываться с " +"периметром для лучшего соединения друг с другом." msgid "Speed of internal sparse infill" msgstr "Скорость заполнения" @@ -7534,14 +9560,38 @@ msgstr "Скорость заполнения" msgid "Interface shells" msgstr "Связующие оболочки" -msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material" -msgstr "Принудительное создание замкнутых (сплошных) оболочек между смежными материалами/объёмами. Полезно для многоэкструдерных принтеров при печати полупрозрачными материалами или растворимой поддержкой. Помогает избежать диффузию материалов." +msgid "" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" +msgstr "" +"Принудительное создание замкнутых (сплошных) оболочек между смежными " +"материалами/объёмами. Полезно для многоэкструдерных принтеров при печати " +"полупрозрачными материалами или растворимой поддержкой. Помогает избежать " +"диффузию материалов." + +msgid "Maximum width of a segmented region" +msgstr "" + +msgid "Maximum width of a segmented region. Zero disables this feature." +msgstr "" + +msgid "Interlocking depth of a segmented region" +msgstr "" + +msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgstr "" msgid "Ironing Type" msgstr "Тип разглаживания" -msgid "Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed" -msgstr "При разглаживании сопло выполняет вторую фазу заполнения на том же слое (с небольшим потоком), чтобы заполнить отверстия и сгладить выступающие части пластика. Этот параметр контролирует, какой слой необходимо сгладить." +msgid "" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" +msgstr "" +"При разглаживании сопло выполняет вторую фазу заполнения на том же слое (с " +"небольшим потоком), чтобы заполнить отверстия и сгладить выступающие части " +"пластика. Этот параметр контролирует, какой слой необходимо сгладить." msgid "No ironing" msgstr "Без разглаживания" @@ -7558,11 +9608,18 @@ msgstr "Все сплошные поверхности" msgid "Ironing Pattern" msgstr "Шаблон разглаживания" +msgid "The pattern that will be used when ironing" +msgstr "Шаблон по которому будет производиться разглаживание." + msgid "Ironing flow" msgstr "Поток" -msgid "The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface" -msgstr "Количество материала, которое необходимо выдавить во время разглаживания относительно потока при нормальной высоте слоя." +msgid "" +"The amount of material to extrude during ironing. Relative to flow of normal " +"layer height. Too high value results in overextrusion on the surface" +msgstr "" +"Количество материала, которое необходимо выдавить во время разглаживания " +"относительно потока при нормальной высоте слоя." msgid "Ironing line spacing" msgstr "Расстояние между линиями разглаживания" @@ -7576,17 +9633,36 @@ msgstr "Скорость разглаживания" msgid "Print speed of ironing lines" msgstr "Скорость разглаживания" +msgid "Ironing angle" +msgstr "Угол разглаживания" + +msgid "" +"The angle ironing is done at. A negative number disables this function and " +"uses the default method." +msgstr "" +"Выбор угла разглаживания. Отрицательное число отключает эту функцию и " +"использует метод по умолчанию." + msgid "This gcode part is inserted at every layer change after lift z" -msgstr "Этот G-код вставляется при каждой смене слоя, сразу после перемещения оси Z." +msgstr "" +"Этот G-код вставляется при каждой смене слоя, сразу после перемещения оси Z." msgid "Supports silent mode" msgstr "Поддержка тихого режима" -msgid "Whether the machine supports silent mode in which machine use lower acceleration to print" -msgstr "Поддержка тихого режима, в котором принтер использует меньшее ускорение печати для уменьшения уровня шума." +msgid "" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" +msgstr "" +"Поддержка тихого режима, в котором принтер использует меньшее ускорение " +"печати для уменьшения уровня шума." -msgid "This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer" -msgstr "Этот G-код используется для задания паузы печати. Пользователь может вставить G-код паузы в просмотрщике G-кода." +msgid "" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" +msgstr "" +"Этот G-код используется для задания паузы печати. Пользователь может " +"вставить G-код паузы в просмотрщике G-кода." msgid "This G-code will be used as a custom code" msgstr "Этот G-код используется для пользовательского кода." @@ -7694,40 +9770,155 @@ msgid "Maximum acceleration for travel" msgstr "Максимальное ускорение при перемещении" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "Максимальное ускорение при перемещении (M204 T), применяемое только для Marlin 2" +msgstr "" +"Максимальное ускорение при перемещении (M204 T), применяемое только для " +"Marlin 2" -msgid "Maximum acceleration for travel (M204 T)" -msgstr "Максимальное ускорение при перемещении (M204 T)" - -msgid "Fan speed" -msgstr "Скорость вентилятора" - -msgid "Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed limitation of part cooling fan" -msgstr "Скорость вентилятора охлаждения моделей может быть увеличена, если включено автоматическое охлаждение. Это максимальное ограничение скорости вентилятора для охлаждения моделей." +msgid "" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" +msgstr "" +"Скорость вентилятора охлаждения моделей может быть увеличена, если включено " +"автоматическое охлаждение. Это максимальное ограничение скорости вентилятора " +"для охлаждения моделей." msgid "Max" msgstr "Макс." -msgid "The largest printable layer height for extruder. Used tp limits the maximum layer hight when enable adaptive layer height" -msgstr "Это наибольшая высота печатаемого слоя для этого экструдера, которая используется для ограничения функции «Переменная высота слоёв»." +msgid "" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" +msgstr "" +"Это наибольшая высота печатаемого слоя для этого экструдера, которая " +"используется для ограничения функции «Переменная высота слоёв»." + +# ??? +msgid "Extrusion rate smoothing" +msgstr "Сглаживание скорости экструзии" + +msgid "" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" +"\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" +"\n" +"A value of 0 disables the feature. \n" +"\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" +"\n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" +"\n" +"This feature is known as Pressure Equalizer in Prusa slicer.\n" +"\n" +"Note: this parameter disables arc fitting." +msgstr "" +"Этот параметр сглаживает резкие изменения скорости экструзии, которые " +"происходят, когда принтер переходит от печати с большим расходом (высокая " +"скорость/большая ширина) к печати с меньшим расходом (меньшая скорость/" +"меньшая ширина) и наоборот.\n" +"\n" +"Параметр задаёт максимальную скорость, с которой объёмный расход " +"экструдируемого материала может изменяться с течением времени (мм³/с). Более " +"высокие значения означают, что допускаются более высокие изменения скорости " +"экструзии, что приводит к более быстрому переключению скоростей.\n" +"\n" +"Значение 0 отключает эту функцию. \n" +"\n" +"Для высокоскоростных принтеров с прямым приводом (например, Bambu lab или " +"Voron) обычно не требуется использование данного значения. Однако в " +"некоторых случаях, когда скорость печати сильно различается, это может " +"принести некоторую дополнительную пользу. Например, когда происходят резкие " +"замедления из-за нависаний. В этих случаях рекомендуется использовать " +"высокое значение, составляющее около 300-350 мм³/с², так как это " +"обеспечивает достаточное сглаживание, помогающее прогнозированию давления " +"достичь более плавного перехода потока.\n" +"\n" +"Для более медленных принтеров, не использующих прогнозирование давления " +"(pressure advance), это значение должно быть значительно ниже. Значение " +"10-15 мм³/с² является хорошей отправной точкой для экструдеров с прямым " +"приводом и 5-10 мм³/с² для боуден экструдеров.\n" +"\n" +"В Prusa Slicer эта функция известна как «Выравнивание давления» (Pressure " +"equalizer).\n" +"\n" +"Примечание: этот параметр отключает поддержку движения по дуге окружности." + +msgid "mm³/s²" +msgstr "мм³/с²" + +msgid "Smoothing segment length" +msgstr "Длина сглаживающего сегмента" + +msgid "" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" +"\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" +"\n" +"Allowed values: 1-5" +msgstr "" +"Меньшее значение приводит к более плавному изменению скорости экструзии. " +"Однако это приводит к значительному увеличению размера G-код файла и " +"увеличению количества инструкций для обработки принтером. \n" +"\n" +"Значение по умолчанию, равное 3, хорошо подходит для большинства случаев. " +"Если принтер печатает с мини-фризами, увеличьте это значение, чтобы " +"уменьшить количество выполняемых изменений.\n" +"\n" +"Допустимые значения: 1–5." msgid "Minimum speed for part cooling fan" msgstr "Минимальная скорость вентилятора обдува модели." -msgid "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers" -msgstr "Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он всегда будет работать с этой скоростью, за исключением первых нескольких слоёв, которые обычно настроены на работу без охлаждения." +msgid "" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +"during printing except the first several layers which is defined by no " +"cooling layers.\n" +"Please enable auxiliary_fan in printer settings to use this feature. G-code " +"command: M106 P2 S(0-255)" +msgstr "" +"Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он " +"всегда будет работать с этой скоростью, за исключением первых нескольких " +"слоёв, которые обычно настроены на работу без охлаждения.\n" +"Пожалуйста, включите вспомогательный вентилятор для охлаждения моделей " +"(auxiliary_fan) в настройках принтера, чтобы использовать эту функцию. \n" +"G-код команда: M106 P2 S(0-255)." msgid "Min" msgstr "Мин." -msgid "The lowest printable layer height for extruder. Used tp limits the minimum layer hight when enable adaptive layer height" -msgstr "Это наименьшая высота печатаемого слоя для данного экструдера и в то же время нижний предел для функции «Переменная высота слоёв»." +msgid "" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" +msgstr "" +"Это наименьшая высота печатаемого слоя для данного экструдера и в то же " +"время нижний предел для функции «Переменная высота слоёв»." msgid "Min print speed" msgstr "Минимальная скорость печати" -msgid "The minimum printing speed when slow down for cooling" -msgstr "Минимальная скорость печати при которой происходит сброс скорости для лучшего охлаждения." +msgid "" +"The minimum printing speed for the filament when slow down for better layer " +"cooling is enabled, when printing overhangs and when feature speeds are not " +"specified explicitly." +msgstr "" +"Минимальная скорость печати для текущего прутка при включенной функции " +"«Замедлять печать для лучшего охлаждения слоёв» при печати нависаний и когда " +"скорости элементов явно не задана." msgid "Nozzle diameter" msgstr "Диаметр сопла" @@ -7738,14 +9929,22 @@ msgstr "Диаметр сопла" msgid "Configuration notes" msgstr "Примечание конфигурации" -msgid "You can put here your personal notes. This text will be added to the G-code header comments." -msgstr "Здесь вы можете написать свои замечания для текущего профиля. Этот текст будет добавлен к комментариям в заголовок G-кода." +msgid "" +"You can put here your personal notes. This text will be added to the G-code " +"header comments." +msgstr "" +"Здесь вы можете написать свои замечания для текущего профиля. Этот текст " +"будет добавлен к комментариям в заголовок G-кода." msgid "Host Type" msgstr "Тип хоста" -msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." -msgstr "Slic3r может загружать файл G-кода на хост принтера. Это поле должно содержать тип хоста." +msgid "" +"Slic3r can upload G-code files to a printer host. This field must contain " +"the kind of the host." +msgstr "" +"Slic3r может загружать файл G-кода на хост принтера. Это поле должно " +"содержать тип хоста." msgid "Nozzle volume" msgstr "Объём сопла" @@ -7753,6 +9952,57 @@ msgstr "Объём сопла" msgid "Volume of nozzle between the cutter and the end of nozzle" msgstr "Объём сопла между резцом прутка и кончиком сопла." +msgid "Cooling tube position" +msgstr "Позиция охлаждающей трубки" + +msgid "Distance of the center-point of the cooling tube from the extruder tip." +msgstr "" +"Расстояние между центральной точкой охлаждающей трубки и кончиком экструдера." + +msgid "Cooling tube length" +msgstr "Длина охлаждающей трубки" + +msgid "Length of the cooling tube to limit space for cooling moves inside it." +msgstr "" +"Длина охлаждающей трубки для ограничения перемещения при охлаждающих " +"движениях." + +msgid "High extruder current on filament swap" +msgstr "Повышение тока экструдера при замене прутка" + +msgid "" +"It may be beneficial to increase the extruder motor current during the " +"filament exchange sequence to allow for rapid ramming feed rates and to " +"overcome resistance when loading a filament with an ugly shaped tip." +msgstr "" +"Это может быть полезно для увеличения тока двигателя экструдера во время " +"замены прутка, чтобы быстро увеличить скорость подачи и преодолеть " +"сопротивление при загрузке прутка с плохой формой кончика." + +msgid "Filament parking position" +msgstr "Положение парковки прутка" + +msgid "" +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." +msgstr "" +"Расстояние от кончика экструдера до точки, где размещается пруток при " +"выгрузке. Расстояние должно соответствовать значению в прошивке принтера." + +msgid "Extra loading distance" +msgstr "Дополнительная длина загрузки" + +msgid "" +"When set to zero, the distance the filament is moved from parking position " +"during load is exactly the same as it was moved back during unload. When " +"positive, it is loaded further, if negative, the loading move is shorter " +"than unloading." +msgstr "" +"Если установлено 0, то расстояние, которое проходит пруток при перемещении " +"из положения парковки во время загрузки, точно такое же, как и при выгрузке. " +"При положительном значении, она загружается дальше; при отрицательном, ход " +"загрузки короче (по сравнению с выгрузкой)." + msgid "Start end points" msgstr "Начальные и конечные точки" @@ -7762,8 +10012,15 @@ msgstr "Начальная и конечная точки от зоны обре msgid "Reduce infill retraction" msgstr "Уменьшать отката при заполнении" -msgid "Don't retract when the travel is in infill area absolutely. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower" -msgstr "Отключает откат, когда перемещения полностью совершаются в области заполнения (и, таким образом, любые подтёки скорее всего будут не заметны). Это поможет снизить количество откатов при печати сложной модели и сэкономить время печати, но увеличит время нарезки и генерации G-кода." +msgid "" +"Don't retract when the travel is in infill area absolutely. That means the " +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" +msgstr "" +"Отключает откат, когда перемещения полностью совершаются в области " +"заполнения (и, таким образом, любые подтёки скорее всего будут не заметны). " +"Это поможет снизить количество откатов при печати сложной модели и " +"сэкономить время печати, но увеличит время нарезки и генерации G-кода." msgid "Enable" msgstr "Включить" @@ -7783,14 +10040,25 @@ msgstr "Изменение геометрии модели для печати msgid "Make overhang printable maximum angle" msgstr "Делать нависания пригодными для печати под максимальным углом" -msgid "Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material." -msgstr "Максимальный угол нависания, получаемый после изменения геометрии крутых нависаний. При 90°не происходит изменения формы модели. При 0° же, все нависания заменяются материалом конической геометрии." +msgid "" +"Maximum angle of overhangs to allow after making more steep overhangs " +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." +msgstr "" +"Максимальный угол нависания, получаемый после изменения геометрии крутых " +"нависаний. При 90°не происходит изменения формы модели. При 0° же, все " +"нависания заменяются материалом конической геометрии." msgid "Make overhang printable hole area" msgstr "Делать нависания отверстий пригодными для печати" -msgid "Maximum area of a hole in the base of the model before it's filled by conical material.A value of 0 will fill all the holes in the model base." -msgstr "Максимальная площадь отверстия в основании модели до его заполнения материалом конической геометрии. При 0 все отверстия в основании модели будут заполнены." +msgid "" +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." +msgstr "" +"Максимальная площадь отверстия в основании модели до его заполнения " +"материалом конической геометрии. При 0 все отверстия в основании модели " +"будут заполнены." msgid "mm²" msgstr "мм²" @@ -7799,11 +10067,19 @@ msgid "Detect overhang wall" msgstr "Определять нависающие периметры" #, c-format, boost-format -msgid "Detect the overhang percentage relative to line width and use different speed to print. For 100%% overhang, bridge speed is used." -msgstr "Определяет процент нависания относительно ширины линии и использует разную скорость печати. Для 100%%-го свеса используется скорость печати мостов." +msgid "" +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." +msgstr "" +"Определяет процент нависания относительно ширины линии и использует разную " +"скорость печати. Для 100%%-го свеса используется скорость печати мостов." -msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии внутренних периметров. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of inner wall. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии внутренних периметров. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Speed of inner wall" msgstr "Скорость печати внутренних периметров." @@ -7811,8 +10087,18 @@ msgstr "Скорость печати внутренних периметров. msgid "Number of walls of every layer" msgstr "Количество периметров на каждом слое модели." -msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." -msgstr "Если вы хотите обработать выходной G-код с помощью пользовательских скриптов, просто перечислите здесь абсолютные пути к ним. Разделяйте скрипты точкой с запятой. Скриптам будет передан абсолютный путь к файлу G-кода в качестве первого аргумента, и они смогут получить доступ к настройкам конфигурации Slic3r, читая переменные окружения." +msgid "" +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Slic3r config settings by reading " +"environment variables." +msgstr "" +"Если вы хотите обработать выходной G-код с помощью пользовательских " +"скриптов, просто перечислите здесь абсолютные пути к ним. Разделяйте скрипты " +"точкой с запятой. Скриптам будет передан абсолютный путь к файлу G-кода в " +"качестве первого аргумента, и они смогут получить доступ к настройкам " +"конфигурации Slic3r, читая переменные окружения." msgid "Printer notes" msgstr "Примечания к принтеру" @@ -7824,7 +10110,9 @@ msgid "Raft contact Z distance" msgstr "Расстояние от подложки до модели по вертикали" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Зазор между моделью и подложкой. Значение игнорируется при выборе растворимого материала." +msgstr "" +"Зазор между моделью и подложкой. Значение игнорируется при выборе " +"растворимого материала." msgid "Raft expansion" msgstr "Расширение подложки" @@ -7842,28 +10130,48 @@ msgid "Initial layer expansion" msgstr "Расширение первого слоя" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "Расширение первого слоя подложки или поддержки в плоскости XY для улучшения адгезии с материалами склонными к отлипанию и закручиванию." +msgstr "" +"Расширение первого слоя подложки или поддержки в плоскости XY для улучшения " +"адгезии с материалами склонными к отлипанию и закручиванию." msgid "Raft layers" msgstr "Слоёв в подложке" -msgid "Object will be raised by this number of support layers. Use this function to avoid wrapping when print ABS" -msgstr "Параметр устанавливает высоту подложки в слоях, тем самым поднимая модель на заданное количество слоёв от стола. Используйте эту функцию, чтобы избежать деформации при печати ABS пластиком." +msgid "" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" +msgstr "" +"Параметр устанавливает высоту подложки в слоях, тем самым поднимая модель на " +"заданное количество слоёв от стола. Используйте эту функцию, чтобы избежать " +"деформации при печати ABS пластиком." -msgid "G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" -msgstr "Разрешение G-кода. Путь G-кода создаётся после упрощения контура модели, чтобы избежать слишком большого количества точек и линий в G-коде. Меньшее значение означает более высокое разрешение и больше времени для нарезки." +msgid "" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" +msgstr "" +"Разрешение G-кода. Путь G-кода создаётся после упрощения контура модели, " +"чтобы избежать слишком большого количества точек и линий в G-коде. Меньшее " +"значение означает более высокое разрешение и больше времени для нарезки." msgid "Travel distance threshold" msgstr "Порог перемещения для отката" -msgid "Only trigger retraction when the travel distance is longer than this threshold" -msgstr "Откат будет срабатывать только в том случае, если расстояние перемещения превысит этот порог." +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" +msgstr "" +"Откат будет срабатывать только в том случае, если расстояние перемещения " +"превысит этот порог." msgid "Retract amount before wipe" msgstr "Величина отката перед очисткой" -msgid "The length of fast retraction before wipe, relative to retraction length" -msgstr "Длина быстрого отката перед очисткой, выраженная в процентах от общей длины отката." +msgid "" +"The length of fast retraction before wipe, relative to retraction length" +msgstr "" +"Длина быстрого отката перед очисткой, выраженная в процентах от общей длины " +"отката." msgid "Retract when change layer" msgstr "Откат при смене слоя" @@ -7877,14 +10185,47 @@ msgstr "Длина" msgid "Retraction Length" msgstr "Длина отката" -msgid "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction" -msgstr "Некоторое количество материала в экструдере откатывается назад, чтобы избежать его течи при длительном перемещении. 0 - отключение отката." +msgid "" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" +msgstr "" +"Некоторое количество материала в экструдере откатывается назад, чтобы " +"избежать его течи при длительном перемещении. 0 - отключение отката." msgid "Z hop when retract" msgstr "Подъём оси Z при откате" -msgid "Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. It prevents nozzle from hitting the print when travel move. Using spiral line to lift z can prevent stringing" -msgstr "Здесь задаётся на сколько миллиметров будет каждый раз приподниматься ось Z, когда срабатывает откат. Это предотвращает задевание соплом печатаемой модели при перемещении. Использование спирального типа подъёма оси Z может предотвратить образование паутины." +msgid "" +"Whenever the retraction is done, the nozzle is lifted a little to create " +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "" +"Здесь задаётся на сколько миллиметров будет каждый раз приподниматься ось Z, " +"когда срабатывает откат. Это предотвращает задевание соплом печатаемой " +"модели при перемещении. Использование спирального типа подъёма оси Z может " +"предотвратить образование паутины." + +msgid "Z hop lower boundary" +msgstr "Приподнимать ось Z только ниже" + +msgid "" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только ниже " +"(до) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете запретить подъём оси Z выше установленной высоты." + +msgid "Z hop upper boundary" +msgstr "Приподнимать ось Z только выше" + +msgid "" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только выше " +"(после) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете отключить подъём оси Z при печати на первых слоях (в начале печати)." msgid "Z hop type" msgstr "Тип подъёма оси Z" @@ -7898,20 +10239,34 @@ msgstr "Спиральный" msgid "Only lift Z above" msgstr "Приподнимать ось Z только выше" -msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z." -msgstr "Если указать положительное значение, ось Z будет подниматься только выше (после) заданной здесь высоты (высота считается от стола). Таким образом вы можете отключить подъём оси Z при печати первых слоёв." +msgid "" +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z." +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только выше " +"(после) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете отключить подъём оси Z при печати первых слоёв." msgid "Only lift Z below" msgstr "Приподнимать ось Z только ниже" -msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z." -msgstr "Если указать положительное значение, ось Z будет подниматься только ниже (до) заданной здесь высоты (высота считается от стола). Таким образом вы можете запретить подъём оси Z выше установленной высоты." +msgid "" +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z." +msgstr "" +"Если указать положительное значение, ось Z будет подниматься только ниже " +"(до) заданной здесь высоты (высота считается от стола). Таким образом вы " +"можете запретить подъём оси Z выше установленной высоты." msgid "On surfaces" msgstr "На поверхностях" -msgid "Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/below)." -msgstr "Принудительное поднятие оси Z. На этот параметр влияют указанные выше параметры (Приподнимать ось Z только выше/ниже)." +msgid "" +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." +msgstr "" +"Принудительное поднятие оси Z. На этот параметр влияют указанные выше " +"параметры (Приподнимать ось Z только выше/ниже)." msgid "All Surfaces" msgstr "Все верхние поверхности" @@ -7928,11 +10283,21 @@ msgstr "На верхней и нижней" msgid "Extra length on restart" msgstr "Доп. длина подачи перед возобновлением печати" -msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." -msgstr "Дополнительная длина материала, которая будет выдавливаться после работы отката и перемещения. Для увеличения длины выдавливания ставится положительное значение (например 0.5 мм), для уменьшения отрицательное. Этот параметр редко нуждается в правке." +msgid "" +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." +msgstr "" +"Дополнительная длина материала, которая будет выдавливаться после работы " +"отката и перемещения. Для увеличения длины выдавливания ставится " +"положительное значение (например 0.5 мм), для уменьшения отрицательное. Этот " +"параметр редко нуждается в правке." -msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." -msgstr "Компенсация длины выдавливаемого пластика перед возобновлением печати после смены сопла." +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Компенсация длины выдавливаемого пластика перед возобновлением печати после " +"смены сопла." msgid "Retraction Speed" msgstr "Скорость извлечения при откате" @@ -7943,14 +10308,23 @@ msgstr "Скорость извлечения материала при отка msgid "Deretraction Speed" msgstr "Скорость заправки при откате" -msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" -msgstr "Скорость возврата материала при откате. Если оставить 0, будет использоваться та же скорость что и при извлечении." +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" +msgstr "" +"Скорость возврата материала при откате. Если оставить 0, будет " +"использоваться та же скорость что и при извлечении." msgid "Use firmware retraction" msgstr "Исп. откат из прошивки" -msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Эта экспериментальная опция использует команды G10 и G11, чтобы сама прошивка обрабатывала откаты. Поддерживается только в последних версиях Marlin." +msgid "" +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." +msgstr "" +"Эта экспериментальная опция использует команды G10 и G11, чтобы сама " +"прошивка обрабатывала откаты. Поддерживается только в последних версиях " +"Marlin." msgid "Show auto-calibration marks" msgstr "Отображать на столе линии автокалибровки" @@ -7976,36 +10350,61 @@ msgstr "Случайно" msgid "Staggered inner seams" msgstr "Смещение внутренних швов" -msgid "This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern." -msgstr "Этот параметр заставляет внутренние швы смещаться назад в зависимости от их глубины, образуя зигзагообразный рисунок." +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" +"Этот параметр заставляет внутренние швы смещаться назад в зависимости от их " +"глубины, образуя зигзагообразный рисунок." msgid "Seam gap" msgstr "Зазор шва" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Чтобы уменьшить видимость шва при печати замкнутого контура, контур будет укорачиваться на заданную величину.\n" -"Это величина может быть указана в миллиметрах или в процентах от текущего диаметра сопла. Значение по умолчанию - 10%." +"Чтобы уменьшить видимость шва при печати замкнутого контура, контур будет " +"укорачиваться на заданную величину.\n" +"Это величина может быть указана в миллиметрах или в процентах от текущего " +"диаметра сопла. Значение по умолчанию - 10%." msgid "Role base wipe speed" msgstr "Скорость очистки по типу экструзии" -msgid "The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." -msgstr "Скорость очистки будет определяться скоростью текущего типа экструзии, т.е если операция очистки выполняется сразу после экструзии внешнего периметра, то для очистки используется скорость экструзии внешнего периметра." +msgid "" +"The wipe speed is determined by the speed of the current extrusion role.e.g. " +"if a wipe action is executed immediately following an outer wall extrusion, " +"the speed of the outer wall extrusion will be utilized for the wipe action." +msgstr "" +"Скорость очистки будет определяться скоростью текущего типа экструзии, т.е " +"если операция очистки выполняется сразу после экструзии внешнего периметра, " +"то для очистки используется скорость экструзии внешнего периметра." msgid "Wipe on loops" msgstr "Очистка в периметры" -msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." -msgstr "Чтобы минимизировать видимость шва при экструзии по замкнутому контуру, перед выходом экструдера из контура выполняется небольшое движение внутрь." +msgid "" +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." +msgstr "" +"Чтобы минимизировать видимость шва при экструзии по замкнутому контуру, " +"перед выходом экструдера из контура выполняется небольшое движение внутрь." msgid "Wipe speed" msgstr "Скорость очистки" -msgid "The wipe speed is determined by the speed setting specified in this configuration.If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above.The default value for this parameter is 80%" -msgstr "Скорость очистки определяется текущей настройкой. Если задано в процентах, то она вычисляться относительно скорости перемещения. 80% - значение по умолчанию." +msgid "" +"The wipe speed is determined by the speed setting specified in this " +"configuration.If the value is expressed as a percentage (e.g. 80%), it will " +"be calculated based on the travel speed setting above.The default value for " +"this parameter is 80%" +msgstr "" +"Скорость очистки определяется текущей настройкой. Если задано в процентах, " +"то она вычисляться относительно скорости перемещения. 80% - значение по " +"умолчанию." msgid "Skirt distance" msgstr "Расстояние до юбки" @@ -8031,33 +10430,66 @@ msgstr "Скорость печати юбки" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." msgstr "Скорость печати юбки (мм/с). 0 - скорость экструзии слоя по умолчанию." -msgid "The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to get better cooling for these layers" -msgstr "Скорость печати в экспортированном G-коде будет замедлена, если расчётное время печати слоя меньше этого значения, для обеспечения лучшего охлаждения этих слоёв." +msgid "" +"The printing speed in exported gcode will be slowed down, when the estimated " +"layer time is shorter than this value, to get better cooling for these layers" +msgstr "" +"Скорость печати в экспортированном G-коде будет замедлена, если расчётное " +"время печати слоя меньше этого значения, для обеспечения лучшего охлаждения " +"этих слоёв." msgid "Minimum sparse infill threshold" msgstr "Мин. порог разреженного заполнения" -msgid "Sparse infill area which is smaller than threshold value is replaced by internal solid infill" -msgstr "Область с разреженным заполнением, размер которого меньше этого порогового значения, заменяется сплошным заполнением." +msgid "" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" +msgstr "" +"Область с разреженным заполнением, размер которого меньше этого порогового " +"значения, заменяется сплошным заполнением." -msgid "Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для внутреннего сплошного заполнения. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." +msgstr "" +"Ширина экструзии для внутреннего сплошного заполнения. Если задано в " +"процентах, то значение вычисляться относительно диаметра сопла." msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "Скорость печати внутреннего сплошного заполнения, за исключением верхней и нижней поверхностей." +msgstr "" +"Скорость печати внутреннего сплошного заполнения, за исключением верхней и " +"нижней поверхностей." msgid "Spiral vase" msgstr "Спиральная ваза" -msgid "Spiralize smooths out the z moves of the outer contour. And turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam" -msgstr "Печать спиральных и пустотелых, а также тонкостенных моделей. Модель печатается в одну стенку без верхней поверхности, заполнения и поддержки. При этом сопло движется вдоль периметра непрерывно постепенно поднимаясь, так получаются ровные красивые вазы без видимых швов." +msgid "" +"Spiralize smooths out the z moves of the outer contour. And turns a solid " +"model into a single walled print with solid bottom layers. The final " +"generated model has no seam" +msgstr "" +"Печать спиральных и пустотелых, а также тонкостенных моделей. Модель " +"печатается в одну стенку без верхней поверхности, заполнения и поддержки. " +"При этом сопло движется вдоль периметра непрерывно постепенно поднимаясь, " +"так получаются ровные красивые вазы без видимых швов." msgid "" -"If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt " -"filament may leak from the nozzle during the process of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be " +"generated for each print. After each layer is printed, a snapshot is taken " +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" -"Если выбран плавный или обычный режим записи, то при каждой печати будет создаваться ускоренное видео печати. После печати каждого слоя встроенная камера делает снимок и по её завершении все эти снимки объединяются в единое ускоренное видео. Если включён плавный режим, то после печати каждого слоя головка перемещается к лотку для удаления излишков, а уже затем делается снимок. Очистка сопла на " -"черновой башне обязательна, т.к. при плавном режиме возможно вытекание материалы из сопла когда делается снимок." +"Если выбран плавный или обычный режим записи, то при каждой печати будет " +"создаваться ускоренное видео печати. После печати каждого слоя встроенная " +"камера делает снимок и по её завершении все эти снимки объединяются в единое " +"ускоренное видео. Если включён плавный режим, то после печати каждого слоя " +"головка перемещается к лотку для удаления излишков, а уже затем делается " +"снимок. Очистка сопла на черновой башне обязательна, т.к. при плавном режиме " +"возможно вытекание материалы из сопла когда делается снимок." msgid "Traditional" msgstr "Обычный" @@ -8072,19 +10504,90 @@ msgid "Start G-code when start the whole printing" msgstr "G-код выполняемый при каждом запуске печати." msgid "Start G-code when start the printing of this filament" -msgstr "Стартовый G-код выполняемый при запуске печати с текущей пластиковой нитью." +msgstr "" +"Стартовый G-код выполняемый при запуске печати с текущей пластиковой нитью." + +msgid "Single Extruder Multi Material" +msgstr "Мультиматериальный одиночный экструдер" + +msgid "Use single nozzle to print multi filament" +msgstr "" +"Использование одной экструзионной головы для печати несколькими видами/" +"цветами пластика." + +msgid "Manual Filament Change" +msgstr "Ручная замена прутка" + +msgid "" +"Enable this option to omit the custom Change filament G-code only at the " +"beginning of the print. The tool change command (e.g., T0) will be skipped " +"throughout the entire print. This is useful for manual multi-material " +"printing, where we use M600/PAUSE to trigger the manual filament change " +"action." +msgstr "" +"Включите эту опцию, если хотите пропустить пользовательский G-код смены " +"прутка только в начале печати. Команда смены инструмента (например, T0) " +"будет пропускаться на протяжении всей печати. Это полезно при ручной " +"мультиматериальной печати, где для запуска операции ручной смены прутка " +"используется команда M600." + +msgid "Purge in prime tower" +msgstr "Очистка в черновую башню" + +msgid "Purge remaining filament into prime tower" +msgstr "Очистка сопла от остатков материала в черновую башню" + +msgid "Enable filament ramming" +msgstr "Включить рэмминг прутка" + +msgid "No sparse layers (EXPERIMENTAL)" +msgstr "Отсутствие разреженных слоёв (экспериментально)" + +msgid "" +"If enabled, the wipe tower will not be printed on layers with no " +"toolchanges. On layers with a toolchange, extruder will travel downward to " +"print the wipe tower. User is responsible for ensuring there is no collision " +"with the print." +msgstr "" +"Если этот параметр включён, черновая башня не будет печататься на слоях где " +"не происходит смена инструмента. На слоях, где происходит смена инструмента, " +"экструдер будет опускаться вниз до верхней части черновой башни, чтобы " +"напечатать её. Эта функция помечена как экспериментальная, поэтому " +"пользователь несёт ответственность за то, чтобы не допустить столкновения " +"экструдера с напечатанным." + +msgid "Prime all printing extruders" +msgstr "Подготовка всех печатающих экструдеров" + +msgid "" +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." +msgstr "" +"Если этот параметр включён, все печатающие экструдеры в начале печати будут " +"подготавливаться на переднем крае стола." msgid "Slice gap closing radius" msgstr "Радиус закрытия пробелов при нарезке" -msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." -msgstr "Трещины, меньше чем 2-кратный радиус закрытия пробелов, будут заполняться во время нарезки треугольной сетки. Операция закрытия пробелов может привести к снижению конечного разрешение печати, поэтому рекомендуется выставлять это значение достаточно низким." +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"Трещины, меньше чем 2-кратный радиус закрытия пробелов, будут заполняться во " +"время нарезки треугольной сетки. Операция закрытия пробелов может привести к " +"снижению конечного разрешение печати, поэтому рекомендуется выставлять это " +"значение достаточно низким." msgid "Slicing Mode" msgstr "Режим нарезки" -msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." -msgstr "Режим нарезки «чётный-нечётный» используется для моделей самолетов с ресурса 3DLabPrint. А «Закрытие отверстий» для закрытия всех отверстий в модели." +msgid "" +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." +msgstr "" +"Режим нарезки «чётный-нечётный» используется для моделей самолетов с ресурса " +"3DLabPrint. А «Закрытие отверстий» для закрытия всех отверстий в модели." msgid "Regular" msgstr "Обычный" @@ -8095,14 +10598,34 @@ msgstr "Чётный-нечётный" msgid "Close holes" msgstr "Закрытие отверстий" +msgid "Z offset" +msgstr "Смещение координат оси Z" + +msgid "" +"This value will be added (or subtracted) from all the Z coordinates in the " +"output G-code. It is used to compensate for bad Z endstop position: for " +"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " +"print bed, set this to -0.3 (or fix your endstop)." +msgstr "" +"Это значение будет прибавлено (или вычтено) из всех Z координат в выходном G-" +"коде. Это, например, используется для компенсации неправильного положения " +"концевика оси Z." + msgid "Enable support" msgstr "Включить поддержку" msgid "Enable support generation." msgstr "Включить генерацию поддержки." -msgid "normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or tree(manual) is selected, only support enforcers are generated" -msgstr "Тип поддержки «Обычная (авто)» и «Древовидная (авто)» используются для автоматического создания поддержки. Если выбран тип поддержки «Обычная (вручную)» или «Древовидная (вручную)», генерируется только принудительная поддержка." +msgid "" +"normal(auto) and tree(auto) is used to generate support automatically. If " +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" +msgstr "" +"Тип поддержки «Обычная (авто)» и «Древовидная (авто)» используются для " +"автоматического создания поддержки. Если выбран тип поддержки «Обычная " +"(вручную)» или «Древовидная (вручную)», генерируется только принудительная " +"поддержка." msgid "normal(auto)" msgstr "Обычная (авто)" @@ -8126,7 +10649,9 @@ msgid "Pattern angle" msgstr "Угол печати шаблона поддержки" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Используйте эту настройку для поворота шаблона поддержки в горизонтальной плоскости." +msgstr "" +"Используйте эту настройку для поворота шаблона поддержки в горизонтальной " +"плоскости." msgid "On build plate only" msgstr "Поддержка только от стола" @@ -8137,47 +10662,79 @@ msgstr "Создавать поддержку только от стола." msgid "Support critical regions only" msgstr "Поддержка только критических областей" -msgid "Only create support for critical regions including sharp tail, cantilever, etc." -msgstr "Создание поддержек только для критических областей, включая острые концы, консоли (горизонтально выступающие элементы) и т.д." +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." +msgstr "" +"Создание поддержек только для критических областей, включая острые концы, " +"консоли (горизонтально выступающие элементы) и т.д." msgid "Remove small overhangs" msgstr "Игнорировать небольшие нависания" msgid "Remove small overhangs that possibly need no supports." -msgstr "Не печатать поддержку под небольшими нависаниями, которые, как вам казалось, нуждаются в них." +msgstr "" +"Не печатать поддержку под небольшими нависаниями, которые, как вам казалось, " +"нуждаются в них." msgid "Top Z distance" msgstr "Зазор поддержки сверху" msgid "The z gap between the top support interface and object" -msgstr "Вертикальное расстояние между верхней частью модели и связующим слоем поддержки." +msgstr "" +"Вертикальное расстояние между верхней частью модели и связующим слоем " +"поддержки." msgid "Bottom Z distance" msgstr "Зазор поддержки снизу" msgid "The z gap between the bottom support interface and object" -msgstr "Вертикальное расстояние между нижней частью модели и связующим слоем поддержки." +msgstr "" +"Вертикальное расстояние между нижней частью модели и связующим слоем " +"поддержки." msgid "Support/raft base" msgstr "Базовая поддержка/подложка" -msgid "Filament to print support base and raft. \"Default\" means no specific filament for support and current filament is used" -msgstr "Пластиковая нить для печати базовой поддержки и подложки. Значение «По умолчанию» означает, что для поддержки используется текущая пластиковая нить." +msgid "" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" +msgstr "" +"Пластиковая нить для печати базовой поддержки и подложки. Значение «По " +"умолчанию» означает, что для поддержки используется текущая пластиковая нить." -msgid "Line width of support. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для поддержки. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "Reduce interface filament for base" +msgstr "" + +msgid "Avoid using support interface filament to print support base" +msgstr "" + +msgid "" +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." +msgstr "" +"Ширина экструзии для поддержки. Если задано в процентах, то значение " +"вычисляться относительно диаметра сопла." msgid "Interface use loop pattern" msgstr "Связующий слой петлями" -msgid "Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "Печатать контактный слой связующего слоя поддержки петлями. По умолчанию отключено." +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "" +"Печатать контактный слой связующего слоя поддержки петлями. По умолчанию " +"отключено." msgid "Support/raft interface" msgstr "Связующий слой поддержки/подложки" -msgid "Filament to print support interface. \"Default\" means no specific filament for support interface and current filament is used" -msgstr "Пластиковая нить для печати связующего слоя поддержки. Значение «По умолчанию» означает, что для связующего слоя поддержки используется текущая пластиковая нить." +msgid "" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" +msgstr "" +"Пластиковая нить для печати связующего слоя поддержки. Значение «По " +"умолчанию» означает, что для связующего слоя поддержки используется текущая " +"пластиковая нить." msgid "Top interface layers" msgstr "Связующих слоёв сверху" @@ -8188,17 +10745,27 @@ msgstr "Количество связующих слоёв сверху." msgid "Bottom interface layers" msgstr "Связующих слоёв снизу" +msgid "Number of bottom interface layers" +msgstr "" + +msgid "Same as top" +msgstr "" + msgid "Top interface spacing" msgstr "Расстояние между линиями связующего слоя сверху" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "Расстояние между линиями связующего слоя сверху. Установите 0, чтобы получить сплошной слой." +msgstr "" +"Расстояние между линиями связующего слоя сверху. Установите 0, чтобы " +"получить сплошной слой." msgid "Bottom interface spacing" msgstr "Расстояние между линиями связующего слоя снизу" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "Расстояние между линиями связующего слоя снизу. Установите 0, чтобы получить сплошной слой." +msgstr "" +"Расстояние между линиями связующего слоя снизу. Установите 0, чтобы получить " +"сплошной слой." msgid "Speed of support interface" msgstr "Скорость печати связующего слоя поддержки." @@ -8218,8 +10785,14 @@ msgstr "Полость" msgid "Interface pattern" msgstr "Шаблон связующего слоя" -msgid "Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, while default pattern for soluble support interface is Concentric" -msgstr "Шаблон, по которому будет происходить печать связующего слоя поддержки. При выборе по умолчанию, шаблон для нерастворимой связующей поддержки - прямолинейный, для растворимой - концентрический." +msgid "" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" +msgstr "" +"Шаблон, по которому будет происходить печать связующего слоя поддержки. При " +"выборе по умолчанию, шаблон для нерастворимой связующей поддержки - " +"прямолинейный, для растворимой - концентрический." msgid "Rectilinear Interlaced" msgstr "Прямолинейный (чередование направлений)" @@ -8234,20 +10807,31 @@ msgid "Normal Support expansion" msgstr "Горизонтальное расширение поддержки" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "Горизонтальное расширение (+) или сужение (-) базовой поддержки в плоскости XY." +msgstr "" +"Горизонтальное расширение (+) или сужение (-) базовой поддержки в плоскости " +"XY." msgid "Speed of support" msgstr "Скорость печати поддержки." msgid "" -"Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save a lot of material (default), while hybrid style will create similar structure to normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" "Стиль и форма создаваемой поддержки.\n" "\n" -"Стиль «Сетка» создаёт более устойчивые опоры. Стиль «Аккуратный» экономит материал и уменьшает образование дефектов на моделях.\n" +"Стиль «Сетка» создаёт более устойчивые опоры (по умолчанию). Стиль " +"«Аккуратный» экономит материал и уменьшает образование дефектов на моделях.\n" "\n" -"Для древовидной поддержки, при стройном стиле происходит более агрессивное объединение ветвей и экономия материала (по умолчанию). В то время как гибридный стиль создаёт структуру, схожую с обычную поддержкой при больших плоских нависаниях." +"Для древовидной поддержки, при стройном и органическом стиле происходит " +"более агрессивное объединение ветвей и экономия материала (по умолчанию " +"органический). В то время как гибридный стиль создаёт структуру, схожую с " +"обычную поддержкой при больших плоских нависаниях." msgid "Snug" msgstr "Аккуратный" @@ -8267,45 +10851,94 @@ msgstr "Органический" msgid "Independent support layer height" msgstr "Независимая высота слоя поддержки" -msgid "Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time.This option will be invalid when the prime tower is enabled." -msgstr "Слои поддержки будут иметь высоту слоя, отличную от высоты слоя модели. Это необходимо для настройки зазора между моделью и поддержкой для экономии времени печати. Опция неактивна, когда включена черновая башня." +msgid "" +"Support layer uses layer height independent with object layer. This is to " +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." +msgstr "" +"Слои поддержки будут иметь высоту слоя, отличную от высоты слоя модели. Это " +"необходимо для настройки зазора между моделью и поддержкой для экономии " +"времени печати. Опция неактивна, когда включена черновая башня." msgid "Threshold angle" msgstr "Пороговый угол поддержки" -msgid "Support will be generated for overhangs whose slope angle is below the threshold." -msgstr "Для нависаний, угол наклона которых ниже заданного порогового значения, будут использоваться поддержки." +msgid "" +"Support will be generated for overhangs whose slope angle is below the " +"threshold." +msgstr "" +"Для нависаний, угол наклона которых ниже заданного порогового значения, " +"будут использоваться поддержки." msgid "Tree support branch angle" msgstr "Угол нависания ветвей древовидной поддержки" -msgid "This setting determines the maximum overhang angle that t he branches of tree support allowed to make.If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther." -msgstr "Этот параметр определяет максимальный угол нависания ветвей древовидной поддержки. При увеличении угла, ветви печатаются более горизонтально, что позволяет им достигать большего охвата. При указании меньшего угла, поддержка будет более вертикальной и устойчивой." +msgid "" +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." +msgstr "" +"Этот параметр определяет максимальный угол нависания ветвей древовидной " +"поддержки. При увеличении угла, ветви печатаются более горизонтально, что " +"позволяет им достигать большего охвата. При указании меньшего угла, " +"поддержка будет более вертикальной и устойчивой." msgid "Preferred Branch Angle" msgstr "Предпочтительный угол ответвления" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" -msgid "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster." -msgstr "Предпочтительный угол ответвления ветвей, при котором не нужно избегать модель. При указании меньшего угла поддержка будет более вертикальной и устойчивой. Для получения большего охвата указывайте более высокий угол." +msgid "" +"The preferred angle of the branches, when they do not have to avoid the " +"model. Use a lower angle to make them more vertical and more stable. Use a " +"higher angle for branches to merge faster." +msgstr "" +"Предпочтительный угол ответвления ветвей, при котором не нужно избегать " +"модель. При указании меньшего угла поддержка будет более вертикальной и " +"устойчивой. Для получения большего охвата указывайте более высокий угол." msgid "Tree support branch distance" msgstr "Расстояние между ветвями древовидной поддержки" -msgid "This setting determines the distance between neighboring tree support nodes." -msgstr "Этот параметр определяет, насколько далеко должны друг от друга располагаться ветви при касании модели." +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "" +"Этот параметр определяет, насколько далеко должны друг от друга " +"располагаться ветви при касании модели." + +msgid "Branch Density" +msgstr "Плотность ветвей" + +#. TRN PrintSettings: "Organic supports" > "Branch Density" +msgid "" +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." +msgstr "" +"Регулирует плотность создания ветвей в месте контакта с моделью. Большее " +"значение приводит к улучшению качества печати нависаний, но такие поддержки " +"сложнее удалять, поэтому рекомендуется вместо высокого значения плотности " +"ветвей включать связующие слои поддержки." msgid "Adaptive layer height" msgstr "Переменная высота слоёв" -msgid "Enabling this option means the height of tree support layer except the first will be automatically calculated " -msgstr "Включение автоматического расчёта высоты слоя древовидной поддержки, кроме первого слоя." +msgid "" +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " +msgstr "" +"Включение автоматического расчёта высоты слоя древовидной поддержки, кроме " +"первого слоя." msgid "Auto brim width" msgstr "Автоширина каймы" -msgid "Enabling this option means the width of the brim for tree support will be automatically calculated" -msgstr "Включение автоматического расчёта ширины каймы для древовидной поддержки." +msgid "" +"Enabling this option means the width of the brim for tree support will be " +"automatically calculated" +msgstr "" +"Включение автоматического расчёта ширины каймы для древовидной поддержки." msgid "Tree support brim width" msgstr "Ширина каймы древовидной поддержки" @@ -8313,55 +10946,131 @@ msgstr "Ширина каймы древовидной поддержки" msgid "Distance from tree branch to the outermost brim line" msgstr "Расстояние от древовидной поддержки до внешней линии каймы." +msgid "Tip Diameter" +msgstr "Диаметр кончика ветки" + +#. TRN PrintSettings: "Organic supports" > "Tip Diameter" +msgid "Branch tip diameter for organic supports." +msgstr "Диаметр кончика ветки органической поддержки." + # ??? msgid "Tree support branch diameter" msgstr "Диаметр ветвей древовидной поддержки" msgid "This setting determines the initial diameter of support nodes." -msgstr "Этот параметр определяет начальный диаметр ветвей, т.е. их диаметр в месте контакта с моделью." +msgstr "" +"Этот параметр определяет начальный диаметр ветвей, т.е. их диаметр в месте " +"контакта с моделью." -msgid "Tree support wall loops" -msgstr "Периметров древовидной поддержки" +#. TRN PrintSettings: #lmFIXME +msgid "Branch Diameter Angle" +msgstr "Угол изменения диаметра ветвей" -msgid "This setting specify the count of walls around tree support" -msgstr "Этот параметр определяет количество периметров у печатаемой древовидной поддержки." +#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" +msgid "" +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the organic " +"support." +msgstr "" +"Угол изменения диаметра ветвей по мере их постепенного утолщения к " +"основанию. Если значение угла равно 0, ветви будут иметь одинаковую толщину " +"по всей своей длине. Небольшой угол может повысить устойчивость органической " +"поддержки." + +msgid "Branch Diameter with double walls" +msgstr "Диаметр ветвей с двойными стенками" + +#. TRN PrintSettings: "Organic supports" > "Branch Diameter" +msgid "" +"Branches with area larger than the area of a circle of this diameter will be " +"printed with double walls for stability. Set this value to zero for no " +"double walls." +msgstr "" +"Ветви, толщина которых больше указанного диаметра, будут напечатаны с " +"двойными стенками для прочности. Установите 0, если двойные стенки у ветвей " +"не нужны." + +msgid "Support wall loops" +msgstr "" + +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Древовидная поддержка с заполнением" -msgid "This setting specifies whether to add infill inside large hollows of tree support" -msgstr "Этот параметр определяет, следует ли заполнять большие полости внутри древовидной поддержки." +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" +msgstr "" +"Этот параметр определяет, следует ли заполнять большие полости внутри " +"древовидной поддержки." + +msgid "Activate temperature control" +msgstr "Вкл. контроль температуры" + +msgid "" +"Enable this option for chamber temperature control. An M191 command will be " +"added before \"machine_start_gcode\"\n" +"G-code commands: M141/M191 S(0-255)" +msgstr "" +"Для контроля температуры в камере принтера включите эту опцию. Команда M191 " +"будет добавлена перед стартовый G-кодом принтера (machine_start_gcode).\n" +"G-код команда: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Температура термокамеры" -msgid "Target chamber temperature" -msgstr "Температура, которую необходимо поддерживать внутри принтера." +msgid "" +"Higher chamber temperature can help suppress or reduce warping and " +"potentially lead to higher interlayer bonding strength for high temperature " +"materials like ABS, ASA, PC, PA and so on.At the same time, the air " +"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +"other low temperature materials,the actual chamber temperature should not be " +"high to avoid cloggings, so 0 which stands for turning off is highly " +"recommended" +msgstr "" +"Более высокая температура в камере может помочь уменьшить или даже исключить " +"коробление материала. Так же это улучшает межслойное соединения у " +"высокотемпературных материалов, таких как ABS, ASA, PC, PA и т.д. (в то же " +"время фильтрация воздуха при печати ABS и ASA сделает её хуже). Для " +"низкотемпературных материалов, таких как PLA, PETG, TPU, PVA и т. д., " +"фактическая температура в камере не должна быть слишком высокой, чтобы " +"избежать засорения сопла, поэтому настоятельно рекомендуется установить " +"температуру в камере равной 0°C." msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла при печати для слоёв после первого." -msgid "Bed temperature difference" -msgstr "Разница температур подогреваемого стола" - -msgid "Do not recommend bed temperature of other layer to be lower than initial layer for more than this threshold. Too low bed temperature of other layer may cause the model broken free from build plate" -msgstr "Не рекомендуется, чтобы температура последующих слоёв была ниже температуры первого слоя, более чем на это пороговое значение. Слишком низкая температура последующих слоёв может привести к отрыву модели от стола." - msgid "Detect thin wall" msgstr "Обнаружение тонких стенок" -msgid "Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop" -msgstr "Обнаружение тонких стенок (стенки одинарной ширины), которые можно напечатать только в один проход экструдера. Возможно, будет напечатано не очень хорошо, так как это не замкнутый контур." +msgid "" +"Detect thin wall which can't contain two line width. And use single line to " +"print. Maybe printed not very well, because it's not closed loop" +msgstr "" +"Обнаружение тонких стенок (стенки одинарной ширины), которые можно " +"напечатать только в один проход экструдера. Возможно, будет напечатано не " +"очень хорошо, так как это не замкнутый контур." -msgid "This gcode is inserted when change filament, including T command to trigger tool change" -msgstr "Этот G-код вставляется при смене материала, включая команду T для запуска смены инструмента." +msgid "" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" +msgstr "" +"Этот G-код вставляется при смене материала, включая команду T для запуска " +"смены инструмента." # ??? msgid "This gcode is inserted when the extrusion role is changed" msgstr "Этот G-код вставляется при смене роли экструзии." -msgid "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter." -msgstr "Ширина экструзии для верхней поверхности. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." +msgstr "" +"Ширина экструзии для верхней поверхности. Если задано в процентах, то " +"значение вычисляться относительно диаметра сопла." msgid "Speed of top surface infill which is solid" msgstr "Скорость печати верхних сплошных поверхностей." @@ -8369,8 +11078,14 @@ msgstr "Скорость печати верхних сплошных повер msgid "Top shell layers" msgstr "Сплошных слоёв сверху" -msgid "This is the number of solid layers of top shell, including the top surface layer. When the thickness calculated by this value is thinner than top shell thickness, the top shell layers will be increased" -msgstr "Количество сплошных слоёв при печати верхней поверхности модели. Если толщина, рассчитанная с помощью этого значения, меньше толщины оболочки сверху, количество сплошных слоёв сверху будет увеличено." +msgid "" +"This is the number of solid layers of top shell, including the top surface " +"layer. When the thickness calculated by this value is thinner than top shell " +"thickness, the top shell layers will be increased" +msgstr "" +"Количество сплошных слоёв при печати верхней поверхности модели. Если " +"толщина, рассчитанная с помощью этого значения, меньше толщины оболочки " +"сверху, количество сплошных слоёв сверху будет увеличено." msgid "Top solid layers" msgstr "Верхних сплошных слоёв" @@ -8378,10 +11093,20 @@ msgstr "Верхних сплошных слоёв" msgid "Top shell thickness" msgstr "Толщина оболочки сверху" -msgid "The number of top solid layers is increased when slicing if the thickness calculated by top shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is absolutely determained by top shell layers" +msgid "" +"The number of top solid layers is increased when slicing if the thickness " +"calculated by top shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" -"Минимальная толщина оболочки сверху в мм. Если толщина оболочки, рассчитанная по количеству сплошных слоёв сверху, меньше этого значения, количество сплошных слоёв сверху будет автоматически увеличено при нарезке, для удовлетворения минимальной толщины оболочки. Это позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот параметр отключён, а толщина оболочки " -"сверху полностью задаётся количеством сплошных слоёв снизу." +"Минимальная толщина оболочки сверху в мм. Если толщина оболочки, " +"рассчитанная по количеству сплошных слоёв сверху, меньше этого значения, " +"количество сплошных слоёв сверху будет автоматически увеличено при нарезке, " +"для удовлетворения минимальной толщины оболочки. Это позволяет избежать " +"слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что этот " +"параметр отключён, а толщина оболочки сверху полностью задаётся количеством " +"сплошных слоёв снизу." msgid "Speed of travel which is faster and without extrusion" msgstr "Скорость перемещения экструдера при позиционировании без печати." @@ -8389,17 +11114,31 @@ msgstr "Скорость перемещения экструдера при по msgid "Wipe while retracting" msgstr "Очистка сопла при откате" -msgid "Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. This can minimize blob when print new part after travel" -msgstr "Позволяет соплу совершать движение очистки во время отката, перемещая его вдоль последнего пути экструзии. Это может снизить появление дефектов (каплей, пупырышек) при печати новой детали после перемещения." +msgid "" +"Move nozzle along the last extrusion path when retracting to clean leaked " +"material on nozzle. This can minimize blob when print new part after travel" +msgstr "" +"Позволяет соплу совершать движение очистки во время отката, перемещая его " +"вдоль последнего пути экструзии. Это может снизить появление дефектов " +"(каплей, пупырышек) при печати новой детали после перемещения." msgid "Wipe Distance" msgstr "Расстояние очистки внешней стенки" -msgid "Discribe how long the nozzle will move along the last path when retracting" -msgstr "Задаёт расстояние перемещения, добавленное после печати внешней стенки при совершении отката, чтобы сделать шов по оси Z менее заметным." +msgid "" +"Discribe how long the nozzle will move along the last path when retracting" +msgstr "" +"Задаёт расстояние перемещения, добавленное после печати внешней стенки при " +"совершении отката, чтобы сделать шов по оси Z менее заметным." -msgid "The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure inside the nozzle, in order to avoid appearance defects when printing objects." -msgstr "Башня очистки используется для очистки сопла от остатков материала и стабилизации давления внутри сопла, чтобы избежать дефектов снаружи печатаемой модели." +msgid "" +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." +msgstr "" +"Башня очистки используется для очистки сопла от остатков материала и " +"стабилизации давления внутри сопла, чтобы избежать дефектов снаружи " +"печатаемой модели." msgid "Purging volumes" msgstr "Объём очистки" @@ -8407,14 +11146,19 @@ msgstr "Объём очистки" msgid "Flush multiplier" msgstr "Множитель очистки" -msgid "The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the table." -msgstr "Реальные объёмы очистки равны множителю очистки, умноженному на объёмы очистки указанные в таблице." +msgid "" +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." +msgstr "" +"Реальные объёмы очистки равны множителю очистки, умноженному на объёмы " +"очистки указанные в таблице." msgid "Prime volume" msgstr "Объём сброса на черновой башни" msgid "The volume of material to prime extruder on tower." -msgstr "Объём выдавленного материала для заправки экструдера на черновой башне." +msgstr "" +"Объём выдавленного материала для заправки экструдера на черновой башне." msgid "Width" msgstr "Ширина" @@ -8431,8 +11175,13 @@ msgstr "Угол поворота черновой башни относител msgid "Stabilization cone apex angle" msgstr "Угол вершины стабилизирующего конуса" -msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." -msgstr "Регулировка угла «стабилизирующего конуса», который используется для предотвращения опрокидывания черновой башни. Больший угол означает более широкое основание конуса." +msgid "" +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." +msgstr "" +"Регулировка угла «стабилизирующего конуса», который используется для " +"предотвращения опрокидывания черновой башни. Больший угол означает более " +"широкое основание конуса." msgid "Wipe tower purge lines spacing" msgstr "Расстояние между линиями очистки черновой башни" @@ -8443,60 +11192,177 @@ msgstr "Расстояние между линиями очистки на че msgid "Wipe tower extruder" msgstr "Экструдер черновой башни" -msgid "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred)." -msgstr "Номер экструдера, которым печатаются периметры черновой башни. Установите 0, чтобы использовать тот, который доступен (предпочтительнее нерастворимый)." +msgid "" +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " +"use the one that is available (non-soluble would be preferred)." +msgstr "" +"Номер экструдера, которым печатаются периметры черновой башни. Установите 0, " +"чтобы использовать тот, который доступен (предпочтительнее нерастворимый)." msgid "Purging volumes - load/unload volumes" msgstr "Объём очистки - Объём загрузки/выгрузки" -msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below." -msgstr "Этот параметр задаёт объём материала, который будет выдавлен на черновую башню для прочистки сопла при смене экструдеров/инструментов. Эти значения используются для упрощения создания полноты объёмов очистки указанной ниже." +msgid "" +"This vector saves required volumes to change from/to each tool used on the " +"wipe tower. These values are used to simplify creation of the full purging " +"volumes below." +msgstr "" +"Этот параметр задаёт объём материала, который будет выдавлен на черновую " +"башню для прочистки сопла при смене экструдеров/инструментов. Эти значения " +"используются для упрощения создания полноты объёмов очистки указанной ниже." -msgid "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled." -msgstr "Очистка сопла после смены материала будет производиться в заполнение модели. Это снижает количество отходов и сокращает время печати. Эта функция работает только при включенной черновой башне." +msgid "" +"Purging after filament change will be done inside objects' infills. This may " +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be seen " +"outside. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Очистка сопла после смены материала будет производиться в заполнение модели. " +"Это снижает количество отходов и сокращает время печати. Эта функция " +"работает только при включенной черновой башне." -msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled." -msgstr "Очистка сопла после смены материала будет производиться в поддержку модели. Это снижает количество отходов и сокращает время печати. Эта функция работает только при включенной черновой башне." +msgid "" +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time. It will not take " +"effect, unless the prime tower is enabled." +msgstr "" +"Очистка сопла после смены материала будет производиться в поддержку модели. " +"Это снижает количество отходов и сокращает время печати. Эта функция " +"работает только при включенной черновой башне." -msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colours of the objects will be mixed as a result. It will not take effect, unless the prime tower is enabled." -msgstr "Эта модель будет использоваться для очистки сопла после смены материала для его экономии и сокращения времени печати. В результате цвета будут смешиваться. Это не будет действовать, если не будет включена черновая башня." +msgid "" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Эта модель будет использоваться для очистки сопла после смены материала для " +"его экономии и сокращения времени печати. В результате цвета будут " +"смешиваться. Это не будет действовать, если не будет включена черновая башня." msgid "Maximal bridging distance" msgstr "Максимальное длина моста" msgid "Maximal distance between supports on sparse infill sections." -msgstr "Максимальное расстояние между опорами на разряженных участках заполнения." +msgstr "" +"Максимальное расстояние между опорами на разряженных участках заполнения." msgid "X-Y hole compensation" msgstr "Коррекция размеров отверстий по XY" -msgid "Holes of object will be grown or shrunk in XY plane by the configured value. Positive value makes holes bigger. Negative value makes holes smaller. This function is used to adjust size slightly when the object has assembling issue" -msgstr "Отверстия модели будут увеличены или уменьшены в плоскости XY на заданное значение. Положительное значение увеличивает отверстия, отрицательное - уменьшает. Эта функция используется для небольшой корректировки размера, когда возникают проблемы со сборкой." +msgid "" +"Holes of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes holes bigger. Negative value makes holes smaller. This " +"function is used to adjust size slightly when the object has assembling issue" +msgstr "" +"Отверстия модели будут увеличены или уменьшены в плоскости XY на заданное " +"значение. Положительное значение увеличивает отверстия, отрицательное - " +"уменьшает. Эта функция используется для небольшой корректировки размера, " +"когда возникают проблемы со сборкой." msgid "X-Y contour compensation" msgstr "Коррекция размеров модели по XY" -msgid "Contour of object will be grown or shrunk in XY plane by the configured value. Positive value makes contour bigger. Negative value makes contour smaller. This function is used to adjust size slightly when the object has assembling issue" -msgstr "Параметр отвечает за смещение границы контура печатаемой модели в плоскости XY на заданное значение. Положительное значение увеличивает контур. Отрицательное значение уменьшает контур. Эта функция используется для небольшой корректировки размера, когда возникают проблемы со сборкой." +msgid "" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" +msgstr "" +"Параметр отвечает за смещение границы контура печатаемой модели в плоскости " +"XY на заданное значение. Положительное значение увеличивает контур. " +"Отрицательное значение уменьшает контур. Эта функция используется для " +"небольшой корректировки размера, когда возникают проблемы со сборкой." + +# ??? +# Преобразование отверстий в многограннники +msgid "Convert holes to polyholes" +msgstr "Многогранные отверстия" + +# ??? +# Поиск отверстий близких к кругу в двух или более слоях +# Расчёт многогранного отверстия вычисляется по диаметру сопла. +msgid "" +"Search for almost-circular holes that span more than one layer and convert " +"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " +"compute the polyhole.\n" +"See http://hydraraptor.blogspot.com/2011/02/polyholes.html" +msgstr "" +"Поиск цилиндрических отверстий в двух или более слоях и преобразование их " +"геометрии в многогранники. Для расчёта многогранного отверстия используется " +"размер сопла и наибольший диаметр найденного отверстия.\n" +"Подробнее на http://hydraraptor.blogspot.com/2011/02/polyholes.html" + +# ??? +# Предел обнаружения многогранного отверстия +msgid "Polyhole detection margin" +msgstr "Предел обнаружения" + +#, fuzzy, c-format, boost-format +msgid "" +"Maximum defection of a point to the estimated radius of the circle.\n" +"As cylinders are often exported as triangles of varying size, points may not " +"be on the circle circumference. This setting allows you some leway to " +"broaden the detection.\n" +"In mm or in % of the radius." +msgstr "" +"Максимальное отклонение точки от расчётного радиуса окружности.\n" +"Поскольку цилиндры часто экспортируются в виде треугольников разного " +"размера, точки могут находиться не на окружности круга. Эта настройка " +"позволяет в некоторой степени расширить эту область обнаружения.\n" +"Значение задаётся в мм или в процентах от радиуса." + +msgid "Polyhole twist" +msgstr "Скручивание многогранника" + +msgid "Rotate the polyhole every layer." +msgstr "Вращение многогранного отверстия на каждом слое." msgid "G-code thumbnails" msgstr "Эскизы G-кода" -msgid "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ...\"" -msgstr "Размеры изображения, которые будут сохранены в файлах .sl1 / .sl1s в следующем формате: \"XxY, XxY, ...\"" +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" +msgstr "" +"Размеры изображения, которые будут сохранены в файлах .sl1 / .sl1s в " +"следующем формате: \"XxY, XxY, ...\"" + +msgid "Format of G-code thumbnails" +msgstr "Формат эскизов G-кода" + +msgid "" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" +msgstr "" +"Формат эскизов G-кода: PNG для наилучшего качества, JPG для наименьшего " +"размера, QOI для прошивки с малым объемом памяти." msgid "Use relative E distances" msgstr "Исп. относительные координаты для экструдера" -msgid "Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is always enabled on BambuLab printers. Default is checked" +msgid "" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is always enabled on " +"BambuLab printers. Default is checked" msgstr "" -"Относительная экструзия рекомендуется при использовании опции «Название моделей».\n" +"Относительная экструзия рекомендуется при использовании опции «Название " +"моделей».\n" "\n" -"Черновая башня совместима только с относительной экструзией. На принтерах BambuLab она всегда включена (флажок стоит).\n" -"Некоторые экструдеры работают лучше при отключении этой опции (абсолютный режим экструзии)." +"Черновая башня совместима только с относительной экструзией. На принтерах " +"BambuLab она всегда включена (флажок стоит).\n" +"Некоторые экструдеры работают лучше при отключении этой опции (абсолютный " +"режим экструзии)." -msgid "Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-fill. Arachne engine produces walls with variable extrusion width" -msgstr "Движок классического генератора периметров создаёт их с постоянной шириной экструзии, а для очень тонких участков используется параметр «Заполнение пробелов». Движок Arachne же создает периметры с переменной шириной экструзии." +msgid "" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" +msgstr "" +"Движок классического генератора периметров создаёт их с постоянной шириной " +"экструзии, а для очень тонких участков используется параметр «Заполнение " +"пробелов». Движок Arachne же создает периметры с переменной шириной " +"экструзии." msgid "Classic" msgstr "Классический" @@ -8507,64 +11373,122 @@ msgstr "Arachne" msgid "Wall transition length" msgstr "Длина перехода к периметру" -msgid "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter" -msgstr "При переходе между разным количеством периметров по мере того, как деталь становится тоньше, выделяется определенное пространство для разделения или соединения линий периметров. Выражается в процентах от диаметра сопла." +msgid "" +"When transitioning between different numbers of walls as the part becomes " +"thinner, a certain amount of space is allotted to split or join the wall " +"segments. It's expressed as a percentage over nozzle diameter" +msgstr "" +"При переходе между разным количеством периметров по мере того, как деталь " +"становится тоньше, выделяется определенное пространство для разделения или " +"соединения линий периметров. Выражается в процентах от диаметра сопла." msgid "Wall transitioning filter margin" msgstr "Поле фильтра при переходе между периметрами" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large extrusion width variation can lead to under- or " -"overextrusion problems. It's expressed as a percentage over nozzle diameter" +"Prevent transitioning back and forth between one extra wall and one less. " +"This margin extends the range of extrusion widths which follow to [Minimum " +"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " +"margin reduces the number of transitions, which reduces the number of " +"extrusion starts/stops and travel time. However, large extrusion width " +"variation can lead to under- or overextrusion problems. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Предотвращает переход туда и обратно между одним лишним периметром и одним недостающим. Это поле расширяет диапазон значений ширины экструзии, который определяется как [Минимальная ширина периметра - Поле, 2 * Минимальная ширина периметра + Поле]. Расширение этого поля позволяет сократить количество переходов, что в свою очередь позволяет сократить количество запусков/остановок экструдирования " -"и время перемещения. Однако большой разброс значений ширины экструзии может привести к проблемам недо/переэкструзии материала. Если задано в процентах, то расчёт производится относительно диаметра сопла." +"Предотвращает переход туда и обратно между одним лишним периметром и одним " +"недостающим. Это поле расширяет диапазон значений ширины экструзии, который " +"определяется как [Минимальная ширина периметра - Поле, 2 * Минимальная " +"ширина периметра + Поле]. Расширение этого поля позволяет сократить " +"количество переходов, что в свою очередь позволяет сократить количество " +"запусков/остановок экструдирования и время перемещения. Однако большой " +"разброс значений ширины экструзии может привести к проблемам недо/" +"переэкструзии материала. Если задано в процентах, то расчёт производится " +"относительно диаметра сопла." msgid "Wall transitioning threshold angle" msgstr "Пороговый угол перехода между периметрами" -msgid "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude" +msgid "" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" msgstr "" -"Когда требуется создавать переходы между чётным и нечётным количеством периметров. Клиновидная форма с углом, превышающим этот параметр, не будет иметь переходов, и периметры не будут напечатаны в центре для заполнения оставшегося пространства. Уменьшение значения этого параметра позволяет сократить количество и длину этих центральных периметров, но при этом могут остаться зазоры или произойти " -"чрезмерное экструдирование." +"Когда требуется создавать переходы между чётным и нечётным количеством " +"периметров. Клиновидная форма с углом, превышающим этот параметр, не будет " +"иметь переходов, и периметры не будут напечатаны в центре для заполнения " +"оставшегося пространства. Уменьшение значения этого параметра позволяет " +"сократить количество и длину этих центральных периметров, но при этом могут " +"остаться зазоры или произойти чрезмерное экструдирование." msgid "Wall distribution count" msgstr "Счётчик распределений по периметрам" -msgid "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width" -msgstr "Количество периметров, отсчитываемое от центра, на которые необходимо распространить изменения. Более низкое значение означает, что ширина внешних периметров не изменяется." +msgid "" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" +msgstr "" +"Количество периметров, отсчитываемое от центра, на которые необходимо " +"распространить изменения. Более низкое значение означает, что ширина внешних " +"периметров не изменяется." msgid "Minimum feature size" msgstr "Минимальный размер элемента" -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 wall width. It's expressed as a percentage over nozzle diameter" -msgstr "Минимальная толщина тонких элементов. Элементы модели, которые тоньше этого значения, не будут напечатаны, в то время как элементы, толщина которых превышает «Минимальный размер элемента», будут расширены до минимальной ширины периметра. Выражается в процентах от диаметра сопла." +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 wall width. It's expressed as a " +"percentage over nozzle diameter" +msgstr "" +"Минимальная толщина тонких элементов. Элементы модели, которые тоньше этого " +"значения, не будут напечатаны, в то время как элементы, толщина которых " +"превышает «Минимальный размер элемента», будут расширены до минимальной " +"ширины периметра. Выражается в процентах от диаметра сопла." msgid "First layer minimum wall width" msgstr "Минимальная ширина периметра первого слоя" -msgid "The minimum wall width that should be used for the first layer is recommended to be set to the same size as the nozzle. This adjustment is expected to enhance adhesion." -msgstr "Минимальная ширина периметра, используемая для печати первого слоя. Значение рекомендуется устанавливать равным диаметру сопла. Ожидается, что такая регулировка повышает адгезию." +msgid "" +"The minimum wall width that should be used for the first layer is " +"recommended to be set to the same size as the nozzle. This adjustment is " +"expected to enhance adhesion." +msgstr "" +"Минимальная ширина периметра, используемая для печати первого слоя. Значение " +"рекомендуется устанавливать равным диаметру сопла. Ожидается, что такая " +"регулировка повышает адгезию." msgid "Minimum wall width" msgstr "Минимальная ширина периметра" -msgid "Width of the wall that will replace thin features (according to the Minimum feature size) of the model. If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as the feature itself. It's expressed as a percentage over nozzle diameter" -msgstr "Ширина периметра, которая заменит тонкие элементы (в соответствии с минимальным размера элемента) модели. Если минимальная ширина периметра меньше толщины элемента, толщина периметра будет приведена к толщине самого элемента. Если задано в процентах, то значение вычисляться относительно диаметра сопла." +msgid "" +"Width of the wall that will replace thin features (according to the Minimum " +"feature size) of the model. If the Minimum wall width is thinner than the " +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" +msgstr "" +"Ширина периметра, которая заменит тонкие элементы (в соответствии с " +"минимальным размера элемента) модели. Если минимальная ширина периметра " +"меньше толщины элемента, толщина периметра будет приведена к толщине самого " +"элемента. Если задано в процентах, то значение вычисляться относительно " +"диаметра сопла." msgid "Detect narrow internal solid infill" msgstr "Обнаруживать узкую область сплошного заполнения" -msgid "This option will auto detect narrow internal solid infill area. If enabled, concentric pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is used defaultly." -msgstr "Этот параметр автоматически определяет узкую внутреннюю область сплошного заполнения. Если включено, для ускорения печати будет использоваться концентрический шаблон. В противном случае по умолчанию используется прямолинейный шаблон." +msgid "" +"This option will auto detect narrow internal solid infill area. If enabled, " +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." +msgstr "" +"Этот параметр автоматически определяет узкую внутреннюю область сплошного " +"заполнения. Если включено, для ускорения печати будет использоваться " +"концентрический шаблон. В противном случае по умолчанию используется " +"прямолинейный шаблон." msgid "invalid value " msgstr "недопустимое значение " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " не работает при 100%% заполнении " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Недопустимое значение при включенном режиме спиральной вазы: " @@ -8574,160 +11498,62 @@ msgstr "слишком большая ширина экструзии " msgid " not in range " msgstr " вне диапазона " -msgid "Export 3MF" -msgstr "Экспорт в 3MF" +msgid "Minimum save" +msgstr "Минимальное сохранение" -msgid "Export project as 3MF." -msgstr "Экспортировать проект в 3MF." - -msgid "Export slicing data" -msgstr "Экспорт данных нарезки" - -msgid "Export slicing data to a folder." -msgstr "Экспорт данных нарезки в папку." - -msgid "Load slicing data" -msgstr "Загрузка данных нарезки" - -msgid "Load cached slicing data from directory" -msgstr "Загружать кэшированные данные нарезки из папки" - -msgid "Export STL" -msgstr "Экспорт в STL" - -msgid "Export the objects as multiple STL." -msgstr "Экспорт моделей как несколько STL." - -msgid "Slice" -msgstr "Нарезать" - -msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -msgstr "Нарезка столов: 0 - все столы, i - стол i, остальные - недопустимы" - -msgid "Show command help." -msgstr "Показать справку по командам." - -msgid "UpToDate" -msgstr "Актуальная версия" - -msgid "Update the configs values of 3mf to latest." -msgstr "Обновить значения конфигурации для 3mf до актуальных." - -msgid "Load default filaments" -msgstr "Загрузка материалов по умолчанию" - -msgid "Load first filament as default for those not loaded" -msgstr "Использовать первый материал по умолчанию, если не загружен другой" - -msgid "mtcpp" -msgstr "mtcpp" - -msgid "max triangle count per plate for slicing." -msgstr "максимальное количество треугольников на стол при нарезке." - -msgid "mstpp" -msgstr "mstpp" - -msgid "max slicing time per plate in seconds." -msgstr "максимальное время нарезки на стол в секундах." +msgid "export 3mf with minimum size." +msgstr "экспорт 3mf файла с минимальным размером." msgid "No check" msgstr "Без проверки" msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "Не запускать никакие проверки валидности, такие как проверка на конфликт путей в G-коде." +msgstr "" +"Не запускать никакие проверки валидности, такие как проверка на конфликт " +"путей в G-коде." -msgid "Normative check" -msgstr "Нормативная проверка" +msgid "Ensure on bed" +msgstr "Обеспечивать размещение на столе" -msgid "Check the normative items." -msgstr "Проверка соответствия модели определенным нормативным требованиям." +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" +msgstr "" +"Поднимает модель над столом, когда она частично находится ниже его уровня. " +"По умолчанию отключено." -msgid "Output Model Info" -msgstr "Информация о выходной модели" +msgid "Orient Options" +msgstr "Параметры ориентации" -msgid "Output the model's information." -msgstr "Вывод информации о модели." +msgid "Orient options: 0-disable, 1-enable, others-auto" +msgstr "" +"Параметры ориентации: 0 - отключить, 1 - включить, другие - автоматически" -msgid "Export Settings" -msgstr "Экспорт настроек" +msgid "Rotation angle around the Z axis in degrees." +msgstr "Угол поворота вокруг оси Z в градусах." -msgid "Export settings to a file." -msgstr "Экспорт настроек в файл." +msgid "Rotate around Y" +msgstr "Поворот вокруг оси Y" -msgid "Send progress to pipe" -msgstr "Отправить информацию о прогрессе" - -msgid "Send progress to pipe." -msgstr "Отправить информацию о прогрессе." - -msgid "Arrange Options" -msgstr "Параметры расстановки" - -msgid "Arrange options: 0-disable, 1-enable, others-auto" -msgstr "Параметры расстановки: 0 - отключить, 1 - включить, другие - автоматически" - -# ??? -msgid "Repetions count" -msgstr "Количество повторений" - -# ??? -msgid "Repetions count of the whole model" -msgstr "Количество повторений для всей модели" - -msgid "Convert Unit" -msgstr "Преобразовать единицу измерения" - -msgid "Convert the units of model" -msgstr "Преобразование единиц измерения модели" - -msgid "Orient the model" -msgstr "Ориентация модели" - -msgid "Scale the model by a float factor" -msgstr "Масштабирование модели с помощью коэффициента." - -msgid "Load General Settings" -msgstr "Загрузка общих настроек" - -msgid "Load process/machine settings from the specified file" -msgstr "Загрузка настроек процесса/принтера из указанного файла" - -msgid "Load Filament Settings" -msgstr "Загрузка настроек материала" - -msgid "Load filament settings from the specified file list" -msgstr "Загрузка настроек пластиковой нити из указанного списка файлов" - -msgid "Skip Objects" -msgstr "Исключить модели" - -msgid "Skip some objects in this print" -msgstr "Пропустить некоторые модели в этом печати" - -msgid "load uptodate process/machine settings when using uptodate" -msgstr "Загрузить последние настройки процесса/принтера при использовании актуальной версии" - -msgid "load uptodate process/machine settings from the specified file when using uptodate" -msgstr "Загружать последние настройки процесса/принтера из указанного файла при использовании актуальной версии" +msgid "Rotation angle around the Y axis in degrees." +msgstr "Угол поворота вокруг оси Y в градусах." msgid "Data directory" msgstr "Папка конфигурации пользователя" -msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." -msgstr "Загрузка и сохранение настроек будет производиться в заданную папку. Это полезно для сохранения различных профилей или конфигураций из сетевого хранилища." +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Загрузка и сохранение настроек будет производиться в заданную папку. Это " +"полезно для сохранения различных профилей или конфигураций из сетевого " +"хранилища." -msgid "Output directory" -msgstr "Папка для сохранения" +msgid "Load custom gcode" +msgstr "Загрузить пользовательский G-код" -msgid "Output directory for the exported files." -msgstr "Папка для сохранения экспортируемых файлов." - -msgid "Debug level" -msgstr "Уровень отладки" - -msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" -msgstr "Задаёт параметр чувствительности записи событий в журнал. \\\"0: Неустранимая ошибка, 1: Ошибка, 2: Предупреждение, 3: Информация, 4: Отладка, 5: Трассировка\n" +msgid "Load custom gcode from json" +msgstr "Загрузить пользовательской G-код из json" msgid "Error in zip archive" msgstr "Ошибка с zip-архивом" @@ -8760,7 +11586,9 @@ msgid "large overhangs" msgstr "большая области нависания" #, c-format, boost-format -msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." msgstr "" "Похоже, что у модели %s имеются замечания - %s. \n" "Переориентируйте её или включите генерацию поддержки." @@ -8768,24 +11596,25 @@ msgstr "" msgid "Optimizing toolpath" msgstr "Оптимизация траектории инструмента" -msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "Пустые слои обнаруженные на дне модели были заменены ближайшими нормальными слоями." - -msgid "The model has too many empty layers." -msgstr "Модель имеет слишком много пустых слоев." - msgid "Slicing mesh" msgstr "Нарезка сетки" -msgid "No layers were detected. You might want to repair your STL file(s) or check their size or thickness and retry.\n" -msgstr "Слоёв не обнаружено. Возможно, требуется починить STL файл(ы) или проверить размер/толщину и повторить попытку.\n" +msgid "" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" +msgstr "" +"Слоёв не обнаружено. Возможно, требуется починить STL файл(ы) или проверить " +"размер/толщину и повторить попытку.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-painted.\n" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"Коррекция горизонтальных размеров модели не будет действовать, поскольку для этой модели была выполнена операция окрашивания.\n" -"Коррекция горизонтальных размеров модели не может использоваться в сочетании с функцией раскрашивания." +"Коррекция горизонтальных размеров модели не будет действовать, поскольку для " +"этой модели была выполнена операция окрашивания.\n" +"Коррекция горизонтальных размеров модели не может использоваться в сочетании " +"с функцией раскрашивания." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -8818,8 +11647,11 @@ msgstr "Поддержка: ремонт отверстий на слое %d" msgid "Support: propagate branches at layer %d" msgstr "Поддержка: построение ветвей на слое %d" -msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, *.amf(.xml)." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, " +"*.amf(.xml)." msgid "Loading of a model file failed." msgstr "Не удалось загрузить файл модели." @@ -8828,7 +11660,9 @@ msgid "The supplied file couldn't be read because it's empty" msgstr "Предоставленный файл не может быть прочитан, так как он пуст." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." -msgstr "Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *.zip.amf." +msgstr "" +"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *." +"zip.amf." msgid "Canceled" msgstr "Отменено" @@ -8881,14 +11715,13 @@ msgstr "Калибровка" msgid "Finish" msgstr "Завершить" -msgid "Wiki" -msgstr "Вики-сайт" - msgid "How to use calibration result?" msgstr "Как использовать результаты калибровки?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" -msgstr "Коэффициент калибровки динамики потока можно изменить в настройках материала." +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" +msgstr "" +"Коэффициент калибровки динамики потока можно изменить в настройках материала." msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -8900,6 +11733,12 @@ msgstr "" msgid "Calibration not supported" msgstr "Калибровка не поддерживается" +msgid "Error desc" +msgstr "Описание ошибки" + +msgid "Extra info" +msgstr "Доп. информация" + msgid "Flow Dynamics" msgstr "Динамика потока" @@ -8915,12 +11754,26 @@ msgstr "Введите имя, который хотите сохранить н msgid "The name cannot exceed 40 characters." msgstr "Максимальная длина имени 40 символов." +#, c-format, boost-format +msgid "" +"Please input valid values:\n" +"Start value: >= %.1f\n" +"End value: <= %.1f\n" +"End value: > Start value\n" +"Value step: >= %.3f)" +msgstr "" +"Введите допустимое значение:\n" +"Начальное: >= %.1f\n" +"Конечное: <= %.1f\n" +"Конечное: > Начальное\n" +"Шаг: >= %.3f)" + msgid "The name cannot be empty." msgstr "Имя не может быть пустым." -#, boost-format -msgid "The selected preset: %1% is not found." -msgstr "Выбранный профиль: %1% не найден." +#, c-format, boost-format +msgid "The selected preset: %s is not found." +msgstr "" msgid "The name cannot be the same as the system preset name." msgstr "Имя не должно совпадать с именем системного профиля." @@ -8931,8 +11784,11 @@ msgstr "Имя совпадает с именем другого существ msgid "create new preset failed." msgstr "не удалось создать новый профиль." -msgid "Are you sure to cancel the current calibration and return to the home page?" -msgstr "Вы уверены, что хотите отменить текущую калибровку и вернуться на главную страницу?" +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" +msgstr "" +"Вы уверены, что хотите отменить текущую калибровку и вернуться на главную " +"страницу?" msgid "No Printer Connected!" msgstr "Принтер не подключён!" @@ -8943,6 +11799,9 @@ msgstr "Принтер ещё не подключен." msgid "Please select filament to calibrate." msgstr "Пожалуйста, выберите пруток для калибровки." +msgid "The input value size must be 3." +msgstr "Размер входного значения должен быть равен 3." + msgid "Connecting to printer..." msgstr "Подключение к принтеру..." @@ -8961,9 +11820,6 @@ msgstr "Выберите хотя бы один пруток для калибр msgid "Flow rate calibration result has been saved to preset" msgstr "Результат калибровки динамики потока был сохранён в профиль" -msgid "The input value size must be 3." -msgstr "Размер входного значения должен быть равен 3." - msgid "Max volumetric speed calibration result has been saved to preset" msgstr "Результат калибровки максимальной объёмной скорости сохранен в профиль" @@ -8971,15 +11827,24 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "В каких случаях необходима калибровка динамики потока" msgid "" -"We now have added the auto-calibration for different filaments, which is fully automated and the result will be saved into the printer for future use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is " +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the filament setting." +"3. If the max volumetric speed or print temperature is changed in the " +"filament setting." msgstr "" -"Мы добавили функцию автоматической калибровки для различных материалов, которая полностью автоматизирована, а результат калибровки сохраняется в принтере для дальнейшего использования. Калибровка требуется только в следующих ограниченных случаях:\n" -"1. При использовании нового материала другого производителя/типа или при отсыревании материала;\n" +"Мы добавили функцию автоматической калибровки для различных материалов, " +"которая полностью автоматизирована, а результат калибровки сохраняется в " +"принтере для дальнейшего использования. Калибровка требуется только в " +"следующих ограниченных случаях:\n" +"1. При использовании нового материала другого производителя/типа или при " +"отсыревании материала;\n" "2. При износе сопла или его замене на новое;\n" -"3. При изменении в настройках материала максимальной объёмной скорости или температуры печати." +"3. При изменении в настройках материала максимальной объёмной скорости или " +"температуры печати." msgid "About this calibration" msgstr "О данном виде калибровки" @@ -8987,64 +11852,129 @@ msgstr "О данном виде калибровки" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow dynamics calibration\" option checked in the print start menu, the printer will follow the old way, calibrate the filament before the print; When you start a multi color/material print, the printer will use the default compensation parameter for the filament during every filament switch which " -"will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/" +"material print, with the \"flow dynamics calibration\" option checked in the " +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" -"Please note there are a few cases that will make the calibration result not reliable: using a texture plate to do the calibration; the build plate does not have good adhesion (please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" +"Please note there are a few cases that will make the calibration result not " +"reliable: using a texture plate to do the calibration; the build plate does " +"not have good adhesion (please wash the build plate or apply gluestick!) ..." +"You can find more from our wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may cause the result not exactly the same in each calibration. We are still investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may " +"cause the result not exactly the same in each calibration. We are still " +"investigating the root cause to do improvements with new updates." msgstr "" -"Подробную информацию про калибровку динамики потока можно найти на нашем вики-сайте.\n" +"Подробную информацию про калибровку динамики потока можно найти на нашем " +"вики-сайте.\n" "\n" "При обычных обстоятельствах калибровка не требуется. \n" -"Если при запуске печати одним цветом/материалом в меню запуска печати отмечена опция «Калибровка динамики потока», то калибровка пластиковой нити будет производится старым способом. \n" -"При запуске печати несколькими цветами/материалами, принтер будет использовать параметр компенсации по умолчанию для материала при каждой его смене, что в большинстве случаев позволяет получить хороший результат.\n" +"Если при запуске печати одним цветом/материалом в меню запуска печати " +"отмечена опция «Калибровка динамики потока», то калибровка пластиковой нити " +"будет производится старым способом. \n" +"При запуске печати несколькими цветами/материалами, принтер будет " +"использовать параметр компенсации по умолчанию для материала при каждой его " +"смене, что в большинстве случаев позволяет получить хороший результат.\n" "\n" -"Обратите внимание, что есть несколько случаев, когда результат калибровки будет недостоверным. Это использование для калибровки текстурированной печатной пластины и когда у печатной пластины плохая адгезия с материалом. Более подробную информацию можно найти на нашем вики-сайте.\n" +"Обратите внимание, что есть несколько случаев, когда результат калибровки " +"будет недостоверным. Это использование для калибровки текстурированной " +"печатной пластины и когда у печатной пластины плохая адгезия с материалом. " +"Более подробную информацию можно найти на нашем вики-сайте.\n" "\n" -"По нашим тестам, результаты калибровки имеют погрешность примерно 10%, что может приводить к разным результатам при каждой калибровке. Мы продолжаем выяснять причину, чтобы улучшить ситуацию в новых обновлениях." +"По нашим тестам, результаты калибровки имеют погрешность примерно 10%, что " +"может приводить к разным результатам при каждой калибровке. Мы продолжаем " +"выяснять причину, чтобы улучшить ситуацию в новых обновлениях." msgid "When to use Flow Rate Calibration" msgstr "В каких случаях необходима калибровка скорости потока" msgid "" -"After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion " +"issues, such as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or " +"zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." msgstr "" -"После проведения калибровки динамики потока всё ещё могут возникать некоторые проблемы с экструзией, такие как:\n" -"1. Избыточная экструзия. Это приводит к образованию на модели капель или сгустков, слои кажутся толще и неравномерными, чем ожидалось.\n" -"2. Недоэкструзия. Очень тонкие слои, слабая прочность заполнения или пробелы на верхнем слое модели, даже при медленной печати.\n" -"3. Низкое качество поверхности. Поверхность деталей кажется шероховатой или неровной.\n" -"4. Слабая конструкционная прочность. Напечатанное легко ломается или кажется не таким прочным, как должно быть." - -msgid "In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate." -msgstr "Кроме того, калибровка скорости потока крайне важна для вспенивающихся материалов, таких как LW-PLA, используемых при печати деталей для радиоуправляемых самолетов. Эти материалы сильно расширяются при нагревании, а калибровка позволяет получить эталонную скорости потока." +"После проведения калибровки динамики потока всё ещё могут возникать " +"некоторые проблемы с экструзией, такие как:\n" +"1. Избыточная экструзия. Это приводит к образованию на модели капель или " +"сгустков, слои кажутся толще и неравномерными, чем ожидалось.\n" +"2. Недоэкструзия. Очень тонкие слои, слабая прочность заполнения или пробелы " +"на верхнем слое модели, даже при медленной печати.\n" +"3. Низкое качество поверхности. Поверхность деталей кажется шероховатой или " +"неровной.\n" +"4. Слабая конструкционная прочность. Напечатанное легко ломается или кажется " +"не таким прочным, как должно быть." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the listed defects after you have done other calibrations. For more details, please check " -"out the wiki article." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" +"PLA used in RC planes. These materials expand greatly when heated, and " +"calibration provides a useful reference flow rate." msgstr "" -"Калибровка скорости потока измеряет соотношение ожидаемого и фактического объёмов экструзии. На принтерах Bambu Lab с официальными материалами, стандартные настройки работают хорошо, так как они были предварительно откалиброваны и тщательно настроены. Для обычного материала обычно не требуется выполнять калибровку скорости потока, если только после выполнения других калибровок вы всё ещё видите " -"перечисленные дефекты. Более подробную информацию можно найти на нашем вики-сайте." +"Кроме того, калибровка скорости потока крайне важна для вспенивающихся " +"материалов, таких как LW-PLA, используемых при печати деталей для " +"радиоуправляемых самолетов. Эти материалы сильно расширяются при нагревании, " +"а калибровка позволяет получить эталонную скорости потока." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this " -"calibration and can produce less-than-desirable results.\n" -"\n" -"The calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\n" -"\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it." +"Flow Rate Calibration measures the ratio of expected to actual extrusion " +"volumes. The default setting works well in Bambu Lab printers and official " +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" -"Автоматическая калибровка скорости потока использует технологию микролидара Bambu Lab, непосредственно измеряя калибровочные шаблоны. Однако имейте ввиду, что эффективность и точность этого метода может быть снижена при использовании определенных типов материалов. В частности, прозрачные или полупрозрачные материалы, материалы с блестящими частицами или с высокоотражающим покрытием могут не " -"подойти для данной калибровки и привести к нежелательным результатам.\n" +"Калибровка скорости потока измеряет соотношение ожидаемого и фактического " +"объёмов экструзии. На принтерах Bambu Lab с официальными материалами, " +"стандартные настройки работают хорошо, так как они были предварительно " +"откалиброваны и тщательно настроены. Для обычного материала обычно не " +"требуется выполнять калибровку скорости потока, если только после выполнения " +"других калибровок вы всё ещё видите перечисленные дефекты. Более подробную " +"информацию можно найти на нашем вики-сайте." + +msgid "" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" +"\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" +"\n" +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before doing it." +msgstr "" +"Автоматическая калибровка скорости потока использует технологию микролидара " +"Bambu Lab, непосредственно измеряя калибровочные шаблоны. Однако имейте " +"ввиду, что эффективность и точность этого метода может быть снижена при " +"использовании определенных типов материалов. В частности, прозрачные или " +"полупрозрачные материалы, материалы с блестящими частицами или с " +"высокоотражающим покрытием могут не подойти для данной калибровки и привести " +"к нежелательным результатам.\n" "\n" "\n" -"Результаты калибровки могут различаться от калибровки к калибровке или от материала к материалу. Мы продолжаем улучшать точность и совместимость этой калибровки путем обновления прошивки принтера.\n" +"Результаты калибровки могут различаться от калибровки к калибровке или от " +"материала к материалу. Мы продолжаем улучшать точность и совместимость этой " +"калибровки путем обновления прошивки принтера.\n" "\n" -"Внимание: калибровка скорости потока - это сложный процесс, к которому следует прибегать только тем, кто полностью понимает её назначение и последствия. Неправильное использование может привести к некачественной печати или повреждению принтера. Пожалуйста, внимательно прочитайте и поймите суть процесса, прежде чем приступать к его выполнению." +"Внимание: калибровка скорости потока - это сложный процесс, к которому " +"следует прибегать только тем, кто полностью понимает её назначение и " +"последствия. Неправильное использование может привести к некачественной " +"печати или повреждению принтера. Пожалуйста, внимательно прочитайте и " +"поймите суть процесса, прежде чем приступать к его выполнению." msgid "When you need Max Volumetric Speed Calibration" msgstr "В каких случаях необходима калибровка максимальной объемной скорости" @@ -9053,10 +11983,13 @@ msgid "Over-extrusion or under extrusion" msgstr "Избыточная или недостаточная экструзия" msgid "Max Volumetric Speed calibration is recommended when you print with:" -msgstr "Калибровка максимальной объёмной скорости рекомендуется при печати с использованием:" +msgstr "" +"Калибровка максимальной объёмной скорости рекомендуется при печати с " +"использованием:" msgid "material with significant thermal shrinkage/expansion, such as..." -msgstr "материалов со значительной термической усадкой/расширением, например..." +msgstr "" +"материалов со значительной термической усадкой/расширением, например..." msgid "materials with inaccurate filament diameter" msgstr "материалов с неточным диаметром пластиковой нити" @@ -9064,25 +11997,46 @@ msgstr "материалов с неточным диаметром пласти msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Мы нашли лучший коэффициент калибровки динамики потока" -msgid "Part of the calibration failed! You may clean the plate and retry. The failed test result would be dropped." -msgstr "Часть калибровки выполнена неудачно! Вы можете очистить печатную пластину и повторить попытку. Результат неудачного теста будет удалён." +msgid "" +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." +msgstr "" +"Часть калибровки выполнена неудачно! Вы можете очистить печатную пластину и " +"повторить попытку. Результат неудачного теста будет удалён." -msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" -msgstr "*Мы рекомендуем добавить к названию материала, производителя, тип и даже уровень влажности" +msgid "" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" +msgstr "" +"*Мы рекомендуем добавить к названию материала, производителя, тип и даже " +"уровень влажности" msgid "Failed" msgstr "Неудачно" -msgid "Only one of the results with the same name will be saved. Are you sure you want to overrides the other results?" -msgstr "Будет сохранен только один из результатов с таким же именем. Вы уверены, что хотите перезаписать другие результаты?" +msgid "" +"Only one of the results with the same name will be saved. Are you sure you " +"want to overrides the other results?" +msgstr "" +"Будет сохранен только один из результатов с таким же именем. Вы уверены, что " +"хотите перезаписать другие результаты?" #, c-format, boost-format -msgid "There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to overrides the historical result?" -msgstr "Результат калибровки с таким именем уже существует: %s. Будет сохранён только один результат с таким же именем. Вы уверены, что хотите перезаписать текущий результат?" +msgid "" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to overrides the historical result?" +msgstr "" +"Результат калибровки с таким именем уже существует: %s. Будет сохранён " +"только один результат с таким же именем. Вы уверены, что хотите перезаписать " +"текущий результат?" msgid "Please find the best line on your plate" msgstr "Пожалуйста, найдите лучшую линию на столе" +msgid "Please find the cornor with perfect degree of extrusion" +msgstr "Пожалуйста, найдите угол с идеальной степенью экструзии" + msgid "Input Value" msgstr "Входное значение" @@ -9147,8 +12101,12 @@ msgstr "Точная калибровка на основе коэффициен msgid "Title" msgstr "Заголовок" -msgid "A test model will be printed. Please clear the build plate and place it back to the hot bed before calibration." -msgstr "Будет напечатана тестовая модель. Перед калибровкой очистите печатную пластину и установите её обратно на нагреваемый стол." +msgid "" +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." +msgstr "" +"Будет напечатана тестовая модель. Перед калибровкой очистите печатную " +"пластину и установите её обратно на нагреваемый стол." msgid "Printing Parameters" msgstr "Параметры печати" @@ -9178,13 +12136,14 @@ msgid "" msgstr "" "Советы по выбору материала для калибровки: \n" "- Материалы, которые имеют близкие значения температуры нагреваемого стола\n" -"- Различные марки и семейства расходных материалов (Производитель = Bambu, семейство = Basic - базовый, Matte - матовый)" +"- Различные марки и семейства расходных материалов (Производитель = Bambu, " +"семейство = Basic - базовый, Matte - матовый)" -msgid "Error desc" -msgstr "Описание ошибки" +msgid "Pattern" +msgstr "Шаблон" -msgid "Extra info" -msgstr "Доп. информация" +msgid "Method" +msgstr "Метод" #, c-format, boost-format msgid "%s is not compatible with %s" @@ -9196,6 +12155,21 @@ msgstr "Автоматическая калибровка динамики по msgid "Connecting to printer" msgstr "Подключением к принтеру" +msgid "From k Value" +msgstr "Начальное значение коэф. K" + +msgid "To k Value" +msgstr "Конечное значение коэф. K" + +msgid "Step value" +msgstr "Шаг" + +msgid "0.5" +msgstr "0.5" + +msgid "0.005" +msgstr "0.005" + msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "Диаметр сопла был синхронизирован с настройками принтера" @@ -9255,114 +12229,6 @@ msgstr "" "Существует несколько IP-адресов, соответствующих имени хоста %1%.\n" "Пожалуйста, выберите тот, который хотите использовать." -msgid "Unable to perform boolean operation on selected parts" -msgstr "Невозможно выполнить булевую операцию над выбранными элементами." - -msgid "Mesh Boolean" -msgstr "Булевы операции" - -msgid "Union" -msgstr "Объединение" - -msgid "Difference" -msgstr "Разность" - -msgid "Intersection" -msgstr "Пересечение" - -msgid "Source Volume" -msgstr "Исходный объём" - -# ??? -msgid "Tool Volume" -msgstr "" - -msgid "Subtract from" -msgstr "Главный" - -msgid "Subtract with" -msgstr "Вычитаемый" - -msgid "selected" -msgstr "выбрано" - -msgid "Part 1" -msgstr "Элемент 1" - -msgid "Part 2" -msgstr "Элемент 2" - -msgid "Delete input" -msgstr "Удалить исходные" - -msgid "Send G-Code to printer host" -msgstr "Отправить G-кода на хост принтера" - -msgid "Send to print" -msgstr "Отправить на печать" - -msgid "Upload to Printer Host with the following filename:" -msgstr "Загрузить на хост принтера со следующим именем:" - -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "В качестве разделителя каталогов используйте косую черту ( / ). " - -msgid "Upload to storage" -msgstr "Загрузить в хранилище" - -#, c-format, boost-format -msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" -msgstr "Имя загружаемого файла не заканчивается на \"%s\". Хотите продолжить?" - -msgid "Upload" -msgstr "Загрузить" - -msgid "Print host upload queue" -msgstr "Очередь загрузки на хост печати" - -msgid "ID" -msgstr "ID" - -msgid "Progress" -msgstr "Прогресс" - -msgid "Host" -msgstr "Хост" - -msgctxt "OfFile" -msgid "Size" -msgstr "Размер" - -msgid "Filename" -msgstr "Имя файла" - -msgid "Message" -msgstr "Сообщение" - -msgid "Error Message" -msgstr "Сообщение об ошибке" - -msgid "Cancel selected" -msgstr "Отменить выбранное" - -msgid "Show error message" -msgstr "Показать сообщение об ошибке" - -msgid "Enqueued" -msgstr "Поставлено в очередь" - -msgid "Uploading" -msgstr "Отправка" - -msgid "Cancelling" -msgstr "Отмена" - -msgid "Error uploading to print host" -msgstr "Ошибка при отправке на хост печати" - -msgid "Error uploading to print host:" -msgstr "Ошибка при отправке на хост печати:" - msgid "PA Calibration" msgstr "Калибровка PA" @@ -9384,9 +12250,6 @@ msgstr "Линии" msgid "PA Pattern" msgstr "Шаблон" -msgid "Method" -msgstr "Метод" - msgid "Start PA: " msgstr "Начальный коэффициент PA: " @@ -9468,12 +12331,14 @@ msgstr "Шаг изменения: " msgid "" "Please input valid values:\n" -"start > 0 step >= 0\n" +"start > 0 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введите допустимые значения:\n" -"start > 0 step >= 0\n" -"end > start + step)" +"Введите допустимое значение:\n" +"Начальное > 0\n" +"Шаг >= 0\n" +"Конечное > Начальное + Шаг" msgid "VFA test" msgstr "Тест на вертикальные артефакты (VFA)" @@ -9486,12 +12351,14 @@ msgstr "Конечная скорость: " msgid "" "Please input valid values:\n" -"start > 10 step >= 0\n" +"start > 10 \n" +"step >= 0\n" "end > start + step)" msgstr "" -"Введите допустимые значения:\n" -"start > 10 step >= 0\n" -"end > start + step)" +"Введите допустимое значение:\n" +"Начальное > 10\n" +"Шаг >= 0\n" +"Конечное > Начальное + Шаг" msgid "Start retraction length: " msgstr "Начальная длина отката: " @@ -9502,15 +12369,623 @@ msgstr "Конечная длина отката: " msgid "mm/mm" msgstr "мм/мм" +msgid "Send G-Code to printer host" +msgstr "Отправить G-кода на хост принтера" + +msgid "Upload to Printer Host with the following filename:" +msgstr "Загрузить на хост принтера со следующим именем:" + +msgid "Use forward slashes ( / ) as a directory separator if needed." +msgstr "В качестве разделителя каталогов используйте косую черту ( / ). " + +msgid "Upload to storage" +msgstr "Загрузить в хранилище" + +#, c-format, boost-format +msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" +msgstr "Имя загружаемого файла не заканчивается на \"%s\". Хотите продолжить?" + +msgid "Upload" +msgstr "Загрузить" + +msgid "Print host upload queue" +msgstr "Очередь загрузки на хост печати" + +msgid "ID" +msgstr "ID" + +msgid "Progress" +msgstr "Прогресс" + +msgid "Host" +msgstr "Хост" + +msgctxt "OfFile" +msgid "Size" +msgstr "Размер" + +msgid "Filename" +msgstr "Имя файла" + +msgid "Cancel selected" +msgstr "Отменить выбранное" + +msgid "Show error message" +msgstr "Показать сообщение об ошибке" + +msgid "Enqueued" +msgstr "Поставлено в очередь" + +msgid "Uploading" +msgstr "Отправка" + +msgid "Cancelling" +msgstr "Отмена" + +msgid "Error uploading to print host" +msgstr "Ошибка при отправке на хост печати" + +msgid "Unable to perform boolean operation on selected parts" +msgstr "Невозможно выполнить булевую операцию над выбранными элементами." + +msgid "Mesh Boolean" +msgstr "Булевы операции" + +msgid "Union" +msgstr "Объединение" + +msgid "Difference" +msgstr "Разность" + +msgid "Intersection" +msgstr "Пересечение" + +msgid "Source Volume" +msgstr "Исходный объём" + +# ??? +msgid "Tool Volume" +msgstr "" + +msgid "Subtract from" +msgstr "Главный" + +msgid "Subtract with" +msgstr "Вычитаемый" + +msgid "selected" +msgstr "выбрано" + +msgid "Part 1" +msgstr "Элемент 1" + +msgid "Part 2" +msgstr "Элемент 2" + +msgid "Delete input" +msgstr "Удалить исходные" + +msgid "Network Test" +msgstr "Проверка сети" + +msgid "Start Test Multi-Thread" +msgstr "Запуск многопоточного теста" + +msgid "Start Test Single-Thread" +msgstr "Запуск однопоточного теста" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "Версия программы:" + +msgid "System Version:" +msgstr "Версия ОС:" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "Тест BambuLab" + +msgid "Test BambuLab:" +msgstr "Тест BambuLab:" + +msgid "Test Bing.com" +msgstr "Тест Bing.com" + +msgid "Test bing.com:" +msgstr "Тест bing.com:" + +msgid "Test HTTP" +msgstr "Тест HTTP" + +msgid "Test HTTP Service:" +msgstr "Тест HTTP сервера:" + +msgid "Test storage" +msgstr "Тест накопителя" + +msgid "Test Storage Upload:" +msgstr "Тест накопителя (отправка):" + +msgid "Test storage upgrade" +msgstr "Тест накопителя (обновление)" + +msgid "Test Storage Upgrade:" +msgstr "Тест накопителя (обновление):" + +msgid "Test storage download" +msgstr "Тест накопителя (загрузка)" + +msgid "Test Storage Download:" +msgstr "Тест накопителя (загрузка):" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "Тест накопителя (отправка)" + +msgid "Log Info" +msgstr "Журнал сведений" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Нужно выбрать принтер" + +msgid "The start, end or step is not valid value." +msgstr "Недопустимое значение: начальное, конечное или шаг." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Невозможно выполнить калибровку: возможно, установленный диапазон значений " +"калибровки слишком велик или шаг слишком мал." + msgid "Physical Printer" msgstr "Физический принтер" msgid "Print Host upload" msgstr "Загрузка на хост печати" -msgid "Test" -msgstr "Тест" - msgid "Could not get a valid Printer Host reference" msgstr "Не удалось получить действительную ссылку на хост принтера" @@ -9520,8 +12995,12 @@ msgstr "Успешно!" msgid "Refresh Printers" msgstr "Обновить принтеры" -msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." -msgstr "Файл корневого сертификата HTTPS не обязателен. Он необходим только при использовании HTTPS с самоподписанным сертификатом." +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Файл корневого сертификата HTTPS не обязателен. Он необходим только при " +"использовании HTTPS с самоподписанным сертификатом." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Файлы сертификатов (*.crt, *.pem)|*.crt;*.pem|Все файлы|*.*" @@ -9530,38 +13009,168 @@ msgid "Open CA certificate file" msgstr "Открыть файл корневого сертификата" #, c-format, boost-format -msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." -msgstr "В этой системе %s использует HTTPS сертификаты из системного хранилища сертификатов/Keychain." +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"В этой системе %s использует HTTPS сертификаты из системного хранилища " +"сертификатов/Keychain." -msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "Чтобы использовать пользовательский файл корневого сертификата, импортируйте его в хранилище сертификатов/Keychain." +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Чтобы использовать пользовательский файл корневого сертификата, импортируйте " +"его в хранилище сертификатов/Keychain." msgid "Connection to printers connected via the print host failed." msgstr "Не удалось подключиться к принтерам, подключенным через хост печати." -#: resources/data/hints.ini: [hint:3D Scene Operations] -msgid "" -"3D Scene Operations\n" -"Did you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "Соединение с AstroBox успешно установлено." + +msgid "Could not connect to AstroBox" +msgstr "Не удалось подключиться к AstroBox" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "Соединение с Duet успешно установлено." + +msgid "Could not connect to Duet" +msgstr "Не удалось подключиться к Duet" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "Не удаётся подключиться к FlashAir" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "Подключение к MKS успешно установлено." + +msgid "Could not connect to MKS" +msgstr "Не удалось подключиться к MKS" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "Примечание: требуется версия OctoPrint не ниже 1.1.0." + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "Подключение к PrusaLink установлено." + +msgid "Could not connect to PrusaLink" +msgstr "Не удалось подключиться к PrusaLink" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "Подключение к Repetier успешно установлено." + +msgid "Could not connect to Repetier" +msgstr "Не удалось подключиться к Repetier" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] +msgid "" +"How to use keyboard shortcuts\n" +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." msgstr "" -"Операции с 3D-сценой\n" -"Знаете ли вы, как управлять видом и выбором модели/части с помощью мыши и сенсорной панели в 3D-сцене?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the cutting tool?" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" msgstr "" "Режущий инструмент\n" -"Знаете ли вы, что можно разрезать модель под любым углом с помощью режущего инструмента?" +"Знаете ли вы, что можно разрезать модель под любым углом с помощью режущего " +"инструмента?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems on the Windows system?" msgstr "" -"Починка модели\n" -"Знаете ли вы, что можно починить повреждённую модель, чтобы избежать множества проблем при нарезке?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -9582,140 +13191,203 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" msgstr "" "Автоориентация\n" -"Знаете ли вы, что можно повернуть модели в оптимальную для печати ориентацию простым щелчком мыши?" +"Знаете ли вы, что можно повернуть модели в оптимальную для печати ориентацию " +"простым щелчком мыши?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." msgstr "" "Поверхностью на стол\n" -"Знаете ли вы, что можно быстро сориентировать модель так, чтобы одна из её граней лежала на столе? Используйте функцию «Поверхностью на стол» или нажмите клавишу F." +"Знаете ли вы, что можно быстро сориентировать модель так, чтобы одна из её " +"граней лежала на столе? Используйте функцию «Поверхностью на стол» или " +"нажмите клавишу F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" msgstr "" "Список моделей\n" -"Знаете ли вы, что можно просматривать все модели/части в списке и изменять настройки для каждой из них?" +"Знаете ли вы, что можно просматривать все модели/части в списке и изменять " +"настройки для каждой из них?" + +#: resources/data/hints.ini: [hint:Search Functionality] +msgid "" +"Search Functionality\n" +"Did you know that you use the Search tool to quickly find a specific Orca " +"Slicer setting?" +msgstr "" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model. Read more in the documentation." +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model. Read " +"more in the documentation." msgstr "" "Упростить сетку модели\n" -"Знаете ли вы, что можно уменьшить количество треугольников в полигональной сетке, используя функцию упрощения сетки? Щелкните правой кнопкой мыши на модели и выберите «Упростить полигональную сетку». Подробнее читайте в документации." +"Знаете ли вы, что можно уменьшить количество треугольников в полигональной " +"сетке, используя функцию упрощения сетки? Щелкните правой кнопкой мыши на " +"модели и выберите «Упростить полигональную сетку». Подробнее читайте в " +"документации." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" msgstr "" "Таблица параметров нарезки\n" -"Знаете ли вы, что можно просмотреть все модели/части в таблице и изменить параметры печати для каждой из них?" +"Знаете ли вы, что можно просмотреть все модели/части в таблице и изменить " +"параметры печати для каждой из них?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy colorizing or printing?" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" msgstr "" "Разделение на модели/части\n" -"Знаете ли вы, что можно разделить большую модель на маленькие для удобства раскрашивания или печати?" +"Знаете ли вы, что можно разделить большую модель на маленькие для удобства " +"раскрашивания или печати?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer. Read more in the documentation." +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer. Read more in the documentation." msgstr "" "Вычитание объёмов\n" -"Знаете ли вы, что можно вычесть одну сетку из другой с помощью модификатора «Объём для вычитания»? Таким образом, например, отверстия в модели можно создавать непосредственно в Orca Slicer. Подробнее читайте в документации." +"Знаете ли вы, что можно вычесть одну сетку из другой с помощью модификатора " +"«Объём для вычитания»? Таким образом, например, отверстия в модели можно " +"создавать непосредственно в Orca Slicer. Подробнее читайте в документации." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" msgstr "" "STEP\n" -"Знаете ли вы, что можно улучшить качество печати, используя STEP файлы вместо STL?\n" -"Orca Slicer поддерживает нарезку STEP файлов, что обеспечивает более точное представление геометрии, чем при нарезке STL файлов." +"Знаете ли вы, что можно улучшить качество печати, используя STEP файлы " +"вместо STL?\n" +"Orca Slicer поддерживает нарезку STEP файлов, что обеспечивает более точное " +"представление геометрии, чем при нарезке STL файлов." #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" msgstr "" "Позиция шва\n" -"Знаете ли вы, что можно изменить расположение шва и даже нарисовать его на модели, чтобы он был менее заметен? Это улучшает общий вид модели. Попробуйте это!" +"Знаете ли вы, что можно изменить расположение шва и даже нарисовать его на " +"модели, чтобы он был менее заметен? Это улучшает общий вид модели. " +"Попробуйте это!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Точная настройка потока\n" -"Знаете ли вы, что поток можно точно настроить для получения ещё более качественной печати? В зависимости от материала можно внести некоторые корректировки, чтобы улучшить общее качество печати." +"Знаете ли вы, что поток можно точно настроить для получения ещё более " +"качественной печати? В зависимости от материала можно внести некоторые " +"корректировки, чтобы улучшить общее качество печати." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." msgstr "" "Распределение печатаемого на другие столы\n" -"Знаете ли вы, что модель, состоящую из большого количества частей, можно распределить на несколько столов? Это упрощает процесс отслеживания всех деталей при печати." +"Знаете ли вы, что модель, состоящую из большого количества частей, можно " +"распределить на несколько столов? Это упрощает процесс отслеживания всех " +"деталей при печати." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" msgstr "" "Ускорение печати с функцией «Переменная высота слоёв»\n" -"Знаете ли вы, что можно печатать ещё быстрее, используя функцию «Переменная высота слоёв». Попробуйте!" +"Знаете ли вы, что можно печатать ещё быстрее, используя функцию «Переменная " +"высота слоёв». Попробуйте!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Рисование поддержек\n" -"Знаете ли вы, что можно прямо на модели рисовать где будет размещаться принудительная поддержка, а где поддержка будет заблокирована? Используйте для этого функцию «Рисование поддержек»." +"Знаете ли вы, что можно прямо на модели рисовать где будет размещаться " +"принудительная поддержка, а где поддержка будет заблокирована? Используйте " +"для этого функцию «Рисование поддержек»." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" msgstr "" "Различные типы поддержек\n" -"Знаете ли вы, что можно выбрать один из нескольких типов поддержек? Древовидная поддержка отлично подходит для органических моделей, экономя при этом материал, уменьшая время печати." +"Знаете ли вы, что можно выбрать один из нескольких типов поддержек? " +"Древовидная поддержка отлично подходит для органических моделей, экономя при " +"этом материал, уменьшая время печати." #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." msgstr "" "Печать блестящей пластиковой нитью\n" -"Знаете ли вы, что блестящая пластиковая нить требует особого внимания для успешной печати? Для достижения наилучшего результата рекомендуется более высокая температура и более низкая скорость печати." +"Знаете ли вы, что блестящая пластиковая нить требует особого внимания для " +"успешной печати? Для достижения наилучшего результата рекомендуется более " +"высокая температура и более низкая скорость печати." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" msgstr "" "Кайма для лучшей адгезии\n" -"Знаете ли вы, что при печати модели имеющей небольшой контакт с поверхностью стола, рекомендуется использовать кайму?" +"Знаете ли вы, что при печати модели имеющей небольшой контакт с поверхностью " +"стола, рекомендуется использовать кайму?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at one time?" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" msgstr "" "Задание параметров для нескольких моделей\n" -"Знаете ли вы, что можно задать параметры нарезки сразу для всех выбранных моделей?" +"Знаете ли вы, что можно задать параметры нарезки сразу для всех выбранных " +"моделей?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -9723,1222 +13395,891 @@ msgid "" "Did you know that you can stack objects as a whole one?" msgstr "" "Объединение моделей\n" -"Знаете ли вы, что можно объединить несколько моделей в единую? Используйте для этого команду «Объединить в сборку», выбрав несколько моделей." +"Знаете ли вы, что можно объединить несколько моделей в единую? Используйте " +"для этого команду «Объединить в сборку», выбрав несколько моделей." #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" msgstr "" "Очистка в поддержку/модель/заполнение\n" -"Знаете ли вы, что при смене пластиковой нити, можно сохранить материал, который иначе попал бы на черновую башню, сбросив его в поддержку/модель/заполнение?" +"Знаете ли вы, что при смене пластиковой нити, можно сохранить материал, " +"который иначе попал бы на черновую башню, сбросив его в поддержку/модель/" +"заполнение?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" msgstr "" "Увеличение прочности\n" -"Знаете ли вы, что для повышения прочности модели можно увеличить количество периметров и плотность заполнения?" +"Знаете ли вы, что для повышения прочности модели можно увеличить количество " +"периметров и плотность заполнения?" -msgid "Left Preset Value" -msgstr "Значение в левом профиле" - -msgid "Right Preset Value" -msgstr "Значение в правом профиле" - -msgid "Undef category" -msgstr "Неопределённая категория" - -msgid "Undef group" -msgstr "Неопределённая группа" - -msgid "Retraction Length (Toolchange)" -msgstr "Длина отката (при смене инструмента)" - -msgid "Flow Dynamic" -msgstr "Динамика потока" - -msgid "A fatal error occurred: %1%" -msgstr "Произошла фатальная ошибка: %1%" - -msgid "Record" -msgstr "Запись" - -msgid "Report issue" -msgstr "Сообщить о проблеме" - -msgid "Connection to OctoPrint/Klipper works correctly." -msgstr "Соединение с OctoPrint/Klipper успешно установлено." - -msgid "Could not connect to OctoPrint/Klipper" -msgstr "Не удаётся подключиться к OctoPrint/Klipper" - -msgid "Connection to FlashAir works correctly." -msgstr "Соединение с FlashAir успешно установлено." - -msgid "Could not connect to FlashAir" -msgstr "Не удаётся подключиться к FlashAir" - -msgid "Connection to Duet works correctly." -msgstr "Соединение с Duet успешно установлено." - -msgid "Could not connect to Duet" -msgstr "Не удалось подключиться к Duet" - -msgid "Connection to AstroBox works correctly." -msgstr "Соединение с AstroBox успешно установлено." - -msgid "Could not connect to AstroBox" -msgstr "Не удалось подключиться к AstroBox" - -msgid "Connection to Repetier works correctly." -msgstr "Подключение к Repetier успешно установлено." - -msgid "Could not connect to Repetier" -msgstr "Не удалось подключиться к Repetier" - -msgid "Connection to MKS works correctly." -msgstr "Подключение к MKS успешно установлено." - -msgid "Could not connect to MKS" -msgstr "Не удалось подключиться к MKS" - -msgid "Connection to PrusaLink works correctly." -msgstr "Подключение к PrusaLink установлено." - -msgid "Could not connect to PrusaLink" -msgstr "Не удалось подключиться к PrusaLink" - -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Примечание: требуется версия OctoPrint не ниже 1.1.0." - -msgid "Connection refused" -msgstr "Соединение запрещено" - -msgid "Failed to connect to %s port %ld: %s" -msgstr "Не удалось подключиться к порту %s %ld: %s" - -msgid "Couldn't connect to server" -msgstr "Не удалось подключиться к серверу" - -msgid "Couldn't resolve host '%s'" -msgstr "Не удаётся определить имя хоста '%s'" - -msgid "Suggestion" -msgstr "Совет" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it." -msgstr "Компонент BambuSource неправильно зарегистрирован для воспроизведения мультимедиа! Нажмите «Да», чтобы перерегистрировать его." - -msgid "Missing BambuSource component registered for media playing! Please re-install BambuStutio or seek after-sales help." -msgstr "Отсутствует компонент BambuSource, зарегистрированный для воспроизведения мультимедиа! Пожалуйста, переустановите BambuStutio или обратитесь в поддержку." - -msgid "Test storage" -msgstr "Тест накопителя" - -msgid "Test BambuLab" -msgstr "Тест BambuLab" - -msgid "Test BambuLab:" -msgstr "Тест BambuLab:" - -msgid "Test Bing.com" -msgstr "Тест Bing.com" - -msgid "Test bing.com:" -msgstr "Тест bing.com:" - -msgid "Test HTTP" -msgstr "Тест HTTP" - -msgid "Test HTTP Service:" -msgstr "Тест HTTP сервера:" - -msgid "Test storage upgrade" -msgstr "Тест накопителя (обновление)" - -msgid "Test Storage Upgrade:" -msgstr "Тест накопителя (обновление):" - -msgid "Test Storage Upload" -msgstr "Тест накопителя (отправка)" - -msgid "Test Storage Upload:" -msgstr "Тест накопителя (отправка):" - -msgid "Test storage download" -msgstr "Тест накопителя (загрузка)" - -msgid "Test Storage Download:" -msgstr "Тест накопителя (загрузка):" - -msgid "Log Info" -msgstr "Журнал сведений" - -msgid "Studio Version:" -msgstr "Версия программы:" - -msgid "System Version:" -msgstr "Версия ОС:" - -msgid "Start Test Multi-Thread" -msgstr "Запуск многопоточного теста" - -msgid "Start Test Single-Thread" -msgstr "Запуск однопоточного теста" - -msgid "Network Test" -msgstr "Проверка сети" - -msgid "Multimaterial" -msgstr "Экструдер ММ" - -msgid "Single extruder multimaterial setup" -msgstr "Мультиматериальный одиночный экструдер" - -msgid "Single Extruder Multi Material" -msgstr "Мультиматериальный одиночный экструдер" - -msgid "Use single nozzle to print multi filament" -msgstr "Использование одной экструзионной головы для печати несколькими видами/цветами пластика." - -msgid "Wipe tower" -msgstr "Черновая башня" - -msgid "Purge in prime tower" -msgstr "Очистка в черновую башню" - -msgid "Purge remaining filament into prime tower" -msgstr "Очистка сопла от остатков материала в черновую башню" - -msgid "Enable filament ramming" -msgstr "Включить рэмминг прутка" - -msgid "No sparse layers (EXPERIMENTAL)" -msgstr "Отсутствие разреженных слоёв (экспериментально)" - -msgid "If enabled, the wipe tower will not be printed on layers with no toolchanges. On layers with a toolchange, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Если этот параметр включён, черновая башня не будет печататься на слоях где не происходит смена инструмента. На слоях, где происходит смена инструмента, экструдер будет опускаться вниз до верхней части черновой башни, чтобы напечатать её. Эта функция помечена как экспериментальная, поэтому пользователь несёт ответственность за то, чтобы не допустить столкновения экструдера с напечатанным." - -msgid "Prime all printing extruders" -msgstr "Подготовка всех печатающих экструдеров" - -msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." -msgstr "Если этот параметр включён, все печатающие экструдеры в начале печати будут подготавливаться на переднем крае стола." - -msgid "Single extruder multimaterial parameters" -msgstr "Параметры мультиматериального одиночного экструдера" - -msgid "Cooling tube position" -msgstr "Позиция охлаждающей трубки" - -msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Расстояние между центральной точкой охлаждающей трубки и кончиком экструдера." - -msgid "Cooling tube length" -msgstr "Длина охлаждающей трубки" - -msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "Длина охлаждающей трубки для ограничения перемещения при охлаждающих движениях." - -msgid "Filament parking position" -msgstr "Положение парковки прутка" - -msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." -msgstr "Расстояние от кончика экструдера до точки, где размещается пруток при выгрузке. Расстояние должно соответствовать значению в прошивке принтера." - -msgid "Extra loading distance" -msgstr "Дополнительная длина загрузки" - -msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading." -msgstr "Если установлено 0, то расстояние, которое проходит пруток при перемещении из положения парковки во время загрузки, точно такое же, как и при выгрузке. При положительном значении, она загружается дальше; при отрицательном, ход загрузки короче (по сравнению с выгрузкой)." - -msgid "High extruder current on filament swap" -msgstr "Повышение тока экструдера при замене прутка" - -msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." -msgstr "Это может быть полезно для увеличения тока двигателя экструдера во время замены прутка, чтобы быстро увеличить скорость подачи и преодолеть сопротивление при загрузке прутка с плохой формой кончика." - -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Параметры смены инструмента в одноэкструдерных мультиматериальных принтерах" - -msgid "Toolchange parameters with multi extruder MM printers" -msgstr "Параметры смены инструмента в мультиэкструдерных мультиматериальных принтерах" - -msgid "Ramming settings" -msgstr "Настройки рэмминга" - -msgid "Loading speed" -msgstr "Скорость загрузки" - -msgid "Speed used for loading the filament on the wipe tower." -msgstr "Скорость загрузки прутка при печати черновой башни." - -msgid "Loading speed at the start" -msgstr "Начальная скорость загрузки" - -msgid "Speed used at the very beginning of loading phase." -msgstr "Скорость в начальной фазе загрузки прутка." - -msgid "Unloading speed" -msgstr "Скорость выгрузки" - -msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." -msgstr "Скорость выгрузки прутка на черновую башню. (не влияет на начальную фазу выгрузки сразу после рэмминга)." - -msgid "Unloading speed at the start" -msgstr "Начальная скорость выгрузки" - -msgid "Speed used for unloading the tip of the filament immediately after ramming." -msgstr "Скорость выгрузки кончика прутка сразу после рэмминга." - -msgid "Delay after unloading" -msgstr "Задержка после выгрузки" - -msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions." -msgstr "Время ожидания после выгрузки прутка. Это может помочь вам легко сменить сопло при печати гибкими материалами, которым требуется больше времени, чтобы вернуться к своим первоначальным размерам." - -msgid "Wipe tower parameters" -msgstr "Параметры черновой башни" - -#: src/libslic3r/PrintConfig.cpp:1048 -msgid "Number of cooling moves" -msgstr "Количество охлаждающих движений" - -msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." -msgstr "Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. Укажите желаемое количество таких движений." - -msgid "Speed of the first cooling move" -msgstr "Скорость первого охлаждающего движения" - -msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "Охлаждающие движения постепенно ускоряются, начиная с этой скорости." - -msgid "Speed of the last cooling move" -msgstr "Скорость последнего охлаждающего движения" - -msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "Охлаждающие движения постепенно ускоряют до этой скорости." - -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает пруток во время смены инструмента (при выполнении кода Т). Это время добавляется к общему времени печати с помощью алгоритма оценки времени выполнения G-кода." - -msgid "Ramming parameters" -msgstr "Параметры рэмминга" - -msgid "This string is edited by RammingDialog and contains ramming specific parameters." -msgstr "Эта строка редактируется диалоговым окном рэмминга и содержит его конкретные параметры." - -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает пруток во время смены инструмента (при выполнении кода Т). Это время добавляется к общему времени печати с помощью алгоритма оценки времени выполнения G-кода." - -msgid "Enable ramming for multitool setups" -msgstr "Включить рэмминг для мультиинструментальных устройств" - -msgid "Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). When checked, a small amount of filament is rapidly extruded on the wipe tower just before the toolchange. This option is only used when the wipe tower is enabled." -msgstr "Выполнять рэмминг при использовании мультиинструментального принтера (т. е. когда в настройках принтера снят флажок «Мультиматериальный одиночный экструдер»). При включении этой опции, небольшое количество материала быстро выдавливается на черновую башню непосредственно перед сменой инструмента. Эта опция используется только в том случае, если включена черновая башня." - -msgid "Multitool ramming volume" -msgstr "Объём рэмминга мультиинструмента" - -msgid "The volume to be rammed before the toolchange." -msgstr "Объём рэмминга перед сменой инструмента." - -msgid "Multitool ramming flow" -msgstr "Поток рэмминга мультиинструмента" - -msgid "Flow used for ramming the filament before the toolchange." -msgstr "Поток рэмминга пластиковой нити перед сменой инструмента." - -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates " -"during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "" -"Рэмминг (ramming, дословно утрамбовка) означает быстрое экструдирование непосредственно перед сменой инструмента в одноэкструдерном мультиматериальном принтере. Цель процесса состоит в том, чтобы правильно сформировать конец выгружаемого прутка, чтобы он не препятствовал вставке нового прутка или этого же прутка, вставленного позже. Эта фаза важна и разные материалы могут потребовать разных " -"скоростей экструзии, чтобы получить хорошую форму. По этой причине скорость экструзии во время рэмминга регулируется.\n" -"\n" -"Эта опция для опытных пользователей, неправильная настройка может привести к замятию, протиранию прутка приводом экструдера и т.д." - -msgid "Total ramming time" -msgstr "Общее время рэмминга" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:118 -msgid "Total rammed volume" -msgstr "Общий объём при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:122 -msgid "Ramming line width" -msgstr "Ширина линии при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:124 -msgid "Ramming line spacing" -msgstr "Расстояние между линиями при рэмминге" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:175 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Черновая башня - регулировка объёма сброса пластика" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:301 -msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." -msgstr "Здесь вы можете отрегулировать требуемый объём очистки (мм³) для любой пары инструментов." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:302 -msgid "Extruder changed to" -msgstr "Экструдер перешёл на - " - -#: src/slic3r/GUI/WipeTowerDialog.cpp:354 -msgid "Tool #" -msgstr "Инструмент #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:363 -msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." -msgstr "Общий объём прочистки вычисляется путём суммирования двух нижеуказанных значений, в зависимости от того, какие инструменты предзагружены/выгружены." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:364 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Объём прочистки (мм³) при выдавливании прутка" - -msgid "Volumetric speed" -msgstr "Объёмная скорость потока" - -msgid "Tip Diameter" -msgstr "Диаметр кончика ветки" - -#. TRN PrintSettings: "Organic supports" > "Tip Diameter" -msgid "Branch tip diameter for organic supports." -msgstr "Диаметр кончика ветки органической поддержки." - -#: src/libslic3r/PrintConfig.cpp:2952 -msgid "Branch Diameter" -msgstr "Диаметр ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "The diameter of the thinnest branches of organic support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." -msgstr "Диаметр самых тонких ветвей органической поддержки. Чем толще ветви, тем они крепче. Ветви, идущие к основанию, будут утолщаться." - -msgid "Branch Diameter Angle" -msgstr "Угол изменения диаметра ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" -msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support." -msgstr "Угол изменения диаметра ветвей по мере их постепенного утолщения к основанию. Если значение угла равно 0, ветви будут иметь одинаковую толщину по всей своей длине. Небольшой угол может повысить устойчивость органической поддержки." - -#: src/libslic3r/PrintConfig.cpp:2978 -msgid "Branch Diameter with double walls" -msgstr "Диаметр ветвей с двойными стенками" - -#. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "Branches with area larger than the area of a circle of this diameter will be printed with double walls for stability. Set this value to zero for no double walls." -msgstr "Ветви, толщина которых больше указанного диаметра, будут напечатаны с двойными стенками для прочности. Установите 0, если двойные стенки у ветвей не нужны." - -msgid "Branch Distance" -msgstr "Расстояние между ветками" - -#. TRN PrintSettings: "Organic supports" > "Branch Distance" -msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." -msgstr "Указывает, насколько далеко друг от друга должны располагаться ветви при касании модели. Если задать небольшое расстояние, то увеличится количество точек, в которых древовидная поддержка касается модели. Это улучшит печать нависаний, но при этом усложнит удаление поддержки." - -#: src/libslic3r/PrintConfig.cpp:3004 -msgid "Branch Density" -msgstr "Плотность ветвей" - -#. TRN PrintSettings: "Organic supports" > "Branch Density" -msgid "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed." -msgstr "Регулирует плотность создания ветвей в месте контакта с моделью. Большее значение приводит к улучшению качества печати нависаний, но такие поддержки сложнее удалять, поэтому рекомендуется вместо высокого значения плотности ветвей включать связующие слои поддержки." - -# +++++++++++++++++++++ -msgid "Vertical" -msgstr "Вертикальная линия" - -msgid "Horizontal" -msgstr "Горизонтальная линия" - -msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" - -msgid "/" -msgstr "/" - -msgid "The printer does not currently support auto refill." -msgstr "В настоящее время принтер не поддерживает функцию автодозаправки." - -msgid "AMS filament backup is not enabled, please enable it in the AMS settings." -msgstr "Резервирование материала АСПП не включено, пожалуйста, включите его в настройках АСПП." - -msgid "" -"If there are two identical filaments in AMS, AMS filament backup will be enabled. \n" -"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" -msgstr "" -"При наличии в АСПП двух одинаковых материалов включается функция резервирования материала (автодозаправка). \n" -"(В настоящее время поддерживается автоматическая дозаправка материала только одного производителя, типа и цвета)" - -#, c-format, boost-format -msgid "Current chamber temperature is higher than the material's safe temperature,it may result in material softening and clogging.The maximum safe temperature for the material is %d" -msgstr "Текущая температура в камере превышает безопасную температуру для этого материала, что может привести к размягчению материала или засорению экструдера. Безопасная температура текущего материала составляет %d." - -msgid " But machines with I3 structure will not generate timelapse videos." -msgstr " Но принтеры с кинематикой I3 не будут писать таймлапс." - -msgid "Filament unloading" -msgstr "Выгрузка прутка" - -# ??? -msgid "Skip step pause" -msgstr "Пропуск команды паузы" - -msgid "Filament loading" -msgstr "Загрузка прутка" - -msgid "Motor noise calibration" -msgstr "Калибровка шума двигателя" - -msgid "Paused due to AMS lost" -msgstr "Печать приостановлена из-за потери связи с АСПП" - -msgid "Paused due to low speed of the heat break fan" -msgstr "Печать приостановлена из-за низкой скорости вращения вентилятора головы" - -msgid "Paused due to chamber temperature control error" -msgstr "Печать приостановлена из-за ошибки контроля температуры в камере" - -msgid "Cooling chamber" -msgstr "Охлаждение камеры" - -msgid "Paused by the Gcode inserted by user" -msgstr "Печать приостановлена G-кодом, вставленным пользователем" - -# Демонстрация шума двигателя -msgid "Motor noise showoff" -msgstr "Результат калибровки шума двигателя" - -msgid "The current chamber temperature or the target chamber temperature exceeds 45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." -msgstr "Текущая температура в камере или целевая температура в камере превышает 45℃. Чтобы избежать засорения экструдера, запрещается загрузка низкотемпературной печатной нити (PLA/PETG/TPU)." - -msgid "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder clogging,it is not allowed to set the chamber temperature above 45℃." -msgstr "В экструдер загружается низкотемпературная пластиковая нить (PLA/PETG/TPU). Чтобы избежать засорения экструдера, запрещается устанавливать температуру в камере выше 45℃." - -msgid "When you set the chamber temperature below 40℃, the chamber temperature control will not be activated. And the target chamber temperature will automatically be set to 0℃." -msgstr "Если вы установили температура в камере ниже 40℃, то контроль температуры в камере не запустится, а целевая температура в ней будет автоматически установлена на 0℃." - -msgid "This calibration does not support the currently selected nozzle diameter" -msgstr "Данная калибровка не поддерживает выбранный диаметр сопла" - -msgid "Current flowrate cali param is invalid" -msgstr "Текущая величина калибровки скорости потока недопустима" - -msgid "Selected diameter and machine diameter do not match" -msgstr "Выбранный диаметр и диаметр профиля принтера не совпадают" - -msgid "Failed to generate cali gcode" -msgstr "Не удалось сгенерировать калибровочный G-код" - -msgid "Align to Y axis" -msgstr "Выравнивать по оси Y" - -msgid "Vibration compensation" -msgstr "Компенсация вибрации" - -msgid "Motor noise cancellation" -msgstr "Шумоподавление двигателя" - -msgid "No step selected" -msgstr "Шаг не задан" - -msgid "" -"Another virtual camera is running.\n" -"Orca Slicer supports only a single virtual camera.\n" -"Do you want to stop this virtual camera?" -msgstr "" -"Уже работает одна виртуальная камера.\n" -"Orca Slicer поддерживает только одну виртуальную камеру.\n" -"Хотите остановить эту виртуальную камеру?" - -msgid "The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file." -msgstr "Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе Orca Slicer и экспортируйте новый файл .gcode.3mf." - -msgid "" -"You have completed printing the mall model, \n" -"but the synchronization of rating information has failed." -msgstr "" -"Вы завершили печать модели торгового центра, \n" -"но не удалось синхронизировать информацию о рейтинге." - -msgid "How do you like this printing file?" -msgstr "На сколько вы оцениваете этот напечатанный файл?" - -msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" -msgstr "(Модели уже присвоен рейтинг. Ваш рейтинг перезапишет предыдущий.)" - -msgid "Rate" -msgstr "Оценка" - -msgid "Rate the Print Profile" -msgstr "Оценить профиль печати" - -msgid "Comment" -msgstr "Комментарий" - -msgid "Rate this print" -msgstr "Оценить эту печать" - -msgid "Add Photo" -msgstr "Добавить фото" - -msgid "Delete Photo" -msgstr "Удалить фото" - -msgid "Submit" -msgstr "Отправить" - -msgid "Please click on the star first." -msgstr "Пожалуйста, сначала нажмите на звездочку." - -msgid "InFo" -msgstr "Информация" - -msgid "Get oss config failed." -msgstr "" -"Не удалось получить конфигурацию OSS.\n" -"\n" -"Ошибка получения конфигурации OSS." - -msgid "Upload Pictrues" -msgstr "Отправка изображений" - -msgid "Number of images successfully uploaded" -msgstr "Количество успешно загруженных изображений" - -msgid " upload failed" -msgstr " ошибка отправки" - -msgid " upload config prase failed\n" -msgstr " ошибка обработки конфигурации при отправке\n" - -# ??? -msgid " No corresponding storage bucket\n" -msgstr " Отсутствует хранилище данных\n" - -msgid " can not be opened\n" -msgstr " не удаётся открыть\n" - -msgid "" -"The following issues occurred during the process of uploading images. Do you want to ignore them?\n" -"\n" -msgstr "" -"В процессе загрузки изображений возникли следующие проблемы. Игнорировать их?\n" -"\n" - -msgid "Synchronizing the printing results. Please retry a few seconds later." -msgstr "Синхронизация результатов печати. Повторите попытку через несколько секунд." - -msgid "Upload failed\n" -msgstr "Ошибка отправки\n" - -msgid "obtaining instance_id failed\n" -msgstr "не удалось получить instance_id\n" - -msgid "" -"Your comment result cannot be uploaded due to some reasons. As follows:\n" -"\n" -" error code: " -msgstr "" -"Ваш комментарий не может быть отправлен по некоторым причинам. Причины:\n" -"\n" -"Код ошибки: " - -msgid "error message: " -msgstr "сообщение об ошибке: " - -msgid "" -"\n" -"\n" -"Would you like to redirect to the webpage for rating?" -msgstr "" -"\n" -"\n" -"Хотите перейти на страницу для выставления оценки?" - -msgid "Some of your images failed to upload. Would you like to redirect to the webpage for rating?" -msgstr "Некоторые из ваших изображений не удалось загрузить. Хотите перейти на страницу для выставления оценки?" - -msgid "You can select up to 16 images." -msgstr "Допускается выбор до 16 изображений." - -msgid "" -"At least one successful print record of this print profile is required \n" -"to give a positive rating(4 or 5stars)." -msgstr "Для выставления положительной оценки (4 или 5 звезд) требуется хотя бы одна успешная запись о печати данным профилем печати." - -msgid "Model file downloaded." -msgstr "Файл модели скачан." - -msgid "Allow Prompt Sound" -msgstr "Разрешить звуковые уведомления" - -msgid "Remove current plate (if not last one)" -msgstr "Удалить текущую печатную пластину (кроме последней)" - -msgid "Auto orient objects on current plate" -msgstr "Автоориентация моделей на текущей печатной пластине" - -msgid "Arrange objects on current plate" -msgstr "Расставить модели на текущей печатной пластине" - -msgid "Unlock current plate" -msgstr "Разблокировать текущую печатную пластину" - -msgid "Lock current plate" -msgstr "Заблокировать текущую печатную пластину" - -msgid "Customize current plate" -msgstr "Настроить текущую печатную пластину" - -msgid "The current hot bed temperature is relatively high. The nozzle may be clogged when printing this filament in a closed enclosure. Please open the front door and/or remove the upper glass." -msgstr "Текущая температура стола довольно высока. При печати этим материалом в закрытом корпусе возможно засорение сопла. Откройте переднюю дверцу и/или верхнюю крышку принтера." - -msgid "Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode." -msgstr "Включение обычного режима таймлапса может привести к появлению дефектов поверхности, поэтому рекомендуется изменить режим на плавный." - -msgid "Replace from:" -msgstr "Заменить из:" - -msgid "Unable to replace with more than one volume" -msgstr "Невозможно заменить более чем одним объём" - -msgid "Do you want to replace it" -msgstr "Хотите заменить его" - -msgid "Reload from:" -msgstr "Перезагрузка из:" - -msgid "Unable to reload:" -msgstr "Не удалось перезагрузить:" - -msgid "Error during reload" -msgstr "Ошибка во время перезагрузки" - -msgid "Importing to Orca Slicer failed. Please download the file and manually import it." -msgstr "Не удалось импортировать в Orca Slicer. Загрузите файл и импортируйте его вручную." - -msgid "Save SLA file as:" -msgstr "Сохранить SLA файл как:" - -msgid "The provided file name is not valid." -msgstr "Указано недопустимое имя файла." - -msgid "The following characters are not allowed by a FAT file system:" -msgstr "Следующие символы не разрешены файловой системой FAT:" - -msgid "Use free camera" -msgstr "Использовать свободную камеру" - -msgid "If enabled, use free camera. If not enabled, use constrained camera." -msgstr "Если включено, используется свободное вращение камеры. Если выключено, используется вращение камера с ограничениями." - -msgid "Bambu Engineering Plate" -msgstr "Инженерная пластина Bambu" - -msgid "Bambu Smooth PEI Plate" -msgstr "Гладкая PEI пластина Bambu" - -msgid "High temperature Plate" -msgstr "Высокотемпературная пластина" - -msgid "Bambu Textured PEI Plate" -msgstr "Текстурированная PEI пластина Bambu" - -msgid "Click here if you can't connect to the printer" -msgstr "Не удаётся подключиться к принтеру?" - -msgid "When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." -msgstr "При включении режима «Спиральная ваза» принтеры с кинематикой I3 не будут писать таймлапс." - -msgid "When print by object, machines with I3 structure will not generate timelapse videos." -msgstr "При печати по очереди, принтеры с кинематикой I3 не будут писать таймлапс." - -msgid "The printer is required to be in the same LAN as Orca Slicer." -msgstr "Принтер должен находиться в одной локальной сети с Orca Slicer." - -msgid "Print chamber temperature" -msgstr "Температура в термокамере" - -msgid "Smooth PEI Plate / High Temp Plate" -msgstr "Гладкая PEI/высокотемпер. пластина" - -msgid "Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means the filament does not support to print on the Smooth PEI Plate/High Temp Plate" -msgstr "Температура стола при установленной гладкой PEI/высокотемпературный печатной пластине. 0 означает, что пластиковая нить не поддерживает печать на этой печатной пластине." - -msgid "Exhaust fan" -msgstr "Вытяжной вентилятор" - -msgid "During print" -msgstr "Во время печати" - -msgid "Complete print" -msgstr "После завершения печати" - -msgid "Time lapse G-code" -msgstr "G-код таймлапса" - -msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." -msgstr "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Orca Slicer." - -msgid "New version of Orca Slicer" -msgstr "Доступна новая версия Orca Slicer" - -msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "Шаг 1. Пожалуйста, убедитесь, что Orca Slicer и ваш принтер находятся в одной локальной сети." - -msgid "Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion width" -msgstr "Для Flow::with_spacing () был указан недопустимый интервал. Проверьте высоту слоя и ширину экструзии." - -#, boost-format -msgid "The object %1% exceeds the maximum build volume height." -msgstr "Высота модели %1% превышает максимально допустимую." - -#, boost-format -msgid "While the object %1% itself fits the build volume, its last layer exceeds the maximum build volume height." -msgstr "Хотя сама модель %1% вписывается в область построения, её последний слой превышает максимальную высоту области построения." - -msgid "You might want to reduce the size of your model or change current print settings and retry." -msgstr "Попробуйте уменьшить размер модели или изменить текущие настройки печати и повторить попытку." - -msgid "Variable layer height is not supported with Organic supports." -msgstr "Функция переменной высоты слоя не совместима органическими поддержками." - -msgid "Elephant foot compensation layers" -msgstr "Компенсирующих слоёв «слоновьей ноги»" - -msgid "The number of layers on which the elephant foot compensation will be active. The first layer will be shrunk by the elephant foot compensation value, then the next layers will be linearly shrunk less, up to the layer indicated by this value." -msgstr "Количество слоёв, на которые будет распространяться компенсация слоновьей ноги. Первый слой будет уменьшен на величину компенсации слоновьей ноги с последующим линейным уменьшением до слоя, указанного здесь." - -# от Overhang reversal -# Реверс на нечётных слоях -msgid "Reverse on odd" -msgstr "Реверс на нависаниях" - -msgid "Overhang reversal" -msgstr "Реверс на нависаниях" - -msgid "Extrude perimeters that have a part over an overhang in the reverse direction on odd layers. This alternating pattern can drastically improve steep overhang." -msgstr "Печать периметров, имеющих нависания, в обратном направлении на нечётных слоях. Такое чередование может значительно улучшить качество печати крутых нависаний." - -# от Overhang reversal threshold -msgid "Reverse threshold" -msgstr "Порог для реверса" - -msgid "Overhang reversal threshold" -msgstr "Порог разворота на свесах" - -msgid "" -"Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width.\n" -"Value 0 enables reversal on every odd layers regardless." -msgstr "" -"Величина свеса периметра при которой она считается достаточной для активации функции реверса печати нависаний.\n" -"Может быть задано как в процентах, так и в миллиметрах от ширины периметра." - -# ??? Замедление печати на изогнутых периметров -msgid "Slow down for curled perimeters" -msgstr "Снижение скорости на изогнутых периметрах" - -msgid "Enable this option to slow printing down in areas where potential curled perimeters may exist" -msgstr "Включите эту опцию для замедления печати в тех областях, где потенциально могут возникать изогнутые периметры." - -msgid "Activate air filtration" -msgstr "Вкл. фильтрацию воздуха" - -msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" -msgstr "Активировать для лучшей фильтрации воздуха. G-код команда: M106 P3 S(0-255)" - -msgid "Speed of exhuast fan during printing.This speed will overwrite the speed in filament custom gcode" -msgstr "Скорость вытяжного вентилятора во время печати. Эта скорость будет переопределять скорость в пользовательском стартовом G-коде материала" - -msgid "Speed of exhuast fan after printing completes" -msgstr "Скорость вытяжного вентилятора после завершения печати" - -msgid "Softening temperature" -msgstr "Температура размягчения" - -msgid "The material softens at this temperature, so when the bed temperature is equal to or greater than it, it's highly recommended to open the front door and/or remove the upper glass to avoid cloggings." -msgstr "При этой температуре материал размягчается, поэтому, когда температура стола равна или превышает её, настоятельно рекомендуется открыть переднюю дверцу и/или верхнюю крышку принтера, чтобы избежать засорения сопла." - -msgid "Acceleration of initial layer. Using a lower value can improve build plate adhesive" -msgstr "Ускорение на первом слое. Использование более низкого значения может улучшить адгезию к столу." - -#, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) будет скорректировано на заданный процент ускорения." - -#, c-format, boost-format -msgid "%%" -msgstr "%%" - -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Небольшие промежутки меньше указанного порога не будут заполняться." - -msgid "Printer structure" -msgstr "Кинематика принтера" - -msgid "The physical arrangement and components of a printing device" -msgstr "Конструкция физического принтера" - -msgid "CoreXY" -msgstr "CoreXY" - -msgid "I3" -msgstr "I3" - -msgid "Hbot" -msgstr "Hbot" - -msgid "Delta" -msgstr "Delta" - -msgid "Best object position" -msgstr "Наилучшее расположение модели" - -msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." -msgstr "Наилучшее расположение модели при авторасстановке в диапазоне [0,1] относительно формы стола." - -msgid "Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 S(0-255)." -msgstr "" -"Если в принтере имеет вспомогательный вентилятор для охлаждения моделей, можете включить эту опцию. \n" -"G-код команда: M106 P2 S(0-255)." - -msgid "Time cost" -msgstr "Цена печати" - -msgid "The printer cost per hour" -msgstr "Стоимость печати в час." - -msgid "money/h" -msgstr "цена/ч" - -msgid "Support control chamber temperature" -msgstr "Контроль температуры в термокамере" - -msgid "" -"This option is enabled if machine support controlling chamber temperature\n" -"G-code command: M141 S(0-255)" -msgstr "" -"Если принтер поддерживает контроль температуры в камере, включите эту опцию.\n" -"G-код команда: M141 S(0-255)" - -msgid "Support air filtration" -msgstr "Фильтрация выдуваемого воздуха" - -msgid "" -"Enable this if printer support air filtration\n" -"G-code command: M106 P3 S(0-255)" -msgstr "" -"Если принтер поддерживает фильтрацию выдуваемого воздуха, включите эту опцию. \n" -"G-код команда: M106 P3 S(0-255)" - -msgid "The pattern that will be used when ironing" -msgstr "Шаблон по которому будет производиться разглаживание." - -msgid "Ironing angle" -msgstr "Угол разглаживания" - -msgid "The angle ironing is done at. A negative number disables this function and uses the default method." -msgstr "Выбор угла разглаживания. Отрицательное число отключает эту функцию и использует метод по умолчанию." - -# ??? -msgid "Extrusion rate smoothing" -msgstr "Сглаживание скорости экструзии" - -msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the printer transitions from printing a high flow (high speed/larger width) extrusion to a lower flow (lower speed/smaller width) extrusion and vice versa.\n" -"\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change over time. Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\n" -"\n" -"A value of 0 disables the feature. \n" -"\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not needed. However it can provide some marginal benefit in certain cases where feature speeds vary greatly. For example, when there are aggressive slowdowns due to overhangs. In these cases a high value of around 300-350mm3/s2 is recommended as this allows for just enough smoothing to assist " -"pressure advance achieve a smoother flow transition.\n" -"\n" -"For slower printers without pressure advance, the value should be set much lower. A value of 10-15mm3/s2 is a good starting point for direct drive extruders and 5-10mm3/s2 for Bowden style. \n" -"\n" -"This feature is known as Pressure Equalizer in Prusa slicer.\n" -"\n" -"Note: this parameter disables arc fitting." -msgstr "" -"Этот параметр сглаживает резкие изменения скорости экструзии, которые происходят, когда принтер переходит от печати с большим расходом (высокая скорость/большая ширина) к печати с меньшим расходом (меньшая скорость/меньшая ширина) и наоборот.\n" -"\n" -"Параметр задаёт максимальную скорость, с которой объёмный расход экструдируемого материала может изменяться с течением времени (мм³/с). Более высокие значения означают, что допускаются более высокие изменения скорости экструзии, что приводит к более быстрому переключению скоростей.\n" -"\n" -"Значение 0 отключает эту функцию. \n" -"\n" -"Для высокоскоростных принтеров с прямым приводом (например, Bambu lab или Voron) обычно не требуется использование данного значения. Однако в некоторых случаях, когда скорость печати сильно различается, это может принести некоторую дополнительную пользу. Например, когда происходят резкие замедления из-за нависаний. В этих случаях рекомендуется использовать высокое значение, составляющее около " -"300-350 мм³/с², так как это обеспечивает достаточное сглаживание, помогающее прогнозированию давления достичь более плавного перехода потока.\n" -"\n" -"Для более медленных принтеров, не использующих прогнозирование давления (pressure advance), это значение должно быть значительно ниже. Значение 10-15 мм³/с² является хорошей отправной точкой для экструдеров с прямым приводом и 5-10 мм³/с² для боуден экструдеров.\n" -"\n" -"В Prusa Slicer эта функция известна как «Выравнивание давления» (Pressure equalizer).\n" -"\n" -"Примечание: этот параметр отключает поддержку движения по дуге окружности." - -msgid "mm³/s²" -msgstr "мм³/с²" - -msgid "Smoothing segment length" -msgstr "Длина сглаживающего сегмента" - -msgid "" -"A lower value results in smoother extrusion rate transitions. However, this results in a significantly larger gcode file and more instructions for the printer to process. \n" -"\n" -"Default value of 3 works well for most cases. If your printer is stuttering, increase this value to reduce the number of adjustments made\n" -"\n" -"Allowed values: 1-5" -msgstr "" -"Меньшее значение приводит к более плавному изменению скорости экструзии. Однако это приводит к значительному увеличению размера G-код файла и увеличению количества инструкций для обработки принтером. \n" -"\n" -"Значение по умолчанию, равное 3, хорошо подходит для большинства случаев. Если принтер печатает с мини-фризами, увеличьте это значение, чтобы уменьшить количество выполняемых изменений.\n" -"\n" -"Допустимые значения: 1–5." - -msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers.\n" -"Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 P2 S(0-255)" -msgstr "" -"Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он всегда будет работать с этой скоростью, за исключением первых нескольких слоёв, которые обычно настроены на работу без охлаждения.\n" -"Пожалуйста, включите вспомогательный вентилятор для охлаждения моделей (auxiliary_fan) в настройках принтера, чтобы использовать эту функцию. \n" -"G-код команда: M106 P2 S(0-255)." - -msgid "The minimum printing speed for the filament when slow down for better layer cooling is enabled, when printing overhangs and when feature speeds are not specified explicitly." -msgstr "Минимальная скорость печати для текущего прутка при включенной функции «Замедлять печать для лучшего охлаждения слоёв» при печати нависаний и когда скорости элементов явно не задана." - -msgid "Z hop lower boundary" -msgstr "Приподнимать ось Z только ниже" - -msgid "Z hop will only come into effect when Z is above this value and is below the parameter: \"Z hop upper boundary\"" -msgstr "Если указать положительное значение, ось Z будет подниматься только ниже (до) заданной здесь высоты (высота считается от стола). Таким образом вы можете запретить подъём оси Z выше установленной высоты." - -msgid "Z hop upper boundary" -msgstr "Приподнимать ось Z только выше" - -msgid "If this value is positive, Z hop will only come into effect when Z is above the parameter: \"Z hop lower boundary\" and is below this value" -msgstr "Если указать положительное значение, ось Z будет подниматься только выше (после) заданной здесь высоты (высота считается от стола). Таким образом вы можете отключить подъём оси Z при печати на первых слоях (в начале печати)." - -msgid "Manual Filament Change" -msgstr "Ручная замена прутка" - -msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." -msgstr "Включите эту опцию, если хотите пропустить пользовательский G-код смены прутка только в начале печати. Команда смены инструмента (например, T0) будет пропускаться на протяжении всей печати. Это полезно при ручной мультиматериальной печати, где для запуска операции ручной смены прутка используется команда M600." - -msgid "Z offset" -msgstr "Смещение координат оси Z" - -msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." -msgstr "Это значение будет прибавлено (или вычтено) из всех Z координат в выходном G-коде. Это, например, используется для компенсации неправильного положения концевика оси Z." - -msgid "" -"Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more aggressively and save a lot of material (default organic), while hybrid style will create similar structure to normal support under large flat overhangs." -msgstr "" -"Стиль и форма создаваемой поддержки.\n" -"\n" -"Стиль «Сетка» создаёт более устойчивые опоры (по умолчанию). Стиль «Аккуратный» экономит материал и уменьшает образование дефектов на моделях.\n" -"\n" -"Для древовидной поддержки, при стройном и органическом стиле происходит более агрессивное объединение ветвей и экономия материала (по умолчанию органический). В то время как гибридный стиль создаёт структуру, схожую с обычную поддержкой при больших плоских нависаниях." - -msgid "Activate temperature control" -msgstr "Вкл. контроль температуры" - -msgid "" -"Enable this option for chamber temperature control. An M191 command will be added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" -msgstr "" -"Для контроля температуры в камере принтера включите эту опцию. Команда M191 будет добавлена перед стартовый G-кодом принтера (machine_start_gcode).\n" -"G-код команда: M141/M191 S(0-255)" - -msgid "" -"Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and so on.At the same time, the air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials,the actual chamber temperature should not be high to avoid cloggings, so 0 " -"which stands for turning off is highly recommended" -msgstr "" -"Более высокая температура в камере может помочь уменьшить или даже исключить коробление материала. Так же это улучшает межслойное соединения у высокотемпературных материалов, таких как ABS, ASA, PC, PA и т.д. (в то же время фильтрация воздуха при печати ABS и ASA сделает её хуже). Для низкотемпературных материалов, таких как PLA, PETG, TPU, PVA и т. д., фактическая температура в камере не " -"должна быть слишком высокой, чтобы избежать засорения сопла, поэтому настоятельно рекомендуется установить температуру в камере равной 0°C." - -# ??? -# Преобразование отверстий в многограннники -msgid "Convert holes to polyholes" -msgstr "Многогранные отверстия" - -# ??? -# Поиск отверстий близких к кругу в двух или более слоях -# Расчёт многогранного отверстия вычисляется по диаметру сопла. -msgid "" -"Search for almost-circular holes that span more than one layer and convert the geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" -"See http://hydraraptor.blogspot.com/2011/02/polyholes.html" -msgstr "" -"Поиск цилиндрических отверстий в двух или более слоях и преобразование их геометрии в многогранники. Для расчёта многогранного отверстия используется размер сопла и наибольший диаметр найденного отверстия.\n" -"Подробнее на http://hydraraptor.blogspot.com/2011/02/polyholes.html" - -# ??? -# Предел обнаружения многогранного отверстия -msgid "Polyhole detection margin" -msgstr "Предел обнаружения" - -msgid "" -"Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not be on the circle circumference. This setting allows you some leway to broaden the detection.\n" -"In mm or in % of the radius." -msgstr "" -"Максимальное отклонение точки от расчётного радиуса окружности.\n" -"Поскольку цилиндры часто экспортируются в виде треугольников разного размера, точки могут находиться не на окружности круга. Эта настройка позволяет в некоторой степени расширить эту область обнаружения.\n" -"Значение задаётся в мм или в процентах от радиуса." - -msgid "Polyhole twist" -msgstr "Скручивание многогранника" - -msgid "Rotate the polyhole every layer." -msgstr "Вращение многогранного отверстия на каждом слое." - -msgid "Format of G-code thumbnails" -msgstr "Формат эскизов G-кода" - -msgid "Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low memory firmware" -msgstr "Формат эскизов G-кода: PNG для наилучшего качества, JPG для наименьшего размера, QOI для прошивки с малым объемом памяти." - -msgid "Minimum save" -msgstr "Минимальное сохранение" - -msgid "export 3mf with minimum size." -msgstr "экспорт 3mf файла с минимальным размером." - -msgid "Ensure on bed" -msgstr "Обеспечивать размещение на столе" - -msgid "Lift the object above the bed when it is partially below. Disabled by default" -msgstr "Поднимает модель над столом, когда она частично находится ниже его уровня. По умолчанию отключено." - -msgid "Orient Options" -msgstr "Параметры ориентации" - -msgid "Orient options: 0-disable, 1-enable, others-auto" -msgstr "Параметры ориентации: 0 - отключить, 1 - включить, другие - автоматически" - -msgid "Rotation angle around the Z axis in degrees." -msgstr "Угол поворота вокруг оси Z в градусах." - -msgid "Rotate around X" -msgstr "Поворот вокруг оси X" - -msgid "Rotation angle around the X axis in degrees." -msgstr "Угол поворота вокруг оси X в градусах." - -msgid "Rotate around Y" -msgstr "Поворот вокруг оси Y" - -msgid "Rotation angle around the Y axis in degrees." -msgstr "Угол поворота вокруг оси Y в градусах." - -msgid "Load custom gcode" -msgstr "Загрузить пользовательский G-код" - -msgid "Load custom gcode from json" -msgstr "Загрузить пользовательской G-код из json" - -#, c-format, boost-format -msgid "" -"Please input valid values:\n" -"Start value: >= %.1f\n" -"End value: <= %.1f\n" -"End value: > Start value\n" -"Value step: >= %.3f)" -msgstr "" -"Введите допустимое значение:\n" -"Начальное: >= %.1f\n" -"Конечное: <= %.1f\n" -"Конечное: > Начальное\n" -"Шаг: >= %.3f)" - -msgid "Please find the cornor with perfect degree of extrusion" -msgstr "Пожалуйста, найдите угол с идеальной степенью экструзии" - -msgid "Pattern" -msgstr "Шаблон" - -msgid "From k Value" -msgstr "Начальное значение коэф. K" - -msgid "To k Value" -msgstr "Конечное значение коэф. K" - -msgid "Step value" -msgstr "Шаг" - -msgid "0.5" -msgstr "0.5" - -msgid "0.005" -msgstr "0.005" - -msgid "" -"Please input valid values:\n" -"start > 0 \n" -"step >= 0\n" -"end > start + step)" -msgstr "" -"Введите допустимое значение:\n" -"Начальное > 0\n" -"Шаг >= 0\n" -"Конечное > Начальное + Шаг" - -msgid "" -"Please input valid values:\n" -"start > 10 \n" -"step >= 0\n" -"end > start + step)" -msgstr "" -"Введите допустимое значение:\n" -"Начальное > 10\n" -"Шаг >= 0\n" -"Конечное > Начальное + Шаг" - -msgid "The start, end or step is not valid value." -msgstr "Недопустимое значение: начальное, конечное или шаг." - -msgid "Unable to calibrate: maybe because the set calibration value range is too large, or the step is too small" -msgstr "Невозможно выполнить калибровку: возможно, установленный диапазон значений калибровки слишком велик или шаг слишком мал." - -msgid "Need select printer" -msgstr "Нужно выбрать принтер" - -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door +#: opened] msgid "" "When need to print with the printer door opened\n" -"Opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of " +"extruder/hotend clogging when printing lower temperature filament with a " +"higher enclosure temperature. More info about this in the Wiki." msgstr "" -"Когда необходимо печатать с открытой дверцей принтера?\n" -"При печати низкотемпературным материалом при более высокой температуре в камере, открытие дверцы принтера снижает вероятность засорения экструдера/хотэнда. Более подробную информацию читайте на вики-сайте." -# ++++++++++++++++++++++++++++ beta2 -msgid "Total Estimation" -msgstr "Общая оценка" - -msgid "Home" -msgstr "Домашняя страница" - -msgid "Default Page" +#: resources/data/hints.ini: [hint:Avoid warping] +msgid "" +"Avoid warping\n" +"Did you know that when printing materials that are prone to warping such as " +"ABS, appropriately increasing the heatbed temperature can reduce the " +"probability of warping." msgstr "" -"Страница \n" -"по умолчанию" -msgid "Set the page opened on startup." -msgstr "Задание страницы, открываемой при запуске приложения." +#~ msgid "Ctrl + Shift + Enter" +#~ msgstr "Ctrl + Shift + Enter" -msgid "Show splash screen" -msgstr "Показывать окно приветствия" +#~ msgid "Tool-Lay on Face" +#~ msgstr "Поверхностью на стол" -msgid "Show the splash screen during startup." -msgstr "Показывать окно приветствия при запуске приложения." +#~ msgid "Embeded" +#~ msgstr "Проникновение" -msgid "invalid value" -msgstr "недопустимое значение" +#~ msgid "Export as STL" +#~ msgstr "Экспорт в STL" -msgid "MB uploaded" -msgstr "МБ загружено" +#~ msgid "Check cloud service status" +#~ msgstr "Проверка статуса облачного сервиса" + +#~ msgid "AMS %s" +#~ msgstr "АСПП №%s" + +#~ msgid "Cali" +#~ msgstr "Калиб." + +#~ msgid "Calibration of extrusion" +#~ msgstr "Калибровка экструзии" + +#~ msgid "Push new filament into the extruder" +#~ msgstr "Вставка нового прутка в экструдер" + +#~ msgid "Confirm whether the filament has been extruded" +#~ msgstr "Подтвердите, что пластиковая нить была выдавлена" + +#~ msgid "Filling bed " +#~ msgstr "Заполнение стола" + +#~ msgid "The region parameter is incorrrect" +#~ msgstr "Неправильная региональная настройка" + +#~ msgid "Failure of printer login" +#~ msgstr "Не удалось подключиться к принтеру." + +#~ msgid "Failed to get ticket" +#~ msgstr "Не удалось получить заявку" + +#~ msgid "User authorization timeout" +#~ msgstr "Таймаут авторизации пользователя" + +#~ msgid "Failure of bind" +#~ msgstr "Ошибка привязки" + +#~ msgid "Print file not found, please slice again" +#~ msgstr "Файл для печати не найден, нарежьте ещё раз." + +#~ msgid "Failed uploading print file" +#~ msgstr "Не удалось передать файл на печать." + +#~ msgid "Wrong Access code" +#~ msgstr "Неправильный код доступа" + +#~ msgid "Send to Printer failed. Please try again." +#~ msgstr "Ошибка отправки на принтер. Пожалуйста, попробуйте ещё раз." + +#~ msgid "No space left on Printer SD card" +#~ msgstr "На SD-карте принтера недостаточно места" + +#~ msgid "Sending gcode file through cloud service" +#~ msgstr "Отправка файла G-кода через облачный сервис" + +#~ msgid "Please log out and login to the printer again." +#~ msgstr "Пожалуйста, выйдите и снова войдите в принтер." + +#~ msgid "Factors of dynamic flow cali" +#~ msgstr "Коэф. калиб. динам. потока" + +#~ msgid "Please input a valid value (K in 0~0.5)" +#~ msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0.5)" + +#~ msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" +#~ msgstr "" +#~ "Пожалуйста, введите допустимое значение (K в диапазоне 0~0.5, N в " +#~ "диапазоне 0.6~2.0)" + +#~ msgid "" +#~ "There are currently no identical spare consumables available, and " +#~ "automatic replenishment is currently not possible. \n" +#~ "(Currently supporting automatic supply of consumables with the same " +#~ "brand, material type, and color)" +#~ msgstr "" +#~ "В настоящее время одинаковые материалы отсутствуют, поэтому функция " +#~ "резервирования материала (автодозаправка) недоступна. \n" +#~ "(В настоящее время поддерживается автоматическая дозаправка материала " +#~ "только одного производителя, типа и цвета)" + +#, c-format, boost-format +#~ msgid "" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" +#~ "This may cause model broken free from build plate during printing" +#~ msgstr "" +#~ "Температура стола для последующих слоёв слишком низкая по сравнению с " +#~ "температурой первого слоя, более чем на %d градусов Цельсия.\n" +#~ "Это может привести к отрыву модели от стола во время печати." + +#~ msgid "" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" +#~ "This may cause nozzle blocked and printing failure\n" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" +#~ msgstr "" +#~ "Температура стола выше температуры стеклования этой пластиковой нити.\n" +#~ "Это может привести к засорению сопла и сбою печати.\n" +#~ "Пожалуйста, держите принтер открытым во время печати, чтобы обеспечить " +#~ "циркуляцию воздуха или снизить температуру стола." + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "Шаблон заполнения «%1%» не поддерживает 100%% заполнение." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Переключиться на прямолинейный (rectilinear) шаблон?\n" +#~ "Да - переключиться на прямолинейный шаблон\n" +#~ "Нет - сбросить плотность заполнения до значения по умолчанию (отличного " +#~ "от 100%)" + +#~ msgid "Invalid nozzle diameter" +#~ msgstr "Недопустимый диаметр сопла" + +#~ msgid "Fan Speed: " +#~ msgstr "Скорость вентилятора: " + +#~ msgid "Total Time Estimation" +#~ msgstr "Оценка общего времени" + +#~ msgid "Resonance frequency identification" +#~ msgstr "Идентификация резонансной частоты" + +#~ msgid "Export all objects as STL" +#~ msgstr "Экспортировать все модели в STL" + +#~ msgid "Initialize failed (Not supported with LAN-only mode)!" +#~ msgstr "Ошибка инициализации (не поддерживается в режиме «Только LAN»)!" + +#~ msgid "Initialize failed (Not supported by printer)!" +#~ msgstr "Ошибка инициализации (не поддерживается принтером)!" + +#~ msgid "" +#~ "Another virtual camera is running.\n" +#~ "Bambu Studio supports only a single virtual camera.\n" +#~ "Do you want to stop this virtual camera?" +#~ msgstr "" +#~ "Уже работает одна виртуальная камера.\n" +#~ "Bambu Studio поддерживает только одну виртуальную камеру.\n" +#~ "Хотите остановить эту виртуальную камеру?" + +#~ msgid "Not supported by this model of printer!" +#~ msgstr "Не поддерживается этой моделью принтера!" + +#~ msgid "No files" +#~ msgstr "Файлы отсутствуют" + +#~ msgid "Not accessible in LAN-only mode!" +#~ msgstr "Недоступно в режиме «Только LAN»!" + +#~ msgid "Missing LAN ip of printer!" +#~ msgstr "Отсутствует сетевой адрес принтера!" + +#, c-format, boost-format +#~ msgid "You are going to delete %u files. Are you sure to continue?" +#~ msgstr "" +#~ "Вы собираетесь удалить файлы: %u шт. Вы уверены, что хотите это сделать?" + +#~ msgid "" +#~ "The .gcode.3mf file contains no G-code data.Please slice it whthBambu " +#~ "Studio and export a new .gcode.3mf file." +#~ msgstr "" +#~ "Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе " +#~ "Bambu Studio и экспортируйте новый файл .gcode.3mf." + +#~ msgid "Immediately score" +#~ msgstr "Оценить сейчас" + +#, c-format, boost-format +#~ msgid "" +#~ "Disconnected from printer [%s] due to LAN mode disabled.Please reconnect " +#~ "the printer by logging in with your user account." +#~ msgstr "" +#~ "Соединение с принтером [%s] разорвано из-за отключения режима «Только " +#~ "LAN». Повторно подключитесь к принтеру, войдя в свою учётную запись." + +#, c-format, boost-format +#~ msgid "" +#~ "Disconnected from printer [%s] due to LAN mode enabled.Please reconnect " +#~ "the printer by inputting Access Code which can be gotten from printer " +#~ "screen." +#~ msgstr "" +#~ "Соединение с принтером [%s] разорвано из-за включения режима «Только " +#~ "LAN». Повторно подключитесь к принтеру, введя код доступа, который можно " +#~ "получить на экране принтера." + +#~ msgid "Please give a score for your favorite Bambu Market model." +#~ msgstr "" +#~ "Пожалуйста, поставьте оценку вашей любимой модели в магазине Bambu Market." + +#~ msgid "Score" +#~ msgstr "Рейтинг" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Пожалуйста, перед загрузкой нити, нагрейте сопло до температуры выше 170 " +#~ "градусов." + +#~ msgid "" +#~ "The bed temperature exceeds filament's vitrification temperature. Please " +#~ "open the front door of printer before printing to avoid nozzle clog." +#~ msgstr "" +#~ "Температура стола превышает температуру стеклования пластиковой нити. " +#~ "Пожалуйста, откройте переднюю дверцу принтера перед печатью, чтобы " +#~ "избежать засорения сопла." + +#~ msgid "The 3mf is not from Bambu Lab, load geometry data only." +#~ msgstr "" +#~ "Этот 3mf создан не в Bambu Lab, поэтому загрузятся только данные " +#~ "геометрии." + +#~ msgid "" +#~ "The 3mf's version %s is newer than %s's version %s, Found following keys " +#~ "unrecognized:" +#~ msgstr "" +#~ "Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" +#~ "Обнаружены следующие нераспознанные ключи:" + +#~ msgid "You'd better upgrade your software.\n" +#~ msgstr "Рекомендуем вам обновить программу.\n" + +#~ msgid "Newer 3mf version" +#~ msgstr "Новая версия 3mf" + +#, c-format, boost-format +#~ msgid "" +#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " +#~ "your software." +#~ msgstr "" +#~ "Версия этого формата 3mf (%s) новее текущей версии %s (%s). \n" +#~ "Рекомендуется обновить программу." + +#~ msgid "The 3mf is not compatible, load geometry data only!" +#~ msgstr "Этот 3mf несовместим, поэтому загрузятся только данные геометрии!" + +#~ msgid "Incompatible 3mf" +#~ msgstr "Несовместимый 3mf" + +#~ msgid "Show g-code window" +#~ msgstr "Показать окно G-кода" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Если включено, будет отображено окно G-кода." + +#~ msgid "Online Models" +#~ msgstr "Онлайн-модели" + +#~ msgid "Show online staff-picked models on the home page" +#~ msgstr "Показывать отобранные сотрудниками модели на главной странице" + +#~ msgid "Add/Remove printers" +#~ msgstr "Добавить/удалить принтер" + +#~ msgid "" +#~ "Upload task timed out. Please check the network problem and try again" +#~ msgstr "" +#~ "Истекло время ожидания отправки задания. Проверьте сетевое подключение и " +#~ "повторите попытку." + +#~ msgid "Can't connect to the printer" +#~ msgstr "Не удаётся подключиться к принтеру" + +#, c-format, boost-format +#~ msgid "%s is not supported by AMS." +#~ msgstr "%s не поддерживается АСПП." + +#~ msgid "The printer is required to be in the same LAN as Bambu Studio." +#~ msgstr "Принтер должен находиться в одной локальной сети с Bambu Studio." + +#~ msgid "Recommended temperature range" +#~ msgstr "Рекомендуемый диапазон температур" + +#~ msgid "High Temp Plate" +#~ msgstr "Высокотемпературная пластина" + +#~ msgid "" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" +#~ msgstr "" +#~ "Температура стола при установленной высокотемпературной печатной " +#~ "пластине. 0 означает, что пластиковая нить не поддерживает печать на этой " +#~ "печатной пластине." + +#~ msgid "Switch between Prepare/Prewview" +#~ msgstr "Переключение между окном подготовки и окном предпросмотра нарезки" + +#~ msgid "" +#~ "Click OK to update the Network plug-in when Bambu Studio launches next " +#~ "time." +#~ msgstr "" +#~ "Нажмите OK, чтобы обновить сетевой плагин при следующем запуске Bambu " +#~ "Studio." + +#~ msgid "New version of Bambu Studio" +#~ msgstr "Доступна новая версия Bambu Studio" + +#~ msgid "Don't remind me of this version again" +#~ msgstr "Больше не напоминай об этой версии" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в " +#~ "одной локальной сети." + +#~ msgid "Error: IP or Access Code are not correct" +#~ msgstr "Ошибка: неверный IP-адрес или код доступа" + +#~ msgid "Internal bridge support thickness" +#~ msgstr "Толщина поддержки внутреннего моста" + +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Если включено, под контурами внутренних мостов будут создаваться петли " +#~ "поддержки. Эти петли поддержки могут препятствовать выдавливанию " +#~ "внутренних мостов в воздух и улучшить качество поверхности сверху, " +#~ "особенно при низкой плотности заполнения. Это значение определяет толщину " +#~ "петель поддержки. Установите 0 для отключения." + +#~ msgid "Order of inner wall/outer wall/infil" +#~ msgstr "Порядок печати периметров/заполнения" + +#~ msgid "Print sequence of inner wall, outer wall and infill. " +#~ msgstr "" +#~ "Последовательность печати внутреннего/внешнего периметров и заполнения. " + +#~ msgid "inner/outer/infill" +#~ msgstr "внутренний/внешний/заполнение" + +#~ msgid "outer/inner/infill" +#~ msgstr "внешний/внутренний/заполнение" + +#~ msgid "infill/inner/outer" +#~ msgstr "заполнение/внутренний/внешний" + +#~ msgid "infill/outer/inner" +#~ msgstr "заполнение/внешний/внутренний" + +#~ msgid "inner-outer-inner/infill" +#~ msgstr "внутренний-внешний-внутренний/заполнение" + +#~ msgid "Temperature of vitrificaiton" +#~ msgstr "Температура стеклования" + +#~ msgid "" +#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " +#~ "hotter than this tempature" +#~ msgstr "" +#~ "При этой температуре материал становится мягким. Таким образом, " +#~ "подогреваемый стол не может быть горячее этой температуры." + +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Плотность внутреннего заполнения, выраженная в процентах. 100% означает " +#~ "сплошное заполнение." + +#~ msgid "" +#~ "Acceleration of initial layer. Using a lower value can improve build " +#~ "plate adhensive" +#~ msgstr "" +#~ "Ускорение на первом слое. Использование более низкого значения может " +#~ "улучшить адгезию к столу." + +#~ msgid "" +#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "" +#~ "Значение Klipper-а max_accel_to_decel (ограничение ускорения зигзагов) " +#~ "будет скорректировано на заданный процент ускорения." + +#~ msgid "" +#~ "Filter out gaps smaller than the threshold specified. This setting won't " +#~ "affect top/bottom layers" +#~ msgstr "" +#~ "Небольшие промежутки меньше указанного порога не будут заполняться. Этот " +#~ "параметр не влияет на верхнюю/нижнюю поверхность." + +#~ msgid "Enable this option if machine has auxiliary part cooling fan" +#~ msgstr "" +#~ "Включите, если в принтере имеет вспомогательный вентилятор для охлаждения " +#~ "моделей." + +#~ msgid "Maximum acceleration for travel (M204 T)" +#~ msgstr "Максимальное ускорение при перемещении (M204 T)" + +#~ msgid "" +#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +#~ "during printing except the first several layers which is defined by no " +#~ "cooling layers" +#~ msgstr "" +#~ "Скорость вращения вспомогательного вентилятора для охлаждения моделей. Он " +#~ "всегда будет работать с этой скоростью, за исключением первых нескольких " +#~ "слоёв, которые обычно настроены на работу без охлаждения." + +#~ msgid "The minimum printing speed when slow down for cooling" +#~ msgstr "" +#~ "Минимальная скорость печати при которой происходит сброс скорости для " +#~ "лучшего охлаждения." + +#~ msgid "" +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." +#~ msgstr "" +#~ "Стиль и форма создаваемой поддержки.\n" +#~ "\n" +#~ "Стиль «Сетка» создаёт более устойчивые опоры. Стиль «Аккуратный» экономит " +#~ "материал и уменьшает образование дефектов на моделях.\n" +#~ "\n" +#~ "Для древовидной поддержки, при стройном стиле происходит более " +#~ "агрессивное объединение ветвей и экономия материала (по умолчанию). В то " +#~ "время как гибридный стиль создаёт структуру, схожую с обычную поддержкой " +#~ "при больших плоских нависаниях." + +#~ msgid "Tree support wall loops" +#~ msgstr "Периметров древовидной поддержки" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "" +#~ "Этот параметр определяет количество периметров у печатаемой древовидной " +#~ "поддержки." + +#~ msgid "Target chamber temperature" +#~ msgstr "Температура, которую необходимо поддерживать внутри принтера." + +#~ msgid "Bed temperature difference" +#~ msgstr "Разница температур подогреваемого стола" + +#~ msgid "" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" +#~ msgstr "" +#~ "Не рекомендуется, чтобы температура последующих слоёв была ниже " +#~ "температуры первого слоя, более чем на это пороговое значение. Слишком " +#~ "низкая температура последующих слоёв может привести к отрыву модели от " +#~ "стола." + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " не работает при 100%% заполнении " + +#~ msgid "Export 3MF" +#~ msgstr "Экспорт в 3MF" + +#~ msgid "Export project as 3MF." +#~ msgstr "Экспортировать проект в 3MF." + +#~ msgid "Export slicing data" +#~ msgstr "Экспорт данных нарезки" + +#~ msgid "Export slicing data to a folder." +#~ msgstr "Экспорт данных нарезки в папку." + +#~ msgid "Load slicing data" +#~ msgstr "Загрузка данных нарезки" + +#~ msgid "Load cached slicing data from directory" +#~ msgstr "Загружать кэшированные данные нарезки из папки" + +#~ msgid "Export STL" +#~ msgstr "Экспорт в STL" + +#~ msgid "Export the objects as multiple STL." +#~ msgstr "Экспорт моделей как несколько STL." + +#~ msgid "Slice" +#~ msgstr "Нарезать" + +#~ msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" +#~ msgstr "Нарезка столов: 0 - все столы, i - стол i, остальные - недопустимы" + +#~ msgid "Show command help." +#~ msgstr "Показать справку по командам." + +#~ msgid "UpToDate" +#~ msgstr "Актуальная версия" + +#~ msgid "Update the configs values of 3mf to latest." +#~ msgstr "Обновить значения конфигурации для 3mf до актуальных." + +#~ msgid "Load default filaments" +#~ msgstr "Загрузка материалов по умолчанию" + +#~ msgid "Load first filament as default for those not loaded" +#~ msgstr "Использовать первый материал по умолчанию, если не загружен другой" + +#~ msgid "mtcpp" +#~ msgstr "mtcpp" + +#~ msgid "max triangle count per plate for slicing." +#~ msgstr "максимальное количество треугольников на стол при нарезке." + +#~ msgid "mstpp" +#~ msgstr "mstpp" + +#~ msgid "max slicing time per plate in seconds." +#~ msgstr "максимальное время нарезки на стол в секундах." + +#~ msgid "Normative check" +#~ msgstr "Нормативная проверка" + +#~ msgid "Check the normative items." +#~ msgstr "Проверка соответствия модели определенным нормативным требованиям." + +#~ msgid "Output Model Info" +#~ msgstr "Информация о выходной модели" + +#~ msgid "Output the model's information." +#~ msgstr "Вывод информации о модели." + +#~ msgid "Export Settings" +#~ msgstr "Экспорт настроек" + +#~ msgid "Export settings to a file." +#~ msgstr "Экспорт настроек в файл." + +#~ msgid "Send progress to pipe" +#~ msgstr "Отправить информацию о прогрессе" + +#~ msgid "Send progress to pipe." +#~ msgstr "Отправить информацию о прогрессе." + +#~ msgid "Arrange Options" +#~ msgstr "Параметры расстановки" + +#~ msgid "Arrange options: 0-disable, 1-enable, others-auto" +#~ msgstr "" +#~ "Параметры расстановки: 0 - отключить, 1 - включить, другие - автоматически" + +# ??? +#~ msgid "Repetions count" +#~ msgstr "Количество повторений" + +# ??? +#~ msgid "Repetions count of the whole model" +#~ msgstr "Количество повторений для всей модели" + +#~ msgid "Convert Unit" +#~ msgstr "Преобразовать единицу измерения" + +#~ msgid "Convert the units of model" +#~ msgstr "Преобразование единиц измерения модели" + +#~ msgid "Orient the model" +#~ msgstr "Ориентация модели" + +#~ msgid "Scale the model by a float factor" +#~ msgstr "Масштабирование модели с помощью коэффициента." + +#~ msgid "Load General Settings" +#~ msgstr "Загрузка общих настроек" + +#~ msgid "Load process/machine settings from the specified file" +#~ msgstr "Загрузка настроек процесса/принтера из указанного файла" + +#~ msgid "Load Filament Settings" +#~ msgstr "Загрузка настроек материала" + +#~ msgid "Load filament settings from the specified file list" +#~ msgstr "Загрузка настроек пластиковой нити из указанного списка файлов" + +#~ msgid "Skip Objects" +#~ msgstr "Исключить модели" + +#~ msgid "Skip some objects in this print" +#~ msgstr "Пропустить некоторые модели в этом печати" + +#~ msgid "load uptodate process/machine settings when using uptodate" +#~ msgstr "" +#~ "Загрузить последние настройки процесса/принтера при использовании " +#~ "актуальной версии" + +#~ msgid "" +#~ "load uptodate process/machine settings from the specified file when using " +#~ "uptodate" +#~ msgstr "" +#~ "Загружать последние настройки процесса/принтера из указанного файла при " +#~ "использовании актуальной версии" + +#~ msgid "Output directory" +#~ msgstr "Папка для сохранения" + +#~ msgid "Output directory for the exported files." +#~ msgstr "Папка для сохранения экспортируемых файлов." + +#~ msgid "Debug level" +#~ msgstr "Уровень отладки" + +#~ msgid "" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" +#~ msgstr "" +#~ "Задаёт параметр чувствительности записи событий в журнал. \\\"0: " +#~ "Неустранимая ошибка, 1: Ошибка, 2: Предупреждение, 3: Информация, 4: " +#~ "Отладка, 5: Трассировка\n" + +#~ msgid "Empty layers around bottom are replaced by nearest normal layers." +#~ msgstr "" +#~ "Пустые слои обнаруженные на дне модели были заменены ближайшими " +#~ "нормальными слоями." + +#~ msgid "The model has too many empty layers." +#~ msgstr "Модель имеет слишком много пустых слоев." + +#, boost-format +#~ msgid "The selected preset: %1% is not found." +#~ msgstr "Выбранный профиль: %1% не найден." + +#~ msgid "Send to print" +#~ msgstr "Отправить на печать" + +#~ msgid "Error Message" +#~ msgstr "Сообщение об ошибке" + +#~ msgid "Error uploading to print host:" +#~ msgstr "Ошибка при отправке на хост печати:" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введите допустимые значения:\n" +#~ "start > 0 step >= 0\n" +#~ "end > start + step)" + +#~ msgid "" +#~ "Please input valid values:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" +#~ msgstr "" +#~ "Введите допустимые значения:\n" +#~ "start > 10 step >= 0\n" +#~ "end > start + step)" + +#~ msgid "" +#~ "3D Scene Operations\n" +#~ "Did you know how to control view and object/part selection with mouse and " +#~ "touchpanel in the 3D scene?" +#~ msgstr "" +#~ "Операции с 3D-сценой\n" +#~ "Знаете ли вы, как управлять видом и выбором модели/части с помощью мыши и " +#~ "сенсорной панели в 3D-сцене?" + +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" +#~ msgstr "" +#~ "Починка модели\n" +#~ "Знаете ли вы, что можно починить повреждённую модель, чтобы избежать " +#~ "множества проблем при нарезке?" + +#~ msgid "Left Preset Value" +#~ msgstr "Значение в левом профиле" + +#~ msgid "Right Preset Value" +#~ msgstr "Значение в правом профиле" + +#~ msgid "Undef category" +#~ msgstr "Неопределённая категория" + +#~ msgid "Undef group" +#~ msgstr "Неопределённая группа" + +#~ msgid "Retraction Length (Toolchange)" +#~ msgstr "Длина отката (при смене инструмента)" + +#~ msgid "Flow Dynamic" +#~ msgstr "Динамика потока" + +#~ msgid "A fatal error occurred: %1%" +#~ msgstr "Произошла фатальная ошибка: %1%" + +#~ msgid "Record" +#~ msgstr "Запись" + +#~ msgid "Report issue" +#~ msgstr "Сообщить о проблеме" + +#~ msgid "Connection to OctoPrint/Klipper works correctly." +#~ msgstr "Соединение с OctoPrint/Klipper успешно установлено." + +#~ msgid "Could not connect to OctoPrint/Klipper" +#~ msgstr "Не удаётся подключиться к OctoPrint/Klipper" + +#~ msgid "Connection to FlashAir works correctly." +#~ msgstr "Соединение с FlashAir успешно установлено." + +#~ msgid "Connection refused" +#~ msgstr "Соединение запрещено" + +#~ msgid "Failed to connect to %s port %ld: %s" +#~ msgstr "Не удалось подключиться к порту %s %ld: %s" + +#~ msgid "Couldn't connect to server" +#~ msgstr "Не удалось подключиться к серверу" + +#~ msgid "Couldn't resolve host '%s'" +#~ msgstr "Не удаётся определить имя хоста '%s'" + +#~ msgid "Suggestion" +#~ msgstr "Совет" + +#~ msgid "" +#~ "BambuSource has not correctly been registered for media playing! Press " +#~ "Yes to re-register it." +#~ msgstr "" +#~ "Компонент BambuSource неправильно зарегистрирован для воспроизведения " +#~ "мультимедиа! Нажмите «Да», чтобы перерегистрировать его." + +#~ msgid "" +#~ "Missing BambuSource component registered for media playing! Please re-" +#~ "install BambuStutio or seek after-sales help." +#~ msgstr "" +#~ "Отсутствует компонент BambuSource, зарегистрированный для воспроизведения " +#~ "мультимедиа! Пожалуйста, переустановите BambuStutio или обратитесь в " +#~ "поддержку." + +#~ msgid "Wipe tower - Purging volume adjustment" +#~ msgstr "Черновая башня - регулировка объёма сброса пластика" + +#~ msgid "" +#~ "Here you can adjust required purging volume (mm³) for any given pair of " +#~ "tools." +#~ msgstr "" +#~ "Здесь вы можете отрегулировать требуемый объём очистки (мм³) для любой " +#~ "пары инструментов." + +#~ msgid "Extruder changed to" +#~ msgstr "Экструдер перешёл на - " + +#~ msgid "Tool #" +#~ msgstr "Инструмент #" + +#~ msgid "" +#~ "Total purging volume is calculated by summing two values below, depending " +#~ "on which tools are loaded/unloaded." +#~ msgstr "" +#~ "Общий объём прочистки вычисляется путём суммирования двух нижеуказанных " +#~ "значений, в зависимости от того, какие инструменты предзагружены/" +#~ "выгружены." + +#~ msgid "Volume to purge (mm³) when the filament is being" +#~ msgstr "Объём прочистки (мм³) при выдавливании прутка" + +#~ msgid "Volumetric speed" +#~ msgstr "Объёмная скорость потока" + +#~ msgid "Branch Diameter" +#~ msgstr "Диаметр ветвей" + +#~ msgid "" +#~ "The diameter of the thinnest branches of organic support. Thicker " +#~ "branches are more sturdy. Branches towards the base will be thicker than " +#~ "this." +#~ msgstr "" +#~ "Диаметр самых тонких ветвей органической поддержки. Чем толще ветви, тем " +#~ "они крепче. Ветви, идущие к основанию, будут утолщаться." + +#~ msgid "Branch Distance" +#~ msgstr "Расстояние между ветками" + +#~ msgid "" +#~ "How far apart the branches need to be when they touch the model. Making " +#~ "this distance small will cause the tree support to touch the model at " +#~ "more points, causing better overhang but making support harder to remove." +#~ msgstr "" +#~ "Указывает, насколько далеко друг от друга должны располагаться ветви при " +#~ "касании модели. Если задать небольшое расстояние, то увеличится " +#~ "количество точек, в которых древовидная поддержка касается модели. Это " +#~ "улучшит печать нависаний, но при этом усложнит удаление поддержки." + +#~ msgid "Bambu Engineering Plate" +#~ msgstr "Инженерная пластина Bambu" + +#~ msgid "Bambu Smooth PEI Plate" +#~ msgstr "Гладкая PEI пластина Bambu" + +#~ msgid "Bambu Textured PEI Plate" +#~ msgstr "Текстурированная PEI пластина Bambu" + +#~ msgid "" +#~ "When print by object, machines with I3 structure will not generate " +#~ "timelapse videos." +#~ msgstr "" +#~ "При печати по очереди, принтеры с кинематикой I3 не будут писать таймлапс." + +#~ msgid "" +#~ "Extrude perimeters that have a part over an overhang in the reverse " +#~ "direction on odd layers. This alternating pattern can drastically improve " +#~ "steep overhang." +#~ msgstr "" +#~ "Печать периметров, имеющих нависания, в обратном направлении на нечётных " +#~ "слоях. Такое чередование может значительно улучшить качество печати " +#~ "крутых нависаний." + +#, c-format, boost-format +#~ msgid "%%" +#~ msgstr "%%" + +#~ msgid "Rotate around X" +#~ msgstr "Поворот вокруг оси X" + +#~ msgid "Rotation angle around the X axis in degrees." +#~ msgstr "Угол поворота вокруг оси X в градусах." + +#~ msgid "" +#~ "When need to print with the printer door opened\n" +#~ "Opening the printer door can reduce the probability of extruder/hotend " +#~ "clogging when printing lower temperature filament with a higher enclosure " +#~ "temperature. More info about this in the Wiki." +#~ msgstr "" +#~ "Когда необходимо печатать с открытой дверцей принтера?\n" +#~ "При печати низкотемпературным материалом при более высокой температуре в " +#~ "камере, открытие дверцы принтера снижает вероятность засорения экструдера/" +#~ "хотэнда. Более подробную информацию читайте на вики-сайте." + +#~ msgid "invalid value" +#~ msgstr "недопустимое значение" + +#~ msgid "MB uploaded" +#~ msgstr "МБ загружено" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 59cd97d4bf..8dc4f49e80 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1170,9 +1170,6 @@ msgstr "Klicka på ikonen för att redigera färgläggningen av objektet" msgid "Click the icon to shift this object to the bed" msgstr "Klicka på ikonen för att flytta detta föremål till byggplattan" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Laddar fil" @@ -1706,8 +1703,8 @@ msgstr "Placerar..." msgid "Orienting" msgstr "Placerar" -msgid "Filling bed " -msgstr "Fyllning av byggytan" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Byggplattans fyllning avbruten." @@ -2589,19 +2586,6 @@ msgstr "" "JA - Behåll Prime Torn\n" "NEJ - Behåll Oberoende Lagerhöjd på support" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% ifyllnads mönster stöds ej 100%% densitet." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Byta till rätlinjigt mönster?\n" -"Ja - Växla automatiskt till rätlinjigt mönster\n" -"Nej - Återställ automatiskt densiteten till standardvärdet som inte är 100 %." - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2702,6 +2686,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3164,7 +3160,7 @@ msgstr "Volym:" msgid "Size:" msgstr "Storlek:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3540,6 +3536,12 @@ msgstr "Använd Perspektiv Vy" msgid "Use Orthogonal View" msgstr "Använd Ortogonal Vy" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Visa & Etiketter" @@ -3911,6 +3913,9 @@ msgstr "Laddar ner %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4066,8 +4071,10 @@ msgstr "Lager: %s" msgid "Layer: %d/%d" msgstr "Lager: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Värm nozzeln till över 170 grader innan du laddar filamentet." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Matar ut fortfarande" @@ -4611,31 +4618,6 @@ msgstr "Konfigurationen kan inte laddas." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Nyare 3mf version" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "Ogiltiga värden hittades i 3mf:" @@ -5134,12 +5116,6 @@ msgstr "Visa \"Dagens tips\" efter start" msgid "If enabled, useful hints are displayed at startup." msgstr "Om aktiverad visas användbara tips vid start." -msgid "Show g-code window" -msgstr "" - -msgid "If enabled, g-code window will be displayed." -msgstr "" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5511,6 +5487,9 @@ msgstr "Uppgift avbruten" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Min Enhet" @@ -5775,6 +5754,12 @@ msgstr "Skrivaren måste finnas på samma LAN som Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "Skrivaren har inte stöd för att skicka till skrivarens MicroSD kort." +msgid "Slice ok." +msgstr "Beredning klar." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Det gick inte att skapa uttaget" @@ -5964,11 +5949,25 @@ msgstr "" "0 top z-avstånd, 0 gränssnittsavstånd, koncentriskt mönster och inaktivera " "oberoende stödskiktshöjd" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "När du spelar in timelapse utan verktygshuvud rekommenderas att du lägger " "till ett \"Timelapse Wipe Tower\".\n" @@ -6332,6 +6331,12 @@ msgstr[1] "" "Följande förinställning raderas också.@Följande förinställningar raderas " "också." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Välja %1% den valda förinställningen?" @@ -7338,6 +7343,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Ett Prime Torn stöds inte i \"Per objekt\" utskrift." @@ -7405,11 +7429,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Lagerhöjden kan inte överstiga nozzel diametern" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7779,6 +7798,15 @@ msgstr "" "Minska detta värde något (tex 0.9) för att minska material åtgång för " "bridges/bryggor, detta för att förbättra kvaliteten" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "" @@ -8013,9 +8041,9 @@ msgid "" "quality for needle and small details" msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " -"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " -"förbättra kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" +"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " +"kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -8092,6 +8120,15 @@ msgstr "" "sträckor men kan se sämre ut. Om de är inaktiverade ser bridges bättre ut " "men är tillförlitliga endast för kortare avstånd." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Max bridge/brygg längd" @@ -8563,10 +8600,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Sparsam ifyllnads densitet" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Densiteten av ifyllnad. 100%% betyder att objektet blir solid rakt igenom" msgid "Sparse infill pattern" msgstr "Sparsam ifyllnads mönster" @@ -8770,10 +8808,10 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8826,6 +8864,12 @@ msgstr "" "Den genomsnittliga distansen mellan de slumpmässiga punkter som införts på " "varje linjesegment" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "" @@ -10048,10 +10092,10 @@ msgstr "" "Filament för att skriva ut support och rafts. ”Standard” betyder ingen " "specifik filament för support, och nuvarande filament används" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10297,11 +10341,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Tree support vägg varv" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Inställningen bestämmer antal väggar runt tree support" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Tree support med ifyllnad" @@ -10735,10 +10779,6 @@ msgstr "" msgid "invalid value " msgstr "ogiltigt värde " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " fungerar inte vid 100%% densitet " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Ogiltigt värde när spiralvas läget är aktiverat: " @@ -11592,6 +11632,680 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "" + +msgid "Refresh Printers" +msgstr "" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -11868,6 +12582,44 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Fyllning av byggytan" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% ifyllnads mönster stöds ej 100%% densitet." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Byta till rätlinjigt mönster?\n" +#~ "Ja - Växla automatiskt till rätlinjigt mönster\n" +#~ "Nej - Återställ automatiskt densiteten till standardvärdet som inte är " +#~ "100 %." + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "Värm nozzeln till över 170 grader innan du laddar filamentet." + +#~ msgid "Newer 3mf version" +#~ msgstr "Nyare 3mf version" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Densiteten av ifyllnad. 100%% betyder att objektet blir solid rakt igenom" + +#~ msgid "Tree support wall loops" +#~ msgstr "Tree support vägg varv" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Inställningen bestämmer antal väggar runt tree support" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " fungerar inte vid 100%% densitet " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -11889,9 +12641,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Exportera Alla Objekt som STL" -#~ msgid "Slice ok." -#~ msgstr "Beredning klar." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index b1d9ae3ee9..29ec56f544 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-11-15 00:35+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: Türkçe\n" @@ -1191,9 +1191,6 @@ msgstr "Nesnenin renk resmini düzenlemek için simgeye tıklayın" msgid "Click the icon to shift this object to the bed" msgstr "Bu nesneyi yatağa taşımak için simgeye tıklayın" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Dosya yükleniyor" @@ -1720,8 +1717,8 @@ msgstr "Yönlendiriliyor..." msgid "Orienting" msgstr "Yönlendiriliyor" -msgid "Filling bed " -msgstr "Yatak doldurma " +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "Yatak dolumu iptal edildi." @@ -2618,19 +2615,6 @@ msgstr "" "EVET - Prime Tower'ı Koruyun\n" "HAYIR - Bağımsız Destek Katmanı Yüksekliğini Koruyun" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% dolgu deseni 100%% yoğunluğu desteklemiyor." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Doğrusal desene geçilsin mi?\n" -"Evet - otomatik olarak doğrusal desene geçin\n" -"Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2731,6 +2715,18 @@ msgstr "Kullanıcı tarafından eklenen Gcode tarafından duraklatıldı" msgid "Motor noise showoff" msgstr "Motor gürültü gösterimi" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3206,7 +3202,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3585,6 +3581,12 @@ msgstr "Perspektif Görünüm" msgid "Use Orthogonal View" msgstr "Ortogonal Görünüm" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Etiketleri Göster" @@ -3966,6 +3968,9 @@ msgstr "%d%% indiriliyor..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4125,8 +4130,10 @@ msgstr "Katman: %s" msgid "Layer: %d/%d" msgstr "Katman: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "Daha Fazla Boşalt" @@ -4698,31 +4705,6 @@ msgstr "" "3mf, eski Orca Slicer tarafından oluşturulmuştur, yalnızca geometri " "verilerini yükleyin." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Daha yeni 3mf sürümü" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "3mf'de geçersiz değerler bulundu:" @@ -5226,12 +5208,6 @@ msgstr "Başlangıçtan sonra \"Günün ipucu\" bildirimini göster" msgid "If enabled, useful hints are displayed at startup." msgstr "Etkinleştirilirse başlangıçta faydalı ipuçları görüntülenir." -msgid "Show g-code window" -msgstr "G kodu penceresini göster" - -msgid "If enabled, g-code window will be displayed." -msgstr "Etkinleştirilirse g kodu penceresi görüntülenecektir." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5604,6 +5580,9 @@ msgstr "Görev iptal edildi" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Cihazım" @@ -5872,6 +5851,12 @@ msgstr "Yazıcının Orca Slicer ile aynı LAN'da olması gerekir." msgid "The printer does not support sending to printer SD card." msgstr "Yazıcı, yazıcı SD kartına gönderimi desteklemiyor." +msgid "Slice ok." +msgstr "Dilimleme tamam." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "Soket oluşturulamadı" @@ -6060,11 +6045,25 @@ msgstr "" "0 üst z mesafesi, 0 arayüz aralığı, eş merkezli desen ve bağımsız destek " "katmanı yüksekliğini devre dışı bırakma" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -6429,6 +6428,12 @@ msgid_plural "Following presets will be deleted too." msgstr[0] "Aşağıdaki ön ayar da silinecektir." msgstr[1] "Aşağıdaki ön ayarlar da silinecektir." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Seçilen ön ayarı %1% yaptığınızdan emin misiniz?" @@ -7425,8 +7430,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " -"göre\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" +"\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -7455,6 +7460,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." @@ -7535,11 +7559,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozül çapını aşamaz" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7924,6 +7943,15 @@ msgstr "" "Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " "değeri biraz azaltın (örneğin 0,9)" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Üst katı dolgu akış oranı" @@ -8271,6 +8299,15 @@ msgstr "" "köprüler daha iyi görünür ancak yalnızca daha kısa köprü mesafeleri için " "güvenilirdir." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Maksimum köprü uzunluğu" @@ -8790,9 +8827,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Dolgu Yoğunluğu" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "Dolgu Deseni" @@ -9025,17 +9064,16 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " "\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, " -"\"close_fan_the_first_x_layers\" + 1 katmanında izin verilen maksimum hızda " -"çalışacaktır." +"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" +"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." msgid "Support interface fan speed" msgstr "Destekler için fan hızı" @@ -9089,6 +9127,12 @@ msgid "" msgstr "" "Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Küçük boşlukları filtrele" @@ -10465,10 +10509,10 @@ msgstr "" "belirli bir filamentin olmadığı ve mevcut filamentin kullanıldığı anlamına " "gelir" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10740,11 +10784,11 @@ msgstr "" "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " "sıfır olarak ayarlayın." -msgid "Tree support wall loops" -msgstr "Ağaç desteği duvar döngüleri" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Bu ayar, ağaç desteğinin etrafındaki duvarların sayısını belirtir" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Dolgulu ağaç desteği" @@ -11209,10 +11253,6 @@ msgstr "" msgid "invalid value " msgstr "geçersiz değer " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " 100%% yoğunlukta çalışmıyor " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Spiral vazo modu etkinleştirildiğinde geçersiz değer: " @@ -12180,6 +12220,690 @@ msgstr "Bölüm 2" msgid "Delete input" msgstr "Girişi sil" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "Yazıcı seçmeniz gerekiyor" + +msgid "The start, end or step is not valid value." +msgstr "Başlangıç, bitiş veya adım geçerli bir değer değildir." + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" +"Kalibre edilemiyor: ayarlanan kalibrasyon değeri aralığı çok büyük veya adım " +"çok küçük olduğu için olabilir" + +msgid "Physical Printer" +msgstr "Fiziksel Yazıcı" + +msgid "Print Host upload" +msgstr "Yazıcı Bağlantı Ayarları" + +msgid "Could not get a valid Printer Host reference" +msgstr "Geçerli bir Yazıcı Ana Bilgisayarı referansı alınamadı" + +msgid "Success!" +msgstr "Başarılı!" + +msgid "Refresh Printers" +msgstr "Yazıcıları Yenile" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"HTTPS CA dosyası isteğe bağlıdır. Yalnızca HTTPS'yi kendinden imzalı bir " +"sertifikayla kullanıyorsanız gereklidir." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Sertifika dosyaları (*.crt, *.pem)|*.crt;*.pem|Tüm dosyalar|*.*" + +msgid "Open CA certificate file" +msgstr "CA sertifika dosyasını aç" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " +"HTTPS sertifikalarını kullanıyor." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Özel bir CA dosyası kullanmak için lütfen CA dosyanızı Sertifika Deposuna/" +"Anahtarlığa aktarın." + +msgid "Connection to printers connected via the print host failed." +msgstr "" +"Yazdırma ana bilgisayarı aracılığıyla bağlanan yazıcılara bağlantı başarısız " +"oldu." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12467,6 +13191,50 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "Yatak doldurma " + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% dolgu deseni 100%% yoğunluğu desteklemiyor." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Doğrusal desene geçilsin mi?\n" +#~ "Evet - otomatik olarak doğrusal desene geçin\n" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " +#~ "sıfırlayın" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." + +#~ msgid "Newer 3mf version" +#~ msgstr "Daha yeni 3mf sürümü" + +#~ msgid "Show g-code window" +#~ msgstr "G kodu penceresini göster" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Etkinleştirilirse g kodu penceresi görüntülenecektir." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "Density of internal sparse infill, 100% means solid throughout" + +#~ msgid "Tree support wall loops" +#~ msgstr "Ağaç desteği duvar döngüleri" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Bu ayar, ağaç desteğinin etrafındaki duvarların sayısını belirtir" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " 100%% yoğunlukta çalışmıyor " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Üst Karakter + Enter" @@ -12488,9 +13256,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Tüm nesneleri STL olarak dışa aktar" -#~ msgid "Slice ok." -#~ msgstr "Dilimleme tamam." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12736,67 +13501,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "Seçilen ön ayar: %1% bulunamadı." -#~ msgid "Physical Printer" -#~ msgstr "Fiziksel Yazıcı" - -#~ msgid "Print Host upload" -#~ msgstr "Yazıcı Bağlantı Ayarları" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Geçerli bir Yazıcı Ana Bilgisayarı referansı alınamadı" - -#~ msgid "Success!" -#~ msgstr "Başarılı!" - -#~ msgid "Refresh Printers" -#~ msgstr "Yazıcıları Yenile" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "HTTPS CA dosyası isteğe bağlıdır. Yalnızca HTTPS'yi kendinden imzalı bir " -#~ "sertifikayla kullanıyorsanız gereklidir." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "Sertifika dosyaları (*.crt, *.pem)|*.crt;*.pem|Tüm dosyalar|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "CA sertifika dosyasını aç" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " -#~ "HTTPS sertifikalarını kullanıyor." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Özel bir CA dosyası kullanmak için lütfen CA dosyanızı Sertifika Deposuna/" -#~ "Anahtarlığa aktarın." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Yazdırma ana bilgisayarı aracılığıyla bağlanan yazıcılara bağlantı " -#~ "başarısız oldu." - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "Başlangıç, bitiş veya adım geçerli bir değer değildir." - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "" -#~ "Kalibre edilemiyor: ayarlanan kalibrasyon değeri aralığı çok büyük veya " -#~ "adım çok küçük olduğu için olabilir" - -#~ msgid "Need select printer" -#~ msgstr "Yazıcı seçmeniz gerekiyor" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 2a502898f2..38fde05955 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-08-10 20:25-0400\n" "Last-Translator: \n" "Language-Team: \n" @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.3.2\n" msgid "Supports Painting" @@ -1183,9 +1183,6 @@ msgstr "Клацніть значок, щоб відредагувати кол msgid "Click the icon to shift this object to the bed" msgstr "Клацніть значок, щоб перемістити цей об'єкт на столі" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "Завантаження файлу" @@ -1723,7 +1720,7 @@ msgstr "Орієнтування..." msgid "Orienting" msgstr "Орієнтація" -msgid "Filling bed " +msgid "Filling" msgstr "" msgid "Bed filling canceled." @@ -2615,20 +2612,6 @@ msgstr "" "ТАК - Зберегти Башту Очистки\n" "НІ - Зберегти незалежну висоту опорного шару" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "Шаблон заповнення %1% не підтримує щільність 100%%." - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"Переключити на прямолінійний шаблон?\n" -"Так - автоматично перемикатися на прямолінійний шаблон\n" -"Ні - автоматично скинути щільність до значення за замовчуванням, " -"відмінноговід 100%" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2729,6 +2712,18 @@ msgstr "" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "MC" @@ -3191,7 +3186,7 @@ msgstr "Об'єм:" msgid "Size:" msgstr "Розмір:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3569,6 +3564,12 @@ msgstr "Використовуйте вигляд у перспективі" msgid "Use Orthogonal View" msgstr "Використовувати ортогональний вигляд" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "Показати &Ярлики" @@ -3955,6 +3956,9 @@ msgstr "Завантаження %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4110,10 +4114,10 @@ msgstr "Шар: %s" msgid "Layer: %d/%d" msgstr "Шар: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." msgstr "" -"Будь ласка, нагрійте сопло до температури вище 170 градусів перед " -"завантаженням нитки." msgid "Still unload" msgstr "Ще розвантажити" @@ -4665,31 +4669,6 @@ msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "" "3mf генерується старим слайсером Orca, завантажувати лише дані геометрії." -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "Нова версія 3mf" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "У 3mf знайдено неприпустимі значення:" @@ -5190,12 +5169,6 @@ msgstr "Показувати повідомлення \"Рада дня\" піс msgid "If enabled, useful hints are displayed at startup." msgstr "Якщо увімкнено, під час запуску відображаються корисні підказки." -msgid "Show g-code window" -msgstr "Показати вікно g-коду" - -msgid "If enabled, g-code window will be displayed." -msgstr "Якщо увімкнено, з'явиться вікно g-коду." - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5570,6 +5543,9 @@ msgstr "Завдання скасовано" msgid "(LAN)" msgstr "(LAN)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "Мій пристрій" @@ -5832,6 +5808,12 @@ msgstr "" msgid "The printer does not support sending to printer SD card." msgstr "Принтер не підтримує надсилання на картку SD принтера." +msgid "Slice ok." +msgstr "Нарізка прибл." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "" @@ -6003,11 +5985,25 @@ msgstr "" "0 відстань між вершинами z, 0 відстань між підтримкою, концентричний малюнок " "та відключення висота незалежного опорного шару" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "При записі таймлапсу без інструментальної головки рекомендується додати " "“Timelapse Wipe Tower” \n" @@ -6375,6 +6371,12 @@ msgstr[0] "Наступне попереднє встановлення тако msgstr[1] "Наступні стилі також будуть видалені." msgstr[2] "Наступні стилі також будуть видалені." +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "Ви впевнені, що %1% вибраної установки?" @@ -7386,6 +7388,25 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "Під час друку \"По об'єкту\" праймер не підтримується." @@ -7457,11 +7478,6 @@ msgstr "" msgid "Layer height cannot exceed nozzle diameter" msgstr "Висота шару не може перевищувати діаметр сопла" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7839,6 +7855,15 @@ msgstr "" "Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість " "матеріалу для мосту, щоб покращити провисання" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "Коефіцієнт потоку верхньої поверхні" @@ -8161,6 +8186,15 @@ msgstr "" "великівідстань, але можуть виглядати гірше. Якщо відключити, мости " "виглядають краще,Але надійні лише для більш коротких мостових відстаней." +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "Максимальна довжина мосту" @@ -8648,11 +8682,11 @@ msgstr "" msgid "Sparse infill density" msgstr "Щільність заповнення" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" -"Щільність внутрішнього розрідженого заповнення, 100%% означає суцільне " -"заповнення по всій площі" msgid "Sparse infill pattern" msgstr "Малюнок заповнення" @@ -8889,10 +8923,10 @@ msgstr "Повна швидкість вентилятора на шарі" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Швидкість вентилятора лінійно збільшується від нуля на " "рівні«close_fan_the_first_x_layers» до максимуму на рівні " @@ -8954,6 +8988,12 @@ msgid "" msgstr "" "Середня відстань між випадковими точками, введеними на кожному відрізкулінії" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "Відфільтрувати крихітні зазори" @@ -10227,10 +10267,10 @@ msgstr "" "відсутність конкретного філаменту для опори та використання поточного " "філаменту" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10477,11 +10517,11 @@ msgid "" "double walls." msgstr "" -msgid "Tree support wall loops" -msgstr "Контури опорної стінки дерева" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "Цей параметр визначає кількість периметрів навколо опори дерева" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "Підтримка дерева із заповненням" @@ -10907,10 +10947,6 @@ msgstr "" msgid "invalid value " msgstr "неправильне значення " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " не працює на 100%% щільності " - msgid "Invalid value when spiral vase mode is enabled: " msgstr "Неприпустиме значення при увімкненому режимі спіральної вази: " @@ -11767,6 +11803,687 @@ msgstr "" msgid "Delete input" msgstr "" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "Фізичний принтер" + +msgid "Print Host upload" +msgstr "Завантаження хоста друку" + +msgid "Could not get a valid Printer Host reference" +msgstr "Неможливо отримати дійсне посилання на хост принтера" + +msgid "Success!" +msgstr "Успіх!" + +msgid "Refresh Printers" +msgstr "Оновити принтери" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Файл HTTPS CA є необов'язковим. Він необхідний лише під час використання " +"HTTPS із сертифікатом." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Файли сертифікатів (*.crt, *.pem)|*.crt;*.pem|Всі файли|*.*" + +msgid "Open CA certificate file" +msgstr "Відкрити файл сертифіката ЦС" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"У цій системі %s використовує HTTPS-сертифікати із системного сховища " +"сертифікатів або Keychain." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Щоб використовувати власний файл ЦС, імпортуйте файл ЦС в сховище " +"сертифікатів/Keychain." + +msgid "Connection to printers connected via the print host failed." +msgstr "Не вдалося підключитися до принтерів, підключених через вузол друку." + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12049,6 +12766,50 @@ msgid "" "probability of warping." msgstr "" +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "Шаблон заповнення %1% не підтримує щільність 100%%." + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "Переключити на прямолінійний шаблон?\n" +#~ "Так - автоматично перемикатися на прямолінійний шаблон\n" +#~ "Ні - автоматично скинути щільність до значення за замовчуванням, " +#~ "відмінноговід 100%" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "" +#~ "Будь ласка, нагрійте сопло до температури вище 170 градусів перед " +#~ "завантаженням нитки." + +#~ msgid "Newer 3mf version" +#~ msgstr "Нова версія 3mf" + +#~ msgid "Show g-code window" +#~ msgstr "Показати вікно g-коду" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "Якщо увімкнено, з'явиться вікно g-коду." + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "" +#~ "Щільність внутрішнього розрідженого заповнення, 100%% означає суцільне " +#~ "заповнення по всій площі" + +#~ msgid "Tree support wall loops" +#~ msgstr "Контури опорної стінки дерева" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "Цей параметр визначає кількість периметрів навколо опори дерева" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " не працює на 100%% щільності " + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12068,9 +12829,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "Експортувати всі об'єкти у форматі STL" -#~ msgid "Slice ok." -#~ msgstr "Нарізка прибл." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12248,53 +13006,6 @@ msgstr "" #~ "Встановлює рівень реєстрації налагодження. 0: непереборний, 1: помилка, " #~ "2: попередження, 3: інформація, 4: налагодження, 5: трасування\n" -#~ msgid "Physical Printer" -#~ msgstr "Фізичний принтер" - -#~ msgid "Print Host upload" -#~ msgstr "Завантаження хоста друку" - -#~ msgid "Could not get a valid Printer Host reference" -#~ msgstr "Неможливо отримати дійсне посилання на хост принтера" - -#~ msgid "Success!" -#~ msgstr "Успіх!" - -#~ msgid "Refresh Printers" -#~ msgstr "Оновити принтери" - -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "Файл HTTPS CA є необов'язковим. Він необхідний лише під час використання " -#~ "HTTPS із сертифікатом." - -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "Файли сертифікатів (*.crt, *.pem)|*.crt;*.pem|Всі файли|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "Відкрити файл сертифіката ЦС" - -#, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "" -#~ "У цій системі %s використовує HTTPS-сертифікати із системного сховища " -#~ "сертифікатів або Keychain." - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "Щоб використовувати власний файл ЦС, імпортуйте файл ЦС в сховище " -#~ "сертифікатів/Keychain." - -#~ msgid "Connection to printers connected via the print host failed." -#~ msgstr "" -#~ "Не вдалося підключитися до принтерів, підключених через вузол друку." - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index a3ac14c6dd..2025088bd3 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: SoftFever \n" "Language-Team: \n" @@ -1164,9 +1164,6 @@ msgstr "点击此图标可编辑这个对象的颜色绘制" msgid "Click the icon to shift this object to the bed" msgstr "点击这个图标可将对象移动到热床上" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "载入文件中" @@ -1673,8 +1670,8 @@ msgstr "自动朝向中..." msgid "Orienting" msgstr "自动朝向中..." -msgid "Filling bed " -msgstr "填充热床" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "填充热床已取消。" @@ -2494,19 +2491,6 @@ msgstr "" "是 - 选择开启擦拭塔\n" "否 - 选择保留支撑独立层高" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% 填充图案不支持 100%% 密度。" - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"切换到直线图案?\n" -"是 - 自动切换到直线图案\n" -"否 - 自动将密度重置为默认的非100%值" - msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." @@ -2605,6 +2589,18 @@ msgstr "暂停,由于用户插入的Gcode" msgid "Motor noise showoff" msgstr "" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "" @@ -3073,7 +3069,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, boost-format +#, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3449,6 +3445,12 @@ msgstr "使用透视视角" msgid "Use Orthogonal View" msgstr "使用正交视角" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "显示名称" @@ -3817,6 +3819,9 @@ msgstr "下载中 %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -3972,8 +3977,10 @@ msgstr "层: %s" msgid "Layer: %d/%d" msgstr "层: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "请在进料前把喷嘴升温到170℃" +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "继续退料" @@ -4505,31 +4512,6 @@ msgstr "配置无法加载。" msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "该3mf文件来自旧版本的逆戟鲸切片,将只加载几何数据。" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "较新的3mf版本" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "在3mf文件中发现无效值:" @@ -5010,12 +4992,6 @@ msgstr "启动后显示“每日小贴士”通知" msgid "If enabled, useful hints are displayed at startup." msgstr "如果启用,将在启动时显示有用的提示。" -msgid "Show g-code window" -msgstr "显示g-code窗口" - -msgid "If enabled, g-code window will be displayed." -msgstr "如果启用,将显示g-code窗口。" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5380,6 +5356,9 @@ msgstr "任务已取消" msgid "(LAN)" msgstr "(局域网)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "我的设备" @@ -5629,6 +5608,12 @@ msgstr "打印机需要与Orca Slicer在同一个局域网内。" msgid "The printer does not support sending to printer SD card." msgstr "该打印机不支持发送到打印机SD卡。" +msgid "Slice ok." +msgstr "切片完成." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "无法创建套接字" @@ -5800,11 +5785,25 @@ msgstr "" "当使用支持界面的支持材料时,我们推荐以下设置:\n" "0顶层z距离,0接触层间距,同心图案,并且禁用独立支撑层高" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "在录制无工具头延时摄影视频时,建议添加“延时摄影擦料塔”\n" "右键单击打印板的空白位置,选择“添加标准模型”->“延时摄影擦料塔”。" @@ -6146,6 +6145,12 @@ msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "下列预设将被一起删除。" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "确定要%1%所选预设吗?" @@ -7123,6 +7128,25 @@ msgstr "或许您想要缩小模型的尺寸,或者更改当前打印设置, msgid "Variable layer height is not supported with Organic supports." msgstr "Organic支撑不支持可变层高。" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + msgid "The prime tower is not supported in \"By object\" print." msgstr "擦拭塔不支持在逐件打印模式下使用。" @@ -7184,11 +7208,6 @@ msgstr "使用了支撑添加器但没有打开支撑。请打开支撑。" msgid "Layer height cannot exceed nozzle diameter" msgstr "层高不能超过喷嘴直径" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - msgid "" "Relative extruder addressing requires resetting the extruder position at " "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " @@ -7521,6 +7540,15 @@ msgid "" "material for bridge, to improve sag" msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "顶部表面流量比例" @@ -7834,6 +7862,15 @@ msgstr "" "如果启用,桥接会更可靠,可以桥接更长的距离,但可能看起来更糟。如果关闭,桥梁" "看起来更好,但只适用于较短的桥接距离。" +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "最大桥接长度" @@ -8293,9 +8330,11 @@ msgstr "稀疏填充图案的角度,决定走线的开始或整体方向。" msgid "Sparse infill density" msgstr "稀疏填充密度" -#, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "稀疏填充密度, 100%% 意味着完全实心。" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "稀疏填充图案" @@ -8506,10 +8545,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" @@ -8558,6 +8597,12 @@ msgid "" "segment" msgstr "产生绒毛表面时,插入的随机点之间的平均距离" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "忽略微小间隙" @@ -9763,10 +9808,10 @@ msgid "" msgstr "" "打印支撑主体和筏层的耗材丝。\"缺省\"代表不指定特定的耗材丝,并使用当前耗材" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10009,11 +10054,11 @@ msgstr "" "该值大于以分支直径得到的圆形面积时,将打印双层墙,以保持稳定性。如不使用双层" "墙,请将该值设置为0。" -msgid "Tree support wall loops" -msgstr "树状支撑外墙层数" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "树状支撑外墙层数" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "树状支撑生成填充" @@ -10425,10 +10470,6 @@ msgstr "" msgid "invalid value " msgstr "非法的值 " -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " 填充图案不支持 100%% 密度" - msgid "Invalid value when spiral vase mode is enabled: " msgstr "旋转花瓶模式下非法的值" @@ -11342,6 +11383,679 @@ msgstr "零件 2" msgid "Delete input" msgstr "删除输入" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +msgid "Need select printer" +msgstr "需要选择打印机" + +msgid "The start, end or step is not valid value." +msgstr "" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "" + +msgid "Physical Printer" +msgstr "物理打印机" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "成功!" + +msgid "Refresh Printers" +msgstr "刷新打印机" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "" + +msgid "Open CA certificate file" +msgstr "" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -11607,6 +12321,48 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "填充热床" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% 填充图案不支持 100%% 密度。" + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "切换到直线图案?\n" +#~ "是 - 自动切换到直线图案\n" +#~ "否 - 自动将密度重置为默认的非100%值" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "请在进料前把喷嘴升温到170℃" + +#~ msgid "Newer 3mf version" +#~ msgstr "较新的3mf版本" + +#~ msgid "Show g-code window" +#~ msgstr "显示g-code窗口" + +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "如果启用,将显示g-code窗口。" + +#, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "稀疏填充密度, 100%% 意味着完全实心。" + +#~ msgid "Tree support wall loops" +#~ msgstr "树状支撑外墙层数" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "树状支撑外墙层数" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " 填充图案不支持 100%% 密度" + #~ msgid "Tool-Lay on Face" #~ msgstr "工具-选择底面" @@ -11625,9 +12381,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "导出所有对象为STL" -#~ msgid "Slice ok." -#~ msgstr "切片完成." - #, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -11850,18 +12603,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "未找到选定的预设:%1%。" -#~ msgid "Physical Printer" -#~ msgstr "物理打印机" - -#~ msgid "Success!" -#~ msgstr "成功!" - -#~ msgid "Refresh Printers" -#~ msgstr "刷新打印机" - -#~ msgid "Need select printer" -#~ msgstr "需要选择打印机" - #~ msgid "" #~ "3D Scene Operations\n" #~ "Did you know how to control view and object/part selection with mouse and " diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 0d657c5310..82e752b75b 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-24 18:09+0100\n" +"POT-Creation-Date: 2023-12-02 13:02+0800\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -1236,9 +1236,6 @@ msgstr "滑鼠左鍵點擊此圖示可編輯這個物件的顏色繪製" msgid "Click the icon to shift this object to the bed" msgstr "滑鼠左鍵點擊這個圖示可將物件移動到列印板上" -msgid " search results" -msgstr "" - msgid "Loading file" msgstr "載入檔案中" @@ -1765,8 +1762,8 @@ msgstr "自動旋轉方向..." msgid "Orienting" msgstr "自動旋轉方向..." -msgid "Filling bed " -msgstr "填充自動朝向" +msgid "Filling" +msgstr "" msgid "Bed filling canceled." msgstr "填充列印板已取消。" @@ -2639,19 +2636,6 @@ msgstr "" "是 - 選擇開啟擦拭塔\n" "否 - 選擇保留支撐獨立層高" -#, boost-format -msgid "%1% infill pattern doesn't support 100%% density." -msgstr "%1% 填充圖案不支援 100%% 密度。" - -msgid "" -"Switch to rectilinear pattern?\n" -"Yes - switch to rectilinear pattern automaticlly\n" -"No - reset density to default non 100% value automaticlly" -msgstr "" -"切換到直線圖案?\n" -"是 - 自動切換到直線圖案\n" -"否 - 自動將密度重設為預設的非 100% 值" - #, fuzzy msgid "" "While printing by Object, the extruder may collide skirt.\n" @@ -2756,6 +2740,18 @@ msgstr "使用者插入的 Gcode 導致暫停" msgid "Motor noise showoff" msgstr "電機噪音" +msgid "Nozzle filament covered detected pause" +msgstr "" + +msgid "Cutter error pause" +msgstr "" + +msgid "First layer error pause" +msgstr "" + +msgid "Nozzle clog pause" +msgstr "" + msgid "MC" msgstr "" @@ -3249,7 +3245,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, fuzzy, boost-format +#, fuzzy, c-format, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -3646,6 +3642,12 @@ msgstr "使用透視視角" msgid "Use Orthogonal View" msgstr "使用正交視角" +msgid "Show &G-code Window" +msgstr "" + +msgid "Show g-code window in Previce scene" +msgstr "" + msgid "Show &Labels" msgstr "顯示名稱" @@ -4026,6 +4028,9 @@ msgstr "下載中 %d%%..." msgid "Connection lost. Please retry." msgstr "" +msgid "The device cannot handle more conversations. Please retry later." +msgstr "" + msgid "File not exists." msgstr "" @@ -4186,8 +4191,10 @@ msgstr "%s 層" msgid "Layer: %d/%d" msgstr "%d/%d 層" -msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "請在進料前把噴嘴升溫到 170℃" +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" msgid "Still unload" msgstr "繼續退料" @@ -4758,31 +4765,6 @@ msgstr "設定檔無法載入。" msgid "The 3mf is generated by old Orca Slicer, load geometry data only." msgstr "該 3mf 檔案來自舊版本的 Orca Slicer" -#, c-format, boost-format -msgid "This slicer file version %s is newer than %s's version:" -msgstr "" - -msgid "" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?\n" -msgstr "" - -msgid "Newer 3mf version" -msgstr "較新的 3mf 版本" - -msgid "" -"you can always update Bambu Studio at your convenience. The slicer file will " -"now be loaded without full functionality." -msgstr "" - -#, c-format, boost-format -msgid "" -"This slicer file version %s is newer than %s's version.\n" -"\n" -"Would you like to update your Bambu Studio software to enable all " -"functionality in this slicer file?" -msgstr "" - msgid "Invalid values found in the 3mf:" msgstr "在 3mf 檔案中發現無效值:" @@ -5284,14 +5266,6 @@ msgstr "啟動後顯示\"每日小提示\"通知" msgid "If enabled, useful hints are displayed at startup." msgstr "如果啟用,將在啟動時顯示有用的提示。" -#, fuzzy -msgid "Show g-code window" -msgstr "顯示 G-code 視窗" - -#, fuzzy -msgid "If enabled, g-code window will be displayed." -msgstr "如果啟用,將顯示 G-Code 視窗。" - msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "" @@ -5681,6 +5655,9 @@ msgstr "任務已取消" msgid "(LAN)" msgstr "(區域網路)" +msgid "Search" +msgstr "" + msgid "My Device" msgstr "我的設備" @@ -5958,6 +5935,12 @@ msgstr "列印設備需要與 Orca Slicer 在同一個區域網路內。" msgid "The printer does not support sending to printer SD card." msgstr "該列印設備不支援傳送到 SD 記憶卡。" +msgid "Slice ok." +msgstr "切片完成." + +msgid "View all Daily tips" +msgstr "" + msgid "Failed to create socket" msgstr "建立網路端點連線失敗" @@ -6145,12 +6128,26 @@ msgstr "" "當使用專用的支撐線材時,我們推薦以下設定:\n" "0 頂層z距離,0 接觸層間距,同心圖案,並且禁用獨立支撐層高" +msgid "" +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." +msgstr "" + +msgid "Adjust to the set range automatically? \n" +msgstr "" + +msgid "Adjust" +msgstr "" + +msgid "Ignore" +msgstr "" + #, fuzzy msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "在錄製無工具頭縮時錄影影片時,建議增加“縮時錄影擦拭塔”\n" "右鍵單擊列印板的空白位置,選擇“新增標準模型”->“縮時錄影擦拭塔”。" @@ -6523,6 +6520,12 @@ msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." msgstr[0] "下列預設將被一起刪除。" +msgid "" +"Are you sure to delete the selected preset? \n" +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." +msgstr "" + #, fuzzy, boost-format msgid "Are you sure to %1% the selected preset?" msgstr "確定要 %1% 所選預設嗎?" @@ -7555,6 +7558,25 @@ msgstr "您可能想要減小模型的尺寸或更改目前的列印設定並重 msgid "Variable layer height is not supported with Organic supports." msgstr "有機樹支撐不支持可變層高。" +msgid "" +"Different nozzle diameters and different filament diameters is not allowed " +"when prime tower is enabled." +msgstr "" + +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" + +msgid "" +"Ooze prevention is currently not supported with the prime tower enabled." +msgstr "" + +msgid "" +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." +msgstr "" + #, fuzzy msgid "The prime tower is not supported in \"By object\" print." msgstr "逐件列印模式下無法使用擦拭塔。" @@ -7621,11 +7643,6 @@ msgstr "使用支撐添加器但沒有打開支撐。請打開支撐。" msgid "Layer height cannot exceed nozzle diameter" msgstr "層高不能超過噴嘴直徑" -msgid "" -"Layer height cannot exceed the limit in Printer Settings -> Extruder -> " -"Layer height limits" -msgstr "" - #, fuzzy msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -7998,6 +8015,15 @@ msgid "" "material for bridge, to improve sag" msgstr "稍微減小這個數值(比如 0.9)可以減小橋接的線材量,來改善下垂。" +msgid "Internal bridge flow" +msgstr "" + +msgid "" +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill." +msgstr "" + msgid "Top surface flow ratio" msgstr "頂部表面流量比例" @@ -8347,6 +8373,15 @@ msgstr "" "如果啟用,橋接會更可靠,可以橋接更長的距離,但可能看起來更糟。如果關閉,橋梁" "看起來更好,但只適用於較短的橋接距離。" +msgid "Thick internal bridges" +msgstr "" + +msgid "" +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." +msgstr "" + msgid "Max bridge length" msgstr "最大橋接長度" @@ -8832,9 +8867,11 @@ msgstr "稀疏填充圖案的角度,決定走線的開始或整體方向。" msgid "Sparse infill density" msgstr "稀疏填充密度" -#, fuzzy, c-format -msgid "Density of internal sparse infill, 100% means solid throughout" -msgstr "內部稀疏填充密度,100%% 表示整體實心" +#, c-format, boost-format +msgid "" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" +msgstr "" msgid "Sparse infill pattern" msgstr "稀疏填充圖案" @@ -9052,10 +9089,10 @@ msgstr "滿速風扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "風扇速度將從“禁用第一層”的零線性上升到“全風扇速度層”的最大。如果低於“禁用風扇" "第一層”,則“全風扇速度第一層”將被忽略,在這種情況下,風扇將在“禁用風扇第一" @@ -9110,6 +9147,12 @@ msgid "" "segment" msgstr "產生絨毛表面時,插入的隨機點之間的平均距離" +msgid "Apply fuzzy skin to first layer" +msgstr "" + +msgid "Whether to apply fuzzy skin on the first layer" +msgstr "" + msgid "Filter out tiny gaps" msgstr "忽略微小間隙" @@ -10371,10 +10414,10 @@ msgid "" "filament for support and current filament is used" msgstr "列印支撐主體和筏層的線材。\"預設\"代表不指定特定的線材,並使用目前線材" -msgid "No interface filament for body" +msgid "Reduce interface filament for base" msgstr "" -msgid "Don't use support interface filament to print support body" +msgid "Avoid using support interface filament to print support base" msgstr "" msgid "" @@ -10630,11 +10673,11 @@ msgstr "" "該數值大於以分支直徑得到的圓形面積時,將列印雙層牆以確保穩定性。 如果不使用雙" "層牆體,請將此值設為 0。" -msgid "Tree support wall loops" -msgstr "樹狀支撐外牆層數" +msgid "Support wall loops" +msgstr "" -msgid "This setting specify the count of walls around tree support" -msgstr "樹狀支撐外牆層數" +msgid "This setting specify the count of walls around support" +msgstr "" msgid "Tree support with infill" msgstr "樹狀支撐產生填充" @@ -11058,10 +11101,6 @@ msgstr "" msgid "invalid value " msgstr "無效值" -#, c-format, boost-format -msgid " doesn't work at 100%% density " -msgstr " 填充圖案不支援 100%% 密度" - #, fuzzy msgid "Invalid value when spiral vase mode is enabled: " msgstr "花瓶模式時無效值:" @@ -12024,6 +12063,685 @@ msgstr "零件 2" msgid "Delete input" msgstr "刪除輸入" +msgid "Network Test" +msgstr "" + +msgid "Start Test Multi-Thread" +msgstr "" + +msgid "Start Test Single-Thread" +msgstr "" + +msgid "Export Log" +msgstr "" + +msgid "Studio Version:" +msgstr "" + +msgid "System Version:" +msgstr "" + +msgid "DNS Server:" +msgstr "" + +msgid "Test BambuLab" +msgstr "" + +msgid "Test BambuLab:" +msgstr "" + +msgid "Test Bing.com" +msgstr "" + +msgid "Test bing.com:" +msgstr "" + +msgid "Test HTTP" +msgstr "" + +msgid "Test HTTP Service:" +msgstr "" + +msgid "Test storage" +msgstr "" + +msgid "Test Storage Upload:" +msgstr "" + +msgid "Test storage upgrade" +msgstr "" + +msgid "Test Storage Upgrade:" +msgstr "" + +msgid "Test storage download" +msgstr "" + +msgid "Test Storage Download:" +msgstr "" + +msgid "Test plugin download" +msgstr "" + +msgid "Test Plugin Download:" +msgstr "" + +msgid "Test Storage Upload" +msgstr "" + +msgid "Log Info" +msgstr "" + +msgid "Select filament preset" +msgstr "" + +msgid "Create Filament" +msgstr "" + +msgid "Create Based on Current Filament" +msgstr "" + +msgid "Copy Current Filament Preset " +msgstr "" + +msgid "Basic Information" +msgstr "" + +msgid "Add Filament Preset under this filament" +msgstr "" + +msgid "We could create the filament presets for your following printer:" +msgstr "" + +msgid "Select Vendor" +msgstr "" + +msgid "Input Custom Vendor" +msgstr "" + +msgid "Can't find vendor I want" +msgstr "" + +msgid "Select Type" +msgstr "" + +msgid "Select Filament Preset" +msgstr "" + +msgid "Serial" +msgstr "" + +msgid "e.g. Basic, Matte, Silk, Marble" +msgstr "" + +msgid "Filament Preset" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Vendor is not selected, please reselect vendor." +msgstr "" + +msgid "Custom vendor is not input, please input custom vendor." +msgstr "" + +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "" + +msgid "Filament type is not selected, please reselect type." +msgstr "" + +msgid "Filament serial is not inputed, please input serial." +msgstr "" + +msgid "" +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." +msgstr "" + +msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." +msgstr "" + +msgid "The beginning of the vendor can not be a number. Please re-enter." +msgstr "" + +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" + +msgid "Some existing presets have failed to be created, as follows:\n" +msgstr "" + +msgid "" +"\n" +"Do you want to rewrite it?" +msgstr "" + +msgid "" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" +"To add preset for more prinetrs, Please go to printer selection" +msgstr "" + +msgid "Create Printer/Nozzle" +msgstr "" + +msgid "Create Printer" +msgstr "" + +msgid "Create Nozzle for Existing Printer" +msgstr "" + +msgid "Create from Template" +msgstr "" + +msgid "Create Based on Current Printer" +msgstr "" + +msgid "wiki" +msgstr "" + +msgid "Improt Preset" +msgstr "" + +msgid "Create Type" +msgstr "" + +msgid "The model is not fond, place reselect vendor." +msgstr "" + +msgid "Select Model" +msgstr "" + +msgid "Select Printer" +msgstr "" + +msgid "Input Custom Model" +msgstr "" + +msgid "Can't find my printer model" +msgstr "" + +msgid "Rectangle" +msgstr "" + +msgid "Printable Space" +msgstr "" + +msgid "X" +msgstr "" + +msgid "Y" +msgstr "" + +msgid "Hot Bed STL" +msgstr "" + +msgid "Load stl" +msgstr "" + +msgid "Hot Bed SVG" +msgstr "" + +msgid "Load svg" +msgstr "" + +msgid "Max Print Height" +msgstr "" + +#, c-format, boost-format +msgid "The file exceeds %d MB, please import again." +msgstr "" + +msgid "Exception in obtaining file size, please import again." +msgstr "" + +msgid "Preset path is not find, please reselect vendor." +msgstr "" + +msgid "The printer model was not found, please reselect." +msgstr "" + +msgid "The nozzle diameter is not fond, place reselect." +msgstr "" + +msgid "The printer preset is not fond, place reselect." +msgstr "" + +msgid "Printer Preset" +msgstr "" + +msgid "Filament Preset Template" +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Process Preset Template" +msgstr "" + +msgid "Back Page 1" +msgstr "" + +msgid "" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" +msgstr "" + +msgid "" +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." +msgstr "" + +msgid "The custom printer or model is not inputed, place input." +msgstr "" + +msgid "" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" +"\tCancel: Do not create a preset, return to the creation interface." +msgstr "" + +msgid "You need to select at least one filament preset." +msgstr "" + +msgid "You need to select at least one process preset." +msgstr "" + +msgid "Create filament presets failed. As follows:\n" +msgstr "" + +msgid "Create process presets failed. As follows:\n" +msgstr "" + +msgid "Vendor is not find, please reselect." +msgstr "" + +msgid "Current vendor has no models, please reselect." +msgstr "" + +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." +msgstr "" + +msgid "" +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." +msgstr "" + +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "" + +msgid "Please check bed printable shape and origin input." +msgstr "" + +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." +msgstr "" + +msgid "Create Printer Successful" +msgstr "" + +msgid "Create Filament Successful" +msgstr "" + +msgid "Printer Created" +msgstr "" + +msgid "Please go to printer settings to edit your presets" +msgstr "" + +msgid "Filament Created" +msgstr "" + +msgid "" +"Please go to filament setting to edit your presets if you need.\n" +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed have a significant impact on printing quality. Please set " +"them carefully." +msgstr "" + +msgid "Printer Setting" +msgstr "" + +msgid "Export Configs" +msgstr "" + +msgid "Printer config bundle(.bbscfg)" +msgstr "" + +msgid "Filament bundle(.bbsflmt)" +msgstr "" + +msgid "Printer presets(.zip)" +msgstr "" + +msgid "Filament presets(.zip)" +msgstr "" + +msgid "Process presets(.zip)" +msgstr "" + +msgid "initialize fail" +msgstr "" + +msgid "add file fail" +msgstr "" + +msgid "add bundle structure file fail" +msgstr "" + +msgid "finalize fail" +msgstr "" + +msgid "open zip written fail" +msgstr "" + +msgid "Export successful" +msgstr "" + +#, c-format, boost-format +msgid "" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." +msgstr "" + +msgid "" +"Printer and all the filament&process presets that belongs to the printer. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"User's fillment preset set. \n" +"Can be shared with others." +msgstr "" + +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." +msgstr "" + +msgid "Only display the filament names with changes to filament presets." +msgstr "" + +msgid "" +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." +msgstr "" + +msgid "" +"Only the filament names with user filament presets will be displayed, \n" +"and all user filament presets in each filament name you select will be " +"exported as a zip." +msgstr "" + +msgid "" +"Only printer names with changed process presets will be displayed, \n" +"and all user process presets in each printer name you select will be " +"exported as a zip." +msgstr "" + +msgid "Please select at least one printer or filament." +msgstr "" + +msgid "Please select a type you want to export" +msgstr "" + +msgid "Edit Filament" +msgstr "" + +msgid "Filament presets under this filament" +msgstr "" + +msgid "" +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." +msgstr "" + +msgid "Presets inherited by other presets can not be deleted" +msgstr "" + +msgid "The following presets inherits this preset." +msgid_plural "The following preset inherits this preset." +msgstr[0] "" + +msgid "Delete Preset" +msgstr "" + +msgid "Are you sure to delete the selected preset?" +msgstr "" + +msgid "Delete preset" +msgstr "" + +msgid "+ Add Preset" +msgstr "" + +msgid "Delete Filament" +msgstr "" + +msgid "" +"All the filament presets belong to this filament would be deleted. \n" +"If you are using this filament on your printer, please reset the filament " +"information for that slot." +msgstr "" + +msgid "Delete filament" +msgstr "" + +msgid "Add Preset" +msgstr "" + +msgid "Add preset for new printer" +msgstr "" + +msgid "Copy preset from filament" +msgstr "" + +msgid "The filament choice not find filament preset, please reselect it" +msgstr "" + +msgid "Edit Preset" +msgstr "" + +msgid "For more information, please check out Wiki" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Daily Tips" +msgstr "" + +#, fuzzy +msgid "Need select printer" +msgstr "需要選擇列印設備" + +msgid "The start, end or step is not valid value." +msgstr "開始、結束或步距不是有效值。" + +msgid "" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" +msgstr "無法校準:可能是設定的校準值範圍太大,或步距太小" + +#, fuzzy +msgid "Physical Printer" +msgstr "實體列印設備" + +msgid "Print Host upload" +msgstr "" + +msgid "Could not get a valid Printer Host reference" +msgstr "" + +msgid "Success!" +msgstr "成功!" + +#, fuzzy +msgid "Refresh Printers" +msgstr "重新整理列印設備" + +#, fuzzy +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"HTTPS CA 憑證檔案是可選的。 僅當您使用具有自帶簽名憑證的 HTTPS 時才需要它。" + +#, fuzzy +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "憑證檔(*.crt, *.pem)|*.crt;*.pem|All files|*.*" + +msgid "Open CA certificate file" +msgstr "開啟 CA憑證檔" + +#, fuzzy, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "在此系統上,%s 使用系統憑證儲存庫或鑰匙圈中的 HTTPS 憑證。" + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "若要使用自訂 CA 憑證檔,請將您的 CA 憑證檔匯入到憑證儲存庫/鑰匙圈中。" + +msgid "Connection to printers connected via the print host failed." +msgstr "" + +#, c-format, boost-format +msgid "Mismatched type of print host: %s" +msgstr "" + +msgid "Connection to AstroBox works correctly." +msgstr "" + +msgid "Could not connect to AstroBox" +msgstr "" + +msgid "Note: AstroBox version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Duet works correctly." +msgstr "" + +msgid "Could not connect to Duet" +msgstr "" + +msgid "Unknown error occured" +msgstr "" + +msgid "Wrong password" +msgstr "" + +msgid "Could not get resources to create a new connection" +msgstr "" + +msgid "Upload not enabled on FlashAir card." +msgstr "" + +msgid "Connection to FlashAir works correctly and upload is enabled." +msgstr "" + +msgid "Could not connect to FlashAir" +msgstr "" + +msgid "" +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." +msgstr "" + +msgid "Connection to MKS works correctly." +msgstr "" + +msgid "Could not connect to MKS" +msgstr "" + +msgid "Connection to OctoPrint works correctly." +msgstr "" + +msgid "Could not connect to OctoPrint" +msgstr "" + +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "" + +msgid "Connection to Prusa SL1 / SL1S works correctly." +msgstr "" + +msgid "Could not connect to Prusa SLA" +msgstr "" + +msgid "Connection to PrusaLink works correctly." +msgstr "" + +msgid "Could not connect to PrusaLink" +msgstr "" + +msgid "Storages found" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : read only" +msgstr "" + +#. TRN %1% = storage path +#, boost-format +msgid "%1% : no free space" +msgstr "" + +#. TRN %1% = host +#, boost-format +msgid "Upload has failed. There is no suitable storage found at %1%." +msgstr "" + +msgid "Connection to Prusa Connect works correctly." +msgstr "" + +msgid "Could not connect to Prusa Connect" +msgstr "" + +msgid "Connection to Repetier works correctly." +msgstr "" + +msgid "Could not connect to Repetier" +msgstr "" + +msgid "Note: Repetier version at least 0.90.0 is required." +msgstr "" + +#, boost-format +msgid "" +"HTTP status: %1%\n" +"Message body: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Parsing of host response failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + +#, boost-format +msgid "" +"Enumeration of host printers failed.\n" +"Message body: \"%1%\"\n" +"Error: \"%2%\"" +msgstr "" + #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" @@ -12302,6 +13020,50 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Filling bed " +#~ msgstr "填充自動朝向" + +#, boost-format +#~ msgid "%1% infill pattern doesn't support 100%% density." +#~ msgstr "%1% 填充圖案不支援 100%% 密度。" + +#~ msgid "" +#~ "Switch to rectilinear pattern?\n" +#~ "Yes - switch to rectilinear pattern automaticlly\n" +#~ "No - reset density to default non 100% value automaticlly" +#~ msgstr "" +#~ "切換到直線圖案?\n" +#~ "是 - 自動切換到直線圖案\n" +#~ "否 - 自動將密度重設為預設的非 100% 值" + +#~ msgid "Please heat the nozzle to above 170 degree before loading filament." +#~ msgstr "請在進料前把噴嘴升溫到 170℃" + +#~ msgid "Newer 3mf version" +#~ msgstr "較新的 3mf 版本" + +#, fuzzy +#~ msgid "Show g-code window" +#~ msgstr "顯示 G-code 視窗" + +#, fuzzy +#~ msgid "If enabled, g-code window will be displayed." +#~ msgstr "如果啟用,將顯示 G-Code 視窗。" + +#, fuzzy, c-format +#~ msgid "Density of internal sparse infill, 100% means solid throughout" +#~ msgstr "內部稀疏填充密度,100%% 表示整體實心" + +#~ msgid "Tree support wall loops" +#~ msgstr "樹狀支撐外牆層數" + +#~ msgid "This setting specify the count of walls around tree support" +#~ msgstr "樹狀支撐外牆層數" + +#, c-format, boost-format +#~ msgid " doesn't work at 100%% density " +#~ msgstr " 填充圖案不支援 100%% 密度" + #~ msgid "Ctrl + Shift + Enter" #~ msgstr "Ctrl + Shift + Enter" @@ -12326,9 +13088,6 @@ msgstr "" #~ msgid "Export all objects as STL" #~ msgstr "匯出所有物件為 STL" -#~ msgid "Slice ok." -#~ msgstr "切片完成." - #, fuzzy, c-format, boost-format #~ msgid "" #~ "The 3mf's version %s is newer than %s's version %s, Found following keys " @@ -12578,56 +13337,6 @@ msgstr "" #~ msgid "The selected preset: %1% is not found." #~ msgstr "未找到選定的預設值:%1%。" -#, fuzzy -#~ msgid "Physical Printer" -#~ msgstr "實體列印設備" - -#~ msgid "Success!" -#~ msgstr "成功!" - -#, fuzzy -#~ msgid "Refresh Printers" -#~ msgstr "重新整理列印設備" - -#, fuzzy -#~ msgid "" -#~ "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -#~ "signed certificate." -#~ msgstr "" -#~ "HTTPS CA 憑證檔案是可選的。 僅當您使用具有自帶簽名憑證的 HTTPS 時才需要" -#~ "它。" - -#, fuzzy -#~ msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#~ msgstr "憑證檔(*.crt, *.pem)|*.crt;*.pem|All files|*.*" - -#~ msgid "Open CA certificate file" -#~ msgstr "開啟 CA憑證檔" - -#, fuzzy, c-format, boost-format -#~ msgid "" -#~ "On this system, %s uses HTTPS certificates from the system Certificate " -#~ "Store or Keychain." -#~ msgstr "在此系統上,%s 使用系統憑證儲存庫或鑰匙圈中的 HTTPS 憑證。" - -#~ msgid "" -#~ "To use a custom CA file, please import your CA file into Certificate " -#~ "Store / Keychain." -#~ msgstr "" -#~ "若要使用自訂 CA 憑證檔,請將您的 CA 憑證檔匯入到憑證儲存庫/鑰匙圈中。" - -#~ msgid "The start, end or step is not valid value." -#~ msgstr "開始、結束或步距不是有效值。" - -#~ msgid "" -#~ "Unable to calibrate: maybe because the set calibration value range is too " -#~ "large, or the step is too small" -#~ msgstr "無法校準:可能是設定的校準值範圍太大,或步距太小" - -#, fuzzy -#~ msgid "Need select printer" -#~ msgstr "需要選擇列印設備" - #, fuzzy #~ msgid "" #~ "3D Scene Operations\n" From 2745575dd21962ba7fd706855c89bc8688a0a9f8 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 13:03:47 +0800 Subject: [PATCH 11/93] bump version to 1.9.0-dev --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index fe58ae7406..542d7be27a 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SoftFever_VERSION "1.8.0") +set(SoftFever_VERSION "1.9.0-dev") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From 0cee51341688996c278b1fa1fbe2af99b66e4fe9 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 3 Dec 2023 09:27:03 +0800 Subject: [PATCH 12/93] Add a simple subtle outline effect by drawing back faces using wireframe mode (#2934) * Add a simple subtle outline effect by drawing back faces using wireframe mode * Show outline in white if the model color is too dark * Make the outline algorithm more reliable * Enable cull face, which fix render on Linux * Fix `disable_cullface` --- resources/shaders/110/gouraud.fs | 10 +++++++++- resources/shaders/140/gouraud.fs | 10 +++++++++- src/slic3r/GUI/3DScene.cpp | 29 +++++++++++++++++++++++++---- src/slic3r/GUI/GCodeViewer.cpp | 5 +++-- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/resources/shaders/110/gouraud.fs b/resources/shaders/110/gouraud.fs index 6f354ff9a6..7c90ee25d5 100644 --- a/resources/shaders/110/gouraud.fs +++ b/resources/shaders/110/gouraud.fs @@ -54,6 +54,11 @@ varying vec4 world_pos; varying float world_normal_z; varying vec3 eye_normal; +vec3 getBackfaceColor(vec3 fill) { + float brightness = 0.2126 * fill.r + 0.7152 * fill.g + 0.0722 * fill.b; + return (brightness > 0.75) ? vec3(0.11, 0.165, 0.208) : vec3(0.988, 0.988, 0.988); +} + void main() { if (any(lessThan(clipping_planes_dots, ZERO))) @@ -95,8 +100,11 @@ void main() } color.rgb = (any(lessThan(pv_check_min, ZERO)) || any(greaterThan(pv_check_max, ZERO))) ? mix(color.rgb, ZERO, 0.3333) : color.rgb; + // Orca: add backface outline + if (!gl_FrontFacing) + gl_FragColor = vec4(getBackfaceColor(color.rgb), 1.0); //BBS: add outline_color - if (is_outline) + else if (is_outline) gl_FragColor = uniform_color; #ifdef ENABLE_ENVIRONMENT_MAP else if (use_environment_tex) diff --git a/resources/shaders/140/gouraud.fs b/resources/shaders/140/gouraud.fs index 84bce5c035..ece05fc985 100644 --- a/resources/shaders/140/gouraud.fs +++ b/resources/shaders/140/gouraud.fs @@ -56,6 +56,11 @@ in vec3 eye_normal; out vec4 out_color; +vec3 getBackfaceColor(vec3 fill) { + float brightness = 0.2126 * fill.r + 0.7152 * fill.g + 0.0722 * fill.b; + return (brightness > 0.75) ? vec3(0.11, 0.165, 0.208) : vec3(0.988, 0.988, 0.988); +} + void main() { if (any(lessThan(clipping_planes_dots, ZERO))) @@ -97,8 +102,11 @@ void main() } color.rgb = (any(lessThan(pv_check_min, ZERO)) || any(greaterThan(pv_check_max, ZERO))) ? mix(color.rgb, ZERO, 0.3333) : color.rgb; + // Orca: add backface outline + if (!gl_FrontFacing) + out_color = vec4(getBackfaceColor(color.rgb), 1.0); //BBS: add outline_color - if (is_outline) + else if (is_outline) out_color = uniform_color; #ifdef ENABLE_ENVIRONMENT_MAP else if (use_environment_tex) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index f407a999a6..0d00c8ccd9 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -472,10 +472,6 @@ void GLVolume::render_with_outline(const Transform3d &view_model_matrix) //BBS add render for simple case void GLVolume::simple_render(GLShaderProgram* shader, ModelObjectPtrs& model_objects, std::vector extruder_colors) { - if (this->is_left_handed()) - glFrontFace(GL_CW); - glsafe(::glCullFace(GL_BACK)); - bool color_volume = false; ModelObject* model_object = nullptr; ModelVolume* model_volume = nullptr; @@ -504,6 +500,7 @@ void GLVolume::simple_render(GLShaderProgram* shader, ModelObjectPtrs& model_obj } } while (0); + auto r = [&]() { if (color_volume && !picking) { // when force_transparent, we need to keep the alpha if (force_native_color && render_color.is_transparent()) { @@ -545,6 +542,29 @@ void GLVolume::simple_render(GLShaderProgram* shader, ModelObjectPtrs& model_obj else model.render(this->tverts_range); } + }; + + if (this->is_left_handed()) + glFrontFace(GL_CW); + + // Render front faces + glsafe(::glCullFace(GL_BACK)); + r(); + + // Then render back faces in line mode to add an outline + GLboolean cull_face = GL_FALSE; + ::glGetBooleanv(GL_CULL_FACE, &cull_face); + glsafe(::glEnable(GL_CULL_FACE)); + glsafe(::glCullFace(GL_FRONT)); + glsafe(::glPolygonMode(GL_BACK, GL_LINE)); + r(); + + // Reset mode + glsafe(::glPolygonMode(GL_BACK, GL_FILL)); + glsafe(::glCullFace(GL_BACK)); + if (!cull_face) + glsafe(::glDisable(GL_CULL_FACE)); + if (this->is_left_handed()) glFrontFace(GL_CCW); } @@ -854,6 +874,7 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab } glsafe(::glCullFace(GL_BACK)); + glsafe(::glEnable(GL_CULL_FACE)); if (disable_cullface) glsafe(::glDisable(GL_CULL_FACE)); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index aedc729bc0..2ef664c2b2 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1247,6 +1247,7 @@ void GCodeViewer::render(int canvas_width, int canvas_height, int right_margin) glsafe(::glEnable(GL_DEPTH_TEST)); render_shells(); + glsafe(::glClear(GL_DEPTH_BUFFER_BIT)); // This makes sure toolpaths are on top of shells render_toolpaths(); float legend_height = 0.0f; render_legend(legend_height, canvas_width, canvas_height, right_margin); @@ -4030,7 +4031,7 @@ void GCodeViewer::render_shells() if (shader == nullptr) return; - glsafe(::glDepthMask(GL_FALSE)); + //glsafe(::glDepthMask(GL_FALSE)); shader->start_using(); shader->set_uniform("emission_factor", 0.1f); @@ -4039,7 +4040,7 @@ void GCodeViewer::render_shells() shader->set_uniform("emission_factor", 0.0f); shader->stop_using(); - glsafe(::glDepthMask(GL_TRUE)); + //glsafe(::glDepthMask(GL_TRUE)); } //BBS From a6c927d87fb9aeb249ea6df147b2d860fe847dad Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 3 Dec 2023 09:36:27 +0800 Subject: [PATCH 13/93] Add option to disable emitting M73 gcode (#2114) (#2940) --- src/libslic3r/GCode/GCodeProcessor.cpp | 23 ++++++++++++++++++++--- src/libslic3r/GCode/GCodeProcessor.hpp | 1 + src/libslic3r/GCodeWriter.cpp | 4 ++++ src/libslic3r/Preset.cpp | 3 ++- src/libslic3r/Print.cpp | 4 ++-- src/libslic3r/PrintConfig.cpp | 6 ++++++ src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/Tab.cpp | 1 + 8 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 88d4fb189e..71e5148240 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -403,6 +403,8 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st if (in.f == nullptr) throw Slic3r::RuntimeError(std::string("Time estimator post process export failed.\nCannot open file for reading.\n")); + const bool disable_m73 = this->disable_m73; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": before process %1%")%filename.c_str(); // temporary file to contain modified gcode std::string out_path = filename + ".postprocess"; @@ -473,7 +475,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st // replace placeholder lines with the proper final value // gcode_line is in/out parameter, to reduce expensive memory allocation auto process_placeholders = [&](std::string& gcode_line) { - unsigned int extra_lines_count = 0; + int extra_lines_count = 0; // remove trailing '\n' auto line = std::string_view(gcode_line).substr(0, gcode_line.length() - 1); @@ -482,6 +484,12 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st if (line.length() > 1) { line = line.substr(1); if (line == reserved_tag(ETags::First_Line_M73_Placeholder) || line == reserved_tag(ETags::Last_Line_M73_Placeholder)) { + if (disable_m73) { + // Remove current line + gcode_line = ""; + return std::tuple(true, -1); + } + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { const TimeMachine& machine = machines[i]; if (machine.enabled) { @@ -679,9 +687,10 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st gcode_line += '\n'; // replace placeholder lines auto [processed, lines_added_count] = process_placeholders(gcode_line); - if (processed && lines_added_count > 0) + if (processed && lines_added_count != 0) offsets.push_back({ line_id, lines_added_count }); - if (! processed && ! is_temporary_decoration(gcode_line) && + + if (!disable_m73 && !processed &&!is_temporary_decoration(gcode_line) && (GCodeReader::GCodeLine::cmd_is(gcode_line, "G1") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G2") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G3"))) { @@ -691,6 +700,12 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st offsets.push_back({ line_id, extra_lines_count }); } + if (disable_m73 && !processed && GCodeReader::GCodeLine::cmd_is(gcode_line, "M73")) { + // Remove any existing M73 command + gcode_line = ""; + offsets.push_back({line_id, -1}); + } + export_line += gcode_line; if (export_line.length() > 65535) write_string(export_line); @@ -1041,6 +1056,8 @@ void GCodeProcessor::apply_config(const PrintConfig& config) DEFAULT_TRAVEL_ACCELERATION; } + m_time_processor.disable_m73 = config.disable_m73; + const ConfigOptionFloat* initial_layer_print_height = config.option("initial_layer_print_height"); if (initial_layer_print_height != nullptr) m_first_layer_height = std::abs(initial_layer_print_height->value); diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index f831b5c26f..98e618d6ce 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -478,6 +478,7 @@ namespace Slic3r { // Additional load / unload times for a filament exchange sequence. float filament_load_times; float filament_unload_times; + bool disable_m73; std::array(PrintEstimatedStatistics::ETimeMode::Count)> machines; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 76ac289ae7..5fc57307f0 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -341,6 +341,10 @@ std::string GCodeWriter::update_progress(unsigned int num, unsigned int tot, boo { if (FLAVOR_IS_NOT(gcfMakerWare) && FLAVOR_IS_NOT(gcfSailfish)) return ""; + + if (config.disable_m73) { + return ""; + } unsigned int percent = (unsigned int)floor(100.0 * num / tot + 0.5); if (!allow_100) percent = std::min(percent, (unsigned int)99); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 9221796e2f..834bbc943d 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -877,7 +877,8 @@ static std::vector s_Preset_printer_options { "use_firmware_retraction", "use_relative_e_distances", "printer_notes", "cooling_tube_retraction", "cooling_tube_length", "high_current_on_filament_swap", "parking_pos_retraction", "extra_loading_move", "purge_in_prime_tower", "enable_filament_ramming", - "z_offset" + "z_offset", + "disable_m73", }; static std::vector s_Preset_sla_print_options { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 4510890c3c..25c4619480 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -206,8 +206,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "during_print_exhaust_fan_speed", "complete_print_exhaust_fan_speed", "activate_chamber_temp_control", - "manual_filament_change" - + "manual_filament_change", + "disable_m73", }; static std::unordered_set steps_ignore; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index bb6efdaaa3..116cd9b3c6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3253,6 +3253,12 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); + def = this->add("disable_m73", coBool); + def->label = L("Disable set remaining print time"); + def->tooltip = "Disable generating of the M73: Set remaining print time in the final gcode"; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("seam_position", coEnum); def->label = L("Seam position"); def->category = L("Quality"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index d2f961a8bd..9be2e4a31a 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1016,6 +1016,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionPercent, accel_to_decel_factor)) ((ConfigOptionFloatOrPercent, initial_layer_travel_speed)) ((ConfigOptionBool, bbl_calib_mark_logo)) + ((ConfigOptionBool, disable_m73)) // Orca: mmu ((ConfigOptionFloat, cooling_tube_retraction)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 5742d44548..43cd849e18 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3405,6 +3405,7 @@ void TabPrinter::build_fff() optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup->append_single_option_line("printer_structure"); optgroup->append_single_option_line("gcode_flavor"); + optgroup->append_single_option_line("disable_m73"); option = optgroup->get_option("thumbnails"); option.opt.full_width = true; optgroup->append_single_option_line(option); From ab2a2d57253e5f9851e1b82b7309dd0a0b2b95eb Mon Sep 17 00:00:00 2001 From: stew675 Date: Sat, 2 Dec 2023 19:37:33 -0600 Subject: [PATCH 14/93] Add zhop to PA pattern (#2952) The current PA pattern implementation does not lift the nozzle when moving. The way the pattern is drawn means that the nozzle is often dragged over already printed lines, which can pull the pattern off the bed, or damage the lines already drawn. As a result I often see failed prints with the PA pattern, or moderate damage to already drawn lines. This change adds a 1 layer hop between each move to eliminate nozzle drag. --- src/libslic3r/calib.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 7d279e1895..120764885f 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -557,6 +557,9 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi // draw pressure advance pattern for (int i = 0; i < m_num_layers; ++i) { + const double layer_height = height_first_layer() + (i * height_layer()); + const double zhop_height = layer_height + height_layer(); + if (i > 0) { gcode << "; end pressure advance pattern for layer\n"; CustomGCode::Item item; @@ -568,7 +571,6 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi gcode = std::stringstream(); // reset for next layer contents gcode << "; start pressure advance pattern for layer\n"; - const double layer_height = height_first_layer() + (i * height_layer()); gcode << m_writer.travel_to_z(layer_height, "Move to layer height"); } @@ -606,7 +608,9 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi double initial_x = to_x; double initial_y = to_y; + gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to pattern start"); + gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); for (int j = 0; j < num_patterns; ++j) { // increment pressure advance @@ -631,15 +635,21 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi if (k != wall_count() - 1) { // perimeters not done yet. move to next perimeter to_x += line_spacing_angle(); + gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to start next pattern wall"); + gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); } else if (j != num_patterns - 1) { // patterns not done yet. move to next pattern to_x += m_pattern_spacing + line_width(); + gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to next pattern"); + gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); } else if (i != m_num_layers - 1) { // layers not done yet. move back to start to_x = initial_x; + gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move back to start position"); + gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); } else { // everything done } From b86b0770753c0d72adde6f26ce6b3a88c1d8e3d2 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sun, 3 Dec 2023 01:38:17 +0000 Subject: [PATCH 15/93] Dev 1.9 - Fix Spelling Mistake on Create Printer dialog box (#2961) * Fix Spelling Mistake on Create Printer dialog box * Dev 1.9 - Regroup Advanced Quality Options * Revert "Dev 1.9 - Regroup Advanced Quality Options" This reverts commit 6ffae875f0b6fef156b61ffb237c0211396f58d9. --- src/slic3r/GUI/CreatePresetsDialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index bc545e2a3f..40227aea8d 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -1483,7 +1483,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_step_switch_item() horizontal_sizer->Add(divider_line, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3)); m_step_2 = new wxStaticBitmap(step_switch_panel, wxID_ANY, create_scaled_bitmap("step_2_ready", nullptr, FromDIP(20)), wxDefaultPosition, wxDefaultSize); horizontal_sizer->Add(m_step_2, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3)); - wxStaticText *static_improt_presets_text = new wxStaticText(step_switch_panel, wxID_ANY, _L("Improt Preset"), wxDefaultPosition, wxDefaultSize); + wxStaticText *static_improt_presets_text = new wxStaticText(step_switch_panel, wxID_ANY, _L("Import Preset"), wxDefaultPosition, wxDefaultSize); horizontal_sizer->Add(static_improt_presets_text, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3)); horizontal_sizer->Add(0, 0, 1, wxEXPAND, 0); @@ -4990,4 +4990,4 @@ void PresetTree::edit_preset(std::string printer_name, int need_edit_preset_inde } // namespace GUI -} // namespace Slic3r \ No newline at end of file +} // namespace Slic3r From 8f660f5b6a9a72ad49404b9ed5aa33c3953de84e Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Sun, 3 Dec 2023 02:42:58 +0100 Subject: [PATCH 16/93] fix typo "Improt Preset" and add new de for 1.9dev (#2968) Co-authored-by: SoftFever --- localization/i18n/OrcaSlicer.pot | 2 +- localization/i18n/cs/OrcaSlicer_cs.po | 2 +- localization/i18n/de/OrcaSlicer_de.po | 474 +++++++++++++------- localization/i18n/en/OrcaSlicer_en.po | 2 +- localization/i18n/es/OrcaSlicer_es.po | 2 +- localization/i18n/fr/OrcaSlicer_fr.po | 2 +- localization/i18n/hu/OrcaSlicer_hu.po | 2 +- localization/i18n/it/OrcaSlicer_it.po | 2 +- localization/i18n/ja/OrcaSlicer_ja.po | 2 +- localization/i18n/ko/OrcaSlicer_ko.po | 2 +- localization/i18n/nl/OrcaSlicer_nl.po | 2 +- localization/i18n/ru/OrcaSlicer_ru.po | 2 +- localization/i18n/sv/OrcaSlicer_sv.po | 2 +- localization/i18n/tr/OrcaSlicer_tr.po | 2 +- localization/i18n/uk/OrcaSlicer_uk.po | 2 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 2 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 2 +- 17 files changed, 316 insertions(+), 190 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 8e202f5038..c2992311bc 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -11083,7 +11083,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index e5509b2ae5..149ae12a9f 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -12354,7 +12354,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index fdcbcc9730..5d05fd8f3e 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -1755,7 +1755,7 @@ msgid "Orienting" msgstr "Ausrichten" msgid "Filling" -msgstr "" +msgstr "Füllen" msgid "Bed filling canceled." msgstr "Bettfüllung abgebrochen." @@ -2790,16 +2790,16 @@ msgid "Motor noise showoff" msgstr "Motorgeräusch-Showoff" msgid "Nozzle filament covered detected pause" -msgstr "" +msgstr "Pause bei Erkennung von der Düsenfilamentabdeckung" msgid "Cutter error pause" -msgstr "" +msgstr "Pause bei Cutter-Fehler" msgid "First layer error pause" -msgstr "" +msgstr "Pause bei Fehler der ersten Schicht" msgid "Nozzle clog pause" -msgstr "" +msgstr "Pause bei Düsenverstopfung" msgid "MC" msgstr "MC" @@ -3661,10 +3661,10 @@ msgid "Use Orthogonal View" msgstr "Orthogonale Ansicht verwenden" msgid "Show &G-code Window" -msgstr "" +msgstr "&G-Code-Fenster anzeigen" msgid "Show g-code window in Previce scene" -msgstr "" +msgstr "G-Code-Fenster in der Vorschau anzeigen" msgid "Show &Labels" msgstr "&Bezeichnung anzeigen" @@ -4057,7 +4057,8 @@ msgid "Connection lost. Please retry." msgstr "Verbindung verloren. Bitte versuchen Sie es erneut." msgid "The device cannot handle more conversations. Please retry later." -msgstr "" +msgstr "Das Gerät kann keine weiteren Gespräche führen. Bitte versuchen Sie es " +"später erneut." msgid "File not exists." msgstr "Datei existiert nicht." @@ -4223,6 +4224,8 @@ msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." msgstr "" +"Heizen Sie die Düse vor dem Laden oder Entladen des Filaments auf über 170 " +"Grad." msgid "Still unload" msgstr "Entlade immer noch" @@ -5702,7 +5705,7 @@ msgid "(LAN)" msgstr "(LAN)" msgid "Search" -msgstr "" +msgstr "Suche" msgid "My Device" msgstr "Mein Gerät" @@ -5915,7 +5918,7 @@ msgstr "" #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "" +msgstr "Düse im Profil: %s %s" #, c-format, boost-format msgid "nozzle memorized: %.1f %s" @@ -5995,7 +5998,7 @@ msgid "Slice ok." msgstr "Slice ok." msgid "View all Daily tips" -msgstr "" +msgstr "Zeige alle täglichen Tipps" msgid "Failed to create socket" msgstr "Socket konnte nicht erstellt werden" @@ -6200,15 +6203,17 @@ msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits ,this may cause printing quality issues." msgstr "" +"Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder " +"-> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen." msgid "Adjust to the set range automatically? \n" -msgstr "" +msgstr "Automatisch an den eingestellten Bereich anpassen? \n" msgid "Adjust" -msgstr "" +msgstr "Anpassen" msgid "Ignore" -msgstr "" +msgstr "Ignorieren" msgid "" "When recording timelapse without toolhead, it is recommended to add a " @@ -6595,6 +6600,10 @@ msgid "" "If the preset corresponds to a filament currently in use on your printer, " "please reset the filament information for that slot." msgstr "" +"Sind Sie sicher, dass Sie das ausgewählte Profil löschen möchten? \n" +"Wenn das Profil einem Filament entspricht, das derzeit auf Ihrem Drucker " +"verwendet wird, setzen Sie bitte die Filamentinformationen für diesen Slot " +"zurück." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -7650,20 +7659,27 @@ msgid "" "Different nozzle diameters and different filament diameters is not allowed " "when prime tower is enabled." msgstr "" +"Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser " +"sind nicht zulässig, wenn der Reinigungsturm aktiviert ist." msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" +"Der Reinigungsturm wird derzeit nur mit der relativen Extruderadressierung " +"unterstützt (use_relative_e_distances=1)." msgid "" "Ooze prevention is currently not supported with the prime tower enabled." msgstr "" +"Ooze Prevention wird derzeit nicht mit dem Reinigungsturm unterstützt." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" +"Der Reinigungsturm wird derzeit nur für die Marlin-, RepRap/Sprinter-, " +"RepRapFirmware- und Repetier-G-Code-Varianten unterstützt." msgid "The prime tower is not supported in \"By object\" print." msgstr "Der Reinigungsturm wird im \"Nach Objekt\"-Druck nicht unterstützt." @@ -8149,13 +8165,17 @@ msgstr "" "die Brücke zu verringern und den Durchhang zu minimieren" msgid "Internal bridge flow" -msgstr "" +msgstr "Interne Brücken Flussrate" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " "0.9) to improve surface quality over sparse infill." msgstr "" +"Dieser Wert bestimmt die Dicke der internen Brückenschicht. Dies ist die " +"erste Schicht über der dünnen Füllung. Verringern Sie diesen Wert leicht " +"(z. B. 0,9), um die Oberflächenqualität über der dünnen Füllung zu " +"verbessern." msgid "Top surface flow ratio" msgstr "Durchflussverhältnis obere Fläche" @@ -8533,13 +8553,16 @@ msgstr "" "Entfernungen zuverlässig." msgid "Thick internal bridges" -msgstr "" +msgstr "Dicke interne Brücken" msgid "" "If enabled, thick internal bridges will be used. It's usually recommended to " "have this feature turned on. However, consider turning it off if you are " "using large nozzles." msgstr "" +"Wenn diese Option aktiviert ist, werden dicke interne Brücken verwendet. Es " +"wird normalerweise empfohlen, diese Funktion zu aktivieren. Wenn Sie jedoch " +"große Düsen verwenden, sollten Sie diese Funktion deaktivieren." msgid "Max bridge length" msgstr "Max Überbrückungslänge" @@ -9078,11 +9101,12 @@ msgstr "Winkel des Füllmusters, das die Richtung der Linien bestimmt." msgid "Sparse infill density" msgstr "Fülldichte" -#, c-format, boost-format msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" +"Dichte der internen Füllung, 100% verwandelt alle interne Füllung in " +"massive Füllung und das interne massive Füllmuster wird verwendet." msgid "Sparse infill pattern" msgstr "Füllmuster" @@ -9396,10 +9420,10 @@ msgstr "" "eingeführten Zufallspunkten" msgid "Apply fuzzy skin to first layer" -msgstr "" +msgstr "Fuzzy Skin auf die erste Schicht anwenden" msgid "Whether to apply fuzzy skin on the first layer" -msgstr "" +msgstr "Ob Fuzzy Skin auf die erste Schicht angewendet werden soll" msgid "Filter out tiny gaps" msgstr "Filtert winzige Lücken aus" @@ -10808,10 +10832,10 @@ msgstr "" "aktuelle Filament." msgid "Reduce interface filament for base" -msgstr "" +msgstr "Schnittstellenfilament für die Basis verringern" msgid "Avoid using support interface filament to print support base" -msgstr "" +msgstr "Vermeiden Sie es, Stütz-Schnittstellenfilament für die Basis zu verwenden" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -11093,10 +11117,10 @@ msgstr "" "Setzen Sie diesen Wert auf Null, um keine doppelten Wände zu erhalten." msgid "Support wall loops" -msgstr "" +msgstr "Wände um Stützstrukturen" msgid "This setting specify the count of walls around support" -msgstr "" +msgstr "Diese Einstellung gibt die Anzahl der Wände um die Stützstrukturen an" msgid "Tree support with infill" msgstr "Baumsupport mit Füllung" @@ -12569,279 +12593,300 @@ msgid "Delete input" msgstr "Eingabe löschen" msgid "Network Test" -msgstr "" +msgstr "Netzwerktest" msgid "Start Test Multi-Thread" -msgstr "" +msgstr "Starten Sie den Test mit mehreren Threads" msgid "Start Test Single-Thread" -msgstr "" +msgstr "Starten Sie den Test mit einem Thread" msgid "Export Log" -msgstr "" +msgstr "Protokoll exportieren" msgid "Studio Version:" -msgstr "" +msgstr "Studio Version:" msgid "System Version:" -msgstr "" +msgstr "System Version:" msgid "DNS Server:" -msgstr "" +msgstr "DNS Server:" msgid "Test BambuLab" -msgstr "" +msgstr "Test BambuLab" msgid "Test BambuLab:" -msgstr "" +msgstr "Test BambuLab:" msgid "Test Bing.com" -msgstr "" +msgstr "Test Bing.com" msgid "Test bing.com:" -msgstr "" +msgstr "Test bing.com:" msgid "Test HTTP" -msgstr "" +msgstr "Test HTTP" msgid "Test HTTP Service:" -msgstr "" +msgstr "Test HTTP Service:" msgid "Test storage" -msgstr "" +msgstr "Test Speicher" msgid "Test Storage Upload:" -msgstr "" +msgstr "Test Speicher hochladen:" msgid "Test storage upgrade" -msgstr "" +msgstr "Test Speicher Upgrade" msgid "Test Storage Upgrade:" -msgstr "" +msgstr "Test Speicher Upgrade:" msgid "Test storage download" -msgstr "" +msgstr "Test Speicher Download" msgid "Test Storage Download:" -msgstr "" +msgstr "Test Speicher Download:" msgid "Test plugin download" -msgstr "" +msgstr "Test Plugin Download" -msgid "Test Plugin Download:" -msgstr "" +msgid "Test Plugin Download:" +msgstr "Test Plugin Download:" msgid "Test Storage Upload" -msgstr "" +msgstr "Test Speicher hochladen" msgid "Log Info" -msgstr "" +msgstr "Protokoll Info" msgid "Select filament preset" -msgstr "" +msgstr "Filament-Voreinstellung auswählen" msgid "Create Filament" -msgstr "" +msgstr "Filament erstellen" msgid "Create Based on Current Filament" -msgstr "" +msgstr "Erstellen Sie basierend auf dem aktuellen Filament" msgid "Copy Current Filament Preset " -msgstr "" +msgstr "Aktuelle Filament-Voreinstellung kopieren" msgid "Basic Information" -msgstr "" +msgstr "Grundlegende Informationen" msgid "Add Filament Preset under this filament" -msgstr "" +msgstr "Filament-Voreinstellung unter diesem Filament hinzufügen" msgid "We could create the filament presets for your following printer:" -msgstr "" +msgstr "Sie könnten die Filament-Voreinstellungen für Ihren folgenden Drucker erstellen:" msgid "Select Vendor" -msgstr "" +msgstr "Hersteller auswählen" msgid "Input Custom Vendor" -msgstr "" +msgstr "Benutzerdefinierten Hersteller eingeben" msgid "Can't find vendor I want" -msgstr "" +msgstr "Ich kann den Hersteller, den ich möchte, nicht finden" msgid "Select Type" -msgstr "" +msgstr "Typ auswählen" msgid "Select Filament Preset" -msgstr "" +msgstr "Filament-Voreinstellung auswählen" msgid "Serial" -msgstr "" +msgstr "Seriennummer" msgid "e.g. Basic, Matte, Silk, Marble" -msgstr "" +msgstr "z.B. Basic, Matte, Silk, Marble" msgid "Filament Preset" -msgstr "" +msgstr "Filament-Voreinstellung" msgid "Create" -msgstr "" +msgstr "Erstellen" msgid "Vendor is not selected, please reselect vendor." -msgstr "" +msgstr "Hersteller ist nicht ausgewählt, bitte Hersteller erneut auswählen." msgid "Custom vendor is not input, please input custom vendor." -msgstr "" +msgstr "Benutzerdefinierter Hersteller ist nicht eingegeben, bitte benutzerdefinierten Hersteller eingeben." msgid "" "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" +"\"Bambu\" oder \"Generic\" kann nicht als Hersteller für benutzerdefinierte " +"Filamente verwendet werden." msgid "Filament type is not selected, please reselect type." -msgstr "" +msgstr "Filamenttyp ist nicht ausgewählt, bitte Filamenttyp erneut auswählen." msgid "Filament serial is not inputed, please input serial." -msgstr "" +msgstr "Filament-Seriennummer ist nicht eingegeben, bitte Seriennummer eingeben." msgid "" "There may be escape characters in the vendor or serial input of filament. " "Please delete and re-enter." msgstr "" +"In der Eingabe des Herstellers oder der Seriennummer des Filaments können " +"Escape-Zeichen vorhanden sein. Bitte löschen und erneut eingeben." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" +"Alle Eingaben im benutzerdefinierten Hersteller oder in der Seriennummer " +"bestehen aus Leerzeichen. Bitte erneut eingeben." msgid "The beginning of the vendor can not be a number. Please re-enter." msgstr "" +"Der Anfang des Herstellers darf keine Zahl sein. Bitte erneut eingeben." msgid "" "You have not selected a printer or preset yet. Please select at least one." msgstr "" +"Sie haben noch keinen Drucker oder keine Voreinstellung ausgewählt. Bitte " +"wählen Sie mindestens einen aus." msgid "Some existing presets have failed to be created, as follows:\n" msgstr "" +"Einige vorhandene Voreinstellungen konnten nicht erstellt werden, wie " +"folgt:\n" msgid "" "\n" "Do you want to rewrite it?" msgstr "" +"\n" +"Möchten Sie es überschreiben?" msgid "" "We would rename the presets as \"Vendor Type Serial @printer you selected" "\". \n" "To add preset for more prinetrs, Please go to printer selection" msgstr "" +"Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer @Drucker " +"den Sie ausgewählt haben\" umbenennen. \n" +"Um Voreinstellungen für mehr Drucker hinzuzufügen, gehen Sie bitte zur " +"Druckerauswahl" msgid "Create Printer/Nozzle" -msgstr "" +msgstr "Drucker/Düse erstellen" msgid "Create Printer" -msgstr "" +msgstr "Drucker erstellen" msgid "Create Nozzle for Existing Printer" -msgstr "" +msgstr "Düse für vorhandenen Drucker erstellen" msgid "Create from Template" -msgstr "" +msgstr "Aus Vorlage erstellen" msgid "Create Based on Current Printer" -msgstr "" +msgstr "Erstellen Sie basierend auf dem aktuellen Drucker" msgid "wiki" -msgstr "" +msgstr "wiki" -msgid "Improt Preset" -msgstr "" +msgid "Import Preset" +msgstr "Voreinstellung importieren" msgid "Create Type" -msgstr "" +msgstr "Typ erstellen" msgid "The model is not fond, place reselect vendor." -msgstr "" +msgstr "Das Modell ist nicht gefunden, bitte Hersteller erneut auswählen." msgid "Select Model" -msgstr "" +msgstr "Modell auswählen" msgid "Select Printer" -msgstr "" +msgstr "Drucker auswählen" msgid "Input Custom Model" -msgstr "" +msgstr "Benutzerdefiniertes Modell eingeben" msgid "Can't find my printer model" -msgstr "" +msgstr "Ich kann mein Druckermodell nicht finden" msgid "Rectangle" -msgstr "" +msgstr "Rechteck" msgid "Printable Space" -msgstr "" +msgstr "Druckbarer Raum" msgid "X" -msgstr "" +msgstr "X" msgid "Y" -msgstr "" +msgstr "Y" msgid "Hot Bed STL" -msgstr "" +msgstr "Hot Bed STL" msgid "Load stl" -msgstr "" +msgstr "STL laden" msgid "Hot Bed SVG" -msgstr "" +msgstr "Hot Bed SVG" msgid "Load svg" -msgstr "" +msgstr "SVG laden" msgid "Max Print Height" -msgstr "" +msgstr "Maximale Druckhöhe" #, c-format, boost-format msgid "The file exceeds %d MB, please import again." -msgstr "" +msgstr "Die Datei überschreitet %d MB, bitte erneut importieren." msgid "Exception in obtaining file size, please import again." -msgstr "" +msgstr "Ausnahme beim Abrufen der Dateigröße, bitte erneut importieren." msgid "Preset path is not find, please reselect vendor." -msgstr "" +msgstr "Voreinstellungspfad nicht gefunden, bitte Hersteller erneut auswählen." msgid "The printer model was not found, please reselect." -msgstr "" +msgstr "Das Druckermodell wurde nicht gefunden, bitte erneut auswählen." msgid "The nozzle diameter is not fond, place reselect." -msgstr "" +msgstr "Der Düsendurchmesser ist nicht gefunden, bitte erneut auswählen." msgid "The printer preset is not fond, place reselect." -msgstr "" +msgstr "Die Druckervoreinstellung ist nicht gefunden, bitte erneut auswählen." msgid "Printer Preset" -msgstr "" +msgstr "Druckervoreinstellung" msgid "Filament Preset Template" -msgstr "" +msgstr "Filament-Vorlagenvoreinstellung" msgid "Deselect All" -msgstr "" +msgstr "Alle abwählen" msgid "Process Preset Template" -msgstr "" +msgstr "Prozess Vorlagen Voreinstellung" msgid "Back Page 1" -msgstr "" +msgstr "Zurück Seite 1" msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" +"Sie haben noch nicht ausgewählt, welche Druckervoreinstellung erstellt " +"werden soll. Bitte wählen Sie den Hersteller und das Modell des Druckers" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" +"Sie haben eine ungültige Eingabe im Bereich des druckbaren Bereichs auf der " +"ersten Seite eingegeben. Bitte überprüfen Sie es, bevor Sie es erstellen." msgid "The custom printer or model is not inputed, place input." -msgstr "" +msgstr "Der benutzerdefinierte Drucker oder das Modell ist nicht eingegeben, bitte eingeben." msgid "" "The printer preset you created already has a preset with the same name. Do " @@ -12852,60 +12897,75 @@ msgid "" "reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" +"Die von Ihnen erstellte Druckervoreinstellung hat bereits eine Voreinstellung " +"mit dem gleichen Namen. Möchten Sie es überschreiben?\n" +"\tJa: Überschreiben Sie die Druckervoreinstellung mit dem gleichen Namen, " +"und Filament- und Prozessvoreinstellungen mit dem gleichen Voreinstellungs- " +"und Filament- und Prozessvornamen werden neu erstellt \n" +"und Filament- und Prozessvoreinstellungen ohne den gleichen " +"Voreinstellungsnamen werden beibehalten.\n" +"\tAbbrechen: Erstellen Sie keine Voreinstellung, kehren Sie zur " +"Erstellungs-Schnittstelle zurück." msgid "You need to select at least one filament preset." -msgstr "" +msgstr "Sie müssen mindestens eine Filament-Voreinstellung auswählen." msgid "You need to select at least one process preset." -msgstr "" +msgstr "Sie müssen mindestens eine Prozess-Voreinstellung auswählen." msgid "Create filament presets failed. As follows:\n" -msgstr "" +msgstr "Erstellen von Filament-Voreinstellungen fehlgeschlagen. Wie folgt:\n" msgid "Create process presets failed. As follows:\n" -msgstr "" +msgstr "Erstellen von Prozess-Voreinstellungen fehlgeschlagen. Wie folgt:\n" msgid "Vendor is not find, please reselect." -msgstr "" +msgstr "Hersteller nicht gefunden, bitte erneut auswählen." msgid "Current vendor has no models, please reselect." -msgstr "" +msgstr "Der aktuelle Hersteller hat keine Modelle, bitte erneut auswählen." msgid "" "You have not selected the vendor and model or inputed the custom vendor and " "model." msgstr "" +"Sie haben den Hersteller und das Modell nicht ausgewählt oder den " +"benutzerdefinierten Hersteller und das Modell eingegeben." msgid "" "There may be escape characters in the custom printer vendor or model. Please " "delete and re-enter." msgstr "" +"In der benutzerdefinierten Druckerhersteller- oder Modellzeichenfolge " +"können Escape-Zeichen vorhanden sein. Bitte löschen und erneut eingeben." msgid "" "All inputs in the custom printer vendor or model are spaces. Please re-enter." msgstr "" +"Alle Eingaben im benutzerdefinierten Druckerhersteller oder Modell bestehen " +"aus Leerzeichen. Bitte erneut eingeben." msgid "Please check bed printable shape and origin input." -msgstr "" +msgstr "Bitte überprüfen Sie die Eingabe der druckbaren Form und des Ursprungs." msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" +msgstr "Sie haben den Drucker, der die Düse ersetzen soll, noch nicht ausgewählt, bitte wählen Sie." msgid "Create Printer Successful" -msgstr "" +msgstr "Drucker erfolgreich erstellt" msgid "Create Filament Successful" -msgstr "" +msgstr "Filament erfolgreich erstellt" msgid "Printer Created" -msgstr "" +msgstr "Drucker erstellt" msgid "Please go to printer settings to edit your presets" -msgstr "" +msgstr "Bitte gehen Sie zu den Druckereinstellungen, um Ihre Voreinstellungen zu bearbeiten" msgid "Filament Created" -msgstr "" +msgstr "Filament erstellt" msgid "" "Please go to filament setting to edit your presets if you need.\n" @@ -12913,45 +12973,50 @@ msgid "" "volumetric speed have a significant impact on printing quality. Please set " "them carefully." msgstr "" +"Bitte gehen Sie zu den Filament-Einstellungen, um Ihre Voreinstellungen zu " +"bearbeiten, wenn Sie dies benötigen.\n" +"Bitte beachten Sie, dass die Düsentemperatur, die Heizbetttemperatur und die " +"maximale volumetrische Geschwindigkeit einen erheblichen Einfluss auf die " +"Druckqualität haben. Bitte stellen Sie sie sorgfältig ein." msgid "Printer Setting" -msgstr "" +msgstr "Druckereinstellung" msgid "Export Configs" -msgstr "" +msgstr "Konfigurationen exportieren" msgid "Printer config bundle(.bbscfg)" -msgstr "" +msgstr "Drucker-Konfigurationsbündel (.bbscfg)" msgid "Filament bundle(.bbsflmt)" -msgstr "" +msgstr "Filament-Bündel (.bbsflmt)" msgid "Printer presets(.zip)" -msgstr "" +msgstr "Druckervoreinstellungen (.zip)" msgid "Filament presets(.zip)" -msgstr "" +msgstr "Filament-Voreinstellungen (.zip)" msgid "Process presets(.zip)" -msgstr "" +msgstr "Prozess-Voreinstellungen (.zip)" msgid "initialize fail" -msgstr "" +msgstr "Initialisierung fehlgeschlagen" msgid "add file fail" -msgstr "" +msgstr "Datei hinzufügen fehlgeschlagen" msgid "add bundle structure file fail" -msgstr "" +msgstr "Hinzufügen der Bündelstrukturdatei fehlgeschlagen" msgid "finalize fail" -msgstr "" +msgstr "Finalisierung fehlgeschlagen" msgid "open zip written fail" -msgstr "" +msgstr "ZIP-Schreibfehler" msgid "Export successful" -msgstr "" +msgstr "Export erfolgreich" #, c-format, boost-format msgid "" @@ -12960,61 +13025,85 @@ msgid "" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" +"Der Ordner '%s' existiert bereits im aktuellen Verzeichnis. Möchten Sie ihn " +"löschen und neu erstellen.\n" +"Wenn nicht, wird ein Zeitstempel hinzugefügt, und Sie können den Namen nach " +"der Erstellung ändern." msgid "" "Printer and all the filament&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" +"Drucker und alle Filament- und Prozessvoreinstellungen, die zum Drucker " +"gehören. \n" +"Kann mit anderen geteilt werden." msgid "" "User's fillment preset set. \n" "Can be shared with others." msgstr "" +"Benutzerfüllung Voreinstellung eingestellt. \n" +"Kann mit anderen geteilt werden." msgid "" "Only display printer names with changes to printer, filament, and process " "presets." msgstr "" +"Nur Druckernamen mit Änderungen an Drucker-, Filament- und Prozessvorlagen " +"werden angezeigt." msgid "Only display the filament names with changes to filament presets." msgstr "" +"Nur die Filamentnamen mit Änderungen an den Filamentvorlagen werden " +"angezeigt." msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" +"Nur Druckernamen mit Benutzerdruckervoreinstellungen werden angezeigt, und " +"jede Voreinstellung, die Sie auswählen, wird als ZIP exportiert." msgid "" "Only the filament names with user filament presets will be displayed, \n" "and all user filament presets in each filament name you select will be " "exported as a zip." msgstr "" +"Nur die Filamentnamen mit Benutzerfilamentvorlagen werden angezeigt, \n" +"und alle Benutzerfilamentvorlagen in jedem Filamentnamen, den Sie auswählen, " msgid "" "Only printer names with changed process presets will be displayed, \n" "and all user process presets in each printer name you select will be " "exported as a zip." msgstr "" +"Nur Druckernamen mit geänderten Prozessvorlagen werden angezeigt, \n" +"und alle Benutzerprozessvorlagen in jedem Druckernamen, den Sie auswählen, " +"werden als ZIP exportiert." msgid "Please select at least one printer or filament." -msgstr "" +msgstr "Bitte wählen Sie mindestens einen Drucker oder ein Filament aus." msgid "Please select a type you want to export" -msgstr "" +msgstr "Bitte wählen Sie einen Typ aus, den Sie exportieren möchten" msgid "Edit Filament" -msgstr "" +msgstr "Filament bearbeiten" msgid "Filament presets under this filament" -msgstr "" +msgstr "Filamentvoreinstellungen unter diesem Filament" msgid "" "Note: If the only preset under this filament is deleted, the filament will " "be deleted after exiting the dialog." msgstr "" +"Hinweis: Wenn die einzige Voreinstellung unter diesem Filament gelöscht " +"wird, wird das Filament nach dem Verlassen des Dialogfelds gelöscht." msgid "Presets inherited by other presets can not be deleted" msgstr "" +"Voreinstellungen, die von anderen Voreinstellungen geerbt wurden, " +"können nicht gelöscht werden" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." @@ -13022,52 +13111,58 @@ msgstr[0] "" msgstr[1] "" msgid "Delete Preset" -msgstr "" +msgstr "Voreinstellung löschen" msgid "Are you sure to delete the selected preset?" -msgstr "" +msgstr "Möchten Sie die ausgewählte Voreinstellung wirklich löschen?" msgid "Delete preset" -msgstr "" +msgstr "Voreinstellung löschen" msgid "+ Add Preset" -msgstr "" +msgstr "+ Voreinstellung hinzufügen" msgid "Delete Filament" -msgstr "" +msgstr "Filament löschen" msgid "" "All the filament presets belong to this filament would be deleted. \n" "If you are using this filament on your printer, please reset the filament " "information for that slot." msgstr "" +"Alle Filamentvoreinstellungen, die zu diesem Filament gehören, werden " +"gelöscht. \n" +"Wenn Sie dieses Filament auf Ihrem Drucker verwenden, setzen Sie bitte die " +"Filamentinformationen für diesen Schacht zurück." msgid "Delete filament" -msgstr "" +msgstr "Filament löschen" msgid "Add Preset" -msgstr "" +msgstr "Voreinstellung hinzufügen" msgid "Add preset for new printer" -msgstr "" +msgstr "Voreinstellung für neuen Drucker hinzufügen" msgid "Copy preset from filament" -msgstr "" +msgstr "Voreinstellung vom Filament kopieren" msgid "The filament choice not find filament preset, please reselect it" msgstr "" +"Die Filamentauswahl findet keine Filamentvoreinstellung, bitte neu " +"auswählen" msgid "Edit Preset" -msgstr "" +msgstr "Voreinstellung bearbeiten" msgid "For more information, please check out Wiki" -msgstr "" +msgstr "Für weitere Informationen besuchen Sie bitte Wiki" msgid "Collapse" -msgstr "" +msgstr "Zusammenbruch" msgid "Daily Tips" -msgstr "" +msgstr "Tägliche Tipps" msgid "Need select printer" msgstr "Drucker auswählen" @@ -13133,111 +13228,117 @@ msgstr "" #, c-format, boost-format msgid "Mismatched type of print host: %s" -msgstr "" +msgstr "Typ des Druck-Hosts: %s ist falsch" msgid "Connection to AstroBox works correctly." -msgstr "" +msgstr "Verbindung zum AstroBox funktioniert korrekt." msgid "Could not connect to AstroBox" -msgstr "" +msgstr "Konnte keine Verbindung zum AstroBox herstellen" msgid "Note: AstroBox version at least 1.1.0 is required." -msgstr "" +msgstr "Hinweis: AstroBox Version mindestens 1.1.0 ist erforderlich." msgid "Connection to Duet works correctly." -msgstr "" +msgstr "Verbindung zu Duet funktioniert korrekt." msgid "Could not connect to Duet" -msgstr "" +msgstr "Konnte keine Verbindung zu Duet herstellen" msgid "Unknown error occured" -msgstr "" +msgstr "Unbekannter Fehler aufgetreten" msgid "Wrong password" -msgstr "" +msgstr "Falsches Passwort" msgid "Could not get resources to create a new connection" -msgstr "" +msgstr "Konnte keine Ressourcen zum Erstellen einer neuen Verbindung erzeugen" msgid "Upload not enabled on FlashAir card." -msgstr "" +msgstr "Upload auf FlashAir-Karte nicht aktiviert." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" +msgstr "Verbindung zu FlashAir funktioniert korrekt und Upload ist aktiviert." msgid "Could not connect to FlashAir" -msgstr "" +msgstr "Konnte keine Verbindung zu FlashAir herstellen" msgid "" "Note: FlashAir with firmware 2.00.02 or newer and activated upload function " "is required." msgstr "" +"Hinweis: FlashAir mit Firmware 2.00.02 oder neuer und aktivierter " +"Upload-Funktion ist erforderlich." msgid "Connection to MKS works correctly." -msgstr "" +msgstr "Verbindung zu MKS funktioniert korrekt." msgid "Could not connect to MKS" -msgstr "" +msgstr "Konnte keine Verbindung zu MKS herstellen" msgid "Connection to OctoPrint works correctly." -msgstr "" +msgstr "Verbindung zu OctoPrint funktioniert korrekt." msgid "Could not connect to OctoPrint" -msgstr "" +msgstr "Konnte keine Verbindung zu OctoPrint herstellen" msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "" +msgstr "Hinweis: OctoPrint Version mindestens 1.1.0 ist erforderlich." msgid "Connection to Prusa SL1 / SL1S works correctly." -msgstr "" +msgstr "Verbindung zu Prusa SL1 / SL1S funktioniert korrekt." msgid "Could not connect to Prusa SLA" -msgstr "" +msgstr "Konnte keine Verbindung zu Prusa SLA herstellen" msgid "Connection to PrusaLink works correctly." -msgstr "" +msgstr "Verbindung zu PrusaLink funktioniert korrekt." msgid "Could not connect to PrusaLink" -msgstr "" +msgstr "Konnte keine Verbindung zu PrusaLink herstellen" msgid "Storages found" -msgstr "" +msgstr "Speicher gefunden" #. TRN %1% = storage path #, boost-format msgid "%1% : read only" -msgstr "" +msgstr "%1% : Nur-Lesen" #. TRN %1% = storage path #, boost-format msgid "%1% : no free space" -msgstr "" +msgstr "%1% : kein freier Speicherplatz" #. TRN %1% = host #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." msgstr "" +"Der Upload ist fehlgeschlagen. Es wurde kein geeigneter Speicherplatz " +"unter %1% gefunden." msgid "Connection to Prusa Connect works correctly." -msgstr "" +msgstr "Verbindung zu Prusa Connect funktioniert korrekt." msgid "Could not connect to Prusa Connect" -msgstr "" +msgstr "Konnte keine Verbindung zu Prusa Connect herstellen" msgid "Connection to Repetier works correctly." -msgstr "" +msgstr "Verbindung zu Repetier funktioniert korrekt." msgid "Could not connect to Repetier" -msgstr "" +msgstr "Konnte keine Verbindung zu Repetier herstellen" msgid "Note: Repetier version at least 0.90.0 is required." -msgstr "" +msgstr "Hinweis: Repetier Version mindestens 0.90.0 ist erforderlich." #, boost-format msgid "" "HTTP status: %1%\n" "Message body: \"%2%\"" msgstr "" +"HTTP-Status: %1%\n" +"Nachrichtentext: \"%2%\"" #, boost-format msgid "" @@ -13245,6 +13346,9 @@ msgid "" "Message body: \"%1%\"\n" "Error: \"%2%\"" msgstr "" +"Das Parsen der Host-Antwort ist fehlgeschlagen.\n" +"Nachrichtentext: \"%1%\"\n" +"Fehler: \"%2%\"" #, boost-format msgid "" @@ -13252,6 +13356,9 @@ msgid "" "Message body: \"%1%\"\n" "Error: \"%2%\"" msgstr "" +"Die Aufzählung der Drucker des Hosts ist fehlgeschlagen.\n" +"Nachrichtentext: \"%1%\"\n" +"Fehler: \"%2%\"" #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" @@ -13259,6 +13366,9 @@ msgid "" "Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " "3D scene operations." msgstr "" +"Wie werden Tastenkombinationen verwendet\n" +"Wussten Sie, dass Orca Slicer eine Vielzahl von Tastenkombinationen und 3D-" +"Szenenoperationen bietet." #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -13276,6 +13386,10 @@ msgid "" "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " "problems on the Windows system?" msgstr "" +"Modell reparieren\n" +"Wussten Sie, dass Sie ein beschädigtes 3D-Modell reparieren können, um " +"eine Vielzahl von Slicing-Problemen auf dem Windows-System zu vermeiden?" + #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -13332,6 +13446,9 @@ msgid "" "Did you know that you use the Search tool to quickly find a specific Orca " "Slicer setting?" msgstr "" +"Suchfunktion\n" +"Wussten Sie, dass Sie das Suchwerkzeug verwenden können, um schnell eine " +"bestimmte Orca Slicer-Einstellung zu finden?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" @@ -13535,6 +13652,11 @@ msgid "" "extruder/hotend clogging when printing lower temperature filament with a " "higher enclosure temperature. More info about this in the Wiki." msgstr "" +"Wenn mit geöffneter Druckertür gedruckt werden muss\n" +"Wussten Sie, dass das Öffnen der Druckertür die Wahrscheinlichkeit eines " +"Verstopfens des Extruders/Hotends beim Drucken von Filamenten mit niedriger " +"Temperatur und höherer Gehäusetemperatur verringern kann. Weitere " +"Informationen dazu finden Sie im Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" @@ -13543,6 +13665,10 @@ msgid "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping." msgstr "" +"Verwerfungen vermeiden\n" +"Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, " +"wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " +"Wahrscheinlichkeit von Verwerfungen verringert werden kann." #~ msgid " search results" #~ msgstr " Suchergebnisse" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 085b74d452..e88eb0c0b1 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -11793,7 +11793,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 28e998e2c1..dcb9457e5c 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -12631,7 +12631,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 1579ee8202..f2169fa9ad 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -12298,7 +12298,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 40fab7f373..3b9916ff73 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -11886,7 +11886,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 5c9320aedd..827c111872 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -12632,7 +12632,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index f3db87c2af..48ae53a58f 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -11513,7 +11513,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 3c13b2c871..722f522b41 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -12100,7 +12100,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 238eb19e6d..690275f0c5 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -12001,7 +12001,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 27a1b03f2a..c21f051b2b 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -12645,7 +12645,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 8dc4f49e80..fa4d3b0133 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -11812,7 +11812,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 29ec56f544..0d54577393 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -12400,7 +12400,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 38fde05955..30f26efd2b 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -11983,7 +11983,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 2025088bd3..1e870bb896 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -11563,7 +11563,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 82e752b75b..5bb3eed628 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -12243,7 +12243,7 @@ msgstr "" msgid "wiki" msgstr "" -msgid "Improt Preset" +msgid "Import Preset" msgstr "" msgid "Create Type" From d22a7254c43538beedd9e2af6109bd6a0e2af530 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 3 Dec 2023 09:20:29 +0800 Subject: [PATCH 17/93] Fix precise wall for Arachne wall generator (#2966) Update WIKI for it --- README.md | 2 +- doc/Precise-wall.md | 13 +++++++++++++ doc/Print-settings.md | 3 ++- .../BeadingStrategy/BeadingStrategyFactory.cpp | 4 +++- src/libslic3r/PerimeterGenerator.cpp | 12 +++++------- src/slic3r/GUI/Tab.cpp | 2 +- 6 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 doc/Precise-wall.md diff --git a/README.md b/README.md index 1034c388a4..d10bc27da4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ You can download Orca Slicer here: [github releases page](https://github.com/Sof # Main features - Auto calibrations for all printers - Sandwich(inner-outer-inner) mode - an improved version of the `External perimeters first` mode -- Precise wall +- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall) - Polyholes conversion support [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes) - Klipper support - More granular controls diff --git a/doc/Precise-wall.md b/doc/Precise-wall.md new file mode 100644 index 0000000000..4c938be220 --- /dev/null +++ b/doc/Precise-wall.md @@ -0,0 +1,13 @@ +The 'Precise Wall' is a distinctive feature introduced by OrcaSlicer, aimed at improving the dimensional accuracy of prints and minimizing layer inconsistencies by slightly increasing the spacing between the outer wall and the inner wall. + +Below is a technical explanation of how this feature works. +First, it's important to understand some basic concepts like flow, extrusion width, and space. Slic3r has an excellent document that covers these topics in detail. You can refer to this article: [link to article](https://manual.slic3r.org/advanced/flow-math). + +Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping. +![image](https://github.com/SoftFever/OrcaSlicer/assets/103989404/924d8df8-992c-4d55-b97d-fb85455fab5b) +This approach enhances the strength of 3D-printed parts. However, it does have some side effects. For instance, when the inner-outer wall order is used, the outer wall can be pushed outside, leading to potential size inaccuracy and more layer inconsistency. + +It's important to keep in mind that this approach to handling flow is specific to Slic3r and it's forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura + +OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved. + diff --git a/doc/Print-settings.md b/doc/Print-settings.md index 128c990aca..5c31ca4eb9 100644 --- a/doc/Print-settings.md +++ b/doc/Print-settings.md @@ -4,4 +4,5 @@ Print settings: * [Axiliary fan](auxiliary-fan) * [Chamber temperature](chamber-temperature) * [Air filtration/Exhaust fan](air-filtration) -* [Single Extruder Multimaterial](semm) \ No newline at end of file +* [Single Extruder Multimaterial](semm) +* [Precise wall](Precise-wall) \ No newline at end of file diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index 4044c90138..97acd271ac 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -39,7 +39,9 @@ BeadingStrategyPtr BeadingStrategyFactory::makeStrategy( BOOST_LOG_TRIVIAL(debug) << "Applying the Widening Beading meta-strategy with minimum input width " << min_feature_size << " and minimum output width " << min_bead_width << "."; ret = std::make_unique(std::move(ret), min_feature_size, min_bead_width); } - if (outer_wall_offset > 0) { + // Orca: we allow negative outer_wall_offset here + if (outer_wall_offset != 0) + { BOOST_LOG_TRIVIAL(debug) << "Applying the OuterWallOffset meta-strategy with offset = " << outer_wall_offset << "."; ret = std::make_unique(outer_wall_offset, std::move(ret)); } diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 0a02effd37..4adf705665 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1935,24 +1935,22 @@ void PerimeterGenerator::process_arachne() // extra perimeters for each one for (const Surface& surface : this->slices->surfaces) { coord_t bead_width_0 = ext_perimeter_spacing; - if (config->precise_outer_wall) - bead_width_0 = ext_perimeter_width + this->perimeter_flow.scaled_width() - perimeter_spacing; // detect how many perimeters must be generated for this island int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops if (this->layer_id == 0 && this->config->only_one_wall_first_layer) loop_number = 0; - // BBS: set the topmost layer to be one wall + // Orca: set the topmost layer to be one wall according to the config if (loop_number > 0 && config->only_one_wall_top && this->upper_slices == nullptr) loop_number = 0; + // Orca: properly adjust offset for the outer wall if precise_outer_wall is enabled. ExPolygons last = offset_ex(surface.expolygon.simplify_p(surface_simplify_resolution), - config->precise_outer_wall ? -float(ext_perimeter_width / 2. - bead_width_0 / 2.) + config->precise_outer_wall ? -float(ext_perimeter_width - ext_perimeter_spacing ) : -float(ext_perimeter_width / 2. - ext_perimeter_spacing / 2.)); Arachne::WallToolPathsParams input_params = Arachne::make_paths_params(this->layer_id, *object_config, *print_config); coord_t wall_0_inset = 0; - //if (config->precise_outer_wall) - // wall_0_inset = 0.5 * (ext_perimeter_width + this->perimeter_flow.scaled_width() - ext_perimeter_spacing - - // perimeter_spacing); + if (config->precise_outer_wall) + wall_0_inset = -coord_t(ext_perimeter_width / 2 - ext_perimeter_spacing / 2); std::vector out_shell; ExPolygons top_fills; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 43cd849e18..95abd50e55 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1921,7 +1921,7 @@ void TabPrint::build() optgroup->append_single_option_line("xy_contour_compensation", "xy-hole-contour-compensation"); optgroup->append_single_option_line("elefant_foot_compensation"); optgroup->append_single_option_line("elefant_foot_compensation_layers"); - optgroup->append_single_option_line("precise_outer_wall"); + optgroup->append_single_option_line("precise_outer_wall", "Precise-wall"); optgroup->append_single_option_line("hole_to_polyhole"); optgroup->append_single_option_line("hole_to_polyhole_threshold"); optgroup->append_single_option_line("hole_to_polyhole_twisted"); From 0bf65aa217b9d5a4ad1ad33a70b2e528abfd6734 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 3 Dec 2023 05:02:03 +0100 Subject: [PATCH 18/93] Additional Nozzles for the Creality Ender-5 Pro (2019) (#2964) * Add 0.6mm Nozzle Configurations for CE5Pro * Add 0.5mm Nozzle Configurations for CE5Pro * Add Nozzle Size Printer Variants 0.2-1.0mm * Add 0.3mm Printer Variant * Add 0.5mm Printer Variant * Fix: 0.6mm Printer Variant * Add Remaining Printer Variants * Add CE5Pro Nozzles to list of Compatible Filament * Add Generic FDM Process for Creality 0.3 Nozzle * Update Generic FDM Process for Creality 0.6 Nozzle * Add FDM Process for Remaining Creality Nozzle * Add Processes For CE5Pro 0.8mm Nozzle * Add Processes For CE5Pro 1.0mm Nozzle * Add Processes For CE5Pro 0.2mm Nozzle * Fix Initial Layer Settings * Add Processes For CE5Pro 0.25mm Nozzle * Add Processes For CE5Pro 0.3mm Nozzle * Remove Profiles Outside their Min/Max Layer Height * Update CE5Pro 0.4 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.2 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.25 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.3 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.5 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.6 Nozzle Naming Scheme to PR1100 * Update CE5Pro 0.8 Nozzle Naming Scheme to PR1100 * Update CE5Pro 1.0 Nozzle Naming Scheme to PR1100 * Incl. Remaining Base Config That Diff Is Based On * Remove whitespace * Revert from Nozzle Naming Scheme in PR1100 * Update Nozzle Names * Revert "Incl. Remaining Base Config That Diff Is Based On" This reverts commit 87e15d621b2d8e2d2677036285e2a4677125dcdf. These settings were already captured by fdm_process_creality_common.json * Fix Indentations --- resources/profiles/Creality.json | 190 +++++++++++++++++- .../filament/Creality Generic ABS.json | 7 + .../filament/Creality Generic ASA.json | 7 + .../filament/Creality Generic PETG.json | 7 + .../filament/Creality Generic PLA.json | 7 + ...reality Ender-5 Pro (2019) 0.2 nozzle.json | 32 +++ ...eality Ender-5 Pro (2019) 0.25 nozzle.json | 32 +++ ...reality Ender-5 Pro (2019) 0.3 nozzle.json | 32 +++ ...reality Ender-5 Pro (2019) 0.5 nozzle.json | 32 +++ ...reality Ender-5 Pro (2019) 0.6 nozzle.json | 32 +++ ...reality Ender-5 Pro (2019) 0.8 nozzle.json | 32 +++ ...reality Ender-5 Pro (2019) 1.0 nozzle.json | 32 +++ .../machine/Creality Ender-5 Pro (2019).json | 2 +- ...Detail @Creality Ender5Pro (2019) 0.2.json | 12 ++ ...etail @Creality Ender5Pro (2019) 0.25.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.3.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.2.json | 12 ++ ...etail @Creality Ender5Pro (2019) 0.25.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.3.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.2.json | 12 ++ ...etail @Creality Ender5Pro (2019) 0.25.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.3.json | 12 ++ ...Detail @Creality Ender5Pro (2019) 0.5.json | 12 ++ ...ptimal @Creality Ender5Pro (2019) 0.2.json | 12 ++ ...timal @Creality Ender5Pro (2019) 0.25.json | 12 ++ ...ptimal @Creality Ender5Pro (2019) 0.3.json | 12 ++ ...ptimal @Creality Ender5Pro (2019) 0.5.json | 12 ++ ...ptimal @Creality Ender5Pro (2019) 0.6.json | 12 ++ ...ndard @Creality Ender5Pro (2019) 0.25.json | 11 + ...andard @Creality Ender5Pro (2019) 0.3.json | 11 + ...andard @Creality Ender5Pro (2019) 0.5.json | 11 + ...andard @Creality Ender5Pro (2019) 0.6.json | 11 + ...andard @Creality Ender5Pro (2019) 0.8.json | 11 + ... Draft @Creality Ender5Pro (2019) 0.3.json | 11 + ... Draft @Creality Ender5Pro (2019) 0.5.json | 11 + ... Draft @Creality Ender5Pro (2019) 0.6.json | 11 + ... Draft @Creality Ender5Pro (2019) 0.8.json | 11 + ...rDraft @Creality Ender5Pro (2019) 0.5.json | 11 + ...rDraft @Creality Ender5Pro (2019) 0.6.json | 11 + ...rDraft @Creality Ender5Pro (2019) 0.8.json | 11 + ...rDraft @Creality Ender5Pro (2019) 1.0.json | 11 + ...Chunky @Creality Ender5Pro (2019) 0.5.json | 11 + ...Chunky @Creality Ender5Pro (2019) 0.6.json | 11 + ...Chunky @Creality Ender5Pro (2019) 0.8.json | 11 + ...Chunky @Creality Ender5Pro (2019) 1.0.json | 11 + .../fdm_process_creality_common_0_2.json | 20 ++ .../fdm_process_creality_common_0_25.json | 20 ++ .../fdm_process_creality_common_0_3.json | 19 ++ .../fdm_process_creality_common_0_5.json | 19 ++ .../fdm_process_creality_common_0_6.json | 19 ++ .../fdm_process_creality_common_0_8.json | 20 ++ .../fdm_process_creality_common_1_0.json | 20 ++ 52 files changed, 944 insertions(+), 4 deletions(-) create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json create mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json create mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25.json create mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.2.json create mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.25.json create mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.25.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.2.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.25.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.6.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.25.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.6.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.8.json create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.3.json create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.6.json create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json create mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6.json create mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8.json create mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json create mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.5.json create mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.6.json create mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.8.json create mode 100644 resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_2.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_25.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_3.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_5.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_6.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_0_8.json create mode 100644 resources/profiles/Creality/process/fdm_process_creality_common_1_0.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 7c9e40ea84..6568d82324 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -78,14 +78,66 @@ "name": "fdm_process_creality_common", "sub_path": "process/fdm_process_creality_common.json" }, + { + "name": "fdm_process_creality_common_0_2", + "sub_path": "process/fdm_process_creality_common_0_2.json" + }, + { + "name": "fdm_process_creality_common_0_25", + "sub_path": "process/fdm_process_creality_common_0_25.json" + }, + { + "name": "fdm_process_creality_common_0_3", + "sub_path": "process/fdm_process_creality_common_0_3.json" + }, + { + "name": "fdm_process_creality_common_0_5", + "sub_path": "process/fdm_process_creality_common_0_5.json" + }, + { + "name": "fdm_process_creality_common_0_6", + "sub_path": "process/fdm_process_creality_common_0_6.json" + }, + { + "name": "fdm_process_creality_common_0_8", + "sub_path": "process/fdm_process_creality_common_0_8.json" + }, + { + "name": "fdm_process_creality_common_1_0", + "sub_path": "process/fdm_process_creality_common_1_0.json" + }, { "name": "0.08mm SuperDetail @Creality CR-6 0.2", "sub_path": "process/0.08mm SuperDetail @Creality CR-6 0.2.json" }, + { + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2", + "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json" + }, + { + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25", + "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25.json" + }, + { + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.10mm HighDetail @Creality CR-6 0.4.json", "sub_path": "process/0.10mm HighDetail @Creality CR-6 0.4.json" }, + { + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.2", + "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.2.json" + }, + { + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.25", + "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.25.json" + }, + { + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.12mm Fine @Creality CR10Max", "sub_path": "process/0.12mm Fine @Creality CR10Max.json" @@ -102,10 +154,26 @@ "name": "0.12mm Fine @Creality Ender3V2", "sub_path": "process/0.12mm Fine @Creality Ender3V2.json" }, + { + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.2", + "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json" + }, + { + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.25", + "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.25.json" + }, + { + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.12mm Fine @Creality Ender5Pro (2019)", "sub_path": "process/0.12mm Fine @Creality Ender5Pro (2019).json" }, + { + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json" + }, { "name": "0.16mm Optimal @Creality CR10V2", "sub_path": "process/0.16mm Optimal @Creality CR10V2.json" @@ -134,10 +202,30 @@ "name": "0.16mm Optimal @Creality Ender5Plus", "sub_path": "process/0.16mm Optimal @Creality Ender5Plus.json" }, + { + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.2", + "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) 0.2.json" + }, + { + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.25", + "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) 0.25.json" + }, + { + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.15mm Optimal @Creality Ender5Pro (2019)", "sub_path": "process/0.15mm Optimal @Creality Ender5Pro (2019).json" }, + { + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.6", + "sub_path": "process/0.16mm Optimal @Creality Ender5Pro (2019) 0.6.json" + }, { "name": "0.16mm Optimal @Creality Ender5S", "sub_path": "process/0.16mm Optimal @Creality Ender5S.json" @@ -173,8 +261,8 @@ { "name": "0.20mm Standard @Creality CR-6 0.6", "sub_path": "process/0.20mm Standard @Creality CR-6 0.6.json" - }, - { + }, + { "name": "0.20mm Standard @Creality Ender3", "sub_path": "process/0.20mm Standard @Creality Ender3.json" }, @@ -198,10 +286,30 @@ "name": "0.20mm Standard @Creality Ender5Plus", "sub_path": "process/0.20mm Standard @Creality Ender5Plus.json" }, + { + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.25", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) 0.25.json" + }, + { + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.20mm Standard @Creality Ender5Pro (2019)", "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019).json" }, + { + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.6", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) 0.6.json" + }, + { + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.8", + "sub_path": "process/0.20mm Standard @Creality Ender5Pro (2019) 0.8.json" + }, { "name": "0.20mm Standard @Creality Ender5S", "sub_path": "process/0.20mm Standard @Creality Ender5S.json" @@ -242,10 +350,26 @@ "name": "0.24mm Draft @Creality Ender3V2", "sub_path": "process/0.24mm Draft @Creality Ender3V2.json" }, + { + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.3", + "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) 0.3.json" + }, { "name": "0.24mm Draft @Creality Ender5Pro (2019)", "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019).json" }, + { + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.6", + "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) 0.6.json" + }, + { + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.8", + "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json" + }, { "name": "0.28mm SuperDraft @Creality CR-6 0.4", "sub_path": "process/0.28mm SuperDraft @Creality CR-6 0.4.json" @@ -254,6 +378,22 @@ "name": "0.28mm SuperDraft @Creality CR-6 0.6", "sub_path": "process/0.28mm SuperDraft @Creality CR-6 0.6.json" }, + { + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6", + "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6.json" + }, + { + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8", + "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8.json" + }, + { + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0", + "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json" + }, { "name": "0.32mm Chunky @Creality CR-6 0.6", "sub_path": "process/0.32mm Chunky @Creality CR-6 0.6.json" @@ -266,6 +406,22 @@ "name": "0.36mm SuperChunky @Creality CR-6 0.6", "sub_path": "process/0.36mm SuperChunky @Creality CR-6 0.6.json" }, + { + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.6", + "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) 0.6.json" + }, + { + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.8", + "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) 0.8.json" + }, + { + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 1.0", + "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json" + }, { "name": "0.40mm Draft @Creality CR-6 0.8", "sub_path": "process/0.40mm Draft @Creality CR-6 0.8.json" @@ -474,10 +630,38 @@ "name": "Creality Ender-5 Plus 0.4 nozzle", "sub_path": "machine/Creality Ender-5 Plus 0.4 nozzle.json" }, + { + "name": "Creality Ender-5 Pro (2019) 0.2 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json" + }, + { + "name": "Creality Ender-5 Pro (2019) 0.25 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json" + }, + { + "name": "Creality Ender-5 Pro (2019) 0.3 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json" + }, { "name": "Creality Ender-5 Pro (2019) 0.4 nozzle", "sub_path": "machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json" }, + { + "name": "Creality Ender-5 Pro (2019) 0.5 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json" + }, + { + "name": "Creality Ender-5 Pro (2019) 0.6 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json" + }, + { + "name": "Creality Ender-5 Pro (2019) 0.8 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json" + }, + { + "name": "Creality Ender-5 Pro (2019) 1.0 nozzle", + "sub_path": "machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json" + }, { "name": "Creality Ender-5S 0.4 nozzle", "sub_path": "machine/Creality Ender-5S 0.4 nozzle.json" @@ -511,4 +695,4 @@ "sub_path": "machine/Creality K1 Max (0.8 nozzle).json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic ABS.json b/resources/profiles/Creality/filament/Creality Generic ABS.json index 482d180125..01eec5576e 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS.json +++ b/resources/profiles/Creality/filament/Creality Generic ABS.json @@ -25,7 +25,14 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.2 nozzle", + "Creality Ender-5 Pro (2019) 0.25 nozzle", + "Creality Ender-5 Pro (2019) 0.3 nozzle", "Creality Ender-5 Pro (2019) 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.5 nozzle", + "Creality Ender-5 Pro (2019) 0.6 nozzle", + "Creality Ender-5 Pro (2019) 0.8 nozzle", + "Creality Ender-5 Pro (2019) 1.0 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic ASA.json b/resources/profiles/Creality/filament/Creality Generic ASA.json index 97970fc562..18a8fad19f 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA.json +++ b/resources/profiles/Creality/filament/Creality Generic ASA.json @@ -25,7 +25,14 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.2 nozzle", + "Creality Ender-5 Pro (2019) 0.25 nozzle", + "Creality Ender-5 Pro (2019) 0.3 nozzle", "Creality Ender-5 Pro (2019) 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.5 nozzle", + "Creality Ender-5 Pro (2019) 0.6 nozzle", + "Creality Ender-5 Pro (2019) 0.8 nozzle", + "Creality Ender-5 Pro (2019) 1.0 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PETG.json b/resources/profiles/Creality/filament/Creality Generic PETG.json index 715f4d7607..d1c0652f5b 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG.json @@ -35,7 +35,14 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.2 nozzle", + "Creality Ender-5 Pro (2019) 0.25 nozzle", + "Creality Ender-5 Pro (2019) 0.3 nozzle", "Creality Ender-5 Pro (2019) 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.5 nozzle", + "Creality Ender-5 Pro (2019) 0.6 nozzle", + "Creality Ender-5 Pro (2019) 0.8 nozzle", + "Creality Ender-5 Pro (2019) 1.0 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA.json b/resources/profiles/Creality/filament/Creality Generic PLA.json index a63a760af2..5b05a61e04 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA.json @@ -26,7 +26,14 @@ "Creality Ender-3 S1 Pro 0.4 nozzle", "Creality Ender-5 0.4 nozzle", "Creality Ender-5 Plus 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.2 nozzle", + "Creality Ender-5 Pro (2019) 0.25 nozzle", + "Creality Ender-5 Pro (2019) 0.3 nozzle", "Creality Ender-5 Pro (2019) 0.4 nozzle", + "Creality Ender-5 Pro (2019) 0.5 nozzle", + "Creality Ender-5 Pro (2019) 0.6 nozzle", + "Creality Ender-5 Pro (2019) 0.8 nozzle", + "Creality Ender-5 Pro (2019) 1.0 nozzle", "Creality Ender-5S 0.4 nozzle", "Creality Ender-5 S1 0.4 nozzle", "Creality Ender-6 0.4 nozzle", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json new file mode 100644 index 0000000000..02ec45a7db --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.2", + "default_print_profile": "0.16mm Optimal @Creality Ender5Pro (2019) 0.2", + "max_layer_height": [ + "0.16" + ], + "min_layer_height": [ + "0.05" + ], + "nozzle_diameter": [ + "0.2" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json new file mode 100644 index 0000000000..7afcba3e3b --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.25 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.25", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.25", + "max_layer_height": [ + "0.2" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.25" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json new file mode 100644 index 0000000000..88ad5115d5 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.3 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.3", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.3", + "max_layer_height": [ + "0.24" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.3" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json new file mode 100644 index 0000000000..0990664546 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.5", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.5", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.12" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json new file mode 100644 index 0000000000..1956e96c72 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.6", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.6", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.16" + ], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json new file mode 100644 index 0000000000..2191dbd7a5 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "0.8", + "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.8", + "max_layer_height": [ + "0.64" + ], + "min_layer_height": [ + "0.2" + ], + "nozzle_diameter": [ + "0.8" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json new file mode 100644 index 0000000000..5b9d7f171e --- /dev/null +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality Ender-5 Pro (2019) 1.0 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality Ender-5 Pro (2019)", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "printer_variant": "1.0", + "default_print_profile": "0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0", + "max_layer_height": [ + "0.80" + ], + "min_layer_height": [ + "0.25" + ], + "nozzle_diameter": [ + "1.0" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json index b6d9ee1c97..3f71b5fbc4 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Creality Ender-5 Pro (2019)", "model_id": "Creality_Ender_5_Pro_2019", - "nozzle_diameter": "0.4", + "nozzle_diameter": "0.2;0.25;0.3;0.4;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "Creality", "bed_model": "creality_ender5pro_buildplate_model.stl", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json new file mode 100644 index 0000000000..7cec18dd21 --- /dev/null +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.2", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_2", + "bottom_shell_layers": "9", + "top_shell_layers": "11", + "layer_height": "0.08", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25.json new file mode 100644 index 0000000000..549411b2c4 --- /dev/null +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.25", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_25", + "bottom_shell_layers": "9", + "top_shell_layers": "11", + "layer_height": "0.08", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..793afc2a53 --- /dev/null +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "9", + "top_shell_layers": "11", + "layer_height": "0.08", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.2.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.2.json new file mode 100644 index 0000000000..f250aea565 --- /dev/null +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.2.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.2", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_2", + "bottom_shell_layers": "7", + "top_shell_layers": "9", + "layer_height": "0.1", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.25.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.25.json new file mode 100644 index 0000000000..b1206a2759 --- /dev/null +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.25.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.25", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_25", + "bottom_shell_layers": "7", + "top_shell_layers": "9", + "layer_height": "0.1", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..9538235d08 --- /dev/null +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "7", + "top_shell_layers": "9", + "layer_height": "0.1", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json new file mode 100644 index 0000000000..3735306232 --- /dev/null +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.2.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.2", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_2", + "bottom_shell_layers": "6", + "top_shell_layers": "7", + "layer_height": "0.12", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.25.json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.25.json new file mode 100644 index 0000000000..c0657fab47 --- /dev/null +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.25.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.25", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_25", + "bottom_shell_layers": "6", + "top_shell_layers": "7", + "layer_height": "0.12", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..02eed0a0fe --- /dev/null +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "6", + "top_shell_layers": "7", + "layer_height": "0.12", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..b8014d3bf2 --- /dev/null +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "6", + "top_shell_layers": "7", + "layer_height": "0.12", + "bridge_flow": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.2.json new file mode 100644 index 0000000000..b83910a34b --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.2.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.2", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_2", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "layer_height": "0.16", + "bridge_flow": "0.85" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.25.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.25.json new file mode 100644 index 0000000000..81aead0251 --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.25.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.25", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_25", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "layer_height": "0.16", + "bridge_flow": "0.85" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..65394ae8f2 --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "layer_height": "0.16", + "bridge_flow": "0.85" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..b665f9501d --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "layer_height": "0.16", + "bridge_flow": "0.85" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.6.json new file mode 100644 index 0000000000..6df973930b --- /dev/null +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Pro (2019) 0.6.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Creality Ender5Pro (2019) 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_6", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "0.85", + "layer_height": "0.16" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.25.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.25.json new file mode 100644 index 0000000000..d36e7a4331 --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.25.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.25", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_25", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "layer_height": "0.20" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..f00ede6871 --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "layer_height": "0.20" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..6712100d90 --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "layer_height": "0.20" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.6.json new file mode 100644 index 0000000000..035121965c --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.6.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_6", + "bottom_shell_layers": "4", + "top_shell_layers": "4", + "layer_height": "0.20" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.8.json new file mode 100644 index 0000000000..ba94de8705 --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019) 0.8.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality Ender5Pro (2019) 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_8", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "layer_height": "0.20" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.3.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.3.json new file mode 100644 index 0000000000..29fcdd9f88 --- /dev/null +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.3.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.3", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_3", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.24" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..3f1dfc5b3d --- /dev/null +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.24" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.6.json new file mode 100644 index 0000000000..3b9a2fc90e --- /dev/null +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.6.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_6", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.24" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json new file mode 100644 index 0000000000..eddca346b2 --- /dev/null +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_8", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.24" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..76c4c5ede5 --- /dev/null +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.28" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6.json new file mode 100644 index 0000000000..837d684e25 --- /dev/null +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_6", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.28" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8.json new file mode 100644 index 0000000000..9ffd6dbb28 --- /dev/null +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_8", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.28" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json new file mode 100644 index 0000000000..a2d6093bbd --- /dev/null +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_1_0", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.28" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.5.json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.5.json new file mode 100644 index 0000000000..3e73410f03 --- /dev/null +++ b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.5.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_5", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.36" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.6.json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.6.json new file mode 100644 index 0000000000..7c81913a78 --- /dev/null +++ b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.6.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_6", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.36" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.8.json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.8.json new file mode 100644 index 0000000000..e1a07cf309 --- /dev/null +++ b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 0.8.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_0_8", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.36" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json new file mode 100644 index 0000000000..48d513d5c2 --- /dev/null +++ b/resources/profiles/Creality/process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.36mm Chunky @Creality Ender5Pro (2019) 1.0", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_creality_common_1_0", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "layer_height": "0.36" +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json new file mode 100644 index 0000000000..eb28a2bca8 --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_2.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_2", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.2", + "line_width": "0.22", + "initial_layer_line_width": "0.2", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.18", + "top_surface_line_width": "0.2", + "initial_layer_print_height": "0.12", + "wall_loops": "6", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json new file mode 100644 index 0000000000..94b5cb989c --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_25.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_25", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.26", + "line_width": "0.28", + "initial_layer_line_width": "0.26", + "sparse_infill_line_width": "0.28", + "inner_wall_line_width": "0.28", + "internal_solid_infill_line_width": "0.28", + "support_line_width": "0.23", + "top_surface_line_width": "0.25", + "initial_layer_print_height": "0.12", + "wall_loops": "5", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json new file mode 100644 index 0000000000..26d05e8228 --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_3.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_3", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.31", + "line_width": "0.33", + "initial_layer_line_width": "0.31", + "sparse_infill_line_width": "0.33", + "inner_wall_line_width": "0.33", + "internal_solid_infill_line_width": "0.33", + "support_line_width": "0.27", + "top_surface_line_width": "0.3", + "wall_loops": "4", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.3 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json new file mode 100644 index 0000000000..26a11b4d51 --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_5.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_5", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.52", + "line_width": "0.55", + "initial_layer_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "inner_wall_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "support_line_width": "0.45", + "top_surface_line_width": "0.5", + "wall_loops": "3", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json new file mode 100644 index 0000000000..ca184e0616 --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_6.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_6", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.63", + "line_width": "0.66", + "initial_layer_line_width": "0.63", + "sparse_infill_line_width": "0.66", + "inner_wall_line_width": "0.66", + "internal_solid_infill_line_width": "0.66", + "support_line_width": "0.54", + "top_surface_line_width": "0.6", + "wall_loops": "2", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json b/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json new file mode 100644 index 0000000000..b7f6a48eac --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_0_8.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_0_8", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "0.84", + "line_width": "0.88", + "initial_layer_line_width": "0.84", + "sparse_infill_line_width": "0.88", + "inner_wall_line_width": "0.88", + "internal_solid_infill_line_width": "0.88", + "support_line_width": "0.72", + "top_surface_line_width": "0.8", + "initial_layer_print_height": "0.32", + "wall_loops": "2", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json b/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json new file mode 100644 index 0000000000..926033c695 --- /dev/null +++ b/resources/profiles/Creality/process/fdm_process_creality_common_1_0.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "fdm_process_creality_common_1_0", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_creality_common", + "outer_wall_line_width": "1.05", + "line_width": "1.10", + "initial_layer_line_width": "1.05", + "sparse_infill_line_width": "1.10", + "inner_wall_line_width": "1.10", + "internal_solid_infill_line_width": "1.10", + "support_line_width": "0.9", + "top_surface_line_width": "1.0", + "initial_layer_print_height": "0.32", + "wall_loops": "1", + "compatible_printers": [ + "Creality Ender-5 Pro (2019) 1.0 nozzle" + ] +} \ No newline at end of file From 25a055491ee8ef664497d480e1d0e06a71bbea59 Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Mon, 4 Dec 2023 10:21:49 -0500 Subject: [PATCH 19/93] Update wxWidgets to v3.2.1 (#2905) * Upgrade wxWidgets to 3.2.1 Based on prusa3d/PrusaSlicer@9a7e024 Co-authored-by: tamasmeszaros * Implement BitmapCache * update wxExtensions while keeping legacy items * update dc.DrawBitmap calls to use get_bitmap * Fix GetSize/Width/Height calls * update BitmapComboBox * fix ifndef in wxExtensions.hpp * update my todos to OcraftyoneTODO * Get to a compilable state Everything seems to be working (including the plater). I am not seeing any graphical issues * fix extruder color icons * fix crash on opening support tab * remove GetBmpSize method from DropDown.cpp * Update TextInput to use bitmap bundles * update a TODO after testing * fix the rendering of the icons on combobox * fix a few todos * fix WipeTowerDialog.cpp * Overhaul WipeTowerDialog Removed simple version of the dialog since BBS removed the functionality but left the code. Center the table (only seen when the table is smaller than the minimum size of the dialog) Fix issue where editing a value causes the m_min_flush_label to change colors slightly Fix an issue where changing a value or running an auto calc changes the disabled value from "-" to "0" * update a few todos * Update some todos * Show dropdown when editing is started * Update NanoSVG.cmake Update NanoSVG to work with PR #2780 * Dim the icon on ComboBox when disabled * solve ObjectDataViewModel todos leaving colPrint and colEditing cases alone as it does not seem to impact anything * Update names in wxExtensions -Rename msw_rescale to sys_color_changed -Replace GetBmpSize, GetBmpWidth, GetBmpHeight with renamed version (same name without "Bmp") Both of these changes were also made by PrusaSlicer. Original Commit: Prusa3D/PrusaSlicer@066b567 Co-authored-by: YuSanka * update BitmapCache::from_svg disable finding bundle in the cache to match load_svg update to match values used in load_svg * Update ScalableButton change the signature and remove functions/vars pertaining to a default bmp fix TODOs in ScalableButton Original Commit: Prusa3D/PrusaSlicer@066b567 Co-authored-by: YuSanka * fix up some more todos in wxExtensions * update ScalableBitmap to use bmp bundles use wxBitmapBundle by default add flag to use old scaled bitmap function (specifically to solve issue with advanced toggle) * attempt to fix macos deps build * fix ubuntu build * Revert "attempt to fix macos deps build" Mistakenly made change to wrong file This reverts commit d9c20b51216db1d409aeb0420d9d901000ad1b00. * update wxWidgets patch an attempt to fix macOS build * Remove duplicate variable from OrcaSlicer.cpp * Fix macOS build issue * Fix blank DataViewItem being added to objects list * Filament ComboBox editor updates -Add show drop down feature to ObjectTable -Call finish editing when ComboBox is closed in ObjectList * remove Apple specific declarations missed during refactor * delete old wxWidgets patch * fix ubuntu seg fault * include patch from #2926 * update patch to include wxWidgets/wxWidgets@991a74c * fix deps not compiling on Windows * update WipeTowerDialog relocates the recalculate button back to its previous position changes the wording of the tip message label add spacing below the matrix * finish patching wxWidgets from prusa3d/PrusaSlicer@f8477d1 and prusa3d/PrusaSlicer@066b567 Co-authored-by: YuSanka * fix combobox crash * revert outside plate changes --------- Co-authored-by: tamasmeszaros Co-authored-by: YuSanka --- deps/CMakeLists.txt | 1 + deps/NanoSVG/NanoSVG.cmake | 9 + ...=> 0001-patch-v3.2.1-for-OrcaSlicer.patch} | 276 +- deps/wxWidgets/wxWidgets.cmake | 15 +- src/CMakeLists.txt | 5 +- src/OrcaSlicer.cpp | 1 - src/nanosvg/README.txt | 1 - src/nanosvg/nanosvg.h | 3106 ----------------- src/nanosvg/nanosvgrast.h | 1482 -------- src/slic3r/CMakeLists.txt | 4 +- src/slic3r/GUI/AMSMaterialsSetting.cpp | 2 +- src/slic3r/GUI/AboutDialog.cpp | 10 +- src/slic3r/GUI/AmsMappingPopup.cpp | 14 +- src/slic3r/GUI/Auxiliary.cpp | 20 +- src/slic3r/GUI/BBLTopbar.cpp | 4 +- src/slic3r/GUI/BitmapCache.cpp | 463 ++- src/slic3r/GUI/BitmapCache.hpp | 38 +- src/slic3r/GUI/BitmapComboBox.cpp | 90 +- src/slic3r/GUI/BitmapComboBox.hpp | 17 +- src/slic3r/GUI/CalibrationPanel.cpp | 4 +- src/slic3r/GUI/CalibrationWizardPage.cpp | 14 +- .../GUI/CalibrationWizardPresetPage.cpp | 6 +- src/slic3r/GUI/CameraPopup.cpp | 8 +- src/slic3r/GUI/ConfigWizard.cpp | 28 +- src/slic3r/GUI/ConfigWizard_private.hpp | 2 +- src/slic3r/GUI/DragCanvas.cpp | 4 +- src/slic3r/GUI/ExtraRenderers.cpp | 24 +- src/slic3r/GUI/ExtraRenderers.hpp | 4 +- src/slic3r/GUI/Field.cpp | 4 +- src/slic3r/GUI/GLTexture.cpp | 4 +- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/GUI_Factories.cpp | 40 +- src/slic3r/GUI/GUI_Factories.hpp | 5 +- src/slic3r/GUI/GUI_ObjectLayers.cpp | 41 +- src/slic3r/GUI/GUI_ObjectList.cpp | 42 +- src/slic3r/GUI/GUI_ObjectList.hpp | 2 +- src/slic3r/GUI/GUI_ObjectSettings.cpp | 20 +- src/slic3r/GUI/GUI_ObjectSettings.hpp | 1 - src/slic3r/GUI/GUI_ObjectTable.cpp | 37 +- src/slic3r/GUI/GUI_ObjectTable.hpp | 18 +- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 4 +- src/slic3r/GUI/ImGuiWrapper.cpp | 5 +- src/slic3r/GUI/ImageGrid.cpp | 12 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 7 +- src/slic3r/GUI/MediaFilePanel.cpp | 6 +- src/slic3r/GUI/ModelMall.cpp | 6 +- src/slic3r/GUI/MsgDialog.cpp | 6 +- src/slic3r/GUI/Notebook.cpp | 10 + src/slic3r/GUI/Notebook.hpp | 6 + src/slic3r/GUI/OG_CustomCtrl.cpp | 46 +- src/slic3r/GUI/OG_CustomCtrl.hpp | 2 +- src/slic3r/GUI/ObjectDataViewModel.cpp | 130 +- src/slic3r/GUI/ObjectDataViewModel.hpp | 47 +- src/slic3r/GUI/OptionsGroup.cpp | 3 +- src/slic3r/GUI/ParamsPanel.cpp | 14 +- src/slic3r/GUI/PhysicalPrinterDialog.cpp | 14 +- src/slic3r/GUI/PhysicalPrinterDialog.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 51 +- src/slic3r/GUI/PresetComboBoxes.cpp | 207 +- src/slic3r/GUI/PresetComboBoxes.hpp | 22 +- src/slic3r/GUI/RecenterDialog.cpp | 6 +- src/slic3r/GUI/SavePresetDialog.cpp | 4 +- src/slic3r/GUI/Search.cpp | 12 +- src/slic3r/GUI/Search.hpp | 2 +- src/slic3r/GUI/SelectMachine.cpp | 78 +- src/slic3r/GUI/StatusPanel.cpp | 26 +- src/slic3r/GUI/SysInfoDialog.cpp | 4 +- src/slic3r/GUI/Tab.cpp | 118 +- src/slic3r/GUI/Tab.hpp | 6 - src/slic3r/GUI/TabButton.cpp | 10 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 54 +- src/slic3r/GUI/UpgradePanel.cpp | 20 +- src/slic3r/GUI/Widgets/AMSControl.cpp | 51 +- src/slic3r/GUI/Widgets/AxisCtrlButton.cpp | 3 +- src/slic3r/GUI/Widgets/Button.cpp | 10 +- src/slic3r/GUI/Widgets/CheckBox.cpp | 24 +- src/slic3r/GUI/Widgets/ComboBox.cpp | 39 +- src/slic3r/GUI/Widgets/ComboBox.hpp | 13 +- src/slic3r/GUI/Widgets/DropDown.cpp | 27 +- src/slic3r/GUI/Widgets/DropDown.hpp | 6 +- src/slic3r/GUI/Widgets/FanControl.cpp | 17 +- src/slic3r/GUI/Widgets/ImageSwitchButton.cpp | 16 +- src/slic3r/GUI/Widgets/RadioBox.cpp | 10 +- src/slic3r/GUI/Widgets/SideButton.cpp | 8 +- src/slic3r/GUI/Widgets/SideTools.cpp | 36 +- src/slic3r/GUI/Widgets/StaticLine.cpp | 12 +- src/slic3r/GUI/Widgets/StepCtrl.cpp | 30 +- src/slic3r/GUI/Widgets/SwitchButton.cpp | 10 +- src/slic3r/GUI/Widgets/TabCtrl.cpp | 11 +- src/slic3r/GUI/Widgets/TabCtrl.hpp | 3 - src/slic3r/GUI/Widgets/TempInput.cpp | 28 +- src/slic3r/GUI/Widgets/TextInput.cpp | 12 +- src/slic3r/GUI/Widgets/TextInput.hpp | 2 +- src/slic3r/GUI/WipeTowerDialog.cpp | 310 +- src/slic3r/GUI/WipeTowerDialog.hpp | 20 +- src/slic3r/GUI/wxExtensions.cpp | 264 +- src/slic3r/GUI/wxExtensions.hpp | 88 +- 98 files changed, 1639 insertions(+), 6221 deletions(-) create mode 100644 deps/NanoSVG/NanoSVG.cmake rename deps/wxWidgets/{0001-wxWidget-fix.patch => 0001-patch-v3.2.1-for-OrcaSlicer.patch} (75%) delete mode 100644 src/nanosvg/README.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 aa158a69b4..f07cfacba9 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -236,6 +236,7 @@ endif () include(JPEG/JPEG.cmake) include(TIFF/TIFF.cmake) +include(NanoSVG/NanoSVG.cmake) include(wxWidgets/wxWidgets.cmake) include(OCCT/OCCT.cmake) include(FREETYPE/FREETYPE.cmake) diff --git a/deps/NanoSVG/NanoSVG.cmake b/deps/NanoSVG/NanoSVG.cmake new file mode 100644 index 0000000000..f02893efc9 --- /dev/null +++ b/deps/NanoSVG/NanoSVG.cmake @@ -0,0 +1,9 @@ +# In PrusaSlicer 2.6.0 we switched from https://github.com/memononen/nanosvg to its fork https://github.com/fltk/nanosvg +# because this last implements the new function nsvgRasterizeXY() which we now use in GLTexture::load_from_svg() +# for rasterizing svg files from their original size to a squared power of two texture on Windows systems using +# AMD Radeon graphics cards + +orcaslicer_add_cmake_project(NanoSVG + URL https://github.com/fltk/nanosvg/archive/abcd277ea45e9098bed752cf9c6875b533c0892f.zip + URL_HASH SHA256=e859938fbaee4b351bd8a8b3d3c7a75b40c36885ce00b73faa1ce0b98aa0ad34 +) \ No newline at end of file diff --git a/deps/wxWidgets/0001-wxWidget-fix.patch b/deps/wxWidgets/0001-patch-v3.2.1-for-OrcaSlicer.patch similarity index 75% rename from deps/wxWidgets/0001-wxWidget-fix.patch rename to deps/wxWidgets/0001-patch-v3.2.1-for-OrcaSlicer.patch index 1104d5d147..e96c1f4d52 100644 --- a/deps/wxWidgets/0001-wxWidget-fix.patch +++ b/deps/wxWidgets/0001-patch-v3.2.1-for-OrcaSlicer.patch @@ -1,24 +1,36 @@ -diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake -index 0bc4f934b9..479431a69c 100644 ---- a/build/cmake/init.cmake -+++ b/build/cmake/init.cmake -@@ -413,7 +413,11 @@ if(wxUSE_GUI) - else() - find_package(OpenGL) - if(WXGTK3 AND OpenGL_EGL_FOUND AND wxUSE_GLCANVAS_EGL) -+ if(UNIX AND NOT APPLE) -+ set(OPENGL_LIBRARIES OpenGL EGL) -+ else() - set(OPENGL_LIBRARIES OpenGL::OpenGL OpenGL::EGL) -+ endif() - find_package(WAYLANDEGL) - if(WAYLANDEGL_FOUND AND wxHAVE_GDK_WAYLAND) - list(APPEND OPENGL_LIBRARIES ${WAYLANDEGL_LIBRARIES}) +From f4fef135f0a58ca2916c45cd539923ab096935b6 Mon Sep 17 00:00:00 2001 +From: Ocraftyone +Date: Thu, 30 Nov 2023 03:25:54 -0500 +Subject: [PATCH] patch v3.2.1 for OrcaSlicer + +--- + build/cmake/lib/webview/CMakeLists.txt | 4 +- + include/wx/fontutil.h | 15 +++++++- + include/wx/gdicmn.h | 3 ++ + include/wx/generic/grid.h | 4 +- + include/wx/msw/font.h | 2 +- + include/wx/msw/tooltip.h | 4 +- + include/wx/osx/app.h | 2 +- + src/common/combocmn.cpp | 11 +++++- + src/common/datavcmn.cpp | 6 ++- + src/common/dcbufcmn.cpp | 6 +++ + src/common/gdicmn.cpp | 14 +++++++ + src/common/image.cpp | 6 +-- + src/generic/grid.cpp | 50 ++++++++++++++++++++----- + src/msw/bmpcbox.cpp | 9 ++++- + src/msw/font.cpp | 14 +++---- + src/msw/menuitem.cpp | 2 + + src/msw/window.cpp | 52 +++++++++++++++++--------- + src/osx/cocoa/dataview.mm | 26 +++++++++++-- + src/osx/cocoa/settings.mm | 6 +-- + src/osx/cocoa/window.mm | 4 ++ + 20 files changed, 184 insertions(+), 56 deletions(-) + diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt -index cc3298ff33..8adbeaea4f 100644 +index 085381d785..62146abc04 100644 --- a/build/cmake/lib/webview/CMakeLists.txt +++ b/build/cmake/lib/webview/CMakeLists.txt -@@ -56,7 +56,7 @@ if(APPLE) +@@ -46,9 +46,9 @@ if(APPLE) elseif(WXMSW) if(wxUSE_WEBVIEW_EDGE) # Update the following variables if updating WebView2 SDK @@ -31,7 +43,7 @@ index cc3298ff33..8adbeaea4f 100644 set(WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_BINARY_DIR}/packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION}") diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h -index 09ad8c8ef3..3c0c2d8f7e 100644 +index 30529db8ce..e6a12366d5 100644 --- a/include/wx/fontutil.h +++ b/include/wx/fontutil.h @@ -294,7 +294,11 @@ public: @@ -69,7 +81,7 @@ index 09ad8c8ef3..3c0c2d8f7e 100644 } diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h -index e29a77627c..dc48cf9451 100644 +index 2f5f8ee99f..39e9317d40 100644 --- a/include/wx/gdicmn.h +++ b/include/wx/gdicmn.h @@ -38,6 +38,7 @@ class WXDLLIMPEXP_FWD_CORE wxRegion; @@ -80,7 +92,7 @@ index e29a77627c..dc48cf9451 100644 // --------------------------------------------------------------------------- // constants -@@ -1092,7 +1093,9 @@ extern int WXDLLIMPEXP_CORE wxDisplayDepth(); +@@ -1106,7 +1107,9 @@ extern int WXDLLIMPEXP_CORE wxDisplayDepth(); // get the display size extern void WXDLLIMPEXP_CORE wxDisplaySize(int *width, int *height); @@ -91,13 +103,13 @@ index e29a77627c..dc48cf9451 100644 extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySizeMM(); extern wxSize WXDLLIMPEXP_CORE wxGetDisplayPPI(); diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h -index d7a3890764..e4dee51d5a 100644 +index 1bd58bbf04..903cb81319 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h -@@ -2951,9 +2951,11 @@ private: - wxGridWindow* gridWindow); - +@@ -3029,9 +3029,11 @@ private: // Update the width/height of the column/row being drag-resized. + // Should be only called when m_dragRowOrCol != -1, i.e. dragging is + // actually in progress. + //BBS: add cursor mode for DoGridDragResize's paremeters void DoGridDragResize(const wxPoint& position, const wxGridOperations& oper, @@ -151,19 +163,10 @@ index 317a0ca96f..58014ec1d4 100644 void OSXStoreOpenURL(const wxString &url ) { m_getURL = url ; } #endif diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp -index b61aac35bf..d12b745e8c 100644 +index 80408c6677..aa07caebdc 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp -@@ -2141,7 +2141,7 @@ void wxComboCtrlBase::CreatePopup() - #if !USES_GENERICTLW - m_winPopup = new wxComboPopupWindowBase2( this, wxNO_BORDER ); - #else -- int tlwFlags = wxNO_BORDER; -+ int tlwFlags = wxNO_BORDER | wxSTAY_ON_TOP; - #ifdef wxCC_GENERIC_TLW_IS_FRAME - tlwFlags |= wxFRAME_NO_TASKBAR; - #endif -@@ -2285,6 +2285,9 @@ void wxComboCtrlBase::ShowPopup() +@@ -2061,6 +2061,9 @@ void wxComboCtrlBase::ShowPopup() SetFocus(); @@ -173,14 +176,14 @@ index b61aac35bf..d12b745e8c 100644 // Space above and below int screenHeight; wxPoint scrPos; -@@ -2407,9 +2410,13 @@ void wxComboCtrlBase::ShowPopup() +@@ -2183,9 +2186,13 @@ void wxComboCtrlBase::ShowPopup() int showFlags = CanDeferShow; - if ( spaceBelow < szp.y ) + int anchorSideVertical = m_anchorSide & (wxUP | wxDOWN); + if (// Pop up as asked for by the library user. -+ (anchorSideVertical & wxUP) || ++ (anchorSideVertical & wxUP) || + // Automatic: Pop up if it does not fit down. + (anchorSideVertical == 0 && spaceBelow < szp.y )) { @@ -190,10 +193,10 @@ index b61aac35bf..d12b745e8c 100644 } diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp -index 1f5fd4d66b..14ea2f8ef1 100644 +index 0a1e43ad51..6c492aedab 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp -@@ -1322,7 +1322,11 @@ wxDataViewItem wxDataViewCtrlBase::GetSelection() const +@@ -1334,7 +1334,11 @@ wxDataViewItem wxDataViewCtrlBase::GetSelection() const wxDataViewItemArray selections; GetSelections(selections); @@ -207,28 +210,27 @@ index 1f5fd4d66b..14ea2f8ef1 100644 namespace diff --git a/src/common/dcbufcmn.cpp b/src/common/dcbufcmn.cpp -index 74958fce10..59844f4526 100644 +index 9b1c1f3159..ef5865ed4b 100644 --- a/src/common/dcbufcmn.cpp +++ b/src/common/dcbufcmn.cpp -@@ -82,9 +82,15 @@ private: +@@ -83,9 +83,15 @@ private: const double scale = dc ? dc->GetContentScaleFactor() : 1.0; wxBitmap* const buffer = new wxBitmap; +#if __WXMSW__ - // we must always return a valid bitmap but creating a bitmap of - // size 0 would fail, so create a 1*1 bitmap in this case -- buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale); ++ // we must always return a valid bitmap but creating a bitmap of ++ // size 0 would fail, so create a 1*1 bitmap in this case + buffer->Create(wxMax(w, 1), wxMax(h, 1), 24); +#else -+ // we must always return a valid bitmap but creating a bitmap of -+ // size 0 would fail, so create a 1*1 bitmap in this case -+ buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale); + // we must always return a valid bitmap but creating a bitmap of + // size 0 would fail, so create a 1*1 bitmap in this case + buffer->CreateWithDIPSize(wxMax(w, 1), wxMax(h, 1), scale); +#endif return buffer; } diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp -index 20442bbc73..9a24951ec7 100644 +index db8a01f961..162c1ce2dc 100644 --- a/src/common/gdicmn.cpp +++ b/src/common/gdicmn.cpp @@ -863,11 +863,25 @@ void wxDisplaySize(int *width, int *height) @@ -257,72 +259,57 @@ index 20442bbc73..9a24951ec7 100644 void wxClientDisplayRect(int *x, int *y, int *width, int *height) { const wxRect rect = wxGetClientDisplayRect(); -diff --git a/src/common/intl.cpp b/src/common/intl.cpp -index 0b0d8798f4..7072fab18a 100644 ---- a/src/common/intl.cpp -+++ b/src/common/intl.cpp -@@ -1628,6 +1628,12 @@ GetInfoFromLCID(LCID lcid, - { - str = buf; - -+//FIXME Vojtech: We forcefully set the locales for a decimal point to "C", but this -+// is not possible for the Win32 locales, therefore there is a discrepancy. -+// It looks like we live with the discrepancy for at least half a year, so we will -+// suppress the assert until we fix Slic3r to properly switch to "C" locales just -+// for file import / export. -+#if 0 - // As we get our decimal point separator from Win32 and not the - // CRT there is a possibility of mismatch between them and this - // can easily happen if the user code called setlocale() -@@ -1641,6 +1647,7 @@ GetInfoFromLCID(LCID lcid, - "Decimal separator mismatch -- did you use setlocale()?" - "If so, use wxLocale to change the locale instead." - ); -+#endif - } - break; - +diff --git a/src/common/image.cpp b/src/common/image.cpp +index 19fe34ec91..a449b60930 100644 +--- a/src/common/image.cpp ++++ b/src/common/image.cpp +@@ -390,11 +390,11 @@ wxImage wxImage::ShrinkBy( int xFactor , int yFactor ) const + unsigned char red = pixel[0] ; + unsigned char green = pixel[1] ; + unsigned char blue = pixel[2] ; +- unsigned char alpha = 255 ; +- if ( source_alpha ) +- alpha = *(source_alpha + y_offset + x * xFactor + x1) ; + if ( !hasMask || red != maskRed || green != maskGreen || blue != maskBlue ) + { ++ unsigned char alpha = 255 ; ++ if ( source_alpha ) ++ alpha = *(source_alpha + y_offset + x * xFactor + x1) ; + if ( alpha > 0 ) + { + avgRed += red ; diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp -index 41fd4524cf..f4a15cb839 100644 +index ed3d988994..d71cda122d 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp -@@ -3824,7 +3824,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event, wxGridRowLabelWindo +@@ -4068,7 +4068,8 @@ void wxGrid::ProcessRowColLabelMouseEvent( const wxGridOperations &oper, wxMouse + { + if ( m_cursorMode == oper.GetCursorModeResize() ) { - case WXGRID_CURSOR_RESIZE_ROW: - { -- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); -+ //BBS: add cursor mode for DoGridDragResize's paremeters -+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); - } - break; - -@@ -4166,7 +4167,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event, wxGridColLabelWindo - switch ( m_cursorMode ) +- DoGridDragResize(event.GetPosition(), oper, gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), oper, gridWindow, m_cursorMode); + } + else if ( m_cursorMode == oper.GetCursorModeSelect() && line >=0 ) { - case WXGRID_CURSOR_RESIZE_COL: -- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); -+ //BBS: add cursor mode for DoGridDragResize's paremeters -+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); - break; - - case WXGRID_CURSOR_SELECT_COL: -@@ -4708,11 +4710,13 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event, - return DoGridCellDrag(event, coords, isFirstDrag); +@@ -4691,12 +4692,14 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event, case WXGRID_CURSOR_RESIZE_ROW: -- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); -+ //BBS: add cursor mode for DoGridDragResize's paremeters -+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); + if ( m_dragRowOrCol != -1 ) +- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); break; case WXGRID_CURSOR_RESIZE_COL: -- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); -+ //BBS: add cursor mode for DoGridDragResize's paremeters -+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); + if ( m_dragRowOrCol != -1 ) +- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); ++ //BBS: add cursor mode for DoGridDragResize's paremeters ++ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); break; default: -@@ -4803,6 +4807,8 @@ wxGrid::DoGridCellLeftDown(wxMouseEvent& event, +@@ -4791,6 +4794,8 @@ wxGrid::DoGridCellLeftDown(wxMouseEvent& event, case wxGridSelectCells: case wxGridSelectRowsOrColumns: // nothing to do in these cases @@ -331,7 +318,7 @@ index 41fd4524cf..f4a15cb839 100644 break; case wxGridSelectRows: -@@ -5044,9 +5050,11 @@ void wxGrid::ProcessGridCellMouseEvent(wxMouseEvent& event, wxGridWindow *eventG +@@ -5049,9 +5054,11 @@ void wxGrid::ProcessGridCellMouseEvent(wxMouseEvent& event, wxGridWindow *eventG } } @@ -342,9 +329,9 @@ index 41fd4524cf..f4a15cb839 100644 + wxGridWindow* gridWindow, + CursorMode mode) { - // Get the logical position from the physical one we're passed. - const wxPoint -@@ -5056,10 +5064,28 @@ void wxGrid::DoGridDragResize(const wxPoint& position, + wxCHECK_RET( m_dragRowOrCol != -1, + "shouldn't be called when not drag resizing" ); +@@ -5064,10 +5071,28 @@ void wxGrid::DoGridDragResize(const wxPoint& position, // orthogonal direction. const int linePos = oper.Dual().Select(logicalPos); @@ -375,7 +362,7 @@ index 41fd4524cf..f4a15cb839 100644 // TODO: generate RESIZING event, see #10754, if the size has changed. } -@@ -5082,7 +5108,8 @@ wxPoint wxGrid::GetPositionForResizeEvent(int width) const +@@ -5090,7 +5115,8 @@ wxPoint wxGrid::GetPositionForResizeEvent(int width) const void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWindow) { @@ -383,9 +370,9 @@ index 41fd4524cf..f4a15cb839 100644 + //BBS: add cursor mode for DoGridDragResize's paremeters + DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW); - SendGridSizeEvent(wxEVT_GRID_ROW_SIZE, m_dragRowOrCol, -1, event); + SendGridSizeEvent(wxEVT_GRID_ROW_SIZE, m_dragRowOrCol, event); -@@ -5091,7 +5118,8 @@ void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWin +@@ -5099,7 +5125,8 @@ void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWin void wxGrid::DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow* gridWindow) { @@ -393,9 +380,9 @@ index 41fd4524cf..f4a15cb839 100644 + //BBS: add cursor mode for DoGridDragResize's paremeters + DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL); - SendGridSizeEvent(wxEVT_GRID_COL_SIZE, -1, m_dragRowOrCol, event); + SendGridSizeEvent(wxEVT_GRID_COL_SIZE, m_dragRowOrCol, event); -@@ -5105,9 +5133,10 @@ void wxGrid::DoHeaderStartDragResizeCol(int col) +@@ -5113,9 +5140,10 @@ void wxGrid::DoHeaderStartDragResizeCol(int col) void wxGrid::DoHeaderDragResizeCol(int width) { @@ -407,7 +394,7 @@ index 41fd4524cf..f4a15cb839 100644 } void wxGrid::DoHeaderEndDragResizeCol(int width) -@@ -5891,6 +5920,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event ) +@@ -6013,6 +6041,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event ) DisableCellEditControl(); MoveCursorDown( event.ShiftDown() ); @@ -419,7 +406,7 @@ index 41fd4524cf..f4a15cb839 100644 break; diff --git a/src/msw/bmpcbox.cpp b/src/msw/bmpcbox.cpp -index 0a2d167ad7..0aeba45ea9 100644 +index 011bd4f534..17e7f18740 100644 --- a/src/msw/bmpcbox.cpp +++ b/src/msw/bmpcbox.cpp @@ -156,13 +156,20 @@ void wxBitmapComboBox::RecreateControl() @@ -445,7 +432,7 @@ index 0a2d167ad7..0aeba45ea9 100644 for ( i = 0; i < numItems; i++ ) { diff --git a/src/msw/font.cpp b/src/msw/font.cpp -index 0bd240d79f..d38b1b00f5 100644 +index 434876939c..91d4603018 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -54,7 +54,7 @@ static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH; @@ -503,7 +490,7 @@ index 0bd240d79f..d38b1b00f5 100644 bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont) diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp -index 9bb397d472..30af7154a7 100644 +index 0bd017a36a..3b98bf1678 100644 --- a/src/msw/menuitem.cpp +++ b/src/msw/menuitem.cpp @@ -368,6 +368,8 @@ void MenuDrawData::Init(wxWindow const* window) @@ -516,10 +503,10 @@ index 9bb397d472..30af7154a7 100644 else #endif // wxUSE_UXTHEME diff --git a/src/msw/window.cpp b/src/msw/window.cpp -index eadc2f5700..f64fea4446 100644 +index c529a4fa3b..7e547c64df 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp -@@ -4773,33 +4773,49 @@ static wxSize GetWindowDPI(HWND hwnd) +@@ -4809,33 +4809,49 @@ static wxSize GetWindowDPI(HWND hwnd) } /*extern*/ @@ -588,18 +575,10 @@ index eadc2f5700..f64fea4446 100644 return ::GetSystemMetrics(nIndex); diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm -index 6ff0cc3088..4943f3ea38 100644 +index f188e61089..7b867002d1 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm -@@ -1734,12 +1734,22 @@ outlineView:(NSOutlineView*)outlineView - if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) ) - [super keyDown:event]; - } -- else -+ //FIXME Vojtech's hack to get the accelerators assigned to the wxDataViewControl working. -+ else if (! implementation->DoHandleKeyEvent(event)) - { - [super keyDown:event]; // all other keys +@@ -1604,6 +1604,15 @@ outlineView:(NSOutlineView*)outlineView } } @@ -615,7 +594,17 @@ index 6ff0cc3088..4943f3ea38 100644 // // contextual menus // -@@ -2672,12 +2682,22 @@ void wxCocoaDataViewControl::DoSetIndent(int indent) +@@ -2006,7 +2015,8 @@ void wxCocoaDataViewControl::keyEvent(WX_NSEvent event, WXWidget slf, void *_cmd + if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) ) + wxWidgetCocoaImpl::keyEvent(event, slf, _cmd); + } +- else ++ //FIXME Vojtech's hack to get the accelerators assigned to the wxDataViewControl working. ++ else if (! DoHandleKeyEvent(event)) + { + wxWidgetCocoaImpl::keyEvent(event, slf, _cmd); // all other keys + } +@@ -2540,12 +2550,22 @@ void wxCocoaDataViewControl::DoSetIndent(int indent) void wxCocoaDataViewControl::HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const { @@ -641,10 +630,10 @@ index 6ff0cc3088..4943f3ea38 100644 indexRow = [m_OutlineView rowAtPoint: nativePoint]; if ((indexColumn >= 0) && (indexRow >= 0)) diff --git a/src/osx/cocoa/settings.mm b/src/osx/cocoa/settings.mm -index de5f52860c..a9581174a4 100644 +index c819deeb0c..dc3c3b0b53 100644 --- a/src/osx/cocoa/settings.mm +++ b/src/osx/cocoa/settings.mm -@@ -224,7 +224,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) +@@ -222,7 +222,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) // ---------------------------------------------------------------------------- // Get a system metric, e.g. scrollbar size @@ -653,7 +642,7 @@ index de5f52860c..a9581174a4 100644 { int value; -@@ -259,11 +259,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUN +@@ -257,11 +257,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUN // TODO case wxSYS_WINDOWMIN_Y: case wxSYS_SCREEN_X: @@ -667,3 +656,28 @@ index de5f52860c..a9581174a4 100644 return value; // TODO case wxSYS_FRAMESIZE_X: +diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm +index 635ea286d4..42ae67e27a 100644 +--- a/src/osx/cocoa/window.mm ++++ b/src/osx/cocoa/window.mm +@@ -191,6 +191,9 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const + - (BOOL)isEnabled; + - (void)setEnabled:(BOOL)flag; + ++- (BOOL)clipsToBounds; ++- (void)setClipsToBounds:(BOOL)clipsToBounds; ++ + - (void)setImage:(NSImage *)image; + - (void)setControlSize:(NSControlSize)size; + +@@ -2559,6 +2562,7 @@ wxWidgetImpl( peer, flags ) + if ( m_osxView ) + CFRetain(m_osxView); + [m_osxView release]; ++ m_osxView.clipsToBounds = YES; + } + + +-- +2.42.0.windows.2 + diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 82c0f9f865..65aacfaad5 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,4 +1,5 @@ -set(_wx_git_tag v3.1.5) +set(_wx_git_tag v3.2.1) +set(_wx_patch_name 0001-patch-v3.2.1-for-OrcaSlicer.patch) set(_wx_toolkit "") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") @@ -17,13 +18,13 @@ else () endif () if (MSVC) - set(_patch_cmd if not exist WXWIDGETS_PATCHED ( "${GIT_EXECUTABLE}" apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch && type nul > WXWIDGETS_PATCHED ) ) + set(_patch_cmd if not exist WXWIDGETS_PATCHED ( "${GIT_EXECUTABLE}" apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name} && type nul > WXWIDGETS_PATCHED ) ) else () - set(_patch_cmd test -f WXWIDGETS_PATCHED || ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch && touch WXWIDGETS_PATCHED) + set(_patch_cmd test -f WXWIDGETS_PATCHED || ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name} && touch WXWIDGETS_PATCHED) endif () if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-wxWidget-fix.patch) + set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/${_wx_patch_name}) endif () orcaslicer_add_cmake_project( @@ -31,7 +32,7 @@ orcaslicer_add_cmake_project( GIT_REPOSITORY "https://github.com/wxWidgets/wxWidgets" GIT_TAG ${_wx_git_tag} PATCH_COMMAND ${_patch_cmd} - DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG + DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG dep_NanoSVG CMAKE_ARGS -DwxBUILD_PRECOMP=ON ${_wx_toolkit} @@ -47,7 +48,9 @@ orcaslicer_add_cmake_project( -DwxUSE_WEBVIEW=ON ${_wx_edge} -DwxUSE_WEBVIEW_IE=OFF - -DwxUSE_REGEX=builtin + -DwxUSE_NANOSVG=sys + -DwxUSE_NANOSVG_EXTERNAL=ON + -DwxUSE_REGEX=OFF -DwxUSE_LIBXPM=builtin -DwxUSE_LIBSDL=OFF -DwxUSE_XTEST=OFF diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 71f6fe1f5f..8c9ccc1309 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -94,7 +94,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/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 66b02add2f..4cdc9a15cc 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -4744,7 +4744,6 @@ int CLI::run(int argc, char **argv) } } - ThumbnailsParams thumbnail_params; GLShaderProgram* shader = opengl_mgr.get_shader("thumbnail"); if (!shader) { BOOST_LOG_TRIVIAL(error) << boost::format("can not get shader for rendering thumbnail"); diff --git a/src/nanosvg/README.txt b/src/nanosvg/README.txt deleted file mode 100644 index cd38634bec..0000000000 --- a/src/nanosvg/README.txt +++ /dev/null @@ -1 +0,0 @@ -Upstream source: https://github.com/fltk/nanosvg/archive/abcd277ea45e9098bed752cf9c6875b533c0892f.zip \ No newline at end of file diff --git a/src/nanosvg/nanosvg.h b/src/nanosvg/nanosvg.h deleted file mode 100644 index 1a1a20cb37..0000000000 --- a/src/nanosvg/nanosvg.h +++ /dev/null @@ -1,3106 +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_UNDEF = -1, - 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 { - signed 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]. - char fillGradient[64]; // Optional 'id' of fill gradient - char strokeGradient[64]; // Optional 'id' of stroke gradient - float xform[6]; // Root transformation for fill/stroke gradient - 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 - -#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 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]; - signed 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(void) -{ - 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) -{ - if (p->npts > 0) { - 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; - if (id == NULL || *id == '\0') - return NULL; - while (grad != NULL) { - 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, float *xform, signed char* paintType) -{ - NSVGgradientData* data = NULL; - NSVGgradientData* ref = NULL; - NSVGgradientStop* stops = NULL; - NSVGgradient* grad; - float ox, oy, sw, sh, sl; - int nstops = 0; - int refIter; - - data = nsvg__findGradientData(p, id); - if (data == NULL) return NULL; - - // TODO: use ref to fill in all unset values too. - ref = data; - refIter = 0; - while (ref != NULL) { - NSVGgradientData* nextRef = NULL; - if (stops == NULL && ref->stops != NULL) { - stops = ref->stops; - nstops = ref->nstops; - break; - } - nextRef = nsvg__findGradientData(p, ref->ref); - if (nextRef == ref) break; // prevent infite loops on malformed data - ref = nextRef; - refIter++; - if (refIter > 32) break; // prevent infite loops on malformed data - } - 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, 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); - memcpy(shape->fillGradient, attr->fillGradient, sizeof shape->fillGradient); - memcpy(shape->strokeGradient, attr->strokeGradient, sizeof shape->strokeGradient); - memcpy(shape->xform, attr->xform, sizeof shape->xform); - 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) { - shape->fill.type = NSVG_PAINT_UNDEF; - } - - // 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) { - shape->stroke.type = NSVG_PAINT_UNDEF; - } - - // 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]); - - // Expect 1 + N*3 points (N = number of cubic bezier segments). - if ((p->npts % 3) != 1) - return; - - 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; - double intPart = 0.0, fracPart = 0.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 -#ifdef _MSC_VER - intPart = (double)_strtoi64(cur, &end, 10); -#else - intPart = (double)strtoll(cur, &end, 10); -#endif - if (cur != end) { - res = intPart; - hasIntPart = 1; - cur = end; - } - } - - // Parse fractional part. - if (*cur == '.') { - cur++; // Skip '.' - if (nsvg__isdigit(*cur)) { - // Parse digit sequence -#ifdef _MSC_VER - fracPart = (double)_strtoi64(cur, &end, 10); -#else - fracPart = (double)strtoll(cur, &end, 10); -#endif - if (cur != end) { - res += 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') { - double expPart = 0.0; - cur++; // skip 'E' - expPart = (double)strtol(cur, &end, 10); // Parse digit sequence with sign - if (cur != end) { - res *= pow(10.0, 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') && (s[1] != 'm' && s[1] != 'x')) { - 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__getNextPathItemWhenArcFlag(const char* s, char* it) -{ - it[0] = '\0'; - while (*s && (nsvg__isspace(*s) || *s == ',')) s++; - if (!*s) return s; - if (*s == '0' || *s == '1') { - it[0] = *s++; - it[1] = '\0'; - return s; - } - 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 r=0, g=0, b=0; - if (sscanf(str, "#%2x%2x%2x", &r, &g, &b) == 3 ) // 2 digit hex - return NSVG_RGB(r, g, b); - if (sscanf(str, "#%1x%1x%1x", &r, &g, &b) == 3 ) // 1 digit hex, e.g. #abc -> 0xccbbaa - return NSVG_RGB(r*17, g*17, b*17); // same effect as (r<<4|r), (g<<4|g), .. - return NSVG_RGB(128, 128, 128); -} - -// Parse rgb color. The pointer 'str' must point at "rgb(" (4+ characters). -// This function returns gray (rgb(128, 128, 128) == '#808080') on parse errors -// for backwards compatibility. Note: other image viewers return black instead. - -static unsigned int nsvg__parseColorRGB(const char* str) -{ - int i; - unsigned int rgbi[3]; - float rgbf[3]; - // try decimal integers first - if (sscanf(str, "rgb(%u, %u, %u)", &rgbi[0], &rgbi[1], &rgbi[2]) != 3) { - // integers failed, try percent values (float, locale independent) - const char delimiter[3] = {',', ',', ')'}; - str += 4; // skip "rgb(" - for (i = 0; i < 3; i++) { - while (*str && (nsvg__isspace(*str))) str++; // skip leading spaces - if (*str == '+') str++; // skip '+' (don't allow '-') - if (!*str) break; - rgbf[i] = nsvg__atof(str); - - // Note 1: it would be great if nsvg__atof() returned how many - // bytes it consumed but it doesn't. We need to skip the number, - // the '%' character, spaces, and the delimiter ',' or ')'. - - // Note 2: The following code does not allow values like "33.%", - // i.e. a decimal point w/o fractional part, but this is consistent - // with other image viewers, e.g. firefox, chrome, eog, gimp. - - while (*str && nsvg__isdigit(*str)) str++; // skip integer part - if (*str == '.') { - str++; - if (!nsvg__isdigit(*str)) break; // error: no digit after '.' - while (*str && nsvg__isdigit(*str)) str++; // skip fractional part - } - if (*str == '%') str++; else break; - while (nsvg__isspace(*str)) str++; - if (*str == delimiter[i]) str++; - else break; - } - if (i == 3) { - rgbi[0] = roundf(rgbf[0] * 2.55f); - rgbi[1] = roundf(rgbf[1] * 2.55f); - rgbi[2] = roundf(rgbf[2] * 2.55f); - } else { - rgbi[0] = rgbi[1] = rgbi[2] = 128; - } - } - // clip values as the CSS spec requires - for (i = 0; i < 3; i++) { - if (rgbi[i] > 255) rgbi[i] = 255; - } - return NSVG_RGB(rgbi[0], rgbi[1], rgbi[2]); -} - -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 int nsvg__isCoordinate(const char* s) -{ - // optional sign - if (*s == '-' || *s == '+') - s++; - // must have at least one digit, or start by a dot - return (nsvg__isdigit(*s) || *s == '.'); -} - -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]; - int len; - nsvg__xformIdentity(xform); - while (*str) - { - if (strncmp(str, "matrix", 6) == 0) - len = nsvg__parseMatrix(t, str); - else if (strncmp(str, "translate", 9) == 0) - len = nsvg__parseTranslate(t, str); - else if (strncmp(str, "scale", 5) == 0) - len = nsvg__parseScale(t, str); - else if (strncmp(str, "rotate", 6) == 0) - len = nsvg__parseRotate(t, str); - else if (strncmp(str, "skewX", 5) == 0) - len = nsvg__parseSkewX(t, str); - else if (strncmp(str, "skewY", 5) == 0) - len = nsvg__parseSkewY(t, str); - else{ - ++str; - continue; - } - if (len != 0) { - str += len; - } 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 == '#') - str++; - while (i < 63 && *str && *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; - case 'z': - case 'Z': - return 0; - } - return -1; -} - -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; - // Fix for ticket #179: division by 0: avoid cotangens around 0 (infinite) - if ((hda < 1e-3f) && (hda > -1e-3f)) - hda *= 0.5f; - else - hda = (1.0f - cosf(hda)) / sinf(hda); - kappa = fabsf(4.0f / 3.0f * 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; - char initPoint; - 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; - initPoint = 0; - closedFlag = 0; - nargs = 0; - - while (*s) { - item[0] = '\0'; - if ((cmd == 'A' || cmd == 'a') && (nargs == 3 || nargs == 4)) - s = nsvg__getNextPathItemWhenArcFlag(s, item); - if (!*item) - s = nsvg__getNextPathItem(s, item); - if (!*item) break; - if (cmd != '\0' && nsvg__isCoordinate(item)) { - 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; - initPoint = 1; - 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]; - 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 (initPoint == 0) { - // Do not allow other commands until initial point has been set (moveTo called once). - cmd = '\0'; - } - 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; - } - rargs = nsvg__getArgsPerElement(cmd); - if (rargs == -1) { - // Command not recognized - cmd = '\0'; - rargs = 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, signed 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; - } -} - -static void nsvg__createGradients(NSVGparser* p) -{ - NSVGshape* shape; - - for (shape = p->image->shapes; shape != NULL; shape = shape->next) { - if (shape->fill.type == NSVG_PAINT_UNDEF) { - if (shape->fillGradient[0] != '\0') { - float inv[6], localBounds[4]; - nsvg__xformInverse(inv, shape->xform); - nsvg__getLocalBounds(localBounds, shape, inv); - shape->fill.gradient = nsvg__createGradient(p, shape->fillGradient, localBounds, shape->xform, &shape->fill.type); - } - if (shape->fill.type == NSVG_PAINT_UNDEF) { - shape->fill.type = NSVG_PAINT_NONE; - } - } - if (shape->stroke.type == NSVG_PAINT_UNDEF) { - if (shape->strokeGradient[0] != '\0') { - float inv[6], localBounds[4]; - nsvg__xformInverse(inv, shape->xform); - nsvg__getLocalBounds(localBounds, shape, inv); - shape->stroke.gradient = nsvg__createGradient(p, shape->strokeGradient, localBounds, shape->xform, &shape->stroke.type); - } - if (shape->stroke.type == NSVG_PAINT_UNDEF) { - shape->stroke.type = NSVG_PAINT_NONE; - } - } - } -} - -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); - - // Create gradients after all definitions have been parsed - nsvg__createGradients(p); - - // Scale to viewBox - nsvg__scaleToViewbox(p, units); - - ret = p->image; - p->image = NULL; - - nsvg__deleteParser(p); - - return ret; -} - -NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) -{ - FILE* fp = NULL; - size_t size; - char* data = NULL; - NSVGimage* image = NULL; - - fp = 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 // NANOSVG_IMPLEMENTATION - -#endif // NANOSVG_H diff --git a/src/nanosvg/nanosvgrast.h b/src/nanosvg/nanosvgrast.h deleted file mode 100644 index a83db27260..0000000000 --- a/src/nanosvg/nanosvgrast.h +++ /dev/null @@ -1,1482 +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/ - * - */ - -/* Modified by FLTK to support non-square X,Y axes scaling. - * - * Added: nsvgRasterizeXY() -*/ - - -#ifndef NANOSVGRAST_H -#define NANOSVGRAST_H - -#include "nanosvg.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); - - // For non-square X,Y scaling, use - nsvgRasterizeXY(rast, image, 0,0,1,1, img, w, h, w*4); -*/ - -// Allocated rasterizer context. -NSVGrasterizer* nsvgCreateRasterizer(void); - -// 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 (assumes square aspect ratio) -// 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); - -// As above, but allow X and Y axes to scale independently for non-square aspects -void nsvgRasterizeXY(NSVGrasterizer* r, - NSVGimage* image, float tx, float ty, - float sx, float sy, - unsigned char* dst, int w, int h, int stride); - -// Deletes rasterizer context. -void nsvgDeleteRasterizer(NSVGrasterizer*); - - -#ifndef NANOSVGRAST_CPLUSPLUS -#ifdef __cplusplus -} -#endif -#endif - -#ifdef NANOSVGRAST_IMPLEMENTATION - -#include -#include -#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 { - signed 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(void) -{ - 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 sx, float sy) -{ - 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]*sx, path->pts[1]*sy, 0); - for (i = 0; i < path->npts-1; i += 3) { - float* p = &path->pts[i*2]; - nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, 0); - } - // Close path - nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 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 sx, float sy) -{ - int i, j, closed; - NSVGpath* path; - NSVGpoint* p0, *p1; - float miterLimit = shape->miterLimit; - int lineJoin = shape->strokeLineJoin; - int lineCap = shape->strokeLineCap; - const float sw = (sx + sy) / 2; // average scaling factor - const float lineWidth = shape->strokeWidth * sw; // FIXME (?) - - for (path = shape->paths; path != NULL; path = path->next) { - // Flatten path - r->npoints = 0; - nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, NSVG_PT_CORNER); - for (i = 0; i < path->npts-1; i += 3) { - float* p = &path->pts[i*2]; - nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 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) * sw; - - 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] * sw; - // 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 ((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16) | ((unsigned int)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 sx, float sy, 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) / sx; - fy = ((float)y - ty) / sy; - dx = 1.0f / sx; - - 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) / sx; - fy = ((float)y - ty) / sy; - dx = 1.0f / sx; - - 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 sx, float sy, 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, sx, sy, 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 nsvgRasterizeXY(NSVGrasterizer* r, - NSVGimage* image, float tx, float ty, - float sx, float sy, - 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, sx, sy); - - // 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 - if (r->nedges != 0) - 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, sx, sy, &cache, shape->fillRule); - } - if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * sx) > 0.01f) { - nsvg__resetPool(r); - r->freelist = NULL; - r->nedges = 0; - - nsvg__flattenShapeStroke(r, shape, sx, sy); - -// 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 - if (r->nedges != 0) - 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,sx, sy, &cache, NSVG_FILLRULE_NONZERO); - } - } - - nsvg__unpremultiplyAlpha(dst, w, h, stride); - - r->bitmap = NULL; - r->width = 0; - r->height = 0; - r->stride = 0; -} - -void nsvgRasterize(NSVGrasterizer* r, - NSVGimage* image, float tx, float ty, float scale, - unsigned char* dst, int w, int h, int stride) -{ - nsvgRasterizeXY(r,image, tx, ty, scale, scale, dst, w, h, stride); -} - -#endif // NANOSVGRAST_IMPLEMENTATION - -#endif // NANOSVGRAST_H diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 71a4334ab9..8b40dc1e47 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -496,6 +496,8 @@ set(SLIC3R_GUI_SOURCES Utils/CalibUtils.hpp ) +find_package(NanoSVG REQUIRED) + if (WIN32) list(APPEND SLIC3R_GUI_SOURCES GUI/dark_mode/dark_mode.hpp @@ -543,7 +545,7 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SLIC3R_GUI_SOURCES}) encoding_check(libslic3r_gui) -target_link_libraries(libslic3r_gui libslic3r cereal::cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi ${wxWidgets_LIBRARIES} glfw libcurl OpenSSL::SSL OpenSSL::Crypto) +target_link_libraries(libslic3r_gui libslic3r cereal::cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi ${wxWidgets_LIBRARIES} glfw libcurl OpenSSL::SSL OpenSSL::Crypto NanoSVG::nanosvg NanoSVG::nanosvgrast) #target_link_libraries(libslic3r_gui libslic3r cereal imgui minilzo GLEW::GLEW OpenGL::GL hidapi libcurl OpenSSL::SSL OpenSSL::Crypto ${wxWidgets_LIBRARIES} glfw) if (MSVC) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 6e89a04d46..9fa8383d18 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -1084,7 +1084,7 @@ void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect) m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); //m_clr_picker->msw_rescale(); - degree->msw_rescale(); + degree->sys_color_changed(); bitmap_max_degree->SetBitmap(degree->bmp()); bitmap_min_degree->SetBitmap(degree->bmp()); m_button_reset->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index e8f21416af..de4aca579c 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -19,7 +19,7 @@ AboutDialogLogo::AboutDialogLogo(wxWindow* parent) { this->SetBackgroundColour(*wxWHITE); this->logo = ScalableBitmap(this, Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG); - this->SetMinSize(this->logo.GetBmpSize()); + this->SetMinSize(this->logo.GetSize()); this->Bind(wxEVT_PAINT, &AboutDialogLogo::onRepaint, this); } @@ -30,9 +30,9 @@ void AboutDialogLogo::onRepaint(wxEvent &event) dc.SetBackgroundMode(wxTRANSPARENT); wxSize size = this->GetSize(); - int logo_w = this->logo.GetBmpWidth(); - int logo_h = this->logo.GetBmpHeight(); - dc.DrawBitmap(this->logo.bmp(), (size.GetWidth() - logo_w)/2, (size.GetHeight() - logo_h)/2, true); + int logo_w = this->logo.GetWidth(); + int logo_h = this->logo.GetHeight(); + dc.DrawBitmap(this->logo.get_bitmap(), (size.GetWidth() - logo_w)/2, (size.GetHeight() - logo_h)/2, true); event.Skip(); } @@ -380,7 +380,7 @@ AboutDialog::AboutDialog() void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) { - m_logo_bitmap.msw_rescale(); + m_logo_bitmap.sys_color_changed(); m_logo->SetBitmap(m_logo_bitmap.bmp()); const wxFont& font = GetFont(); diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 1c4c186816..900316609c 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -187,7 +187,7 @@ void MaterialItem::doRender(wxDC &dc) auto acolor = m_ams_coloul; if (mcolor.Alpha() == 0 || acolor.Alpha() == 0) { - dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(1), FromDIP(1)); + dc.DrawBitmap(m_transparent_mitem.get_bitmap(), FromDIP(1), FromDIP(1)); } if (!IsEnabled()) { @@ -247,10 +247,10 @@ void MaterialItem::doRender(wxDC &dc) //arrow if ( (acolor.Red() > 160 && acolor.Green() > 160 && acolor.Blue() > 160) && (acolor.Red() < 180 && acolor.Green() < 180 && acolor.Blue() < 180)) { - dc.DrawBitmap(m_arraw_bitmap_white.bmp(), GetSize().x - m_arraw_bitmap_white.GetBmpSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_white.GetBmpSize().y); + dc.DrawBitmap(m_arraw_bitmap_white.get_bitmap(), GetSize().x - m_arraw_bitmap_white.GetSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_white.GetSize().y); } else { - dc.DrawBitmap(m_arraw_bitmap_gray.bmp(), GetSize().x - m_arraw_bitmap_gray.GetBmpSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_gray.GetBmpSize().y); + dc.DrawBitmap(m_arraw_bitmap_gray.get_bitmap(), GetSize().x - m_arraw_bitmap_gray.GetSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_gray.GetSize().y); } @@ -677,7 +677,7 @@ void MappingItem::doRender(wxDC &dc) dc.SetBrush(wxBrush(m_coloul)); if (m_coloul.Alpha() == 0) { - dc.DrawBitmap( m_transparent_mapping_item.bmp(), 0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2); + dc.DrawBitmap( m_transparent_mapping_item.get_bitmap(), 0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2); } else { dc.DrawRectangle(0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2, MAPPING_ITEM_REAL_SIZE.x, MAPPING_ITEM_REAL_SIZE.y); @@ -1340,7 +1340,7 @@ void AmsReplaceMaterialDialog::update_machine_obj(MachineObject* obj) } else { label_txt->SetLabelText(_L("If there are two identical filaments in AMS, AMS filament backup will be enabled. \n(Currently supporting automatic supply of consumables with the same brand, material type, and color)")); - } + } label_txt->SetMinSize(wxSize(FromDIP(380), -1)); label_txt->SetMaxSize(wxSize(FromDIP(380), -1)); @@ -1494,7 +1494,7 @@ void AmsRMGroup::doRender(wxDC& dc) float startAngle = 0.0; float endAngle = 0.0; - dc.DrawBitmap(bitmap_bg.bmp(), wxPoint((size.x - bitmap_bg.GetBmpSize().x) / 2, (size.y - bitmap_bg.GetBmpSize().y) / 2)); + dc.DrawBitmap(bitmap_bg.get_bitmap(), wxPoint((size.x - bitmap_bg.GetSize().x) / 2, (size.y - bitmap_bg.GetSize().y) / 2)); for (auto iter = m_group_info.rbegin(); iter != m_group_info.rend(); ++iter) { std::string tray_name = iter->first; @@ -1575,7 +1575,7 @@ void AmsRMGroup::doRender(wxDC& dc) dc.DrawEllipticArc(x - center_mask_radius, y - center_mask_radius, center_mask_radius * 2, center_mask_radius * 2, 0, 360); //draw center icon - dc.DrawBitmap(bitmap_backup_tips_0.bmp(), wxPoint((size.x - bitmap_backup_tips_0.GetBmpSize().x) / 2, (size.y - bitmap_backup_tips_0.GetBmpSize().y) / 2)); + dc.DrawBitmap(bitmap_backup_tips_0.get_bitmap(), wxPoint((size.x - bitmap_backup_tips_0.GetSize().x) / 2, (size.y - bitmap_backup_tips_0.GetSize().y) / 2)); //dc.DrawBitmap(bitmap_backup_tips_1.bmp(), wxPoint((size.x - bitmap_backup_tips_1.GetBmpSize().x) / 2, (size.y - bitmap_backup_tips_1.GetBmpSize().y) / 2)); //draw material diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index c3554bfe5f..2049fa88de 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -226,7 +226,7 @@ void AuFile::PaintBackground(wxDC &dc) dc.SetPen(AUFILE_GREY200); dc.SetBrush(AUFILE_GREY200); dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); - dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); + dc.DrawBitmap(m_file_bitmap.get_bitmap(), (size.x - m_file_bitmap.GetWidth()) / 2, (size.y - m_file_bitmap.GetHeight()) / 2); } } @@ -257,7 +257,7 @@ void AuFile::PaintForeground(wxDC &dc) } if (m_type == MODEL_PICTURE) { - dc.DrawBitmap(m_file_edit_mask.bmp(), 0, size.y - m_file_edit_mask.GetBmpSize().y); + dc.DrawBitmap(m_file_edit_mask.get_bitmap(), 0, size.y - m_file_edit_mask.GetSize().y); } @@ -268,14 +268,14 @@ void AuFile::PaintForeground(wxDC &dc) auto sizet = dc.GetTextExtent(cover_text_left); auto pos = wxPoint(0, 0); pos.x = (size.x / 2 - sizet.x) / 2; - pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); + pos.y = (size.y - (m_file_edit_mask.GetSize().y + sizet.y) / 2); dc.DrawText(cover_text_left, pos); // right text sizet = dc.GetTextExtent(cover_text_right); pos = wxPoint(0, 0); pos.x = size.x / 2 + (size.x / 2 - sizet.x) / 2; - pos.y = (size.y - (m_file_edit_mask.GetBmpSize().y + sizet.y) / 2); + pos.y = (size.y - (m_file_edit_mask.GetSize().y + sizet.y) / 2); dc.DrawText(cover_text_right, pos); // Split @@ -283,7 +283,7 @@ void AuFile::PaintForeground(wxDC &dc) dc.SetBrush(*wxWHITE); pos = wxPoint(0, 0); pos.x = size.x / 2 - 1; - pos.y = size.y - FromDIP(24) - (m_file_edit_mask.GetBmpSize().y - FromDIP(24)) / 2; + pos.y = size.y - FromDIP(24) - (m_file_edit_mask.GetSize().y - FromDIP(24)) / 2; dc.DrawRectangle(pos.x, pos.y, 2, FromDIP(24)); } else { // right text @@ -297,7 +297,7 @@ void AuFile::PaintForeground(wxDC &dc) if (m_cover) { dc.SetTextForeground(*wxWHITE); - dc.DrawBitmap(m_file_cover.bmp(), size.x - m_file_cover.GetBmpSize().x, 0); + dc.DrawBitmap(m_file_cover.get_bitmap(), size.x - m_file_cover.GetSize().x, 0); dc.SetFont(Label::Body_12); auto sizet = dc.GetTextExtent(cover_text_cover); auto pos = wxPoint(0, 0); @@ -306,7 +306,7 @@ void AuFile::PaintForeground(wxDC &dc) dc.DrawText(cover_text_cover, pos); } - if (m_hover) { dc.DrawBitmap(m_file_delete.bmp(), size.x - m_file_delete.GetBmpSize().x - FromDIP(10), FromDIP(10)); } + if (m_hover) { dc.DrawBitmap(m_file_delete.get_bitmap(), size.x - m_file_delete.GetSize().x - FromDIP(10), FromDIP(10)); } } void AuFile::on_mouse_enter(wxMouseEvent &evt) @@ -421,7 +421,7 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) auto pos = evt.GetPosition(); // set cover - auto mask_size = wxSize(GetSize().x, m_file_edit_mask.GetBmpSize().y); + auto mask_size = wxSize(GetSize().x, m_file_edit_mask.GetSize().y); auto cover_left = 0; auto cover_top = size.y - mask_size.y; auto cover_right = mask_size.x / 2; @@ -443,10 +443,10 @@ void AuFile::on_mouse_left_up(wxMouseEvent &evt) if (pos.x > rename_left && pos.x < rename_right && pos.y > rename_top && pos.y < rename_bottom) { on_set_rename(); return; } // close - auto close_left = size.x - m_file_delete.GetBmpSize().x - FromDIP(10); + auto close_left = size.x - m_file_delete.GetSize().x - FromDIP(10); auto close_top = FromDIP(10); auto close_right = size.x - FromDIP(10); - auto close_bottom = m_file_delete.GetBmpSize().y + FromDIP(10); + auto close_bottom = m_file_delete.GetSize().y + FromDIP(10); if (pos.x > close_left && pos.x < close_right && pos.y > close_top && pos.y < close_bottom) { on_set_delete(); return; } exit_rename_mode(); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 386dfea00f..3fa7ffe748 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -93,9 +93,7 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i int bmpX = 0, bmpY = 0; int textX = 0, textY = 0; - const wxBitmap& bmp = item.GetState() & wxAUI_BUTTON_STATE_DISABLED - ? item.GetDisabledBitmap() - : item.GetBitmap(); + const wxBitmap &bmp = item.GetCurrentBitmapFor(wnd); const wxSize bmpSize = bmp.IsOk() ? bmp.GetScaledSize() : wxSize(0, 0); diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 080a0f7db6..9eab03ddf9 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -13,10 +13,8 @@ #include #endif /* __WXGTK2__ */ -#define NANOSVG_IMPLEMENTATION -#include "nanosvg/nanosvg.h" -#define NANOSVGRAST_IMPLEMENTATION -#include "nanosvg/nanosvgrast.h" +#include +#include namespace Slic3r { namespace GUI { @@ -60,7 +58,168 @@ 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}; +#ifndef __linux__ + +#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 + +#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->GetDefaultSize(); +#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->GetDefaultSize()); + 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.GetScaledWidth(); + } + + 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); + // we should "move" with step equal to non-scaled width +#ifdef __APPLE__ + 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 +235,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 { @@ -105,110 +264,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); @@ -305,7 +360,102 @@ error: return NULL; } -wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_width, unsigned target_height, +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)) + + (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 + //Orca: use replaces from load_svg function + std::map replaces; + replaces["\"#0x00AE42\""] = "\"#009688\""; + replaces["\"#00FF00\""] = "\"#52c7b8\""; + if (dark_mode) { + replaces["\"#262E30\""] = "\"#EFEFF0\""; + replaces["\"#323A3D\""] = "\"#B3B3B5\""; + replaces["\"#808080\""] = "\"#818183\""; + replaces["\"#CECECE\""] = "\"#54545B\""; + replaces["\"#6B6B6B\""] = "\"#818182\""; + replaces["\"#909090\""] = "\"#FFFFFF\""; + replaces["\"#00FF00\""] = "\"#FF0000\""; + replaces["\"#009688\""] = "\"#00675b\""; + } + + 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 /*= ""*/, const float scale_in_center/* = 0*/) { std::string bitmap_key = bitmap_name + ( target_height !=0 ? @@ -322,7 +472,7 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ // map of color replaces std::map replaces; -replaces["\"#0x00AE42\""] = "\"#009688\""; + replaces["\"#0x00AE42\""] = "\"#009688\""; replaces["\"#00FF00\""] = "\"#52c7b8\""; if (dark_mode) { replaces["\"#262E30\""] = "\"#EFEFF0\""; @@ -333,7 +483,7 @@ replaces["\"#0x00AE42\""] = "\"#009688\""; replaces["\"#6B6B6B\""] = "\"#818182\""; replaces["\"#909090\""] = "\"#FFFFFF\""; replaces["\"#00FF00\""] = "\"#FF0000\""; -replaces["\"#009688\""] = "\"#00675b\""; + replaces["\"#009688\""] = "\"#00675b\""; } //if (!new_color.empty()) // replaces["\"#ED6B21\""] = "\"" + new_color + "\""; @@ -386,9 +536,9 @@ replaces["\"#009688\""] = "\"#00675b\""; 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; @@ -430,6 +580,89 @@ 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 + size_t disp_cnt = wxDisplay::GetCount(); + for (size_t disp = 0; disp < disp_cnt; ++disp) + scales.emplace(wxDisplay(disp).GetScaleFactor()); +#endif + +#endif // !__linux__ + + 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" : 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; +} bool BitmapCache::parse_color(const std::string& scolor, unsigned char* rgb_out) { diff --git a/src/slic3r/GUI/BitmapCache.hpp b/src/slic3r/GUI/BitmapCache.hpp index ab9e457240..54062777b4 100644 --- a/src/slic3r/GUI/BitmapCache.hpp +++ b/src/slic3r/GUI/BitmapCache.hpp @@ -12,7 +12,8 @@ #include "libslic3r/Color.hpp" struct NSVGimage; -namespace Slic3r { namespace GUI { +namespace Slic3r { +namespace GUI { class BitmapCache { @@ -22,15 +23,23 @@ 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); - 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(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); // BBS: support resize by fill border (scale_in_center) @@ -41,19 +50,28 @@ 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 = "", const float scale_in_center = 0.f); - 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 unsigned char rgb[3], bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb[0], rgb[1], rgb[2], wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } - 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 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 unsigned char rgb[3], bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb[0], rgb[1], rgb[2], wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } +// 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); } static bool parse_color(const std::string& scolor, unsigned char* rgb_out); static bool parse_color4(const std::string& scolor, unsigned char* rgba_out); 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 36c15343d3..24a971eb88 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,18 +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)); - { - // 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; } diff --git a/src/slic3r/GUI/BitmapComboBox.hpp b/src/slic3r/GUI/BitmapComboBox.hpp index a77bf401d6..545213fc3c 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/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 88e107da84..465fc95e6f 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -102,9 +102,9 @@ void MObjectPanel::doRender(wxDC& dc) if (m_state == PrinterState::IN_LAN) { dwbitmap = m_printer_in_lan; } // dc.DrawCircle(left, size.y / 2, 3); - dc.DrawBitmap(dwbitmap.bmp(), wxPoint(left, (size.y - dwbitmap.GetBmpSize().y) / 2)); + dc.DrawBitmap(dwbitmap.get_bitmap(), wxPoint(left, (size.y - dwbitmap.GetSize().y) / 2)); - left += dwbitmap.GetBmpSize().x + 8; + left += dwbitmap.GetSize().x + 8; dc.SetFont(Label::Body_13); dc.SetBackgroundMode(wxTRANSPARENT); dc.SetTextForeground(StateColor::darkModeColorFor(SELECT_MACHINE_GREY900)); diff --git a/src/slic3r/GUI/CalibrationWizardPage.cpp b/src/slic3r/GUI/CalibrationWizardPage.cpp index f3ff77313b..648ce0871c 100644 --- a/src/slic3r/GUI/CalibrationWizardPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPage.cpp @@ -371,7 +371,7 @@ CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode, auto top_sizer = new wxBoxSizer(wxVERTICAL); auto caption_sizer = new wxBoxSizer(wxHORIZONTAL); m_prev_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_prev", - wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 30); + wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30); m_prev_btn->SetBackgroundColour(*wxWHITE); caption_sizer->Add(m_prev_btn, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10)); @@ -382,7 +382,7 @@ CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode, caption_sizer->Add(title_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10)); m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", - wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 30); + wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30); m_help_btn->Hide(); m_help_btn->SetBackgroundColour(*wxWHITE); caption_sizer->Add(m_help_btn, 0, wxALIGN_CENTER); @@ -472,12 +472,12 @@ void CaliPageCaption::show_help_icon(bool show) void CaliPageCaption::on_sys_color_changed() { - m_prev_btn->msw_rescale(); + m_prev_btn->sys_color_changed(); } void CaliPageCaption::msw_rescale() { - m_prev_btn->msw_rescale(); + m_prev_btn->sys_color_changed(); } CaliPageStepGuide::CaliPageStepGuide(wxWindow* parent, wxArrayString steps, @@ -593,7 +593,7 @@ PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID wxBoxSizer* help_text_sizer = new wxBoxSizer(wxHORIZONTAL); auto help_text = new Label(this, _L("You could change the Flow Dynamics Calibration Factor in material editing")); help_text->SetFont(Label::Body_14); - m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 24); + m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 24); m_help_btn->SetBackgroundColour(m_help_btn->GetParent()->GetBackgroundColour()); help_text_sizer->Add(help_text, 0, wxALIGN_CENTER | wxLEFT, left_align_padding); help_text_sizer->Add(m_help_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(8)); @@ -611,8 +611,8 @@ PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID void PAPageHelpPanel::msw_rescale() { - m_help_btn->msw_rescale(); - m_bmp.msw_rescale(); + m_help_btn->sys_color_changed(); + m_bmp.sys_color_changed(); m_img->SetBitmap(m_bmp.bmp()); } diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 9e72a211ae..bf60b50aa3 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -448,7 +448,7 @@ CalibrationPresetPage::CalibrationPresetPage( void CalibrationPresetPage::msw_rescale() { CalibrationWizardPage::msw_rescale(); - m_ams_sync_button->msw_rescale(); + m_ams_sync_button->sys_color_changed(); m_virtual_tray_comboBox->msw_rescale(); for (auto& comboBox : m_filament_comboBox_list) { comboBox->msw_rescale(); @@ -458,7 +458,7 @@ void CalibrationPresetPage::msw_rescale() void CalibrationPresetPage::on_sys_color_changed() { CalibrationWizardPage::on_sys_color_changed(); - m_ams_sync_button->msw_rescale(); + m_ams_sync_button->sys_color_changed(); } void CalibrationPresetPage::create_selection_panel(wxWindow* parent) @@ -507,7 +507,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent) filament_for_text->SetFont(Label::Head_14); filament_for_title_sizer->Add(filament_for_text, 0, wxALIGN_CENTER); filament_for_title_sizer->AddSpacer(FromDIP(25)); - m_ams_sync_button = new ScalableButton(parent, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 18); + m_ams_sync_button = new ScalableButton(parent, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 18); m_ams_sync_button->SetBackgroundColour(*wxWHITE); m_ams_sync_button->SetToolTip(_L("Synchronize filament list from AMS")); filament_for_title_sizer->Add(m_ams_sync_button, 0, wxALIGN_CENTER); diff --git a/src/slic3r/GUI/CameraPopup.cpp b/src/slic3r/GUI/CameraPopup.cpp index e7b5cf68dd..be63c1706a 100644 --- a/src/slic3r/GUI/CameraPopup.cpp +++ b/src/slic3r/GUI/CameraPopup.cpp @@ -470,8 +470,8 @@ CameraItem::CameraItem(wxWindow *parent, std::string normal, std::string hover) CameraItem::~CameraItem() {} void CameraItem::msw_rescale() { - m_bitmap_normal.msw_rescale(); - m_bitmap_hover.msw_rescale(); + m_bitmap_normal.sys_color_changed(); + m_bitmap_hover.sys_color_changed(); } void CameraItem::on_enter_win(wxMouseEvent &evt) @@ -519,9 +519,9 @@ void CameraItem::render(wxDC &dc) void CameraItem::doRender(wxDC &dc) { if (m_hover) { - dc.DrawBitmap(m_bitmap_hover.bmp(), wxPoint((GetSize().x - m_bitmap_hover.GetBmpSize().x) / 2, (GetSize().y - m_bitmap_hover.GetBmpSize().y) / 2)); + dc.DrawBitmap(m_bitmap_hover.get_bitmap(), wxPoint((GetSize().x - m_bitmap_hover.GetSize().x) / 2, (GetSize().y - m_bitmap_hover.GetSize().y) / 2)); } else { - dc.DrawBitmap(m_bitmap_normal.bmp(), wxPoint((GetSize().x - m_bitmap_normal.GetBmpSize().x) / 2, (GetSize().y - m_bitmap_normal.GetBmpSize().y) / 2)); + dc.DrawBitmap(m_bitmap_normal.get_bitmap(), wxPoint((GetSize().x - m_bitmap_normal.GetSize().x) / 2, (GetSize().y - m_bitmap_normal.GetSize().y) / 2)); } } diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index a34a7cd46e..f59530ed0d 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -1499,7 +1499,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; @@ -1626,8 +1626,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(); @@ -1640,10 +1640,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); @@ -1655,9 +1655,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) { @@ -1689,12 +1689,12 @@ void ConfigWizardIndex::msw_rescale() em_w = size.x; em_h = size.y; - bg.msw_rescale(); - SetMinSize(bg.bmp().GetSize()); + bg.sys_color_changed(); + SetMinSize(bg.GetSize()); - bullet_black.msw_rescale(); - bullet_blue.msw_rescale(); - bullet_white.msw_rescale(); + bullet_black.sys_color_changed(); + bullet_blue.sys_color_changed(); + bullet_white.sys_color_changed(); Refresh(); } diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 364d378b42..4b0a86703f 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -510,7 +510,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/DragCanvas.cpp b/src/slic3r/GUI/DragCanvas.cpp index 38a827dca8..60e1da3bcd 100644 --- a/src/slic3r/GUI/DragCanvas.cpp +++ b/src/slic3r/GUI/DragCanvas.cpp @@ -46,8 +46,8 @@ void DragCanvas::set_shape_list(const std::vector& colors, const st m_dragshape_list.clear(); for (int i = 0; i < order.size(); i++) { - wxBitmap* bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE); - DragShape* shape = new DragShape(*bmp, order[i]); + wxBitmap bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE)->GetBitmapFor(m_parent); + DragShape* shape = new DragShape(bmp, order[i]); m_dragshape_list.push_back(shape); } diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 068a463246..5c74a5e0ad 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; } @@ -270,11 +275,12 @@ 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 @@ -305,7 +311,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/ExtraRenderers.hpp b/src/slic3r/GUI/ExtraRenderers.hpp index ef16ddece9..b778df4c49 100644 --- a/src/slic3r/GUI/ExtraRenderers.hpp +++ b/src/slic3r/GUI/ExtraRenderers.hpp @@ -54,7 +54,7 @@ private: DECLARE_VARIANT_OBJECT(DataViewBitmapText) // ---------------------------------------------------------------------------- -// BitmapTextRenderer +// BitmapTextRenderer - an editable text box within a DataView item // ---------------------------------------------------------------------------- #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING class BitmapTextRenderer : public wxDataViewRenderer @@ -126,7 +126,7 @@ private: // ---------------------------------------------------------------------------- -// BitmapChoiceRenderer +// BitmapChoiceRenderer - Creates an editable ComboBox within a DataView item // ---------------------------------------------------------------------------- class BitmapChoiceRenderer : public wxDataViewCustomRenderer diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 235ba99509..7939bb9acd 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1127,7 +1127,7 @@ void Choice::BUILD() auto icon_name = "param_" + m_opt.enum_values[i]; if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { ScalableBitmap bm(temp, icon_name, 24); - temp->Append(_(el), bm.bmp()); + temp->Append(_(el), bm.get_bitmap()); } else { temp->Append(_(el)); } @@ -1529,7 +1529,7 @@ void Choice::msw_rescale() auto icon_name = "param_" + m_opt.enum_values[i]; if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { ScalableBitmap bm(window, icon_name, 24); - temp->SetItemBitmap(i, bm.bmp()); + temp->SetItemBitmap(i, bm.get_bitmap()); } ++i; } diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index dba3523491..c1137487e1 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -28,8 +28,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" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 8485bfdb88..09789f9910 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -369,7 +369,7 @@ public: // 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); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index ac95f30129..f083a7e481 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -261,14 +261,13 @@ std::map SettingsFactory::CATEGORY_ICON = // BBS: remove SLA categories }; -wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp) +wxBitmapBundle* SettingsFactory::get_category_bitmap(const std::string& category_name) { if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) - return wxNullBitmap; - return create_scaled_bitmap(CATEGORY_ICON.at(category_name)); + return get_bmp_bundle("empty"); + return get_bmp_bundle(CATEGORY_ICON.at(category_name)); } - //------------------------------------- // MenuFactory //------------------------------------- @@ -425,13 +424,14 @@ static void create_freq_settings_popupmenu(wxMenu* menu, const bool is_object_se } } -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){ if(!item.second.empty()){ - volume_bmps.push_back(create_scaled_bitmap(item.second)); + //volume_bmps.push_back(create_menu_bitmap(item.second)); + volume_bmps.push_back(get_bmp_bundle(item.second)); } } return volume_bmps; @@ -619,7 +619,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_scaled_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 +768,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) if (sels.IsEmpty()) 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]; @@ -789,7 +789,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu) if (icon_idx >= 0 && icon_idx < icons.size()) { append_menu_item( - extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, *icons[icon_idx], menu, + extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, icons[icon_idx], menu, [is_active_extruder]() { return !is_active_extruder; }, m_parent); } else { append_menu_item( @@ -1593,7 +1593,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) return; } - std::vector icons = get_extruder_color_icons(true); + std::vector icons = get_extruder_color_icons(true); if (icons.size() < filaments_cnt) { BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: icons size %1%, filaments_cnt=%2%")%icons.size()%filaments_cnt; if (icons.size() <= 1) @@ -1633,8 +1633,9 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) const wxString& item_name = (i == 0 ? _L("Default") : wxString::Format(_L("Filament %d"), i)) + (is_active_extruder ? " (" + _L("current") + ")" : ""); + //OcraftyoneTODO: determine if nullptr in place of icon causes issues append_menu_item(extruder_selection_menu, wxID_ANY, item_name, "", - [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? wxNullBitmap : *icons[i - 1], menu, + [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? nullptr : icons[i - 1], menu, [is_active_extruder]() { return !is_active_extruder; }, m_parent); } menu->Append(wxID_ANY, name, extruder_selection_menu, _L("Change Filament")); @@ -1752,12 +1753,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 @@ -1787,7 +1782,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()) @@ -1802,14 +1797,17 @@ void MenuFactory::sys_color_changed(wxMenuBar* menubar) #if 0 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 } - menubar->Refresh(); +// menubar->Refresh(); +#endif #endif } diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index 92a816538f..8f4c9d6d0d 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -36,7 +36,7 @@ struct SettingsFactory static std::map> OBJECT_CATEGORY_SETTINGS; static std::map> PART_CATEGORY_SETTINGS; - 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, bool is_layer_settings = false); static std::vector get_options(bool is_part); //BBS: add api to get options for catogary @@ -48,7 +48,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; @@ -57,7 +57,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 76dd268633..cd1ff8ca28 100644 --- a/src/slic3r/GUI/GUI_ObjectLayers.cpp +++ b/src/slic3r/GUI/GUI_ObjectLayers.cpp @@ -248,47 +248,14 @@ void ObjectLayers::UpdateAndShow(const bool show) void ObjectLayers::msw_rescale() { - m_bmp_delete.msw_rescale(); - m_bmp_add.msw_rescale(); - - 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(); - } - - 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(); - } - } - } - } + //Orca: deleted what PS commented out 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(); @@ -300,7 +267,7 @@ void ObjectLayers::sys_color_changed() if (b_item && 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 4677536bd3..7e088b435d 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1359,12 +1359,11 @@ void ObjectList::extruder_editing() if (!item || !(m_objects_model->GetItemType(item) & (itVolume | itObject))) return; - const int column_width = GetColumn(colFilament)->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(colFilament)); + wxPoint pos = rect.GetPosition(); + pos.y -= 4; + wxSize size = rect.GetSize(); + size.SetWidth(size.GetWidth() + 8); apply_extruder_selector(&m_extruder_editor, this, "1", pos, size); @@ -3196,6 +3195,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; +} + bool ObjectList::can_mesh_boolean() const { int obj_idx = get_selected_obj_idx(); @@ -5505,17 +5519,17 @@ void ObjectList::msw_rescale() GetColumn(colSinking)->SetWidth(3 * em); GetColumn(colEditing )->SetWidth( 3 * em); - // rescale/update existing items with bitmaps - m_objects_model->Rescale(); - Layout(); } void ObjectList::sys_color_changed() { wxGetApp().UpdateDVCDarkUI(this, true); - - msw_rescale(); + + // rescale/update existing items with bitmaps + m_objects_model->UpdateBitmaps(); + + Layout(); if (m_objects_model) { m_objects_model->sys_color_changed(); } } @@ -5552,6 +5566,12 @@ void GUI::ObjectList::OnStartEditing(wxDataViewEvent &event) // Here the last active column is forgotten, so when leaving the editing mode, the next mouse click will not enter the editing mode of the newly selected column. void ObjectList::OnEditingStarted(wxDataViewEvent &event) { + // Orca: Automatically show drop down on editing start and finish editing when the combobox is closed + if (event.GetColumn() == colFilament) { + ::ComboBox*c = static_cast<::ComboBox *>(event.GetDataViewColumn()->GetRenderer()->GetEditorCtrl()); + c->ToggleDropDown(); + c->Bind(wxEVT_COMBOBOX_CLOSEUP, [event](wxCommandEvent& evt){ event.GetDataViewColumn()->GetRenderer()->FinishEditing(); }); + } #ifdef __WXMSW__ m_last_selected_column = -1; #else diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 0a95ecb415..b270b11638 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -321,7 +321,7 @@ public: void delete_all_connectors_for_selection(); void delete_all_connectors_for_object(int obj_idx); - wxPoint get_mouse_position_in_control() const { return wxGetMousePosition() - this->GetScreenPosition(); } + wxPoint get_mouse_position_in_control() const; int get_selected_obj_idx() const; ModelConfig& get_item_config(const wxDataViewItem& item) const; diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index ff9521b584..b0b59a1ac2 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -112,7 +112,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("Delete Option %s") % opt_key).str()).ToStdString()); @@ -146,7 +146,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"; @@ -415,21 +415,13 @@ void ObjectSettings::UpdateAndShow(const bool show) #endif } -void ObjectSettings::msw_rescale() -{ -#if !NEW_OBJECT_SETTING - m_bmp_delete.msw_rescale(); - m_bmp_delete_focus.msw_rescale(); - - for (auto group : m_og_settings) - group->msw_rescale(); -#endif -} - void ObjectSettings::sys_color_changed() { #if !NEW_OBJECT_SETTING - m_og->sys_color_changed(); + m_og->sys_color_changed(); // not in old msw_rescale. is it needed? + // moved from old msw_rescale + m_bmp_delete.sys_color_changed(); + m_bmp_delete_focus.sys_color_changed(); for (auto group : m_og_settings) group->sys_color_changed(); diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp index 8903f8748b..0e50901b2d 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp @@ -68,7 +68,6 @@ public: bool add_missed_options(ModelConfig *config_to, const DynamicPrintConfig &config_from); void update_config_values(ModelConfig *config); void UpdateAndShow(const bool show); - void msw_rescale(); void sys_color_changed(); }; diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index eda7c15b71..c23c871395 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -77,7 +77,7 @@ void GridCellIconRenderer::Draw(wxGrid& grid, table->m_icon_row_height = grid.GetRowSize(row); table->m_icon_col_width = grid.GetColSize(col); //} - wxBitmap& bitmap = table->get_undo_bitmap(); + wxBitmap bitmap = table->get_undo_bitmap().GetBitmapFor(dc.GetWindow()); int bitmap_width = bitmap.GetWidth(); int bitmap_height = bitmap.GetHeight(); int offset_x = (table->m_icon_col_width - bitmap_width)/2; @@ -125,7 +125,7 @@ GridCellIconRenderer *GridCellIconRenderer::Clone() const GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices, bool allowOthers, - std::vector* bitmaps) + std::vector* bitmaps) : wxGridCellChoiceEditor(choices, allowOthers), m_icons(bitmaps) { } @@ -133,7 +133,7 @@ GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices, GridCellFilamentsEditor::GridCellFilamentsEditor(size_t count, const wxString choices[], bool allowOthers, - std::vector* bitmaps) + std::vector* bitmaps) : wxGridCellChoiceEditor(count, choices, allowOthers), m_icons(bitmaps) { } @@ -159,13 +159,14 @@ void GridCellFilamentsEditor::Create(wxWindow* parent, if ( !m_allowOthers ) style |= wxCB_READONLY; ::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString, - wxDefaultPosition, wxSize(((*m_icons)[0])->GetWidth() + 10, -1), 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); + wxDefaultPosition, wxSize(get_preferred_size(*((*m_icons)[0]), wxGetApp().mainframe).GetWidth() + 10, -1), + 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); //Unsure if (m_icons) { int array_count = m_choices.GetCount(); int icon_count = m_icons->size(); for (int i = 0; i < array_count; i++) { - wxBitmap* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; + wxBitmapBundle* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; bitmap_combo->Append(m_choices[i], *bitmap); } } @@ -239,6 +240,9 @@ void GridCellFilamentsEditor::BeginEdit(int row, int col, wxGrid* grid) Combo()->SetFocus(); + // Orca: Show dropdown on editing start + Combo()->ToggleDropDown(); + #ifdef __WXOSX_COCOA__ // This is a work around for the combobox being simply dismissed when a // choice is made in it under OS X. The bug is almost certainly due to a @@ -335,9 +339,9 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); - wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); - int bitmap_width = bitmap->GetWidth(); - int bitmap_height = bitmap->GetHeight(); + wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth(); + int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight(); int offset_x = grid_cell_border_width; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; @@ -345,7 +349,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.DrawRectangle(rect); if ( grid_row->model_volume_type != ModelVolumeType::NEGATIVE_VOLUME) { - dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); + dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y));//TODO: determine if this way of getting bitmap works well } text_rect.x += bitmap_width + grid_cell_border_width * 2; @@ -431,6 +435,9 @@ void GridCellChoiceEditor::BeginEdit(int row, int col, wxGrid *grid) Combo()->SetFocus(); + // Orca: Show dropdown on editing start + Combo()->ToggleDropDown(); + #ifdef __WXOSX_COCOA__ // This is a work around for the combobox being simply dismissed when a // choice is made in it under OS X. The bug is almost certainly due to a @@ -518,16 +525,16 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); - wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); - int bitmap_width = bitmap->GetWidth(); - int bitmap_height = bitmap->GetHeight(); + wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); + int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth(); + int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight(); int offset_x = grid_cell_border_width; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.DrawRectangle(rect); - dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); + dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y)); text_rect.x += bitmap_width + grid_cell_border_width * 2; text_rect.width -= (bitmap_width + grid_cell_border_width * 2); } @@ -2641,12 +2648,12 @@ void ObjectGridTable::OnCellValueChanged(int row, int col) } } -wxBitmap& ObjectGridTable::get_undo_bitmap(bool selected) +wxBitmapBundle& ObjectGridTable::get_undo_bitmap(bool selected) { return m_panel->m_undo_bitmap; } -wxBitmap* ObjectGridTable::get_color_bitmap(int color_index) +wxBitmapBundle* ObjectGridTable::get_color_bitmap(int color_index) { if (color_index < m_panel->m_color_bitmaps.size()) return m_panel->m_color_bitmaps[color_index]; diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index a21436fe0e..6aca182533 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -82,10 +82,10 @@ public: GridCellFilamentsEditor(size_t count = 0, const wxString choices[] = NULL, bool allowOthers = false, - std::vector* bitmaps = NULL); + std::vector* bitmaps = NULL); GridCellFilamentsEditor(const wxArrayString& choices, bool allowOthers = false, - std::vector* bitmaps = NULL); + std::vector* bitmaps = NULL); virtual void Create(wxWindow* parent, wxWindowID id, @@ -105,7 +105,7 @@ protected: ::ComboBox *Combo() const { return (::ComboBox *)m_control; } void OnComboCloseUp(wxCommandEvent& evt); - std::vector* m_icons; + std::vector* m_icons; wxDECLARE_NO_COPY_CLASS(GridCellFilamentsEditor); private: @@ -498,8 +498,8 @@ public: void update_filament_to_config(ModelConfig* config, std::string& key, ConfigOption& new_value, ConfigOption& ori_value, bool is_object); void update_volume_values_from_object(int row, int col); void update_value_to_object(Model* model, ObjectGridRow* grid_row, int col); - wxBitmap& get_undo_bitmap(bool selected = false); - wxBitmap* get_color_bitmap(int color_index); + wxBitmapBundle& get_undo_bitmap(bool selected = false); + wxBitmapBundle* get_color_bitmap(int color_index); bool OnCellLeftClick(int row, int col, ConfigOptionType &type); void OnSelectCell(int row, int col); void OnRangeSelected(int row, int col, int row_count, int col_count); @@ -610,10 +610,10 @@ private: int init_filaments_and_colors(); wxFloatingPointValidator m_float_validator; - wxBitmap m_undo_bitmap; - std::vector m_color_bitmaps; - ScalableBitmap m_bmp_reset; - ScalableBitmap m_bmp_reset_disable; + wxBitmapBundle m_undo_bitmap; + std::vector m_color_bitmaps; + wxBitmapBundle m_bmp_reset; + wxBitmapBundle m_bmp_reset_disable; private: wxDECLARE_ABSTRACT_CLASS(ObjectGrid); wxDECLARE_EVENT_TABLE(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 7468d9c1b4..b3508c5aaa 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -173,7 +173,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ btn->SetBitmapFocus(m_bmp_reset_focus.bmp()); - btn->SetBitmapHover(m_bmp_reset_focus.bmp()); + btn->SetBitmapHover(m_bmp_reset_focus.get_bitmap()); #ifdef __WINDOWS__ btn->SetBitmapDisabled(m_bmp_reset_disable.bmp()); @@ -236,7 +236,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ return; ctrl->SetBitmap_(m_bmp_reset); ctrl->SetBitmapFocus(m_bmp_reset_focus.bmp()); - ctrl->SetBitmapHover(m_bmp_reset_focus.bmp()); + ctrl->SetBitmapHover(m_bmp_reset_focus.get_bitmap()); #ifdef __WINDOWS__ ctrl->SetBitmapDisabled(m_bmp_reset_disable.bmp()); #endif diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 7622f35522..835e718bd1 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -43,9 +43,8 @@ #include "GUI_App.hpp" #include "../Utils/MacDarkMode.hpp" - -#include "nanosvg/nanosvg.h" -#include "nanosvg/nanosvgrast.h" +#include +#include #include "OpenGLManager.hpp" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 2ab6748f4e..9fef6720ce 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -508,10 +508,10 @@ void ImageGrid::render(wxDC& dc) if (!m_file_sys || m_file_sys->GetCount() == 0) { dc.DrawRectangle({ 0, 0, size.x, size.y }); if (!m_status_msg.IsEmpty()) { - auto si = m_status_icon.GetBmpSize(); + auto si = m_status_icon.GetSize(); auto st = dc.GetTextExtent(m_status_msg); auto rect = wxRect{0, 0, max(st.x, si.x), si.y + 26 + st.y}.CenterIn(wxRect({0, 0}, size)); - dc.DrawBitmap(m_status_icon.bmp(), rect.x + (rect.width - si.x) / 2, rect.y); + dc.DrawBitmap(m_status_icon.get_bitmap(), rect.x + (rect.width - si.x) / 2, rect.y); dc.SetTextForeground(wxColor(0x909090)); dc.DrawText(m_status_msg, rect.x + (rect.width - st.x) / 2, rect.GetBottom() - st.y); } @@ -602,7 +602,7 @@ void Slic3r::GUI::ImageGrid::renderContent1(wxDC &dc, wxPoint const &pt, int ind bool show_download_state_always = true; // Draw checked icon if (m_selecting && !show_download_state_always) - dc.DrawBitmap(selected ? m_checked_icon.bmp() : m_unchecked_icon.bmp(), pt + wxPoint{10, 10}); + dc.DrawBitmap(selected ? m_checked_icon.get_bitmap() : m_unchecked_icon.get_bitmap(), pt + wxPoint{10, m_content_rect.GetHeight() - m_checked_icon.GetHeight() - 10}); // can't handle alpha // dc.GradientFillLinear({pt.x, pt.y, m_border_size.GetWidth(), 60}, wxColour(0x6F, 0x6F, 0x6F, 0x99), wxColour(0x6F, 0x6F, 0x6F, 0), wxBOTTOM); else if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE) { @@ -653,7 +653,7 @@ void Slic3r::GUI::ImageGrid::renderContent1(wxDC &dc, wxPoint const &pt, int ind dc.DrawText(date, pt + wxPoint{24, 16}); } if (m_selecting && show_download_state_always) - dc.DrawBitmap(selected ? m_checked_icon.bmp() : m_unchecked_icon.bmp(), pt + wxPoint{10, 10}); + dc.DrawBitmap(selected ? m_checked_icon.get_bitmap() : m_unchecked_icon.get_bitmap(), pt + wxPoint{10, m_content_rect.GetHeight() - m_checked_icon.GetHeight() - 10}); } void Slic3r::GUI::ImageGrid::renderContent2(wxDC &dc, wxPoint const &pt, int index, bool hit) @@ -745,8 +745,8 @@ void Slic3r::GUI::ImageGrid::renderText2(wxDC &dc, wxString text, wxRect const & void Slic3r::GUI::ImageGrid::renderIconText(wxDC & dc, ScalableBitmap const & icon, wxString text, wxRect const & rect) { - dc.DrawBitmap(icon.bmp(), rect.x, rect.y + (rect.height - icon.GetBmpHeight()) / 2); - renderText2(dc, text, {rect.x + icon.GetBmpWidth() + 4, rect.y, rect.width - icon.GetBmpWidth() - 4, rect.height}); + dc.DrawBitmap(icon.get_bitmap(), rect.x, rect.y + (rect.height - icon.GetHeight()) / 2); + renderText2(dc, text, {rect.x + icon.GetWidth() + 4, rect.y, rect.width - icon.GetWidth() - 4, rect.height}); } }} diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 0f065ff28f..fcd7e5e9fb 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -155,7 +155,7 @@ wxWindow *KBShortcutsDialog::create_button(int id, wxString text) void KBShortcutsDialog::on_dpi_changed(const wxRect& suggested_rect) { - m_logo_bmp.msw_rescale(); + m_logo_bmp.sys_color_changed(); m_header_bitmap->SetBitmap(m_logo_bmp.bmp()); msw_buttons_rescale(this, em_unit(), { wxID_OK }); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index cda31f9790..8223ca0823 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1968,11 +1968,6 @@ void MainFrame::on_dpi_changed(const wxRect& suggested_rect) m_monitor->msw_rescale(); m_calibration->msw_rescale(); - // BBS -#if 0 - for (size_t id = 0; id < m_menubar->GetMenuCount(); id++) - msw_rescale_menu(m_menubar->GetMenu(id)); -#endif // Workarounds for correct Window rendering after rescale @@ -2014,7 +2009,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 diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index dded21372b..4c85725d3f 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -354,9 +354,9 @@ void MediaFilePanel::SwitchStorage(bool external) void MediaFilePanel::Rescale() { - m_bmp_loading.msw_rescale(); - m_bmp_failed.msw_rescale(); - m_bmp_empty.msw_rescale(); + m_bmp_loading.sys_color_changed(); + m_bmp_failed.sys_color_changed(); + m_bmp_empty.sys_color_changed(); auto top_sizer = GetSizer()->GetItem((size_t) 0)->GetSizer(); top_sizer->SetMinSize({-1, 75 * em_unit(this) / 10}); diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index f14de1ebf0..83c05bf544 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -36,7 +36,7 @@ namespace GUI { wxBoxSizer* m_sizer_web_control = new wxBoxSizer(wxHORIZONTAL); - auto m_control_back = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_back", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); + auto m_control_back = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_back", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); m_control_back->SetBackgroundColour(*wxWHITE); m_control_back->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_back->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); @@ -47,7 +47,7 @@ namespace GUI { m_control_back->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW));}); - auto m_control_forward = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_forward", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); + auto m_control_forward = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_forward", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); m_control_forward->SetBackgroundColour(*wxWHITE); m_control_forward->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_forward->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); @@ -57,7 +57,7 @@ namespace GUI { m_control_forward->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_HAND)); }); m_control_forward->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW)); }); - auto m_control_refresh = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_refresh", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); + auto m_control_refresh = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_refresh", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER); m_control_refresh->SetBackgroundColour(*wxWHITE); m_control_refresh->SetSize(wxSize(FromDIP(25), FromDIP(30))); m_control_refresh->SetMinSize(wxSize(FromDIP(25), FromDIP(30))); diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index ed323417aa..d685ad3a81 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -227,10 +227,10 @@ void MsgDialog::apply_style(long style) if (style & wxNO) add_button(wxID_NO, false,_L("No")); if (style & wxCANCEL) add_button(wxID_CANCEL, false, _L("Cancel")); - logo->SetBitmap( create_scaled_bitmap(style & wxAPPLY ? "completed" : + logo->SetBitmap( *get_bmp_bundle(style & wxAPPLY ? "completed" : style & wxICON_WARNING ? "obj_warning" : style & wxICON_INFORMATION ? "info" : - style & wxICON_QUESTION ? "question" : "OrcaSlicer", this, 64, style & wxICON_ERROR)); + style & wxICON_QUESTION ? "question" : "OrcaSlicer", 64)); } void MsgDialog::finalize() @@ -339,7 +339,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("OrcaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84)); + logo->SetBitmap(*get_bmp_bundle("OrcaSlicer_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 84bbf9950a..aac7ee5af3 100644 --- a/src/slic3r/GUI/Notebook.cpp +++ b/src/slic3r/GUI/Notebook.cpp @@ -122,6 +122,8 @@ void ButtonsListCtrl::Rescale() { //m_mode_sizer->msw_rescale(); int em = em_unit(this); + // Orca: following is removed by PS in wx 3.16 refactor. + // doesn't seem to be doing anything rn so leaving it alone for (Button* btn : m_pageButtons) { //BBS btn->SetMinSize({(btn->GetLabel().empty() ? 40 : 132) * em / 10, 36 * em / 10}); @@ -137,6 +139,14 @@ void ButtonsListCtrl::Rescale() m_sizer->Layout(); } +void ButtonsListCtrl::OnColorsChanged() +{ + for (Button* btn : m_pageButtons) + btn->Rescale(); + + 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 d75898a7cd..482a909fe1 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -23,6 +23,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 = "", const std::string &inactive_bmp_name = ""); void RemovePage(size_t n); bool SetPageImage(size_t n, const std::string& bmp_name) const; @@ -261,6 +262,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 2aef316b48..26349192d1 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -28,12 +28,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(); +#ifndef __WIN32__ + return bmp->GetBitmapFor(parent).GetSize(); #else - return bmp.GetSize(); + return bmp->GetDefaultSize(); #endif } @@ -58,8 +58,8 @@ OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent, m_v_gap2 = lround(0.8 * 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("blank_16", 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("blank_16"), this); init_ctrl_lines();// from og.lines() @@ -572,8 +572,8 @@ void OG_CustomCtrl::msw_rescale() m_v_gap2 = lround(0.8 * 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("blank_16", 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("blank_16"), this); m_max_win_width = 0; @@ -666,7 +666,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); @@ -748,7 +748,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) if (field && field->undo_bitmap()) //if (field) // BBS: new layout - draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink()); + draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink()); return; } @@ -802,7 +802,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos) auto draw_buttons = [&h_pos, &dc, &v_pos, this](Field* field, size_t bmp_rect_id = 0) { if (field && field->undo_to_sys_bitmap()) { - h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink(), bmp_rect_id); + h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink(), bmp_rect_id); } #ifndef DISABLE_BLINKING else if (field && !field->undo_to_sys_bitmap() && field->blink()) @@ -933,19 +933,19 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC &dc, wxPoint pos, const wxString wxPoint OG_CustomCtrl::CtrlLine::draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking) { - wxBitmap bmp_blinking = create_scaled_bitmap(is_blinking ? "blank_16" : "empty", ctrl); + wxBitmapBundle* bmp_blinking = get_bmp_bundle(is_blinking ? "blank_16" : "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) { #ifndef DISABLE_BLINKING pos = draw_blinking_bmp(dc, pos, is_blinking); @@ -953,11 +953,11 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi if (ctrl->opt_group->split_multi_line) { // BBS const std::vector